shipped@di-atomic/hook-generator · v1.5.0 · beta

64 sourced hooks. 18 with real numbers. Your agent invents none of them.

Ask any model for ten hooks and you get the statistical middle of every opener it has ever read. hook-generator installs instead — from 64 templates that each carry the URL they came from — then refuses to hand you the set until the scripts agree it passed. New in v1.5.0: it writes the first 3 seconds of a Reel, TikTok or Short too. What is said, what is on screen, and what the first frame shows.

For founders and marketers whose AI writes the first line — and quietly hands them the same opener it just handed everyone else.

Chalkboard diagram: a speech bubble labelled SAY, a gold bar labelled WRITE and a picture frame labelled SHOW each send an arrow into one tall phone outline labelled FIRST 3 SECONDS
Built by Di-Atomic Marketing & compliance agency BPR / CLP claim-aware 7-language team Clients incl. ONYX Radiance, Pamit Group
64source-attributed hook templates
24real shorts read frame by frame for the video hook
6enforcement scripts gate the output
100/100marketplace security score
Installopvs-skills install @di-atomic/hook-generator

Then say: “write me 5 LinkedIn hooks for CFOs at mid-market SaaS”

Why it works when “write me some hooks” doesn’t

A model inventing from training data
> write me 10 hooks

"Unpopular opinion: ..."
"Here’s the thing nobody
 tells you about ..."

(no source, no length gate,
 no structure check)

They scan fine. They are also the average of every opener the model has read, which is why your feed is full of them.

hook-generator installs, then gates
install registry/  ✓ 3 templates + URLs
generate           ✓ 6 across 6 angles
verify-hook-quality   ✓ 6/6 under ceiling
lint-anti-patterns    ✓ 0 banned
grade-against-examples ✓ 6 structures
lint-build-diary      ✓ 6/6 level 3

Five scripts gate the set with PASS/FAIL numbers the agent can’t fudge.

A hook that sounds good is not proof. The exit code is.

What you actually get

📇

It installs, it doesn’t invent

Matches on platform and angle, pulls templates out of a 64-item registry, and writes your topic into shapes that already ran on real posts. Every template carries the URL it came from.

🎯

It knows the surface and the moment

Six angles — contrarian, number-led, admission, story, future-shock, identity — tuned to where each platform truncates. Announcing a launch loads a separate recipe that names what the buyer gets instead of how you built it. A short video gets its own recipe for the first 3 seconds.

🚫

It hard-blocks regulated claims

Sell a biocide and “non-toxic” is a BPR problem, not a style choice. That lint is a hard gate and cannot be overridden, in any of the seven languages we work in.

The two rules that keep it honest

Chalk grid of squares with exactly 7 filled gold, bracketed 7 measured, and the rest as outlines bracketed pattern-level
Of the written templates, only 7 carry a verifiable metric. The rest say pattern-level rather than a number nobody measured. The 11 video templates each carry a measured views ratio.
Chalk diagram: six hook cards pass through five gates labelled LENGTH, SLOP plus BPR, STRUCTURE, LAUNCH LINT and COORDINATION, with a fail loop back to rewrite and a gold pass arrow out
Every written set runs these five gates, and a video hook adds a sixth. Fail one and it loops back to rewrite — there is no ship-anyway path.

A real run — including the one that failed

> 6 blog-title hooks for the launch of this very skill

  RUN 1
  lint-build-diary ........ FAIL  1 hook read as level 2, a symptom not a launch
  lint-anti-patterns ...... PASS  0 banned
  grade-against-examples .. FAIL  1/4 structures, 2 UNCLASSIFIED

  → regenerate

  RUN 2
  lint-build-diary ........ PASS  6/6 level 3 launch
  lint-anti-patterns ...... PASS  0 banned, 0 em-dashes
  grade-against-examples .. PASS  6 structures, 0 questions, 0 unclassified

  Shipped: "Everyone’s launch post sounds like a build log.
            Your agent writes the other kind."

That is the actual gate output from writing this page’s launch post. Deterministic scripts — not an LLM grading its own copy.

The first 3 seconds of a Reel, TikTok or Short new in v1.5.0

Ask for the hook of a short video and you get three channels written together: what is said, what is written on screen, and what the first frame shows. It is modelled on 24 real shorts, 12 creators’ best against their own worst. A first line about the creator opened 8 of the 12 worst and 1 of the 12 best.

Chalkboard headed OPENS ON ME, split in two: BEST with 1 OF 12 in white chalk, WORST with 8 OF 12 in gold
Same 12 creators, best against worst. Text on screen was table stakes (11 of 12 against 12 of 12). Who the first line was about was not.
Two chalk phone outlines: WIDE STAGE, a tiny stick figure behind a row of audience heads, crossed out; TIGHT ON FACE, a close-up head under a gold title box, with a gold tick
One creator, two Reels: 11.86x her median opens tight on her face, 0.32x opens on a wide stage. The checker warns on wide and far, and fails a logo, a title card or black.
> 3 hooks for a Reel: “why cold emails get no replies”

  #1 number-led   · face_talking ....... PASS
     say   “There are only three reasons a cold email gets ignored.”
     write “3 reasons your cold email gets ignored”   (held 3.0 s)
     show  tight close-up, talking to camera from frame 0
  #2 contrarian   · face_talking ....... WARN  11 spoken words > 10
  #3 future-shock · screen_action ...... PASS
  set  3 variants · 3 angles · 1 question · 2 frame-0 subjects .. PASS

> the opener most people film

  say   “Hi, I’m Martin, and today I want to talk about cold email.”
  show  the company logo animating in on black
  V1 FAIL  no text on screen
  V4 FAIL  opens on a greeting
  V5 FAIL  frame 0 is a logo: 0 of 24 corpus videos opened on one

Real output of verify-video-hook, not an illustration. It grades the words and the plan. video-director times the real audio, and video-analyst reads the rendered opening back.

Where it stops

Chalk diagram: a gold hook-generator box inside a dashed boundary emits the opener, fanning out to post-writer, outbound-engine and section-designer, which reach a globe labelled publishes
It writes the opener and nothing else. The siblings finish the job and publish — this one produces text and stops.
It will not write your body copy, your full post or your email sequence. And it will not invent a language it has not validated: German, French, Spanish, Russian and Romanian templates are held until the native lead for each signs off, and Hebrew is out entirely. Ask for those today and it tells you so instead of guessing. It does not pick your video thumbnail either: that is @di-atomic/thumbnail.
Why this exists

I built this by dogfooding the same stack I run for clients.

hook-generator is one skill in the system behind Di-Atomic — the marketing & compliance agency that runs cognitoAI, SpiderIQ and OPVS. If you want openers that are grounded in evidence rather than guessed at, gated before they ship, and compliant in regulated categories — in any of our seven languages — that’s the day job. Let’s talk.

Book a 30-min call with Di-Atomic

Just want the skill? Install @di-atomic/hook-generator free.