AI CEO Lab← All free guides
On this page
Content · Hooks

How To Write Hooks For Reels, And Score Them Before You Post

Seven tests, thirty seconds, run on the first line before the video is cut. Six words or fewer, the two of four gate, the first three words, the label test, the tool named, the claim the video can cash, and the ledger so I never ship the same hook twice.

How To Write Hooks For Reels, And Score Them Before You Post

I rendered ten shorts for a Grok Bot launch and every one of them said 'AI' in the title. 'My AI has a computer.' 'I hired nine AI employees.' They looked fine. Then I read the numbers from four hundred and twenty two posts by the creators beating their own average, and the winning titles named the tool almost every time and carried a number or a dollar figure about six times in ten. I re rendered all ten. 'ChatGPT answers you. Grok Bot does the work.' 'Thirty dollar Grok Bot vs six hundred dollar Mac Mini.'

That is the whole reason to score a hook before you post. The mistake was not taste. It was a test I had not run.

The hook is the first line of a post, the on screen title of a reel, the subject line, the headline. It earns the next second or the content dies. Most weak hooks are not bad. They are declarative. They state the topic without tension, without a number, without speaking to anyone.

This guide is the seven tests I run, the difference between a written hook and an on screen title, the ledger that stops me repeating myself, and the prompt that scores a hook and returns three stronger ones. The public hook writing skill is linked. This page is the gate in front of it.

The three levels

Level 1 · Manual

You write the first line last, read it once, think 'that's fine', and post.

Level 2 · AI + connections

Every hook and every on screen title runs through the seven tests before render. Under five passes it gets rewritten. Every title that ships is written to a ledger with its pattern and its colour.

Level 3 · Agents on cadence

An agent scores every draft hook automatically, checks it against the ledger, returns three alternates from different mechanics, and pairs each with the comment keyword and the thing the viewer would receive.

Connections for this guide: Nothing to connect. A file for the ledger of shipped hooks. Optionally the creator research page from the remix dashboard guide, so the tests are calibrated to your niche. The hook score skill below.

The mental model

Wrong

Write the hook last, read it once, post if it sounds fine.

Right

Run seven pass or fail tests on the first line before anything is cut. Rewrite under five. Log what ships.

RoleTalks to youJob
ClarityTest 1Six words or fewer written; two lines of two to four words on screen
The gateTest 2At least two of: a number, a fight with a common belief, the word you, one relevant emoji where allowed
First three wordsTest 3Surprise, a number, a threat or a name in the first three words
Label testTest 4Does it withhold the payoff or name the topic? If the viewer nods 'makes sense', it failed
SpecificTest 5Names the tool, the price, the person. No 'many businesses', no 'AI'
Cash testTest 6The video or post can deliver what the line promises
LedgerTest 7Not already shipped, and extends a pattern that earned its place

The seven tests

1. Write the hook first, not last

The first line is written before the body, before the edit, before the thumbnail. If I cannot write a line that passes the gate, the topic is not ready and I do not film it. Cutting a video around a weak first line is the most expensive mistake in content because everything downstream of it is invisible.

2. Test one: clarity

Written hooks: six words or fewer and understandable in a split second. On screen titles: exactly two lines, two to four words each, all caps, the tension carried by the first three words. If it needs more, it is a sentence from the body pretending to be a hook. Cut.

3. Test two: the two of four gate

A hook must hit at least two of: a specific number (thirty dollars, nine, ninety seconds), a fight with a common belief, direct address with 'you' or 'your', and one relevant emoji where the medium allows it. A stat on its own ('eight thousand in, forty two thousand back') hits one. Add 'your' or a contrarian frame and it clears.

4. Test three: the first three words

Read only the first three words. Do they carry surprise, a number, a threat or a name? 'Here's how I' fails. 'Website designers are' passes. 'Most people still' passes. Cut every filler word in front of the strongest one. On screen this is doubly true because the first line is the only one the eye catches mid scroll.

