UGC Ad Strategist — the research + scriptwriting brain skill
Use when a UGC ad needs a BRAIN for the words, not just the visuals — researching the audience, mining what's already winning in-market, picking the single claim, and writing the hook + beat sheet.
by kofiowusuai-lab·MIT license·★ 1 Stars on the repo·GitHub ↗
npx degit kofiowusuai-lab/ugc-skills/skills/ugc-ad-strategist#main ~/.claude/skills/ugc-ad-strategistChecked ·commit main
Inside this skill
SKILL.md · the author's own words# UGC Ad Strategist — the research + scriptwriting brain `ugc-video-producer` can make a real-looking person say words with synced lips and show a real product. It has **no brain for the words**. This skill IS that brain: market research → one claim → killer-script copy → `brief.json`. The producer consumes `brief.json` and renders the video. **Scripting engine:** this skill delegates the narrative craft to the **`killer-script-system`** skill (installed active at `~/.claude/skills/killer-script-system/`) — Packaging/Outline pick the claim + angle, Intro/Body/Outro + native-CTA write the copy. This skill wraps it with the two things it lacks for paid UGC: live research and short-form ad shaping. > **MINIMAX MODE — offload the WRITING to Claude (self-test: can't see an image = MiniMax).** MiniMax > writes stiff, ad-flavored dialogue. When on MiniMax this skill is Step 2 of the **`ugc-minimax-mode`** > pipeline (follow that skill for the whole job). Do NOT let the Script stage write the copy itself —
Word-for-word excerpt, not a result. Read the full SKILL.md ↓
Files of UGC Ad Strategist — the research + scriptwriting brain
Show the full text103 lines
UGC Ad Strategist — the research + scriptwriting brain
ugc-video-producer can make a real-looking person say words with synced lips and show a real product.
It has no brain for the words. This skill IS that brain: market research → one claim → killer-script
copy → brief.json. The producer consumes brief.json and renders the video.
Scripting engine: this skill delegates the narrative craft to the killer-script-system skill
(installed active at ~/.claude/skills/killer-script-system/) — Packaging/Outline pick the claim + angle,
Intro/Body/Outro + native-CTA write the copy. This skill wraps it with the two things it lacks for paid
UGC: live research and short-form ad shaping.
MINIMAX MODE — offload the WRITING to Claude (self-test: can't see an image = MiniMax). MiniMax writes stiff, ad-flavored dialogue. When on MiniMax this skill is Step 2 of the
ugc-minimax-modepipeline (follow that skill for the whole job). Do NOT let the Script stage write the copy itself — run~/.openclaw/scripts/ugc_write_script.sh --product "<...>" --context "<...>" --format testimonial|two_person_interview|street_interview --clips <n> --out <run>/script.json(natural, brief-schema JSON), then merge intobrief.json. Research + brief stages can stay on MiniMax; only the dialogue/hook WRITING needs Claude. On Codex/gpt-5.5, skip this — Codex writes natural copy itself.
Generation principles: the script you produce gets rendered by
ugc-video-producer, whosereference/ugc_qa_bank.mdis the bank of real production mistakes-turned-rules. The script-side ones (A1 size dialogue to 6/10s clips, A2 only script REAL on-screen assets, A3 truthful scarcity, A4 the non-negotiables) are enforced in the Script stage below — honor them.
When to run
- The user asks what an ad should say / to write ad copy / to research the angle for a product.
ugc-video-producerPhase 0 hands off a product (not a finished script).- Fully autonomous by design: research → finished
brief.jsonwith no stops.
How to run it (the launch sequence)
It's a Workflow-script pipeline (deterministic research fan-out), same pattern as
ebook-from-scratch and deep-research. The Workflow args channel is unreliable on this machine
(see the ebook args-not-delivered note), so the product spec is passed via a request.json file the
workflow reads, not via args alone.
Write the request. Pick a slug, make a run dir, write
request.json:SLUG="aimastery-$(date +%s)"; RUN=~/aimastery_ads/strategist_runs/$SLUG; mkdir -p "$RUN" cat > "$RUN/request.json" <<'JSON' { "product": "The Complete AI Mastery Collection", "company": "claritybooks", "kind": "digital", "country": "US", "voice_id": "kPzsL2i3teMYv0FxEYQ6", "competitors": [], "notes": "4 books, $59.99 one-time. LP: aimastery-salespage.vercel.app" } JSONOnly
productis required; the workflow resolves the rest (company →~/.openclaw/companies.json, funnel → the live landing page, assets → the real PDFs).Launch the workflow, passing the request path via args AND relying on the newest-request fallback: Call the
Workflowtool with{ scriptPath: "~/.claude/skills/ugc-ad-strategist/scripts/strategist_workflow.js", args: { requestPath: "<RUN>/request.json" } }.On return, the workflow gives you
brief_path(default<RUN>/brief.json), thesingle_claim,clip_count, andhook_count. Readbrief.jsonand hand it tougc-video-producer.
The 5 stages (what the workflow does)
| Stage | Job |
|---|---|
| A · Ground | product → company → LIVE funnel (offer, price, anchor, exact LP headlines for message-match), ad industry, niche keywords, real on-screen PDF assets. |
| B · Research | 3 parallel streams: voice-of-customer (~/code/kojo-audience-scraper/exports/), market/angle intel (web research: winning angles + 2026 scam-flag claim patterns to avoid + awareness stage + sophistication), proven-winner ad mining (scripts/ad_library_scout.py → Meta Ad Library + TikTok Creative Center, ranked by longevity). |
| C · Brief | killer-script Packaging+Outline → ONE claim (capability, never income), angle, proof object, objections, message-match line, differentiation vs in-market winners. |
| D · Script | killer-script Intro/Body/Outro → 6 hook variants, the 6-beat sheet (hook→proof→mechanism→escalation→honest-80/20→CTA) with per-beat dialogue/emotion/action/grok_prompt/overlay, platform cuts (paid speaks price for FTC; organic DM CTA), voice direction, UTM map. |
| E · Assemble | Merge everything into brief.json (the producer contract). |
Output contract — brief.json
Defined by reference/brief_schema.json. The producer already expects per-clip dialogue, base_still_prompt,
voice.id, and (digital) screen_asset.pages. Key fields: single_claim, clips[], hooks[],
platform_cuts, voice, utm_map, funnel, market_winners[].
The non-negotiables (baked into the template, enforce them)
One claim per ad · capability not income · first-person past-tense testimonial · process proof beats
outcome proof · honest 80/20 to pre-handle the objection · persistent "results vary" disclaimer spoken +
on-screen · price spoken on paid · caption every beat. These are house-style writing rules — write to them
as you draft, not as a fix after the fact. Full rationale + the killer-script→UGC beat map:
reference/ad_package_template.md.
Tools / standalone use
- Ad mining only:
python3 scripts/ad_library_scout.py --query "AI course" --min-days 30 --json. Degrades to a URLs-to-check result when Meta is bot-gated — never fabricates ads.
Gotchas
- Reuses, doesn't reinvent:
killer-script-system(copy),llm.sh, the kojo exports,deep-research(heavier fallback for Stage B2),ugc-device-screen. Don't duplicate these.
Companion skills
- ugc-video-producer — consumes
brief.json, renders the video (this skill is its Phase 0). - killer-script-system — the scripting engine this skill drives.
- ugc-device-screen — pins the real PDF on the device for
screen_assetproof clips.
| 1 | |
| 2 | name ugc-ad-strategist |
| 3 | description Use when a UGC ad needs a BRAIN for the words, not just the visuals — researching the audience, mining what's already winning in-market, picking the single claim, and writing the hook + beat sheet. Triggers: "what should the ad say", "write the UGC script/ad copy for <product>", "research the angle for this ad", "make the ad actually convert", or invoked as Phase 0 by ugc-video-producer for "make a UGC ad for <product>". Produces brief.json (one claim, 6 hooks, beat sheet, platform cuts) that ugc-video-producer turns into the finished video. |
| 4 | |
| 5 | |
| 6 | # UGC Ad Strategist — the research + scriptwriting brain |
| 7 | |
| 8 | `ugc-video-producer` can make a real-looking person say words with synced lips and show a real product. |
| 9 | It has **no brain for the words**. This skill IS that brain: market research → one claim → killer-script |
| 10 | copy → `brief.json`. The producer consumes `brief.json` and renders the video. |
| 11 | |
| 12 | **Scripting engine:** this skill delegates the narrative craft to the **`killer-script-system`** skill |
| 13 | (installed active at `~/.claude/skills/killer-script-system/`) — Packaging/Outline pick the claim + angle, |
| 14 | Intro/Body/Outro + native-CTA write the copy. This skill wraps it with the two things it lacks for paid |
| 15 | UGC: live research and short-form ad shaping. |
| 16 | |
| 17 | > **MINIMAX MODE — offload the WRITING to Claude (self-test: can't see an image = MiniMax).** MiniMax |
| 18 | > writes stiff, ad-flavored dialogue. When on MiniMax this skill is Step 2 of the **`ugc-minimax-mode`** |
| 19 | > pipeline (follow that skill for the whole job). Do NOT let the Script stage write the copy itself — |
| 20 | > run `~/.openclaw/scripts/ugc_write_script.sh --product "<...>" --context "<...>" --format testimonial|two_person_interview|street_interview --clips <n> --out <run>/script.json` (natural, brief-schema JSON), then merge into `brief.json`. Research + brief stages can stay on MiniMax; only the dialogue/hook WRITING needs Claude. On **Codex/gpt-5.5**, skip this — Codex writes natural copy itself. |
| 21 | |
| 22 | > **Generation principles:** the script you produce gets rendered by `ugc-video-producer`, whose |
| 23 | > `reference/ugc_qa_bank.md` is the bank of real production mistakes-turned-rules. The script-side ones |
| 24 | > (A1 size dialogue to 6/10s clips, A2 only script REAL on-screen assets, A3 truthful scarcity, A4 the |
| 25 | > non-negotiables) are enforced in the Script stage below — honor them. |
| 26 | |
| 27 | ## When to run |
| 28 | |
| 29 | The user asks what an ad should say / to write ad copy / to research the angle for a product. |
| 30 | `ugc-video-producer` Phase 0 hands off a product (not a finished script). |
| 31 | Fully autonomous by design: research → finished `brief.json` with no stops. |
| 32 | |
| 33 | ## How to run it (the launch sequence) |
| 34 | |
| 35 | It's a `Workflow`-script pipeline (deterministic research fan-out), same pattern as |
| 36 | `ebook-from-scratch` and `deep-research`. The Workflow `args` channel is unreliable on this machine |
| 37 | (see the ebook args-not-delivered note), so the product spec is passed via a **request.json file** the |
| 38 | workflow reads, not via args alone. |
| 39 | |
| 40 | **Write the request.** Pick a slug, make a run dir, write `request.json`: |
| 41 | |
| 42 | SLUG="aimastery-$(date +%s)"; RUN=~/aimastery_ads/strategist_runs/$SLUG; mkdir -p "$RUN" |
| 43 | cat > "$RUN/request.json" <<'JSON' |
| 44 | { "product": "The Complete AI Mastery Collection", |
| 45 | "company": "claritybooks", |
| 46 | "kind": "digital", |
| 47 | "country": "US", |
| 48 | "voice_id": "kPzsL2i3teMYv0FxEYQ6", |
| 49 | "competitors": [], |
| 50 | "notes": "4 books, $59.99 one-time. LP: aimastery-salespage.vercel.app" } |
| 51 | JSON |
| 52 | |
| 53 | Only `product` is required; the workflow resolves the rest (company → `~/.openclaw/companies.json`, |
| 54 | funnel → the live landing page, assets → the real PDFs). |
| 55 | |
| 56 | **Launch the workflow**, passing the request path via args AND relying on the newest-request fallback: |
| 57 | Call the `Workflow` tool with |
| 58 | `{ scriptPath: "~/.claude/skills/ugc-ad-strategist/scripts/strategist_workflow.js", |
| 59 | args: { requestPath: "<RUN>/request.json" } }`. |
| 60 | |
| 61 | **On return**, the workflow gives you `brief_path` (default `<RUN>/brief.json`), the `single_claim`, |
| 62 | `clip_count`, and `hook_count`. Read `brief.json` and hand it to `ugc-video-producer`. |
| 63 | |
| 64 | ## The 5 stages (what the workflow does) |
| 65 | |
| 66 | | Stage | Job | |
| 67 | |---|---| |
| 68 | | **A · Ground** | product → company → LIVE funnel (offer, price, anchor, exact LP headlines for message-match), ad industry, niche keywords, real on-screen PDF assets. | |
| 69 | | **B · Research** | 3 parallel streams: voice-of-customer (`~/code/kojo-audience-scraper/exports/`), market/angle intel (web research: winning angles + 2026 scam-flag claim patterns to avoid + awareness stage + sophistication), proven-winner ad mining (`scripts/ad_library_scout.py` → Meta Ad Library + TikTok Creative Center, ranked by longevity). | |
| 70 | | **C · Brief** | killer-script Packaging+Outline → ONE claim (capability, never income), angle, proof object, objections, message-match line, differentiation vs in-market winners. | |
| 71 | | **D · Script** | killer-script Intro/Body/Outro → 6 hook variants, the 6-beat sheet (hook→proof→mechanism→escalation→honest-80/20→CTA) with per-beat dialogue/emotion/action/grok_prompt/overlay, platform cuts (paid speaks price for FTC; organic DM CTA), voice direction, UTM map. | |
| 72 | | **E · Assemble** | Merge everything into `brief.json` (the producer contract). | |
| 73 | |
| 74 | ## Output contract — `brief.json` |
| 75 | |
| 76 | Defined by `reference/brief_schema.json`. The producer already expects per-clip `dialogue`, `base_still_prompt`, |
| 77 | `voice.id`, and (digital) `screen_asset.pages`. Key fields: `single_claim`, `clips[]`, `hooks[]`, |
| 78 | `platform_cuts`, `voice`, `utm_map`, `funnel`, `market_winners[]`. |
| 79 | |
| 80 | ## The non-negotiables (baked into the template, enforce them) |
| 81 | |
| 82 | One claim per ad · capability not income · first-person past-tense testimonial · process proof beats |
| 83 | outcome proof · honest 80/20 to pre-handle the objection · persistent "results vary" disclaimer spoken + |
| 84 | on-screen · price spoken on paid · caption every beat. These are house-style writing rules — write to them |
| 85 | as you draft, not as a fix after the fact. Full rationale + the killer-script→UGC beat map: |
| 86 | `reference/ad_package_template.md`. |
| 87 | |
| 88 | ## Tools / standalone use |
| 89 | |
| 90 | **Ad mining only:** `python3 scripts/ad_library_scout.py --query "AI course" --min-days 30 --json`. |
| 91 | Degrades to a URLs-to-check result when Meta is bot-gated — never fabricates ads. |
| 92 | |
| 93 | ## Gotchas |
| 94 | |
| 95 | **Reuses, doesn't reinvent:** `killer-script-system` (copy), `llm.sh`, the kojo exports, |
| 96 | `deep-research` (heavier fallback for Stage B2), `ugc-device-screen`. Don't duplicate these. |
| 97 | |
| 98 | ## Companion skills |
| 99 | |
| 100 | **ugc-video-producer** — consumes `brief.json`, renders the video (this skill is its Phase 0). |
| 101 | **killer-script-system** — the scripting engine this skill drives. |
| 102 | **ugc-device-screen** — pins the real PDF on the device for `screen_asset` proof clips. |
| 103 |
Discussion
Browse more free Claude skills.