Hook mining skill

Hook mining — The content growth factory (from the Ootto-AI/claude-content-skills README)

Illustration · not a resultFrom the Ootto-AI/claude-content-skills README — shows the whole collection, not only this skill.source ↗

Mine a CSV of REAL top-performing hooks and generate alternatives that keep what made them work: hold the storytelling psychology and structure fixed, hot-swap only the power words.

by Ootto-AI·MIT license·★ 139 Stars on the repo·GitHub ↗

Use now
Hook mining — The content growth factory (from the Ootto-AI/claude-content-skills README)

Illustration · not a resultFrom the Ootto-AI/claude-content-skills README — shows the whole collection, not only this skill.view on GitHub

Files of Hook mining

Ootto-AI/main1 file shown
SKILL.md
Show the full text98 lines

Hook mining

Most AI hook writing is slop for one of two reasons: it copy-pastes a hook that worked for someone else, or it "rewrites" it until the English is flat and the psychology is gone.

This does neither. It keeps the data for what worked — the structure, the psychological mechanism, the rhythm — and swaps only the power words. Proven skeleton stays, skin changes.

1. Get real hooks in

You cannot mine what you do not have. The input is a CSV of hooks that actually performed:

  • a Sandcastles (sandcastles.ai) export — it analyses the top videos in your niche and ranks the best hooks; export that tab to CSV
  • any social-analytics export with a hook/title/caption column and a views/likes/score column
  • competitor hooks pulled with the agent-reach skill, or breakdowns from reel-analyzer

Column names are never predictable, so don't hand-parse.

2. Mine it

python skills/hook-mining/mine_hooks.py hooks.csv [--top 40]

Auto-detects the hook column and the performance column, ranks, buckets by pattern, and flags the power words already present. Writes hooks.mined.json. Run --selftest to verify the parsing.

Patterns it sorts into: result-proof · time-bound · contrarian · secret-gap · listicle · how-to · warning-fear · newsjack · comparison · question · curiosity-tease · plain-statement.

3. Remix — the part that matters

For each hook worth reusing, produce 3–5 alternatives under one rule:

Keep the psychology. Swap the power words.

Hold fixed: the pattern, the clause order, the specificity (a number stays a number), the rhythm and syllable shape, the tension and where it resolves, the point of view.

Swap only: the charged words — the verb, the intensifier, the noun carrying the emotion. power_word_frequency in the mined JSON tells you which ones are earning their keep in your niche. Pull replacements from there, not from a thesaurus.