5. Test four: withhold, don't label

A title that names the topic is a dead title. 'Why a doctor built an agency' tells you what the clip is about and gives you no reason to watch. It went in my ledger as rejected. 'What med school never taught me' opens a loop the clip then closes. The test: if a viewer reads it and nods 'makes sense', it failed. Rewrite until it makes them need the next line.

6. Test five: specific, tool named

Every placeholder filled with a real specific from your material: a number, a name, a tool, a moment. 'Many businesses' and 'a lot of money' fail automatically. In the creator data, the winners named the tool almost every time. That is why ten of my shorts said 'AI' and were wrong, and why they now say 'Grok Bot'.

7. Test six: can the video cash it

If the line makes a claim the content does not deliver, it is a lie with good numbers for one day and a trust problem after. The agent flags any claim I have not given it evidence for. I do not ship a hook the video cannot cash.

8. Test seven: the ledger

Every on screen title that gets rendered goes into an append only ledger: date, line one, line two, accent colour, pattern, project, status shipped or rendered or rejected with the reason. Before writing a new one I read it. Two jobs: never repeat a hook, and extend the patterns that already earned their place instead of reinventing. A rejected title stays in the ledger as a negative example.

9. Score, rewrite, pair

Seven tests, pass or fail. Five or more ships. Under five, rewrite using at least two different mechanics: contrarian, conditional, question, command, list, warning, cost reveal, withheld mechanism, named mechanism, absolution. Then pair the winner with the comment keyword and the exact thing they would receive. A hook without a deliverable is a view. A hook with one is a lead.

Starter prompts

Paste these as written. They are short on purpose, because the long ones drift.

The prompt: score my hook

Score this hook before I post it. Hook: "[the line]". Format: [written first line / on screen reel title / subject line / headline]. Angle: [the number, opinion, result or mistake behind it]. Run seven pass or fail tests and give the reason for each: 1 Clarity: six words or fewer (written) or two lines of two to four words, all caps (on screen). 2 Gate: at least two of a specific number, a fight with a common belief, the word you or your, one relevant emoji where allowed. 3 First three words: do they carry surprise, a number, a threat or a name. 4 Label test: does it withhold the payoff, or does it name the topic so the viewer nods 'makes sense'. 5 Specific: names the tool, price, person or moment; 'many', 'a lot', 'AI' as a noun fail. 6 Cash test: can the content deliver the claim with the evidence I gave you; flag any claim without evidence. 7 Ledger: check [ledger file] and fail if this hook or a near duplicate already shipped. Report the score out of seven. If under five, rewrite: three variants from at least two different mechanics (contrarian, conditional, question, command, list, warning, cost reveal, withheld mechanism, named mechanism, absolution), each rerun through tests 1 to 5 with its score. Then pair the best with a one word comment keyword and the exact thing the viewer receives. Never borrow a sentence from another creator. Never invent a number I did not give you.

The on screen title prompt

Write the on screen title for this clip: [one line about what the clip says]. Exactly two lines, two to four words each, ALL CAPS, tension in the first three words, line two carrying the hook type. It must withhold the payoff, not label the topic. Read [ledger file] first and do not repeat or near repeat anything in it. Give me five, each with its pattern (contrarian confession, withheld mechanism, cost reveal, backwards truth, named mechanism, absolution) and its accent colour (red for contrarian or warning, green for how to, blue for reframe, gold for wealth or mechanism). Score each out of seven and pick one.

The ledger prompt

Append to [ledger file]: date [today], line one [..], line two [..], accent [..], pattern [..], style [..], project [..], status [shipped / rendered / rejected with reason]. Never rewrite an existing row.

Give it to your agent, three ways

Same skill, three worlds. Pick the one you actually use. The skill file at the bottom of this page is the instructions in every case.

An agent with connectors (Claude Desktop, Claude Code, Grok Bot)

Nothing to connect. The skill and a ledger file are the whole system. If you keep the ledger in Notion or a vault, give the agent read and append access to that one page.

  1. Save the skill file from the bottom of this page as a skill. Create a ledger file (a markdown table works) and put its path in the skill.
  2. Say "score this hook" with the line, the format and the angle. It returns seven pass or fail results, the score, rewrites if needed, and the keyword pairing.
  3. For reels, say "title this clip" with one line about the clip. It reads the ledger, returns five two line titles with pattern and colour, and appends the one you pick when you say so.
  4. Grok Bot and Hermes: same skill, same ledger file. Both can read and append a file.
# ledger.md
| Date | Line 1 | Line 2 | Accent | Pattern | Style | Project | Status |
|---|---|---|---|---|---|---|---|
| 2026-09-07 | WHY A DOCTOR | BUILT AN AGENCY | blue | none | podcast-two-tier | doctor-agency cover | rejected: labels the topic |

ChatGPT (a project or a custom GPT)

This works fully in a chat window. The only thing to add is the ledger, which lives as a file in the Project.

  1. Create a ChatGPT Project called Hooks and paste the skill below as its instructions. Upload ledger.md as a file.
  2. Paste the hook, the format and the angle. Say "score this hook". Insist on a pass or fail per test with the reason, not a summary.
  3. When a title ships, ask it to give you the ledger row and paste it into ledger.md yourself, then re upload. It cannot append the file for you.
  4. Optional: upload the findings paragraph from your competitor research so test five is calibrated to your niche.

Anything with an API (a token and a curl call)

If your agent only speaks HTTP, this is one model call with the skill as the system prompt and the hook plus the ledger contents as the user message. No other service is involved.

  1. Read ledger.md into the request so test seven has something to check.
  2. Send the skill as the system prompt and the hook, format, angle and ledger as the user message. Ask for JSON: tests array with pass, reason; score; rewrites with scores; keyword; deliverable.
  3. On ship, append the returned ledger row to ledger.md yourself. Never let the model rewrite the file.
export ANTHROPIC_API_KEY=...   # env only
curl -s https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'content-type: application/json' \
  -d @- <<J
{"model": "[model]", "max_tokens": 1500,
 "system": $(jq -Rs . < hook-score.md),
 "messages": [{"role": "user", "content": $(jq -Rs . <<< "Hook: $HOOK. Format: $FORMAT. Angle: $ANGLE. Ledger: $(cat ledger.md)")}]}
J

Failure modes

Every one of these has happened to me or to someone I set this up for.

FailureFix
Ten titles said 'AI' instead of the toolTest five. Name the tool, the price, the person
Title labels the topic and the viewer nodsTest four. Withhold the payoff; open the loop the clip closes
A clean stat with no tensionAdd 'your' or a contrarian frame to clear two of four
'Here's how I' in the first three wordsCut the filler; put the strongest word first
Four word first line on screen wraps to a third lineTwo to four words per line, pin the font size, never a third line
Same hook shipped twice three weeks apartLedger read before writing, appended on every render
A claim the video did not cashTest six. Flag every claim without evidence; do not ship it
Three variants that are all the same mechanic rewordedAt least two different mechanics per rewrite

The tools I use for this

ToolWhat it is for here
Hooks that stopThe public hook writing skill built from 422 creator posts. The gate on this page sits in front of it.Read it
ClaudeRuns the seven tests, checks the ledger, writes the rewrites.Open
A ledger fileAppend only. Every title rendered, shipped or rejected, with its pattern and colour.no link, just use it
SubmagicWhere the on screen title ends up once it passes.Get it
Some links are affiliate links. I only recommend tools I run in my own accounts.

The free skill

It is the gate I run before any first line or on screen title ships, written for an agent. It takes the hook and the angle, runs the seven tests, reports pass or fail on each with the reason, checks the ledger so nothing repeats, rewrites anything under five using at least two different mechanics, runs the first three words test on the rewrites, and pairs the winner with a comment keyword and the deliverable.

