500+ proven ad hooks. Search, filter, fill-in-the-blank. Ship better ads.
A massive, structured, searchable library of battle-tested ad hook formulas for marketers, copywriters, and media buyers. CLI tool + importable JS/TS library. No AI required β just proven copywriting frameworks organized for instant use.
npx hookbank search "fitness"
npx hookbank random --category pain-point --count 3
npx hookbank fill hk_001 --vars '{"problem":"acne","solution":"ClearSkin"}'Every marketer needs fresh hooks constantly. There's no good open-source, structured, searchable hook database. People pay for swipe files or scroll competitors manually. hookbank makes this free, fast, and systematic.
- β 530+ hooks across 12 proven categories
- β
Fill-in-the-blank templates with
{{variable}}syntax - β Full-text search across templates, examples, tags
- β Platform-aware β tagged for Meta, TikTok, YouTube, Google, Email, etc.
- β Zero dependencies for the core library
- β Works via npx β no install required
# Search hooks
npx hookbank search "fitness"
# Get random hooks
npx hookbank random --count 5
# Browse a category
npx hookbank browse --category curiosity-gap
# Fill a template
npx hookbank fill hk_042 --vars '{"problem":"low energy","solution":"VitaBoost"}'
# Stats
npx hookbank statsnpm install hookbank
# or
yarn add hookbank
# or
bun add hookbank| Command | Description |
|---|---|
hookbank search <query> |
Full-text search across templates, examples, tags |
hookbank browse [--category <cat>] |
Browse hooks, optionally filtered |
hookbank random [options] |
Get random hooks |
hookbank fill <id> --vars '<json>' |
Fill in a template |
hookbank stats |
Show counts by category and platform |
hookbank categories |
List all categories |
hookbank platforms |
List all platforms |
hookbank export [options] |
Export as JSON or CSV |
hookbank help |
Show help |
hookbank random --category pain-point # by category
hookbank random --platform tiktok # by platform
hookbank random --count 5 # number of results (default: 3)hookbank export --format json # full JSON export
hookbank export --category social-proof --format csv # category CSVimport { hooks, search, random, fill, categories, platforms, stats, getHook } from 'hookbank';
// Full-text search
const results = search('fitness');
// Random hooks for TikTok
const tiktokHooks = random({ platform: 'tiktok', count: 5 });
// Random hooks by category
const painHooks = random({ category: 'pain-point', count: 3 });
// Fill a template
const filled = fill('hk_001', { problem: 'acne', solution: 'ClearSkin' });
// β "Tired of acne? Here's how ClearSkin changes everything."
// Get all categories
const cats = categories();
// β ['pain-point', 'curiosity-gap', 'social-proof', ...]
// Get all platforms
const plats = platforms();
// β ['meta', 'tiktok', 'youtube', 'google', 'email', ...]
// Get a specific hook
const hook = getHook('hk_001');
// Get stats
const s = stats();
// β { total: 530, byCategory: { 'pain-point': 55, ... }, byPlatform: { ... } }
// Access the raw hook array
console.log(hooks.length); // 530interface Hook {
id: string; // "hk_001"
template: string; // "Tired of {{problem}}? Here's how {{solution}} changes everything."
category: string; // "pain-point"
tags: string[]; // ["negative-emotion", "problem-solution", "direct"]
platforms: string[]; // ["meta", "tiktok", "youtube", "google"]
format: string; // "video" | "static" | "text" | "universal"
example: string; // A filled-in real-world example
effectiveness: string; // "high" | "medium"
bestFor: string; // "DTC brands", "SaaS", "info products", etc.
}Hooks that speak directly to a frustration or problem.
| ID | Template |
|---|---|
| hk_001 | Tired of {{problem}}? Here's how {{solution}} changes everything. |
| hk_003 | {{problem}} is costing you more than you think. |
| hk_010 | You don't have a {{symptom}} problem. You have a {{root cause}} problem. |
| hk_029 | You've tried everything for {{problem}}. Except this. |
| hk_040 | You don't need another {{common solution}}. You need {{real solution}}. |
Hooks that create an information gap the reader must close.
| ID | Template |
|---|---|
| hk_056 | The #1 reason {{audience}} fail at {{goal}}. |
| hk_057 | What {{experts}} won't tell you about {{topic}}. |
| hk_063 | I tested {{number}} {{things}} and only {{small number}} actually work. |
| hk_082 | Why {{common advice}} is actually the worst thing you can do. |
| hk_102 | The {{thing}} rule that changed my entire {{area of life}}. |
Hooks that leverage the power of numbers, testimonials, and credibility.
| ID | Template |
|---|---|
| hk_106 | Join {{number}}+ {{people}} who {{achieved result}}. |
| hk_107 | {{person}} went from {{state A}} to {{state B}} in {{time}}. |
| hk_111 | {{number}} {{star}} reviews can't be wrong. |
| hk_120 | {{number}} {{audience}} can't all be wrong about {{product}}. |
| hk_143 | This product has a {{percentage}}% repurchase rate. Find out why. |
Hooks that create time pressure and fear of missing out on a deal.
| ID | Template |
|---|---|
| hk_151 | Last chance to {{action}} before {{deadline}}. |
| hk_152 | Only {{number}} spots left for {{offer}}. |
| hk_158 | {{product}} just came back in stock. It won't last long. |
| hk_165 | Prices go up {{date}}. This is your last chance at {{price}}. |
| hk_183 | Founder's pricing ends soon. Lock in {{price}} for life. |
Hooks that challenge conventional wisdom and spark debate.
| ID | Template |
|---|---|
| hk_193 | Stop {{common advice}}. It's killing your {{result}}. |
| hk_194 | {{popular thing}} is actually hurting your {{outcome}}. |
| hk_195 | Everything you've been told about {{topic}} is wrong. |
| hk_209 | If {{common advice}} worked, everyone would be {{desired state}}. |
| hk_226 | The uncomfortable truth: {{hard truth about topic}}. |
Hooks structured as questions that pull the reader in.
| ID | Template |
|---|---|
| hk_235 | What if you could {{dream outcome}} in just {{time}}? |
| hk_236 | Do you make these {{number}} {{topic}} mistakes? |
| hk_245 | What if {{problem}} had nothing to do with {{assumed cause}}? |
| hk_254 | What separates {{successful people}} from {{everyone else}}? |
| hk_260 | Want to know the secret to {{outcome}} in {{number}} steps? |
Hooks that open with a compelling story or personal journey.
| ID | Template |
|---|---|
| hk_277 | I was {{relatable situation}} until I discovered {{solution}}. |
| hk_278 | 6 months ago I {{starting point}}. Now I {{current state}}. |
| hk_283 | The day everything changed for me was when {{pivotal moment}}. |
| hk_287 | They laughed when I {{action}}. But when I {{result}}... |
| hk_294 | The moment I realized {{life-changing realization}}. |
Hooks that lead with expertise, credentials, and proven track record.
| ID | Template |
|---|---|
| hk_322 | As a {{role}} with {{number}} years of experience, here's what I know for sure. |
| hk_324 | I've {{impressive achievement}} and this is the {{thing}} that made the difference. |
| hk_325 | {{credential}}-approved: The {{thing}} you should actually be using. |
| hk_334 | The exact {{strategy/process}} that got me {{result}}. |
| hk_347 | The {{thing}} strategy that grew my {{metric}} by {{percentage}}. |
Hooks built around dramatic transformations and visual proof.
| ID | Template |
|---|---|
| hk_364 | From {{bad state}} to {{good state}} in {{time}}. |
| hk_365 | {{time}} ago I {{before state}}. Now I {{after state}}. |
| hk_373 | Before: {{painful metric}}. After {{product}}: {{amazing metric}}. |
| hk_383 | The {{thing}} that made me go from {{struggle}} to {{success}}. |
| hk_403 | No filters. No editing. Just {{time}} of {{product}}. The results are real. |
Hooks leading with a number β instantly scannable and credible.
| ID | Template |
|---|---|
| hk_406 | {{number}} ways to {{desired result}} without {{common sacrifice}}. |
| hk_407 | The {{number}}-step {{method}} for {{outcome}} that actually works. |
| hk_411 | {{number}} free tools that replaced my ${{amount}}/month stack. |
| hk_421 | The {{number}}-minute {{routine}} that changed my {{life area}}. |
| hk_449 | The {{number}}-word formula for {{outcome}}. |
Hooks that trigger FOMO β trending topics, competitor awareness, and opportunity cost.
| ID | Template |
|---|---|
| hk_451 | Everyone's talking about {{thing}} and you're missing out. |
| hk_452 | Your competitors are already {{doing thing}}. Are you? |
| hk_459 | If you're not {{doing thing}} yet, you're already behind. |
| hk_476 | {{percentage}}% of {{industry}} leaders are already using {{tool/method}}. |
| hk_490 | Your future self will thank you for {{action}} today. |
Hooks that open with understanding, validation, and shared experience.
| ID | Template |
|---|---|
| hk_493 | I get it. {{shared frustration}}. That's exactly why we built this. |
| hk_494 | If you're like most {{audience}}, you've probably {{relatable experience}}. |
| hk_497 | I know what it feels like to {{painful experience}}. |
| hk_498 | You're not lazy. You're not broken. You just need {{real solution}}. |
| hk_513 | You deserve {{positive thing}} without {{negative cost}}. |
import { search, fill, random } from 'hookbank';
// Find hooks for a DTC skincare brand
const skincareHooks = search('skincare');
// Get 3 high-converting TikTok hooks for fitness
const tiktokFitness = random({ platform: 'tiktok', count: 3 });
// Build a hook for a meal prep app
const hook = fill('hk_001', {
problem: 'spending hours meal prepping every Sunday',
solution: 'PrepEasy'
});
// β "Tired of spending hours meal prepping every Sunday? Here's how PrepEasy changes everything."
// Export all pain-point hooks to CSV for a client swipe file
import { hooks } from 'hookbank';
const painHooks = hooks.filter(h => h.category === 'pain-point');Want to add more hooks? PRs are welcome!
- Fork the repo and clone it
- Open
src/hooks.ts - Add your hook(s) following the
Hookinterface:
{
id: "hk_531", // Next sequential ID
template: "Your template with {{vars}}.",
category: "pain-point", // See category list below
tags: ["tag1", "tag2"], // Descriptive tags
platforms: ["meta", "tiktok"], // Where it works best
format: "universal", // "video" | "static" | "text" | "universal"
example: "A filled-in real example.", // Real-world demonstration
effectiveness: "high", // "high" | "medium"
bestFor: "DTC brands, e-commerce" // Who benefits most
}- Run
npm run buildto compile - Test with
node dist/cli.js statsto verify - Submit a PR!
| Category key | Description |
|---|---|
pain-point |
Speaks to a frustration or problem |
curiosity-gap |
Creates an information gap |
social-proof |
Leverages numbers and testimonials |
urgency-scarcity |
Creates time or quantity pressure |
contrarian |
Challenges conventional wisdom |
question |
Opens with a compelling question |
story-narrative |
Opens with a personal journey |
authority-credibility |
Leads with expertise |
before-after |
Transformation and visual proof |
number-list |
Leads with a number |
fomo |
Fear of missing out |
empathy-relatability |
Opens with understanding |
- Use real
{{variable}}names that are intuitive to fill - Write a realistic example β not a generic placeholder
- Tag accurately β helps people find hooks via search
- Mark platforms honestly β only list where it genuinely works
- Effectiveness:
high= consistently proven in the wild;medium= works situationally
MIT Β© Ad Machine
Made with β€οΈ for marketers who are tired of staring at a blank screen.
Star β the repo if you find it useful!