The short answer
An AI hook generator is only as good as the examples you give it. Left alone, language models tend to fall back on the most common openers (questions and problem statements), which on our board of 2,443 winning Meta ads reach the top tier at 7.1% and 9.1%. Feed it real winners, set a pattern quota and score the output against the data, and the hooks get usable.
Why most AI hooks are weak
Ask a model for "10 hooks for a dog supplement ad" with no examples and you tend to get lines like "Is your dog always itchy?", "Tired of watching your dog scratch?", "Your dog deserves better." They read fine. They are also the patterns that underperform on our board.
We tag the opener of every ad on the Ad Radar board. On October 9, 2026, across 2,443 live Meta ads with $50k+ in estimated spend:
| Hook pattern | Ads | Reach top tier |
|---|---|---|
| Specific-Number Opener | 411 | 12.9% |
| Warning/Shock Opener | 156 | 10.3% |
| First-Person Story | 438 | 10.0% |
| Problem/Benefit Opener | 714 | 9.1% |
| Question Opener | 366 | 7.1% |
"Top tier" is the top 10% of the board by winner score, among ads live 21 days or more (about 10% of all ads). A model with no examples writes something close to the average of what it has read, and the average opener is a question or a problem statement: the two weakest rows in this table.
The fix is not a cleverer instruction. It's better input: real openers that won, a quota that forces variety, and a scoring pass built on data.
The rules your prompts should encode
These come from our analysis of the board's openers. Each one becomes a constraint in the prompts below.
| Rule | Evidence on the board |
|---|---|
| Include specific numbers | Number openers reach the top tier 12.9%, the best common pattern |
| Prefer list counts over time spans | List counts 17.8%, time spans 8.8% |
| Avoid opening on "you" or "if you" | 3.9% of these video openers reach the top tier |
| Yes/no questions only, with a vivid detail | Specific yes/no questions 27.8% (18 ads); "why" questions 0 of 15 |
| Put any credential in the first sentence | 33% when stated in sentence one (15 ads), 8.9% when absent |
| Warnings target habits, not the viewer's body | Warnings opening on the viewer's symptom: 0 of 12 in the top tier |
| Keep text hooks to 4 to 9 words | Image headlines of 10+ words: 6.8% vs about 14.5% |
The full analysis behind the first two rules is in number hooks.
Step 1: collect real openers
The prompts need 10 to 20 winning openers from your niche or an adjacent one. Each should include the line itself, the estimated spend and the days live, so the model can weigh them. Here are two of the kind of input that works well:
Here's how to grow your audience with zero marketing skills.
- Est. spend
- $3.5M
- Days live
- 83
- Format
- Video, 32s
- Variants
- 3
A method promise plus an objection removed ("zero marketing skills"). A good few-shot example because the structure transfers to almost any tool or service.
Nobody told me my mason jars could do this outside of canning season.
- Est. spend
- $945K
- Days live
- 217
- Format
- Video, 100s
A discovery framed as a complaint. Gives the model an example of a first-person opener that isn't "I tried X and..."
You can collect these by hand from the Meta Ad Library, or let Claude do it through the Ad Radar MCP server. With the connector installed, a prompt like this works:
Use the Ad Radar tools.
1. Call list_taxonomy to get the valid niche and hook_pattern slugs.
2. Call search_ads for active winners in the [niche slug] niche, video only,
at least 60 days live. Get 20 results.
3. For each result, give me: brand, the first sentence of the transcript
(verbatim), hook pattern, estimated spend, days live.
4. Then call winning_patterns and tell me which hook patterns and mechanisms
are above average on the board right now.
Do not paraphrase the openers. If a transcript is missing, use the headline
and say so.
Setup in Claude Code is one line: claude mcp add --transport http ad-radar https://app.ad-radar.dev/api/mcp. In Claude Desktop and claude.ai, the connector signs in with OAuth, so there is no token to copy. More on the setup in Claude MCP for ad research.
Step 2: generate with a pattern quota
You write opening lines for Meta video ads.
PRODUCT FACTS (use only these):
[facts, numbers, proof you can show]
CLAIMS YOU MUST NOT MAKE:
[e.g. cures, treats, guaranteed results]
REAL WINNING OPENERS (style reference, do not copy):
[paste the 10-20 openers from step 1 with spend and days live]
Write 24 opening lines, exactly 4 of each:
- specific number (prefer a list count or a price comparison)
- first-person story starting mid-conflict
- warning about a habit or a product category (never the viewer's body)
- contrarian: name a belief the buyer holds and contradict it
- authority: credential in the first sentence (only if a real one is in the facts)
- yes/no question with a detail only an owner would recognize
Rules:
- 4 to 16 words each.
- Do not start any line with "You", "Your" or "If you".
- Every number must come from the product facts. If you need one you
don't have, write [NEEDS FACT].
- No line may match the structure of more than one reference opener.
Output a table: pattern | opener | which fact it uses.
The quota is the part that matters most. Without it, nothing stops the model from drifting back to questions and problem statements.
Step 3: score the drafts against the data
Score each opener below from 0 to 10 using these rules, then sort.
+3 contains a specific number tied to a concrete noun
+2 states a credential in the first sentence
+2 contradicts a specific belief or habit
+2 is 4 to 12 words
-3 starts with "You", "Your" or "If you"
-3 is a "why" question or a question everyone answers yes to
-3 implies the viewer has a medical condition
-2 uses "myth", "scam", "truth" or "secret" without a specific belief
-2 is longer than 16 words
For each opener show the score and the one change that would raise it most.
OPENERS:
[paste]
The deductions matter as much as the points. "The truth about dog food" sounds contrarian, but on our board openers that lean on words like "myth", "scam" or "truth" reach the top tier only 5.3% of the time.
Step 4: rewrite the middle of the list
Take the openers that scored 4 to 6. For each, write two rewrites:
A) the same idea as a specific-number opener
B) the same idea as a first-person story starting mid-conflict
Keep every fact from the product facts. Mark any new claim [NEEDS FACT].
The top scorers go straight to production. The bottom ones go in the bin. The middle is where rewriting pays.
Step 5: learn from one competitor
When one brand in your niche keeps winning, study its hook mix rather than one ad:
Use the Ad Radar tools. Find [brand] with search_ads, then call
advertiser_hooks with its advertiserId. Tell me:
- which hook patterns and mechanisms it uses most
- which of its openers have run longest
- one pattern it never uses that the board data says works
Then write 6 openers for my product in the pattern it ignores.
To adapt one specific winning ad end to end, get_swipe_prompt returns a ready-made prompt for that ad: the full donor script annotated by block, with your product filled in. That is a bigger job than a hook.
What to check before anything ships
- Every number is real. Models invent statistics confidently. Search the draft for digits and check each one against your facts.
- No claim you can't support. Especially health, money and results. Compliance is the advertiser's job, not the model's.
- No copied line. A reference opener is a structure to learn from. Running a competitor's exact line is a bad look and a weak test.
- One body, many openers. Test the five best hooks on the same script so the results tell you about the hook.
For the openers themselves, the hooks pillar lists 60 real ones by pattern, and the hook formulas give you sentence shapes to put in the quota. The MCP connector is on the Ad Radar plans page.
Figures marked as estimated spend come from Ad Radar's model of engagement on public Meta Ad Library ads. They are estimates, labeled as such, and are best used to rank ads against each other.