Skip to content

bertuccio-admachine/hookbank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

hookbank

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

Why hookbank?

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

Quick Start (zero install)

# 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 stats

Install (for library use)

npm install hookbank
# or
yarn add hookbank
# or
bun add hookbank

CLI Reference

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

random options

hookbank random --category pain-point   # by category
hookbank random --platform tiktok       # by platform
hookbank random --count 5               # number of results (default: 3)

export options

hookbank export --format json                     # full JSON export
hookbank export --category social-proof --format csv  # category CSV

Library API

import { 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); // 530

TypeScript types

interface 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.
}

Hook Categories

πŸ”΄ Pain Point (55 hooks)

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}}.

🟠 Curiosity Gap (50 hooks)

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}}.

🟑 Social Proof (45 hooks)

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.

⏰ Urgency/Scarcity (42 hooks)

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.

πŸ”₯ Contrarian/Hot Take (42 hooks)

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}}.

❓ Question (42 hooks)

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?

πŸ“– Story/Narrative (45 hooks)

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}}.

πŸ† Authority/Credibility (42 hooks)

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}}.

↕️ Before/After (42 hooks)

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.

πŸ”’ Number/List (45 hooks)

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}}.

😱 Fear of Missing Out (42 hooks)

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.

πŸ’™ Empathy/Relatability (38 hooks)

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}}.

Examples in the Wild

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');

Contributing

Want to add more hooks? PRs are welcome!

Adding hooks

  1. Fork the repo and clone it
  2. Open src/hooks.ts
  3. Add your hook(s) following the Hook interface:
{
  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
}
  1. Run npm run build to compile
  2. Test with node dist/cli.js stats to verify
  3. Submit a PR!

Categories

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

Guidelines for good hooks

  • 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

License

MIT Β© Ad Machine


Made with ❀️ for marketers who are tired of staring at a blank screen.
Star ⭐ the repo if you find it useful!

About

500+ proven ad hooks. Search, filter, fill-in-the-blank. Ship better ads.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors