content-hooks
generates distribution assets for every medium from a transcript and its research. tweets are written in full. everything else is hooks and titles. all items are scored with ICE.
inputs
file: path to a transcript .md file, or the folder name inside notes-processing/
research.md must already exist at notes-processing/{filename}/research.md
- output:
notes-processing/{filename}/hooks.md
voice
all copy must sound like rami. read /Users/rami/Documents/life-os/ai-agents-config/skills/rami-voice/SKILL.md for the full rules. critical rules that apply to every hook and tweet you write:
- no em dashes — use a comma, colon, parentheses, or a new sentence instead
- no semicolons
- no hedging qualifiers: "it's worth noting", "one could argue", "it's interesting that"
- no corporate vocabulary: leverage (as verb), utilize, implement, unpack, delve, game-changing
- no summary conclusions — every closer should be a charge or a sharp stop, never a recap
- no formal transitions
- lowercase, no hashtags, no engagement bait ("drop it in the comments", "have you ever...")
- takes a side — observation is not enough, a take is required
preprocessing
clean the transcript before using it:
- strip YAML frontmatter, wiki-links (
[[Note|text]] → text), and ## Related Notes section
- identify the dominant 1-2 themes (what the speaker kept coming back to) — use these as the hook lens
steps
- read the cleaned transcript and
research.md
- identify the 1-2 dominant themes — these are the lens for all hooks
- do 3-5 web searches to discover current trends:
- what's trending right now in this space on LinkedIn / Twitter / YouTube
- recent viral content on these exact themes
- what's resonating with young founders and entrepreneurs this week
- generate all content assets (see mediums below)
- score each item with ICE
- write hooks.md
mediums
linkedin — 5 hooks (opening lines only, not full posts)
- one line that stops the scroll
- counterintuitive, bold, or uncomfortably personal
- no "have you ever...", no rhetorical questions leading with "you"
twitter/x — 5 full tweets (written in full — these are final, not just hooks)
- naval ravikant / dan koe style: expose a truth that sounds simple but takes paragraphs to fully explain
- lowercase, no hashtags, no emojis, no engagement bait
- hard limit: 1-3 sentences only. if it's longer, cut it. tweets are not essays — they're the sharp point before the essay.
- each tweet must stand alone as a complete thought. no thread prefixes, no "1/n"
- examples that hit the right length:
- "desire is a contract you make with yourself to be unhappy until you get what you want." — 1 sentence, reframes a universal experience
- "you don't have a focus problem. you have a values problem." — 2 sentences, forces self-reflection
- "i can indulge now, i'll be disciplined later — that's not a productivity strategy. that's addiction logic with better branding." — 2 sentences, uncomfortable and undeniable
- "researchers found people choose a $20 task over a $25 one just because it has a shorter deadline. we do the same with our lives. we call it productivity." — 3 sentences, max length
- rami's voice: personal, direct, lowercase, ends sharp
instagram/tiktok — 5 hooks + 5 headline options
- hook: the first spoken sentence of a short video (grabs in 2 seconds)
- headline: text overlay or caption title (5-8 words, punchy)
youtube — 3 title + subtitle pairs + 1-2 sentence description each (2 for short-tier transcripts)
- title: searchable and compelling (not clickbait)
- subtitle: expands on the title, adds intrigue or specificity
- use section format in output (not a table — descriptions are too long for table cells)
ice scoring
score each item individually. be honest — score based on evidence from trend research, not optimism.
- impact (1-10): potential reach and resonance with rami's audience (young founders, entrepreneurs, gen z)
- confidence (1-10): how likely this lands, based on current trends and rami's track record with similar content
- ease (1-10): how easily produced from existing transcript material (10 = fully covered)
- ice = (impact + confidence + ease) / 3
medium ice = average of all items in that medium
overall content ice = average of all medium ices
output format
# hooks: {transcript title}
**overall ice score:** {x.x}/10
---
## linkedin hooks
| # | hook | I | C | E | ICE |
|---|------|---|---|---|-----|
| 1 | hook text | 8 | 7 | 9 | 8.0 |
**medium ice:** {x.x}/10
---
## twitter/x
**1.** tweet text here
`I: 9 | C: 8 | E: 9 | ICE: 8.7`
**2.** tweet text here
`I: 8 | C: 9 | E: 9 | ICE: 8.7`
*(repeat for all 5)*
**medium ice:** {x.x}/10
---
## instagram/tiktok
### hooks
| # | hook | I | C | E | ICE |
|---|------|---|---|---|-----|
### headlines
| # | headline | I | C | E | ICE |
|---|----------|---|---|---|-----|
**medium ice:** {x.x}/10
---
## youtube
### 1. {title}
**subtitle:** {subtitle}
**description:** {1-2 sentences}
`I: 9 | C: 9 | E: 9 | ICE: 9.0`
*(repeat for all 3)*
**medium ice:** {x.x}/10
---
## trend context
- {bullet: what's trending that informed these hooks, with source url}
note on short transcripts
if the transcript is thin (< 150 words with 1-2 ideas), generate fewer hooks per medium (3 instead of 5) and focus them tightly on the one core insight. don't pad.
1---2name: content-hooks3description: Generates hooks, titles, and full tweets for all content mediums from a transcript + research file. Scores everything with ICE. Requires research.md to exist first (run content-research first).4---56# content-hooks78generates distribution assets for every medium from a transcript and its research. tweets are written in full. everything else is hooks and titles. all items are scored with ICE.910## inputs1112- `file`: path to a transcript `.md` file, or the folder name inside `notes-processing/`13- `research.md` must already exist at `notes-processing/{filename}/research.md`14- output: `notes-processing/{filename}/hooks.md`1516## voice1718all copy must sound like rami. read `/Users/rami/Documents/life-os/ai-agents-config/skills/rami-voice/SKILL.md` for the full rules. critical rules that apply to every hook and tweet you write:1920- **no em dashes** — use a comma, colon, parentheses, or a new sentence instead21- **no semicolons**22- **no hedging qualifiers**: "it's worth noting", "one could argue", "it's interesting that"23- **no corporate vocabulary**: leverage (as verb), utilize, implement, unpack, delve, game-changing24- **no summary conclusions** — every closer should be a charge or a sharp stop, never a recap25- **no formal transitions**26- lowercase, no hashtags, no engagement bait ("drop it in the comments", "have you ever...")27- takes a side — observation is not enough, a take is required2829## preprocessing3031clean the transcript before using it:32- strip YAML frontmatter, wiki-links (`[[Note|text]]` → `text`), and `## Related Notes` section33- identify the dominant 1-2 themes (what the speaker kept coming back to) — use these as the hook lens3435## steps36371. read the cleaned transcript and `research.md`382. identify the 1-2 dominant themes — these are the lens for all hooks393. do 3-5 web searches to discover current trends:40 - what's trending right now in this space on LinkedIn / Twitter / YouTube41 - recent viral content on these exact themes42 - what's resonating with young founders and entrepreneurs this week434. generate all content assets (see mediums below)445. score each item with ICE456. write hooks.md4647## mediums4849**linkedin** — 5 hooks (opening lines only, not full posts)50- one line that stops the scroll51- counterintuitive, bold, or uncomfortably personal52- no "have you ever...", no rhetorical questions leading with "you"5354**twitter/x** — 5 full tweets (written in full — these are final, not just hooks)55- naval ravikant / dan koe style: expose a truth that sounds simple but takes paragraphs to fully explain56- lowercase, no hashtags, no emojis, no engagement bait57- **hard limit: 1-3 sentences only.** if it's longer, cut it. tweets are not essays — they're the sharp point before the essay.58- each tweet must stand alone as a complete thought. no thread prefixes, no "1/n"59- examples that hit the right length:60 - "desire is a contract you make with yourself to be unhappy until you get what you want." — 1 sentence, reframes a universal experience61 - "you don't have a focus problem. you have a values problem." — 2 sentences, forces self-reflection62 - "i can indulge now, i'll be disciplined later — that's not a productivity strategy. that's addiction logic with better branding." — 2 sentences, uncomfortable and undeniable63 - "researchers found people choose a $20 task over a $25 one just because it has a shorter deadline. we do the same with our lives. we call it productivity." — 3 sentences, max length64- rami's voice: personal, direct, lowercase, ends sharp6566**instagram/tiktok** — 5 hooks + 5 headline options67- hook: the first spoken sentence of a short video (grabs in 2 seconds)68- headline: text overlay or caption title (5-8 words, punchy)6970**youtube** — 3 title + subtitle pairs + 1-2 sentence description each (2 for short-tier transcripts)71- title: searchable and compelling (not clickbait)72- subtitle: expands on the title, adds intrigue or specificity73- use section format in output (not a table — descriptions are too long for table cells)7475## ice scoring7677score each item individually. be honest — score based on evidence from trend research, not optimism.7879- **impact** (1-10): potential reach and resonance with rami's audience (young founders, entrepreneurs, gen z)80- **confidence** (1-10): how likely this lands, based on current trends and rami's track record with similar content81- **ease** (1-10): how easily produced from existing transcript material (10 = fully covered)82- **ice** = (impact + confidence + ease) / 38384medium ice = average of all items in that medium85overall content ice = average of all medium ices8687## output format8889```markdown90# hooks: {transcript title}9192**overall ice score:** {x.x}/109394---9596## linkedin hooks9798| # | hook | I | C | E | ICE |99|---|------|---|---|---|-----|100| 1 | hook text | 8 | 7 | 9 | 8.0 |101102**medium ice:** {x.x}/10103104---105106## twitter/x107108**1.** tweet text here109`I: 9 | C: 8 | E: 9 | ICE: 8.7`110111**2.** tweet text here112`I: 8 | C: 9 | E: 9 | ICE: 8.7`113114*(repeat for all 5)*115116**medium ice:** {x.x}/10117118---119120## instagram/tiktok121122### hooks123| # | hook | I | C | E | ICE |124|---|------|---|---|---|-----|125126### headlines127| # | headline | I | C | E | ICE |128|---|----------|---|---|---|-----|129130**medium ice:** {x.x}/10131132---133134## youtube135136### 1. {title}137**subtitle:** {subtitle}138**description:** {1-2 sentences}139`I: 9 | C: 9 | E: 9 | ICE: 9.0`140141*(repeat for all 3)*142143**medium ice:** {x.x}/10144145---146147## trend context148149- {bullet: what's trending that informed these hooks, with source url}150```151152## note on short transcripts153154if the transcript is thin (< 150 words with 1-2 ideas), generate fewer hooks per medium (3 instead of 5) and focus them tightly on the one core insight. don't pad.