ab-hook-tester
Generates two genuinely distinct hook variants for the same reel so you can post-test which opening actually wins. Use when the user says "give me two hooks to…
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. Use when the user has hook performance data (a Sandcastles / social-analytics export, scraped
$ npx -y skills add Ootto-AI/claude-content-skills --skill hook-mining --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/hook-miningContext preview
The summary Claude sees to decide when to auto-load this skill.
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. Use when the user has hook performance data (a Sandcastles / social-analytics export, scraped
name: hook-mining description: > 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. Use when the user has hook performance data (a Sandcastles / social-analytics export, scraped competitor hooks, their own analytics) and says "mine hooks", "remix hooks", "hook variations", "make hooks from this CSV", or "give me hook options from what's working". NOT for inventing hooks from nothing — that's viral-hook-writer. user-invokable: true argument-hint: "[path to your hooks CSV]" license: MIT metadata: author: Ootto version: "1.0.0"
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.
You cannot mine what you do not have. The input is a CSV of hooks that **actually performed**:
best hooks; export that tab to CSV
Column names are never predictable, so don't hand-parse.
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`.
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**.
bury copies, and it's plagiarism. Model the technique, write your own words.
the only thing the data proved.
a stat you cannot defend is the fastest way to lose an audience.
mediocre ones. Weight by performance, not by count.
| 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 |
`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.
Free, copy-paste Claude skills that run your content growth factory — turn ideas (and your Obsidian memory) into scroll-stopping Instagram reels: hooks, scripts, repurposing, captions, and a 2-week posting calendar.
Repo: Ootto-AI/claude-content-skills
Generates two genuinely distinct hook variants for the same reel so you can post-test which opening actually wins. Use when the user says "give me two hooks to…
MUST USE when user wants to 调研/research/搜索/search/查/找/look up anything on the internet — e.g. 全网调研 X / 帮我调研一下 X / 查一下 X / 搜搜 X / 看看大家怎么评价 X / X 上有什么讨论 /…
Give Claude a permanent, searchable long-term memory using an Obsidian vault as the store. At the end of a session, summarize what mattered and save it as a…
Reads your reel insights and explains in plain English what to make more of and what to stop — no jargon. Use when the user says "explain my analytics", "what…
Build evidence-led social audience personas from customer interviews, comments, reviews, or CRM notes.
Turns a script into a shoot-ready shot list — every clip, angle and visual you need to film, in order. Use when the user says "what do I need to film", "shot…