How to use it: copy the whole thing, paste it into your bot (or save it as a skill file if you use Claude Code), and say “score this hook”. It walks you through the rest. Works with any agent that can read your files.
how-to-write-hooks-for-reels.md
---
name: hook-score
description: Scores a hook (first line, on screen reel title, subject line, headline) before it posts: seven pass or fail tests with reasons, a ledger check so nothing repeats, rewrites under five from at least two different mechanics, the first three words test on the rewrites, and a comment keyword paired with the deliverable. Trigger on "score this hook", "is this hook good", "title this clip", "my opening is weak".
---

# Hook Score

The first line earns the next second or the content dies. Most weak hooks are not bad;
they are declarative. You test, you do not admire. Public companion for writing hooks:
https://marketing.doctorleadflow.com/library/hooks-that-stop/

## Inputs

- The hook.
- The format: written first line, on screen reel title, subject line, headline.
- The angle: the real number, opinion, result, mistake or tool behind it. If the angle
  is missing, ask. Never invent one.
- The ledger file path (append only record of shipped and rejected titles).

## The seven tests (pass or fail, with the reason)

1. **Clarity.** Written: six words or fewer, understood in a split second. On screen:
   exactly two lines, two to four words each, ALL CAPS, tension in the first three words.
2. **Two of four gate.** At least two of: a specific number; a fight with a common
   belief; the word you or your; one relevant emoji where the medium allows it.
3. **First three words.** Read only them. Surprise, a number, a threat or a name passes.
   "Here's how I", "In today's world", "Let me tell you" fail.
4. **Withhold, don't label.** A title that names the topic is dead. If the viewer would
   nod "makes sense", fail. It must open a loop the content closes.
5. **Specific.** Every placeholder filled with a real specific: tool name, price, person,
   moment. "Many businesses", "a lot of money", and "AI" used as the noun instead of the
   tool's name fail. Winners in the creator data named the tool almost every time.
6. **Cash test.** The content can deliver the claim with the evidence given. Flag any
   claim without evidence. Never ship what the video cannot cash.
7. **Ledger.** Read the ledger. Fail if the hook or a near duplicate already shipped.
   Note which existing pattern this one extends.

Score = tests passed out of seven. Five or more may ship. Under five, rewrite.

## Rewrite

Three variants from at least two different mechanics: contrarian, conditional, question,
command, list, warning, cost reveal, withheld mechanism, named mechanism, absolution.
Rerun tests 1 to 5 on each and show the score. Generic fills fail automatically. No
borrowed sentences from other creators; mechanics are shared, words are not.

## On screen titles

Two lines. Line one white, line two coloured by hook type: red for contrarian or
warning, green for how to or optimise, blue for framework or reframe, gold for wealth,
opportunity or mechanism. Patterns: contrarian confession, withheld mechanism, cost
reveal, backwards truth, named mechanism, absolution. Return five with pattern and
colour, scored, and pick one.

## Pairing

For the winner, propose a one word comment keyword and the exact thing the viewer
receives. A hook without a deliverable is a view; with one it is a lead.

## Ledger row

When the user says it shipped or was rejected, return the row to append:
`| date | line 1 | line 2 | accent | pattern | style | project | status (with reason if rejected) |`
Never rewrite an existing row. Rejected titles stay as negative examples.

What done looks like at thirty days

  • Every hook posted this month has a score out of seven written next to it
  • At least one topic was killed because no hook could pass
  • The ledger holds every on screen title rendered this month, including rejections
  • No hook was repeated and the agent checked
  • The last ten titles each name a tool, a price or a person
  • Each posted hook has a keyword and a deliverable paired with it

Want your hooks scored against your own niche's data?

Inside the AI CEO Lab the Content Engine module calibrates the gate to the creators beating their average in your space and runs it on every script before you film.

Pick a side.

Most people read this and forget it by Friday.

The other kind builds the thing that week. They stop needing free guides, because they are too busy running actual systems.

Free guides stay free. The room is where the builds happen.