CodeWords lets non-technical teams build AI agents in plain English: “words in, working agents out.” Proving that at volume, across the logistics, onboarding, and support teams it sells to, meant shipping UGC fast. CodeWords published this pipeline itself, shared freely. Below is the fuller version, with Hook’s actual part called out: the research stage that decided what got made.
Real product data
Where Hook fits: the research stage
Before templatizing a format, Hook scanned competitor and creator accounts in the target niche and scored each video on real virality, not raw view count.
Views against followers
500K views on a 10K-follower account is a real signal. The same views on a 2M-follower account often isn’t.
Organic vs. boosted
Every candidate is checked against the Meta Ad Library, so a paid win doesn’t pass as an organic one.
The bar: don’t templatize off one outlier. Wait for more than one video independently outperforming in the same shape. Everything past this point, script generation, sourcing, scheduling, is CodeWords’ own system, included because it’s what turns a research signal into shipped video, not because it runs on Hook.
What Hook actually is: a workspace that watches the organic and paid video in a category, separates real virality from boosted spend, and surfaces the formats worth building around, the exact job it did in stage one here.
1 · Overview
The full system, six stages
Can an AI agent run most of a paid-UGC operation, with a human only making calls that need taste? CodeWords lands at roughly 70-80% hands-off, by design, section 10 covers the rest honestly.
The stack, one of six tools is Hook
| Tool | Role | Required? |
|---|---|---|
| Hook (askhook.com) | Research: finds and scores winning formats | Yes |
| Claude + a CLAUDE.md | Script generation, orchestration, browser actions | Yes |
| Notion (MCP-connected) | Brief storage | Yes |
| Fiverr | Creator sourcing | Yes |
| Google Drive | Deliverable storage | Yes |
| Buffer (MCP-connected) | Scheduling and auto-publish | Yes |
| PostHog or equivalent | Attribution: did this actually drive signups | Recommended |
| Meta / TikTok Ads | Boosting winners once accounts are warm | Optional |
| ElevenLabs | Voiceover when a creator doesn't speak the target language | Optional, rarely needed |
The six stages
The stack · top to bottom
Research a winning format
HookGenerate script variants
ClaudeBuild the brief
NotionSource and vet a creator
FiverrReceive, store, and QA
DriveSchedule and publish
BufferResearch. Hook scores real virality across the niche, re-run once per batch.
Script. Claude templatizes the winning video, one variant per industry. Section 4.
Brief. Claude builds the Notion page: mechanic, reference video, casting, scripts.
Source. Claude vets Fiverr creators for camera presence. Section 5.
QA. Claude stores deliveries in Drive, checks the QA gates. Two are hard gates.
Publish. Claude schedules to Buffer. Warm accounts first, see section 6.
Why it compounds
A winning script becomes the next research reference, so each cycle starts from a stronger baseline, and that rising bar is exactly what Hook is checking for.
The flywheel · clockwise
Building your own version
- Connect Hook, Notion, and Buffer via MCP.
- Write a
CLAUDE.mddescribing your product and ICP. Template in section 4. - Budget enough to seed a few sub-accounts through their first batch. Section 9.
- Pick a format from Hook’s Discover feed and run stages 1-3 once before sourcing a creator.
2 · Setup
Tools, accounts, and setup
MCP wiring order
- Hook first. Add competitor and creator accounts, a manual pass the first time.
- Notion second. One page, sub-pages per format, is enough to start.
- Buffer last, it depends on social accounts already existing. See section 6.
- Claude drives Fiverr and Drive directly through your logged-in browser, no separate MCP needed.
Connecting Hook’s MCP
Nothing to install or mint. In Claude, Settings → Connectors → Add custom connector, and paste:
https://api.askhook.com/api/mcpSame URL works in Cursor’s .cursor/mcp.json or any other MCP client, sign in to Hook when prompted on first connect.
Full walkthrough: askhook.com/mcp
CLAUDE.md: company context, once
A minimal starting version:
# CLAUDE.md
## Company
[Your company] builds [what it does] for [who it's for].
## Product
[One paragraph: what the product actually does, in plain language.
This is what Claude will describe in every script.]
## ICP / industries we sell into
[List the industries, use cases, or personas you want script variants for.
This becomes the variation axis in stage 2.]
## Claims we can make
[What you can honestly say the product does, and anything you must NOT
claim. This is the single most important section, see section 4.]Cost floor
Budget at least $2,000 for a real first pass, enough for 3 sub-accounts through their first batches. Ad spend is separate and optional. Full ladder in section 9.
Minimum viable version
- Hook's lowest tier: browse the feed manually, skip MCP automation
- Skip Fiverr for a first test, film a variant in-house
- Skip Buffer's paid tier while running one account
- Skip ElevenLabs, paid analytics, and all ad spend
3 · Brief template
The Notion brief template (“Format Pack”)
One page per format, same skeleton every time.
1. Page icon
Matches the niche or format, not a generic icon.
2. Title
“Creator name: Format name,” e.g. “Edvard: No-Talk Build.”
3. Product intro
Same one sentence, every page.
[Your Company] (yourproduct.com) builds [what it does] from [the core mechanic]. No code.
4. Casting callout
Who they're playing, what NOT to film.
[Persona]. You're [doing what]. Film [where], not [what breaks the fiction].
5. Format mechanic
One bolded paragraph, the beats, any hard constraint.
6. Continuity line
Script ID range, only when extending a batch.
7. Reference video
Embedded with its real numbers, not just linked.
8. Demo scene/URL
The exact screen a creator should have open.
9. Dialogue explainer
The fixed beat, spelled out, for dialogue formats.
10. The packs
One line per pack of 10 scripts, named by the arc it spans.
4 · Prompts
The actual prompts
Most of the work is context Claude already has, the prompt itself is short.
Prompt 1: templatize a winning format
Templatize this format. Break it into its fixed beats (the parts that
never change) and its variable slots (the parts that change per
industry/use case/persona). Then generate <N> script variants, one per
<industry|use case|persona> from the list in CLAUDE.md, keeping every
fixed beat identical and only changing the variable slots.
Create a Notion page for this using the Format Pack template, and put
the scripts in packs of 10.This works with almost no extra detail because Claude already has the reference video, the CLAUDE.md, and the template. Thin any one of those, and the output turns generic.
Worked example
Reference: a DM-reveal hook (low number typed, client reveals a bigger budget, creator counters higher), then a build sequence, then a payoff.
Templatize the Budget Reveal format from this video. The DM hook and
the numbers in it stay identical across every variant, don't touch
that part. Vary only the build sequence: swap the industry the client
is in and what gets built for them, using the industries in CLAUDE.md.
Generate 10 variants, one pack, Aesthetics through Gym.Output: 10 scripts, identical DM dialogue, a different industry’s build sequence each time.
The variation axes
- Industry, CodeWords’ main axis
- Use case, multiple jobs in one industry
- Persona, different buyer types
- Feature, a different capability per variant
The failure mode to watch for
A lazy variant: same pain point, only the industry noun swapped. Spot-check a few from different ends of the batch. Second check, every batch: does every claim still hold up against CLAUDE.md’s claims list?
5 · Creators
Finding, vetting, and QA-ing creators

A creator, mid-hook
Claude drives a logged-in Fiverr session: searches the UGC-video category, filters to price, screens for camera presence, not spoken fluency. Baseline: £20-30 per video.
Language usually isn’t a filter, non-native speakers who act well are the cheapest option. If a format needs spoken voice, shoot silent b-roll and layer an ElevenLabs voiceover in instead of dropping the creator.
What disqualifies a creator
- Inconsistent presentation across their own samples, a reseller-account tell
- Poor audio or lighting, even at the right price
- No natural camera reaction, some formats need it even without dialogue
First order, then repeat. One script before a bulk pack. Once someone delivers, keep reordering, most volume comes from a small roster.
Late or low-quality. Late gets a grace window. Low quality: soft failures get a revision request, hard-gate failures get rejected outright.
QA gates
Two are hard gates, fail either and the video is rejected regardless of everything else.
| Dimension | What it’s checking | Hard gate? |
|---|---|---|
| Brand fit | On-persona, on-tone, no punching down | No |
| Hook quality | Does the first ~3 seconds actually stop a scroll | No |
| Message accuracy | Your product is shown genuinely working, and every claim made is one you can back up | Yes |
| Authenticity | Reads like a real person, not a read script; any on-screen demo is real, not faked | No |
| Disclosure compliance | Any required disclosure/partnership tag is present, per platform and jurisdiction rules | Yes |
6 · Accounts
Account warm-up
On the specifics
A new account posting immediately, especially alongside others sharing signals (device, network), reads like a bot farm. Patience before the first post is the fix.
The sequence
Day 1 · through · Day 8+
Day 1 Create, don't post
Days 1-3 Passive activity only
Days 4-5 First low-stakes posts
Days 6-7 Ramp toward normal cadence
Day 8+ Full cadence
Mechanics
- A distinct phone number per account (eSIM or similar)
- A distinct email alias, ideally on your own domain
- A real-feeling profile: genuine photo, matching bio
The real failure mode is a temporary checkpoint, not a permanent ban, budget for it as routine.
7 · Audio
Adding soundtracks programmatically
Silent b-roll and assembled clips need music muxed in without a human touching an editor.
1. Detect if a clip needs music
ffmpeg -i clip.mp4 -af volumedetect -f null - 2>&1 | grep mean_volume-90dB or lower is effectively silent.
2. The rule
A track must be at least as long as the clip. It plays once, trimmed, never looped, a loop point reads as cheap immediately.
3. The mux command
ffmpeg -i clip.mp4 -ss <track_offset> -i track.mp3 \
-map 0:v:0 -map 1:a:0 \
-c:v copy -c:a aac \
-shortest \
out.mp4-shortest enforces the trim.
The copyright tradeoff
Commercial tracks risk a platform muting the post’s audio. Build the library from royalty-free or explicitly licensed sources.
8 · Scheduling
Scheduling and publishing: Buffer
Buffer schedules and reports real per-post metrics. Every rule below cost a broken queue before it became a rule.

A finished, scheduled video
createPost(input:{
channelId, schedulingType:"automatic", mode:"customScheduled", dueAt:"<ISO-8601 UTC>",
text, metadata:{ instagram:{ type:"reel", shouldShareToFeed:true } },
assets:[{ video:{ url } }]
})Six rules that break a queue silently
- schedulingType is fixed at creation. Always
"automatic", wrong ones get recreated, not patched. - The media URL must stay alive past publish time, not just scheduling time.
- HEVC/H.265 files (iPhone footage) need transcoding, or ask for H.264 directly.
- Rate limits trip mid-batch around 50 rapid calls.
- editPost replaces the whole post, resend everything, even for a schedule-only edit.
- Delivered clips are often silent, check, don’t assume.
- New accounts: 1/day during warm-up
- Established: 2-3/day
- Stagger the exact minute, per account
Claude runs the scheduling mechanics entirely. Deciding which video to boost with paid spend stays a person’s call.
9 · Economics
Economics
The cost ladder
| Approach | Relative cost | Why it’s cheaper |
|---|---|---|
| A fully outsourced, one-off videoSource, brief, and pay for a single finished edit | Highest | No repeat relationship, no reuse, full creative and editing cost every time |
| A bulk order from a proven creator on your rosterReordering from someone who already delivers | Lower | Per-unit discount at volume, no re-sourcing cost, creator already knows your brand |
| Template-and-swapCreator ships raw footage, you assemble programmatically | Lower still | You're paying for footage, not a finished edit; the “editing” is a repeatable script |
| AI-assisted recastingOne real shoot, multiplied across personas | Lowest | The marginal cost of a new “creator” approaches a generation job, not a new booking |
What actually drives cost
- Boosting, not creator cost, is usually the largest recurring line
- Account launch cost is fixed and one-time per account
- Production, not posting, is the real bottleneck
10 · The honest part
What this system will not do for you
A mature run is roughly 70-80% hands-off. Every batch still needs a manual pass on QA (“does this feel authentic” stays human) and occasional platform repair work, automation reduces both, it doesn’t erase them.
Three decisions that stay human
Which format is worth scaling
Don't move until more than one video independently outperforms in the same shape.
Brand and tone on a brief
Claude's brief is technically correct every time. Whether it's on-brand is a smaller, real check.
What to boost
Needs live performance signal and budget judgment, not something handed to a scheduler.
The system removes the repetitive 80%. The 20% that stays manual is where a wrong automated call is expensive, and where judgment doesn’t reduce to a rule.
FAQ
Common questions
What is Hook?
Hook is a creative-intelligence workspace for short-form video: it watches the organic and paid video in a category, separates real virality from boosted spend, and surfaces the formats actually worth building around.
Did Hook build this UGC pipeline?
No. CodeWords built and runs the pipeline, Notion tracker, Fiverr sourcing, account warm-up, Buffer scheduling, all of it. Hook's part is stage one only: research, deciding which formats were actually worth templatizing.
How does Hook tell a real winner from a boosted one?
Two checks. First, views against the account's own follower count, since 500K views on a 10K-follower account means something different than the same views on a 2M-follower account. Second, every candidate gets checked against the Meta Ad Library so a paid post doesn't pass as organic.
How do I connect Hook's MCP to Claude or Cursor?
Add https://api.askhook.com/api/mcp as a custom connector in Claude, or the same URL in Cursor's .cursor/mcp.json. No key to mint, sign in to Hook when prompted on first connect.
Do I need Hook to run a pipeline like this?
No, the research stage can be done manually by browsing what's winning in a niche. Hook exists to make that stage faster and more reliable, not to gate the rest of the pipeline.
CodeWords built the 80% that’s the same every time. Hook is the part that decides what that 80% should be pointed at.