proven:   "You're using Claude wrong"                 [contrarian · you're + wrong]
  ✅      "You're prompting Claude backwards"          swapped the verb + the charge word
  ✅      "You're building agents the slow way"        same skeleton, same tension
  ❌      "Many people use Claude incorrectly"         psychology gone, flat English → slop
  ❌      "You're using Claude wrong"                  verbatim copy → plagiarism, the platform buries it

Then hand the winners to viral-hook-writer to rank, or straight into reel-scripter.

Hard rules

  • Never ship a mined hook verbatim. It is someone else's line. Instagram's originality systems bury copies, and it's plagiarism. Model the technique, write your own words.
  • Never remix the structure. Change the clause order or drop the number and you have thrown away the only thing the data proved.
  • A number in the source stays a number in the remix — and it must be YOURS and real. Swapping in a stat you cannot defend is the fastest way to lose an audience.
  • Rank before you mine. Remixing a hook that did not perform just launders a bad idea.
  • Small buckets are signal. A pattern with two entries that both went viral beats one with forty mediocre ones. Weight by performance, not by count.

Failure modes

Symptom Cause Fix
Variants read flat / corporate rewrote the sentence instead of swapping words restore the original skeleton, change only the charged words
All variants sound identical swapped one word in one slot vary the slot — verb, intensifier, or emotional noun
Variants lost the tension resolved the curiosity gap inside the hook the gap stays open; the payoff belongs after the hook
Nothing outperforms mining unranked or off-niche data re-export ranked, filter to the actual niche

Where it sits

agent-reach / reel-analyzer find what's working → hook-mining turns that data into your own hooks → viral-hook-writer ranks → reel-scripter writes the script → reel-builder builds it.

1---
2name: hook-mining
3description: >
4 Mine a CSV of REAL top-performing hooks and generate alternatives that keep what made them work:
5 hold the storytelling psychology and structure fixed, hot-swap only the power words.
6 Use when the user has hook performance data (a Sandcastles / social-analytics export, scraped
7 competitor hooks, their own analytics) and says "mine hooks", "remix hooks", "hook variations",
8 "make hooks from this CSV", or "give me hook options from what's working".
9 NOT for inventing hooks from nothing — that's viral-hook-writer.
10user-invokable: true
11argument-hint: "[path to your hooks CSV]"
12license: MIT
13metadata:
14 author: Ootto
15 version: "1.0.0"
16---
17 
18# Hook mining
19 
20Most AI hook writing is slop for one of two reasons: it copy-pastes a hook that worked for someone
21else, or it "rewrites" it until the English is flat and the psychology is gone.
22 
23This does neither. It keeps the **data for what worked** — the structure, the psychological
24mechanism, the rhythm — and swaps only the **power words**. Proven skeleton stays, skin changes.
25 
26## 1. Get real hooks in
27 
28You cannot mine what you do not have. The input is a CSV of hooks that **actually performed**:
29 
30- a **Sandcastles** (sandcastles.ai) export — it analyses the top videos in your niche and ranks the
31 best hooks; export that tab to CSV
32- any social-analytics export with a hook/title/caption column and a views/likes/score column
33- competitor hooks pulled with the **agent-reach** skill, or breakdowns from **reel-analyzer**
34 
35Column names are never predictable, so don't hand-parse.
36 
37## 2. Mine it
38 
39```bash
40python skills/hook-mining/mine_hooks.py hooks.csv [--top 40]
41```
42 
43Auto-detects the hook column and the performance column, ranks, buckets by pattern, and flags the
44power words already present. Writes `hooks.mined.json`. Run `--selftest` to verify the parsing.
45 
46Patterns it sorts into: `result-proof` · `time-bound` · `contrarian` · `secret-gap` · `listicle` ·
47`how-to` · `warning-fear` · `newsjack` · `comparison` · `question` · `curiosity-tease` ·
48`plain-statement`.
49 
50## 3. Remix — the part that matters
51 
52For each hook worth reusing, produce 3–5 alternatives under one rule:
53 
54> **Keep the psychology. Swap the power words.**
55 
56Hold **fixed**: the pattern, the clause order, the specificity (a number stays a number), the rhythm
57and syllable shape, the tension and where it resolves, the point of view.
58 
59Swap **only**: the charged words — the verb, the intensifier, the noun carrying the emotion.
60`power_word_frequency` in the mined JSON tells you which ones are earning their keep in *your* niche.
61Pull replacements from there, not from a thesaurus.
62 
63```
64proven: "You're using Claude wrong" [contrarian · you're + wrong]
65 ✅ "You're prompting Claude backwards" swapped the verb + the charge word
66 ✅ "You're building agents the slow way" same skeleton, same tension
67 ❌ "Many people use Claude incorrectly" psychology gone, flat English → slop
68 ❌ "You're using Claude wrong" verbatim copy → plagiarism, the platform buries it
69```
70 
71Then hand the winners to **viral-hook-writer** to rank, or straight into **reel-scripter**.
72 
73## Hard rules
74 
75- **Never ship a mined hook verbatim.** It is someone else's line. Instagram's originality systems
76 bury copies, and it's plagiarism. Model the technique, write your own words.
77- **Never remix the structure.** Change the clause order or drop the number and you have thrown away
78 the only thing the data proved.
79- **A number in the source stays a number in the remix — and it must be YOURS and real.** Swapping in
80 a stat you cannot defend is the fastest way to lose an audience.
81- **Rank before you mine.** Remixing a hook that did not perform just launders a bad idea.
82- **Small buckets are signal.** A pattern with two entries that both went viral beats one with forty
83 mediocre ones. Weight by performance, not by count.
84 
85## Failure modes
86 
87| Symptom | Cause | Fix |
88|---|---|---|
89| Variants read flat / corporate | rewrote the sentence instead of swapping words | restore the original skeleton, change only the charged words |
90| All variants sound identical | swapped one word in one slot | vary the slot — verb, intensifier, or emotional noun |
91| Variants lost the tension | resolved the curiosity gap inside the hook | the gap stays open; the payoff belongs after the hook |
92| Nothing outperforms | mining unranked or off-niche data | re-export ranked, filter to the actual niche |
93 
94## Where it sits
95 
96`agent-reach` / `reel-analyzer` find what's working → **hook-mining** turns that data into your own
97hooks → `viral-hook-writer` ranks → `reel-scripter` writes the script → `reel-builder` builds it.
98 

Discussion

Alternatives

shadcn/uiManages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset".Coding · MITADK Code ReferenceThis skill should be used when the user wants to "write agent code", build an agent with ADK", "add a tool", "create a callback", "define an agent", use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).Coding · Apache-2.0Visual editOpen and collaboratively edit a running local app in Design, with shared fallback previews and source handoff. Use when the user asks to inspect, share, or edit a real local app in Design.Coding · MITModsmithPatterns, cost review and ready templates for Claude Mods (Claude Code plugins whose behaviour is a function-hooks module). Adds what the built-in mod authoring does not: proven designs (fork-check-draw, tool + ledger, mode registry, artifact-backed state), prompt-cache and token-cost review, a vetting pass for someone else's mod, and rules for mods that compose. USE WHEN: build a mod, make a claude mod, mod templates, quiz me after each turn, assumptions tool / register_assumption, supervisor that checks the turn, next-steps check, mode selector / mode registry, effort by domain, model router that keeps the cache, prompt cache cost of a mod, what does this mod cost per turn, review or vet someone's mod before installing, mods that work together, Kanban artifact as shared project state. NOT FOR: classic shell-command hooks in settings.json (PreToolUse etc.), a plain skill or slash command, MCP server authoring, or looking up the hooks API itself (use the engine's plugin-authoring guidance and generated types).Coding · MIT