Hook Performance Miner

Hook mining

by Ootto-AI · MIT license · ★ 139 on GitHub

Hook mining cover

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…

---
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"
---

# Hook mining

Overview

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.

Manual install (npx, ZIP)
Claude Codenpx skills add Ootto-AI/claude-content-skills --skill hook-mining -g -a claude-code
Claude Code (degit)npx degit Ootto-AI/claude-content-skills/skills/hook-mining#main ~/.claude/skills/hook-mining
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md4.7 KB
Read SKILL.md here
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 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 139
Checked
Source
Ootto-AI/claude-content-skills ↗
Creator
Ootto-AI · 36 listings
View creator

Similar skills

See all →
Skillshadcn/uishadcn-ui/ui · by 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".★ 124k GitHub starsSkillGoogle Agent ADK Guidegoogle/agents-cli · by googleThis 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).★ 6k GitHub starsSkillLive Visual EditorBuilderIO/skills · by BuilderIOOpen 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.★ 4.5k GitHub starsSkillClaude Mods TemplatesDannyMac180/skills · by DannyMac180Patterns, 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).★ 535 GitHub starsSkillHook Variant A/B GeneratorOotto-AI/claude-content-skills · by Ootto-AIGenerates 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 test", "A/B this hook", "which opening should I use", "hook variants".★ 139 GitHub starsSkillPhysics-Based UI Motiondiip3sh/feel · by diip3shBuild UI interactions whose motion comes from a physical model instead of durations and easing curves. Turn a feel described in words ("a toggle that feels heavy", "a drawer with a magnetic snap", "a card you throw into a corner", "a knob with heavy detents", "a sticky slider") into a production component driven by mass, stiffness, damping and force fields (magnets, friction, walls), on a line, in a plane or around a dial, plus a test rig that plots position, velocity and the force field, overlays the model's prediction on the measured motion, and exports the same spring to Framer Motion, react-spring, SwiftUI, Compose or CSS linear(). Use this whenever someone asks for an animation, transition, spring, gesture, drag, flick, snap points, bottom sheet, toggle, slider, carousel or any micro-interaction that should "feel" a certain way, or wants to tune or explain a spring, even if they never say "physics".★ 48 GitHub stars

More from Ootto-AI

SkillHook Variant A/B GeneratorOotto-AI/claude-content-skills · by Ootto-AIGenerates 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 test", "A/B this hook", "which opening should I use", "hook variants".★ 139 GitHub starsSkillInternet Research RouterOotto-AI/claude-content-skills · by Ootto-AIMUST USE when user wants to 调研/research/搜索/search/查/找/look up anything on the internet — e.g. 全网调研 X / 帮我调研一下 X / 查一下 X / 搜搜 X / 看看大家怎么评价 X / X 上有什么讨论 / research this topic。 Also MUST USE when user mentions any platform or shares any URL/链接: 小红书/xiaohongshu/xhs, Twitter/推特/X, B站/bilibili, Reddit, V2EX, LinkedIn/领英/招聘/求职/jobs, YouTube, GitHub code search, 小宇宙播客, 雪球/股票行情, RSS feeds, or any web URL. 13 platforms, multi-backend routing (OpenCLI / per-platform CLIs / APIs). Zero config for 6 channels. Run `agent-reach doctor --json` to see which backend serves each platform right now. NOT for: 写报告/数据分析/翻译等内容加工(本 skill 只负责从互联网获取内容); 发帖/评论/点赞等写操作;已有专门 skill 的平台(先用专门 skill)。 【路由方式】SKILL.md 包含路由表和常用命令,复杂场景需按需阅读对应分类的 references/*.md。 分类:search / social (小红书/推特/B站/V2EX/Reddit) / career(LinkedIn) / dev(github) / web(网页/文章/RSS) / video(YouTube/B站/播客)。★ 139 GitHub starsSkillObsidian Long-Term MemoryOotto-AI/claude-content-skills · by Ootto-AIGive 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 Markdown note in your "AI Brain" vault; at the start of a session (or on demand), read back only the relevant past notes. Local markdown you own — connected via the Filesystem MCP. Trigger with "wrap up", "save this session", or "remember this".★ 139 GitHub starsSkillAnalytics Readout TranslatorOotto-AI/claude-content-skills · by Ootto-AIReads 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 do my numbers mean", "read my insights", "how did this reel do".★ 139 GitHub starsSkillSocial Audience PersonasOotto-AI/claude-content-skills · by Ootto-AIBuild evidence-led social audience personas from customer interviews, comments, reviews, or CRM notes.★ 139 GitHub starsSkillSocial Profile ConverterOotto-AI/claude-content-skills · by Ootto-AIRewrites your bio, name field and pinned-reel order to convert profile visits into follows and clicks. Use when the user says "rewrite my bio", "optimize my profile", "what should my bio say", "which reels should I pin".★ 139 GitHub stars