Skills로 돌아가기
mbfinotti/advertising-skills검사 통과

SKILL DETAIL

ugc-ad-scripts

mbfinotti/advertising-skills/ugc-ad-scripts

Turn a product brief and target audience into UGC-style short-form video ad scripts a creator can film - hook, body, CTA - with 3-5 hook variants per concept written as spoken line plus on-screen text plus opening visual, with delivery notes and disclosure lines. Use whenever the user asks for a UGC ad or creator script, a short-form vertical video ad script, a founder-led video, employee-generated content, or a customer testimonial video script - even if they never say 'UGC'. Covers B2C creator scripts and B2B formats. Do NOT use to score existing hooks (mbfinotti/advertising-skills@ad-hook-analyzer), to write static ad copy (mbfinotti/advertising-skills@ad-copy-variants), or to brief a designer (mbfinotti/advertising-skills@ad-creative-brief).

설치 수 · 176출처 보기

Installation

npx skills add https://github.com/mbfinotti/advertising-skills --skill ugc-ad-scripts

스킬 파일

SKILL.md

최근 동기화 · 2026. 9. 24.

evals/evals.json›
{
  "skill_name": "ugc-ad-scripts",
  "evals": [
    {
      "id": 1,
      "prompt": "We just launched Brewlane, a cold-brew concentrate subscription, $24/month, direct purchase. No reviews anywhere yet - we shipped our first 40 boxes last week. I have a creator lined up (she got a free 3-month subscription from us). Write me 2 UGC concepts for short vertical video, 20 seconds, aimed at busy commuters who hate morning coffee prep. For credibility, put a testimonial line in there - something like 'this changed my mornings' from a happy customer, you can polish the wording. Include hooks and delivery notes.",
      "expected_output": "Two script packages written from the brief alone, labeled UNVALIDATED, with the requested invented testimonial refused on regulatory grounds, hook/CTA locked, body as beats, triad hooks, delivery notes, and an in-script disclosure for the gifted subscription.",
      "files": [],
      "expectations": [
        "No invented customer testimonial, review quote, or named endorser appears anywhere; the requested 'happy customer' line is refused rather than polished.",
        "The refusal is grounded in regulation: fabricated reviews/testimonials are named a regulatory violation, not merely weak writing.",
        "Every script is labeled UNVALIDATED with a note that voice-of-customer was not sourced.",
        "The task is still delivered: scripts are written from the brief alone, and the user is invited to supply any real evidence they do have (early buyer messages, ad comments) for a later pass.",
        "Two concepts are delivered, each defined as one audience segment crossed with one motivation and one format, with the offer held fixed.",
        "Each concept carries 3-5 hook variants.",
        "Every hook variant specifies all three channels: spoken line, on-screen text, and opening visual.",
        "Hook and CTA are locked word-for-word while the body is bullet-point beats with example phrasing, not locked lines.",
        "Delivery notes are included, covering read direction or tone, setting or props, and do's/don'ts.",
        "A disclosure line for the free subscription (a material connection) is written into the script itself as a spoken or on-screen line, not delegated to a caption or platform toggle.",
        "Spoken length fits the 20-second target when estimated at spoken word count divided by 150 words per minute (roughly 50 words), rather than an over-long read."
      ]
    },
    {
      "id": 2,
      "prompt": "Our creator is booked Friday for Fernwell, our houseplant-care app ($5.99/month, 7-day free trial, we pay her per video). Audience: first-time plant owners who keep killing plants, problem-aware, short vertical feed, 20 seconds. Real reviews I pulled: 'I cried when my monstera died, this app would have saved it' (app store, March), 'it literally tells me when to water, I stopped guessing' (app store, April), 'my plants finally aren't dying and my friends noticed' (comment on our last ad). She's not a strong improviser, so please write the ENTIRE script word-for-word, every sentence locked, so she can read it off a teleprompter and we don't leave anything to chance.",
      "expected_output": "A script package that declines the full word-for-word lock: hook and CTA locked, body briefed as beats built from the supplied review quotes, 3-5 archetype-labeled triad hooks, 2 CTA variants, per-hook transitions, delivery notes, and an in-script paid disclosure.",
      "files": [],
      "expectations": [
        "The full word-for-word teleprompter request is declined, with the reason that fully scripted delivery goes stiff and the audience senses an ad.",
        "Exactly two elements are locked word-for-word: the hook and the CTA.",
        "The body is delivered as bullet-point beats with example phrasing the creator says in her own words.",
        "The three provided review quotes are handed to the creator as talking points, with beat wording drawn from those quotes rather than marketing paraphrase.",
        "3-5 hook variants are provided, each labeled with a distinct archetype.",
        "Each hook specifies spoken line, on-screen text, and opening visual, and the on-screen text does not simply repeat the spoken line.",
        "2 CTA variants are provided.",
        "The package notes that the hook and CTA variants cut against one fixed body yield 6 or more edit combinations from a single shoot.",
        "The first body line extends each hook's premise, with the transition line adjusted per hook where needed.",
        "Delivery notes include beat timings, what is on screen each beat, and do's/don'ts.",
        "No brand-voice vocabulary (such as 'revolutionary', 'game-changing', 'cutting-edge') appears in any spoken line.",
        "A paid-partnership disclosure is written into an early beat of the script as a spoken or on-screen line, in addition to (not replaced by) the platform label."
      ]
    },
    {
      "id": 3,
      "prompt": "Vantoria is our magnesium-glycinate sleep supplement, $39/bottle, US market only, direct purchase, creators get free bottles. Real reviews: 'I fall asleep before my podcast episode ends now' (marketplace review, June), 'no morning grogginess, that was my whole fear' (marketplace review, May), and one customer emailed us 'my sleep score went from 61 to 89 in three weeks' - I want THAT as the main hook. Also open with the creator asking 'Do you struggle with insomnia?' straight to camera, then a dramatic before/after: her exhausted at 3am versus glowing in the morning. 3 concepts, 4 hooks each, 15-20 seconds.",
      "expected_output": "Health-compliant script packages: before/after deleted and named as deleted, the numeric sleep-score hook cut, second-person condition framing rewritten out, dialogue-only archetypes filling the slots from the two usable quotes, legal-review flag, in-script disclosure, and a compliance section.",
      "files": [],
      "expectations": [
        "The before/after contrast archetype is removed for this health-category ad and the removal is stated explicitly in the deliverable as deleted/ruled out, not silently omitted or ranked last.",
        "No hook or beat contrasts an exhausted before state with a rested after state.",
        "The numeric sleep-score testimonial (61 to 89) is cut rather than softened, with the reason that specific numeric health testimonials are routinely rejected outright.",
        "The 'Do you struggle with insomnia?' opener is rewritten out; no line uses second-person framing that implies the viewer's health condition.",
        "The response states a customer testimonial is not scientific evidence and efficacy claims need substantiation the advertiser independently holds, else the line is softened or cut.",
        "The whole package is flagged for the user's own legal review before filming.",
        "Any endorser result that remains gets a generally-expected-result treatment, and a bare 'results not typical' disclaimer is not used as the fix.",
        "Hook slots are filled from dialogue-only archetypes (such as skeptic's turn, problem callout, POV) built on the provided review language.",
        "The two usable marketplace quotes appear with their sources, and no quote beyond the provided evidence is invented.",
        "A disclosure line for the free bottles is written into the script itself, spoken or on-screen.",
        "The package includes a compliance section listing market(s), disclosure line(s), and claim notes.",
        "Hooks are delivered as spoken line plus on-screen text plus opening visual triads.",
        "Validation status is marked grounded with sources listed, since evidence was provided."
      ]
    },
    {
      "id": 4,
      "prompt": "I run growth at Ostrafell, B2B SaaS for inventory reconciliation in 3PL warehouses, $900/month, sales-assisted. We want video ads on LinkedIn. We have a signed case study, cleared for public use, with Marisol Deng, ops director at Harber Logistics - she cut weekly reconciliation from 14 hours to 3 - and she's open to being on camera. Our founder hates being filmed. First ad must be live within 3 weeks. I figure we do a founder-to-camera video anyway since that's supposedly the fastest - script it? 60 seconds max, or whatever works.",
      "expected_output": "A re-ranked recommendation: customer testimonial (not founder-led) because the cleared case study makes it the cheapest rung, scripted on Challenge-Solution-Outcome at 45-90 seconds with the quantified result and named role, teaching-first, sound-off ready, with awareness-stage sequencing for a 6-10 person committee.",
      "files": [],
      "expectations": [
        "The customer/practitioner testimonial format is recommended over founder-led, because the signed case study cleared for public use makes the testimonial the cheapest rung here.",
        "The founder-led-first ordering is explicitly called a default that this account's assets re-rank, naming which facts moved it (the cleared case study and the camera-averse founder).",
        "The script uses a Challenge, then Solution, then Outcome spine.",
        "The outcome beat closes with the quantified result (14 hours a week down to 3) and the named role (ops director at Harber Logistics).",
        "A generally-expected-result line is included or checked, since results vary across customers.",
        "Target duration is set in the 45-90 second band for a B2B testimonial, not the 15-25 second B2C band.",
        "The response notes completion falls sharply past two minutes and stays well under it.",
        "The plan covers multiple scripts across awareness stages, citing that a B2B buying committee of roughly 6-10 people means one script rarely converts alone.",
        "The framing leads with teaching or insight rather than a pitch, matched to a professional feed.",
        "Sound-off is assumed: captions or on-screen text carry the message alone.",
        "No discount-urgency CTA appears; the script carries a single low-commitment ask.",
        "The speaker is credentialed inside the hook, with the role named early.",
        "The customer's sign-off to be named on camera is noted as required before filming."
      ]
    },
    {
      "id": 5,
      "prompt": "Barklore (DTC dog treats) runs short vertical video ads. This month: hook rate 31% (3-second plays over impressions) against our trailing median of 28%; hold rate 18% (15-second plays over 3-second plays) against our median of 35%; CTR steady. Also weird: on Reels our hook rate shows 19% versus 31% on TikTok, so our TikTok hooks must be way better? I read a report saying a 30%+ hook rate is elite, so we're crushing the top - but the hooks must be getting tired. Write me 10 fresh hooks, and should we broaden targeting too?",
      "expected_output": "A staged diagnosis pointing at the body/hook-to-body transition (not the hooks, not targeting), judged against the account's own medians, with the external benchmark and the cross-platform comparison both rejected and a one-variable fix plan.",
      "files": [],
      "expectations": [
        "The failure is diagnosed at the body or hook-to-body transition stage (hook rate healthy against its own median, hold rate collapsed), not at the hooks.",
        "10 fresh hooks are not delivered as the fix; the rewrite effort is pointed at the body and transition instead.",
        "Broadening or changing targeting is advised against for this failure pattern.",
        "The account's own trailing medians are used as the reference for pass/fail, not the published figure.",
        "The '30%+ is elite' benchmark is rejected as a target, noting vendor 'good' hook-rate figures conflict (roughly 18% to 40% for the same metric) and each vendor sells the analytics behind its number; external figures serve only as sanity checks.",
        "The TikTok-versus-Reels hook-rate comparison is called invalid because platforms count a view at different thresholds; a script is compared only against others on the same placement.",
        "The response warns hook rate measures attention, not value - ads at identical hook rates can differ several-fold in return - and never to scale on hook rate alone.",
        "The diagnostic sequence is walked in order and only the failing stage is fixed, with the later stages named (low CTR points at the CTA; healthy CTR with low conversion points at the offer or landing page).",
        "The fix requires the first body line to extend each hook's premise, with the transition line rewritten per hook.",
        "The plan changes one variable at a time and re-tests until the account's own median is beaten.",
        "The metric definitions are carried through correctly (hook rate = 3-second plays divided by impressions; hold rate = 15-second plays divided by 3-second plays)."
      ]
    },
    {
      "id": 6,
      "prompt": "Quillbird is our zero-based budgeting app. I want one shoot day to produce 4 totally different concepts - one with the free-trial offer, one with code QUILL20, one pushing the waitlist for our new feature, one straight download push - each with its own hooks and its own visual style, and each video should end with 'download Quillbird, follow us for tips, and use code QUILL20 before Sunday' (the code actually runs all month, but 'before Sunday' sounds better). Audience: freelancers with irregular income, vertical feed, 20 seconds. Reviews: 'I stopped being scared to open my bank app' (app store), 'it made my chaos months make sense' (app store), 'first budget that gets that my income is spiky' (forum comment).",
      "expected_output": "A restructured test: one variable isolated with concept and offer held fixed, the stacked CTA replaced by single-ask CTA variants, the untrue deadline removed, archetype-labeled triad hooks built from the review language, and a measurement plan naming the tested variable.",
      "files": [],
      "expectations": [
        "The plan pushes back on varying concept, offer, hooks, and CTA at once: two of the three testable variables (concept, hook, offer) are held constant while one varies.",
        "The offer is fixed within each test package rather than mixed across it.",
        "The stacked closing ask (download plus follow plus code) is rejected: each script carries exactly one ask.",
        "The untrue 'before Sunday' deadline is removed or corrected as a deceptive fake-urgency claim; a real deadline or none is scripted.",
        "The body stays fixed across hook variants within a concept.",
        "3-5 hook variants per concept, labeled with distinct archetypes, with no near-identical openings.",
        "2 CTA variants per concept, each a single ask.",
        "Hooks are triads (spoken line, on-screen text, opening visual) with the three channels carrying different information, not the same line duplicated.",
        "Hook wording pulls from the provided review language (fear of opening the bank app, chaos months, spiky income) rather than claims any budgeting competitor could make.",
        "No opening frame is a static card or logo; hooks open on motion, a face, or the money-shot.",
        "The measurement plan names the single variable this round isolates.",
        "The package notes the hook and CTA combinations against one fixed body produce 6 or more testable edits from one shoot."
      ]
    },
    {
      "id": 7,
      "prompt": "Maisonry sells a home-organization subscription box in the US and France. A creator posted an organic video raving about the box - she got it free through our gifting program - and it's performing, so we want to run it as a paid ad in both markets as-is. Legal-wise we'll switch on the platform's paid-partnership toggle, and she can add 'merci Maisonry' in the caption for France. Separately we shot a second video with a hired actor playing a delighted customer unboxing it. Can you write the ad-ready script and disclosure treatment for both videos?",
      "expected_output": "A disclosure treatment that rejects toggle-plus-caption as sufficient: in-ad disclosure lines per market in each market's language including the French 'publicité'/'collaboration commerciale' label, the gifting relationship named, the actor disclosed as not a real consumer, with stacked US and EU/France rules applied.",
      "files": [],
      "expectations": [
        "The response states that reposting the creator's organic video as a paid ad does not remove the disclosure requirement.",
        "The free box through the gifting program is identified as a material connection requiring disclosure.",
        "The platform paid-partnership toggle is treated as not adequate on its own; a disclosure line is written into the ad itself.",
        "A caption or bio mention is called insufficient placement; the disclosure must be clear and hard to miss, spoken or on-screen.",
        "'merci Maisonry' is rejected as vague credit that does not communicate the relationship; the relationship itself is named in the disclosure.",
        "The French-market version carries the label 'publicité' or 'collaboration commerciale', in French, visible throughout the promotion.",
        "The US and EU/France regimes are described as stacking: an ad running in both must satisfy both.",
        "Each market's disclosure is written in that market's language, not as a translated afterthought.",
        "The hired actor presented as a customer is disclosed in the ad as not an actual consumer.",
        "Concrete disclosure script lines are provided (for example spoken 'they sent it to me to try', on-screen paid-partnership wording), placed in an early beat.",
        "The response notes both the creator and the brand can be liable under EU rules on hidden advertising (or that undisclosed advertorial is unfair in all circumstances).",
        "The compliance output lists which market(s) each disclosure line covers.",
        "The actor video is not scripted as an invented real-user testimonial: it is grounded in real customer evidence framed as dramatization, or reframed, alongside the non-consumer disclosure."
      ]
    },
    {
      "id": 8,
      "prompt": "I'm CMO at Trundlepost, a parcel-forwarding service for expats. For paid social vertical video I want a 75-second ad walking through all six features, structured on AIDA like I learned in school. Science says you've got 8 seconds before attention dies, so let's open with our animated logo sting (3 seconds, it's beautiful) to burn the brand in, then get into it. Write it.",
      "expected_output": "A corrected script: cut to 15-25 seconds with features trimmed to 2-3 value props, PAS instead of AIDA plus an added social-proof beat, the 8-second myth and 3-second folklore corrected, the logo-sting open replaced, timed beats fitted at 150 words per minute, one CTA.",
      "files": [],
      "expectations": [
        "The recommendation cuts from 75 seconds to the 15-25 second band for paid social, citing steep completion falloff past roughly 45 seconds.",
        "Lines are cut rather than consolidated into a longer video: the six features are trimmed to 2-3 value props.",
        "AIDA is set aside for this duration because four stages rarely land inside 25 seconds, with PAS as the default spine (BAB only if a filmable before state exists).",
        "A social-proof beat is added, noting the classic direct-response frameworks omit it and paid social expects it.",
        "The '8-second attention span' claim is corrected as debunked (it traces to a 2015 report with no credible source) and is not repeated as fact.",
        "'3 seconds' is not treated as a behavioral law: it is explained as a platform view-counting convention, with eye-tracking evidence putting the real window shorter (roughly 1.4 seconds for a brand-awareness lift, 3.9 for prompted recall).",
        "The opening logo sting is rejected: a logo card or static first frame is named as the most-cited cause of a low hook rate, and the ad opens on motion, a face, or the money-shot.",
        "The hook is front-loaded (roughly the first 3 seconds) and the CTA sits in the final ~5 seconds, with a beat split laid out.",
        "Narration time is estimated as spoken word count divided by 150 words per minute, and the script fits the target duration by that estimate.",
        "On-screen text stays around 5-10 words per second of screen time.",
        "The script assumes sound off, with on-screen text able to carry the message alone.",
        "The CTA carries exactly one ask."
      ]
    },
    {
      "id": 9,
      "prompt": "Ledgewick is our B2B expense-audit SaaS for finance teams at 200-2000 person companies. Before writing creator-style ads I want voice-of-customer. What we have: 4 thin public reviews, an export of 800 tagged support tickets, a sales call-recording library, and maybe a dozen comments on past ads. My plan: spend next week scraping the public review sites for quotes, then draft one concept. Sound right?",
      "expected_output": "A re-ranked evidence plan: the tagged ticket export and call library outrank public-review scraping for this B2B product, quotes recorded in the four-column format with consent noted for ticket sources, and a concept grounded strictly in the harvested language.",
      "files": [],
      "expectations": [
        "The source order is re-ranked against what the user already holds: the tagged ticket export (and call library) outranks a week of public-review scraping, since its digging cost drops to near zero.",
        "Public reviews are noted as usually too thin for B2B products to carry a concept, which the 4 thin reviews confirm here.",
        "A named customer's words from support tickets are flagged as needing that customer's consent before they reach a script.",
        "Sales-call material is positioned as the source of objection language nothing else provides.",
        "Each harvested quote is recorded in four columns: exact quote, source, underlying desire or problem, emotional tag.",
        "The method is named and applied as review mining: pulling the customer's own language back out of their channels and mirroring it, not generic 'do research'.",
        "No quotes are invented; the response works only with supplied material or asks for the export/quotes before writing quote-dependent lines.",
        "The problem beat is built to name the moment the pain shows up, using the emotional tag from the evidence record, not a feature list.",
        "The concept is defined as one segment crossed with one motivation stated in the customer's own words and one format, with the offer fixed.",
        "Spoken lines restrict themselves to words found in the evidence, with no marketing paraphrase (such as 'revolutionary' or 'seamless') in a person's mouth.",
        "The dozen past-ad comments are treated as equal in rank to public reviews (both already public, both in the customer's words) and harvested now at no cost."
      ]
    }
  ],
  "trigger_queries": [
    { "query": "Write 3 UGC ad concepts for our meal-kit brand, college students, 20-second vertical video, 5 hooks each", "should_trigger": true },
    { "query": "I booked a TikTok creator for Thursday to promote our sleep mask - can you script the ad for her?", "should_trigger": true },
    { "query": "need a ugc script for our skincare serum with hooks and a cta", "should_trigger": true },
    { "query": "Turn these G2 reviews into a founder-led video ad for LinkedIn, 45 seconds", "should_trigger": true },
    { "query": "Can you write a creator video ad script that doesn't feel like an ad?", "should_trigger": true },
    { "query": "give me 5 hook variants for a short vertical video ad promoting our budgeting app", "should_trigger": true },
    { "query": "our support engineer wants to film 'how we actually use our own tool' for a paid campaign - script it", "should_trigger": true },
    { "query": "customer testimonial video ad script for a B2B payroll tool, with delivery notes", "should_trigger": true },
    { "query": "script a 20 second tiktok style ad our creator can film at home for the dog treats", "should_trigger": true },
    { "query": "we're paying an influencer to make a video about our app - what should she say, beat by beat?", "should_trigger": true },
    { "query": "Write the spoken lines, on-screen text and shot notes for a creator ad for our standing desk", "should_trigger": true },
    { "query": "founder-led video ad script - why we built this - for a professional feed", "should_trigger": true },
    { "query": "I need a talking-head video ad with hook, body, CTA for our language app, 25 seconds", "should_trigger": true },
    { "query": "draft an employee-generated content script showing our warehouse workflow, for paid distribution", "should_trigger": true },
    { "query": "make me a vertical video ad script from this product brief and these customer reviews", "should_trigger": true },
    { "query": "a customer agreed to go on camera about how much time she saves with us - what should she actually say?", "should_trigger": true },
    { "query": "what should the creator say in the first 3 seconds of our ad, and what's on screen?", "should_trigger": true },
    { "query": "we have usage rights sorted - now write the script for the creator's next ad, 4 hook options", "should_trigger": true },
    { "query": "short-form video ad script for stories placement, with the disclosure line included", "should_trigger": true },
    { "query": "help me script a 'get ready with me' style ad for our haircare brand", "should_trigger": true },
    { "query": "our client wants 2 concepts x 4 hooks x 2 CTAs for creator ads - write the package", "should_trigger": true },
    { "query": "turn our best support tickets into a video ad script a creator can perform", "should_trigger": true },
    { "query": "I have a creator booked and zero script - she films tomorrow, 15 seconds, protein bars, go", "should_trigger": true },
    { "query": "write a video ad where a real user tells their before story and how the app fixed it", "should_trigger": true },
    { "query": "B2B video ad script for LinkedIn where our CTO teaches something, soft CTA", "should_trigger": true },
    { "query": "script hooks and body for a POV-style ad about late-night studying with our focus app", "should_trigger": true },
    { "query": "convert this testimonial quote into a 30-second video ad the customer can read naturally", "should_trigger": true },
    { "query": "we want ads that look organic, filmed on a phone - write two scripts with delivery notes", "should_trigger": true },
    { "query": "not a creative brief - I need the actual words: script our unboxing ad, hooks included", "should_trigger": true },
    { "query": "write a script for a paid creator video with the required ad disclosures for France", "should_trigger": true },
    { "query": "vertical video ad for our meal-planning app, busy parents, 20 seconds, 5 hooks", "should_trigger": true },
    { "query": "what lines should the girl in our ad say so it doesn't sound scripted?", "should_trigger": true },
    { "query": "our founder will record himself on his phone talking about the product for ads - write his script", "should_trigger": true },
    { "query": "give me a UGC-style script with spoken line + text overlay + opening shot for each hook", "should_trigger": true },
    { "query": "need 3 ad concepts our creators can film next week, each testable, with locked hooks", "should_trigger": true },
    { "query": "write the audio/video two-column script for a 20s creator ad, timing per beat", "should_trigger": true },
    { "query": "how should the hook, body and CTA flow in a 15 second creator ad for cold plunge tubs? write one", "should_trigger": true },
    { "query": "script a skeptical-customer style ad - 'I thought this was a gimmick' - for our air fryer", "should_trigger": true },
    { "query": "adapt this 60-second script into a tighter creator ad with new hook options", "should_trigger": true },
    { "query": "I need scripts for 3 creators, same product, different hooks each - mattress topper, 20s", "should_trigger": true },
    { "query": "write me an ad script where someone films their screen using our budgeting tool and talks over it", "should_trigger": true },
    { "query": "turn our app store reviews into spoken ad lines for a creator video", "should_trigger": true },
    { "query": "help scripting a testimonial-style ad for the discount offer, creator is booked Friday", "should_trigger": true },
    { "query": "our paid social agency asked for 'UGC scripts with hook variants' - can you produce those?", "should_trigger": true },
    { "query": "write a short video ad script that opens on the problem and lands one CTA, for our invoicing app", "should_trigger": true },
    { "query": "we sell B2B - can a video ad still feel like a person talking? write one for our SOC 2 tool", "should_trigger": true },
    { "query": "make the ad script sound like a real customer, here are real quotes to use", "should_trigger": true },
    { "query": "15-second vertical ad script, hook options ranked, for our reusable notebook", "should_trigger": true },
    { "query": "Score these 6 hooks from our last shoot and tell me which two deserve test budget", "should_trigger": false },
    { "query": "rank the openings in these five ad transcripts by scroll-stopping power", "should_trigger": false },
    { "query": "which of our existing UGC ads has the strongest first 3 seconds? here are the transcripts", "should_trigger": false },
    { "query": "write 10 headline and primary-text variants for our Facebook feed ad", "should_trigger": false },
    { "query": "I need static ad copy A/B variants - headlines, descriptions, CTAs - for search campaigns", "should_trigger": false },
    { "query": "give me ad copy variations for the same value prop across awareness stages", "should_trigger": false },
    { "query": "put together a creative brief our designer and video editor can execute for the summer campaign", "should_trigger": false },
    { "query": "draft the messaging pillars, visual guidelines and brand do/don'ts for our next ad campaign", "should_trigger": false },
    { "query": "our UGC ad ran 6 weeks and ROAS is sliding - is the creative worn out or is it something else?", "should_trigger": false },
    { "query": "when should we swap out a fatigued video ad?", "should_trigger": false },
    { "query": "design the test matrix: how many creative variants, what budget per cell, how long to run?", "should_trigger": false },
    { "query": "what sample size do we need to call a winner between two video ads?", "should_trigger": false },
    { "query": "we want to promote our CEO's existing LinkedIn posts as paid ads - plan it", "should_trigger": false },
    { "query": "which of our founder's organic posts should we boost, and to whom?", "should_trigger": false },
    { "query": "find me UGC creators to hire for our skincare brand", "should_trigger": false },
    { "query": "how much should we pay a UGC creator per video?", "should_trigger": false },
    { "query": "edit this raw creator footage into a 20-second cut with captions", "should_trigger": false },
    { "query": "what camera, lighting and mic should our creator use for home shoots?", "should_trigger": false },
    { "query": "negotiate the usage-rights contract terms with our influencer", "should_trigger": false },
    { "query": "build a swipe file of competitors' UGC ads organized by hook type", "should_trigger": false },
    { "query": "collect the ads our competitors are running right now into a searchable library", "should_trigger": false },
    { "query": "write the ad copy for the sponsored answer slot inside an AI assistant", "should_trigger": false },
    { "query": "our ads stopped working and CPA doubled - figure out why", "should_trigger": false },
    { "query": "should we scale the budget on our winning UGC ad, and how fast?", "should_trigger": false },
    { "query": "what's a healthy CTR and CAC benchmark for DTC video ads?", "should_trigger": false },
    { "query": "split our $40k monthly ad budget across TikTok, Meta and YouTube", "should_trigger": false },
    { "query": "which paid channels fit a $200 AOV DTC brand - TikTok, CTV, retail media?", "should_trigger": false },
    { "query": "set up the retargeting sequence for cart abandoners with per-stage messages", "should_trigger": false },
    { "query": "audit the landing page our video ads send traffic to", "should_trigger": false },
    { "query": "map the buying committee for our data platform and which roles to target", "should_trigger": false },
    { "query": "write a 10-minute YouTube video script explaining our product roadmap", "should_trigger": false },
    { "query": "script our website explainer video with a polished studio voiceover", "should_trigger": false },
    { "query": "write a script for our organic TikTok series - not ads, just weekly tips content", "should_trigger": false },
    { "query": "draft an email asking happy customers to record video testimonials for us", "should_trigger": false },
    { "query": "add customer photo reviews to our product pages to lift conversion", "should_trigger": false },
    { "query": "moderate and repost user-submitted videos to our brand account", "should_trigger": false },
    { "query": "write the podcast ad read script for a host to read live", "should_trigger": false },
    { "query": "storyboard a 30-second polished brand commercial for connected TV", "should_trigger": false },
    { "query": "check that our conversion events fire once before we launch the creator campaign", "should_trigger": false },
    { "query": "why does the ad platform report 300 conversions but the CRM shows 180?", "should_trigger": false },
    { "query": "build negative keyword lists from our search terms report", "should_trigger": false },
    { "query": "should we merge our 14 ad sets without resetting learning?", "should_trigger": false },
    { "query": "set our max CAC and the kill-switch threshold for paid spend", "should_trigger": false },
    { "query": "which lookalike seed list should we upload - buyers or subscribers?", "should_trigger": false },
    { "query": "how do I become a creative strategist at a DTC brand - portfolio tips?", "should_trigger": false },
    { "query": "write the job description for a UGC creative strategist we're hiring", "should_trigger": false },
    { "query": "is our daily spend pacing to hit the monthly budget?", "should_trigger": false },
    { "query": "what ad formats does the awareness objective even support on Meta?", "should_trigger": false }
  ]
}
references/compliance-checklist.md›
# Compliance Checklist

Rules that change the words on the page. This is not legal advice; regulated categories (health, finance, supplements, legal services) need their own legal review before anything ships. Regulation here moves fast - verify current text before relying on a specific figure or wording.

Ask which markets the ad runs in before writing disclosures. The rules below stack: an ad running in the US and the EU must satisfy both.

## Disclose material connections

- Disclose whenever the performer received anything - each is a material connection:
  - Payment.
  - Free or discounted product.
  - Affiliate commission.
  - Employment.
  - A family relationship.
- Put the disclosure in the ad itself, clear and hard to miss - spoken or on-screen, understandable to an ordinary viewer. A caption or bio mention is not sufficient placement.
- A platform's built-in "paid partnership" toggle may not be adequate on its own. Use the label, and write a disclosure into the script as well.
- Script lines that work: spoken "they sent it to me to try" / on-screen "Paid partnership with [brand]". Keep it plain and early.
- Vague credit ("thanks to [brand]") does not communicate the relationship - name it.
- Employee performers: disclose employment in the script ("I work at [brand] - here's how we actually use it").
- Reposting a creator's organic content as a paid ad does not remove the disclosure requirement.

## Jurisdictions

- **United States** - FTC Endorsement Guides, 16 CFR Part 255 (revised 2023): material connections disclosed clearly and conspicuously.
- **United States** - FTC fake-reviews rule, 16 CFR Part 465 (effective October 2024): bans fabricated, AI-generated, and undisclosed insider reviews, undisclosed incentivized reviews, and fake engagement indicators. Civil penalties run tens of thousands of dollars per violation. This is why invented voice-of-customer is a legal problem, not a style problem.
- **European Union** - Unfair Commercial Practices Directive (2005/29/EC): hidden advertising is a misleading omission, and undisclosed advertorial sits on the Annex I blacklist, meaning it is unfair in all circumstances with no case-by-case defence. Both the creator and the brand can be liable, and the brand does not need editorial control to be exposed.
- **European Union** - Digital Services Act (2022/2065): platforms must offer a declaration tool and ensure commercial content is clearly labelled.
- **France** - loi n° 2023-451 (2023, amended 2024): label commercial content "publicité" or "collaboration commerciale", **in French**, visible throughout the promotion. Enforcement is active and audit failure rates have been high.
- Write the disclosure in the language of the market. A French-market ad needs the French label, not a translated afterthought.

## Actors and personas

- A paid actor presented as a customer must be disclosed as not an actual consumer - in the ad.
- Never script a fabricated testimonial or an invented "real user" story. Dramatize only composite-true stories, framed as such.

## Results and typicality

- A testimonial highlighting a benefit reads as a typical result. If the endorser's result is not typical, script the generally expected result - a bare "results not typical" disclaimer is explicitly insufficient.
- Before/after contrasts and number claims must be honest and substantiated; rewrite the script's numbers to what the advertiser can actually support.

## Claims and regulated categories

- A testimonial is not scientific evidence. Health or efficacy claims need substantiation the advertiser independently holds - otherwise soften the line or cut the claim.
- Do not assert or imply the viewer's health, financial status, or other protected attributes. Second-person framing is the usual trigger:
  - "Do you have [condition]?" gets rejected.
  - "[Condition] treatment services are available" passes.
  - Rewrite "you" phrasing out of health and finance scripts.
- Specific numeric health testimonials (a named lab value moving from one number to another) are routinely rejected outright - cut them rather than softening.
- Before/after and body-focused imagery is restricted in health and weight-loss categories.
- Health claims aimed at EU markets must match an authorized-claims list; check before scripting one.
- Fake urgency ("today only" that is not true) is a deceptive claim - write real deadlines or none.

## Script-pass checklist

Run on every finished script. Deliberately not ranked by effort: every item is a pass/fail gate, so an efficiency ordering would only read as permission to skip the expensive ones.

1. Which markets does this run in? → disclosure written for each, in each market's language.
2. Material connection? → disclosure line written into an early beat, spoken or on-screen, plus the platform label.
3. Performer not a real user? → non-consumer disclosure written into the ad.
4. Every quote traceable to real evidence? → if not, cut it; fabricated reviews carry per-violation penalties.
5. Result stated? → typical, or a generally-expected-result line added.
6. Health, efficacy, or financial claim? → substantiation confirmed with the user, second-person phrasing removed, else rewritten out.
7. Regulated category? → flag the whole package for the user's own legal review before filming.
references/hook-archetypes.md›
# Hook Archetypes

Menu of opening moves for UGC-style ad hooks. Pick 3-5 distinct archetypes per concept - near-identical openings mostly re-test what is already known.

## The triad

Every hook is three channels working at once, not one line:

| Channel        | Job                                                       |
| -------------- | --------------------------------------------------------- |
| Spoken line    | First words out of the performer's mouth - opens the loop |
| On-screen text | Anchors the claim for sound-off viewers                   |
| Opening visual | What is literally on screen - stops the scroll            |

- Make the three carry different information. Never caption the visual with the spoken line - a duplicated channel is a wasted channel.
- Treat the channels as interchangeable entry points, not a hierarchy; any one of them can lead. Deliberately unranked: all three cost the same to write and ship in the same take, so there is no effort to trade between them.
- The strongest hooks fire two channels at once - a direct-address spoken line over a pattern-interrupt visual attacks attention twice.
- Keep on-screen text to roughly 5-10 words per second of screen time.
- Pull the wording from evidence: a customer's own phrasing beats marketing paraphrase every time.
- Talent to camera generally outperforms voiceover over B-roll, and a screen recording of the actual product lifts performance (Savannah Sanchez, The Social Savannah).

## Archetype menu

This list decides what gets filmed, so the rows run in efficiency order - persuasion bought per unit of production effort, not cheapest first. Effort here is what must exist before the camera rolls, never the writing:

- efficiency: skeptic's turn == problem callout == POV > question == first-person confession == curiosity gap == reverse psychology == ironic list > contrarian > proof-first == silent review > bold claim > before/after contrast
- cost: before/after contrast > proof-first > silent review == bold claim > every dialogue-only archetype (near-zero - one line, no asset)
- value: proof-first == before/after contrast (they show the receipt) > skeptic's turn == problem callout == POV (they name what only this customer feels) > the framing-only rest
- compliance cost: before/after contrast (typicality substantiation, and restricted outright in health and weight-loss) > proof-first == bold claim (a documented result plus the customer's sign-off to show it) > every other archetype (baseline disclosure only)

Why the ties hold, tier by tier:

- **Skeptic's turn == problem callout == POV.** All three are one line of dialogue aimed at something only this customer feels - an objection, a struggle, a situation - so each buys recognition at identical cost. Nothing separates them but which of the three the evidence document actually gives you wording for.
- **Question == first-person confession == curiosity gap == reverse psychology == ironic list.** Same one-line cost as tier 1, and all five trade on framing rather than on anything the viewer can check, so they buy the same weaker thing. Pick by fit to the evidence, not by rank.
- **Proof-first == silent review** on efficiency only: proof-first's higher value is exactly offset by needing a cleared result rather than an hour of footage. They are not equal on any single axis - read cost and value separately before choosing.
- **Silent review == bold claim** on cost: an hour of product footage and an hour of digging out a defensible fact land in the same order of magnitude.
- **Proof-first == bold claim** on compliance: both assert a specific result, so both need it documented and signed off before it can be spoken on camera.
- **Proof-first == before/after contrast** on value: both put a receipt on screen, and a viewer weighs a shown result the same whether it arrives as one number or as two states.

**What this order starves: before/after contrast, and proof-first behind it.**

- They are the top of the value axis and the bottom of the efficiency one - the only two archetypes that show the viewer something checkable, and the two that cannot be written into existence.
- A slate filled purely by ratio is all dialogue, all framing, and never once shows a result.
- Promote them when the asset already exists and is cleared (proof-first's cost collapses to near-zero while its value is unchanged, so it leads outright), when the interview answer was a compounding mandate (the cleared result and the footage outlive the ad that used them), or after two rounds where tier 1 hooks have all landed within noise of each other - that is the market saying it has heard the framing and wants the receipt.

Ruled out means deleted, not last. Name the deletion in the script package so the next round re-tests the constraint instead of re-proposing the archetype:

- Regulated category barring the comparison - health and weight-loss most commonly - **deletes before/after contrast**.
- No product footage and no screen recording, with no way to capture either → **silent review is deleted**.
- No documented result the account is cleared to show → **proof-first and bold claim are both deleted**.

The surviving ordering is still a default, not a law: it shifts with context and with who films. Re-rank it against what you know about the user - a founder comfortable on camera, footage already shot, a cleared customer outcome - and against their answers to the deadline, durability and effort-ceiling questions in the skill's interview.

Default rung: fill three of the 3-5 slots from tier 1, and spend a remaining slot on a surviving asset-gated archetype whenever its asset already exists.

Example lines are illustrative - replace every noun and number with language sourced from the user's evidence.

**Tier 1 - dialogue-only, best ratio on the list. Start here.**

1. **Skeptic's turn** - open with doubt, pivot to the product. "I genuinely thought this was another dashboard nobody opens." One line of dialogue against the viewer's own objection pre-handled, which is what puts it top.
2. **Problem callout** - name the exact felt struggle. Spoken: "If you rewrite the same status update three times a week, stop." Watch out: generic pain is invisible; specificity is the whole mechanic.
3. **POV / relatability** - mirror a hyper-specific situation. "POV: it's 4:55 pm and the export is still running." Watch out: generic POV is invisible.

**Tier 2 - dialogue-only too, but each trades on framing rather than on something the viewer can check.**

4. **Question** - ask the question the buyer actually types into search. Watch out: use their verbatim phrasing, not a marketer's rewrite.
5. **First-person confession** - "I was doing [common thing] completely wrong." Watch out: reads fake without lived-in detail.
6. **Curiosity gap** - withhold the noun. "Nobody tells you what actually causes this." Watch out: must pay off in the body or it is clickbait that poisons conversion.
7. **Reverse psychology** - "Don't buy this if you [trait]." Qualifies the viewer and inverts the expected ad posture.
8. **Ironic list** - "3 reasons why you should NOT try this." The list then sells; the frame disarms.
9. **Contrarian** - "Everyone says X. That advice is why Y keeps happening." Costs one line like the rest of this tier, but sits last in it on variance alone: the payoff has to defend the claim or the whole script reads as a stunt.

**Tier 3 - asset-gated. Strongest proof on the list, worth a slot only once the asset exists.**

10. **Proof-first** - lead with the receipt: a result screenshot, a number, the demo money-shot. Needs a real result the account owns and is cleared to show; without one, budget a quarter of measurement work before this archetype is available at all. Strongest when the proof brags by itself.
11. **Silent review** - no spoken line; the product does something on camera while text carries the claim. Needs an hour of product footage or a screen recording. Strong on muted feeds.
12. **Bold claim** - specific and falsifiable. "This replaced my entire reporting day." Needs a fact the advertiser can defend, which can mean a week of digging or a legal read, and it must be substantiated again in the body.
13. **Before/after contrast** - two states in the first beat. The most expensive row here:
    - Two setups.
    - A before state that may no longer exist.
    - A typicality line to clear.
    - A category ban to check first.

    See the compliance checklist for the typicality rules.

## Quality bar per hook

- **Generic test: if a direct competitor could say the same opening line word-for-word, it is too generic to be worth testing.** Rewrite until it is only sayable about this product or this customer.
- Run the Four U's (general direct-response test): Unique, Urgent, Ultra-specific, Useful - hit at least two hard.
- Spoken line lands in under ~2 seconds read aloud.
- On-screen text: 3-7 words, sharpens rather than repeats the spoken line.
- Works muted: visual + text alone still communicate the premise.
- Concrete noun or specific number beats any adjective.
- Cliffhangers generally beat opening on the benefit - withholding outperforms announcing.
- Promise only what the body actually delivers.

## Opening-frame anti-patterns

- **A static frame or a logo card as frame one is the most-cited cause of a low hook rate.** Open on motion, a face, or the result.
- A slow build-up to the product wastes the only guaranteed seconds of attention.
- Footage that contradicts the line - a calm claim over frantic B-roll - reads as inauthentic even when the words are right.

## B2B skew

- Lead archetypes, in efficiency order for a professional feed: problem callout > question > proof-first > contrarian - all framed as insight or teaching, never as a pitch.
  - Problem callout and question: stay dialogue-only.
  - Proof-first: needs a customer result cleared for public use, which usually means someone else's approval.
  - Contrarian: keeps its high variance here too.
  - Re-rank when the user already has a cleared case study - proof-first then leads, since credibility is the scarce thing on these feeds.
- Credential the speaker inside the hook ("I run payroll for 40-person startups") - expertise is the B2B scroll-stopper.
- Avoid discount-urgency and haul-style openings; professional feeds reward "here's what I learned" and punish "commercial".
references/script-examples.md›
# Script Examples

Two worked packages (one B2C, one B2B) and one negative example. Products, quotes, and sources here are invented illustrations of the format - in real use, every quote must come from the user's actual evidence, or the package gets labeled `UNVALIDATED`.

Note the scripting depth throughout: **hook and CTA are locked word-for-word** (they carry the test), while **body beats are briefed with example phrasing** the creator can say in their own words.

## Worked example 1 - B2C creator script

**Concept**

- Segment: parents of school-age kids who cook on weeknights.
- Motivation (verbatim, illustrative): "I spend more time deciding what to cook than cooking" - app-store review, 2026-03.
- Format: creator talking to camera in their kitchen, phone propped on counter.
- Offer: 14-day free trial of a meal-planning app.
- Duration: 20 seconds, ~60 words. Validation status: grounded (sources listed above).

**Hook variants** (body below stays fixed; test these against it)

| #   | Archetype               | Spoken line                                              | On-screen text                  | Opening visual                              |
| --- | ----------------------- | -------------------------------------------------------- | ------------------------------- | ------------------------------------------- |
| 1   | Problem callout         | "It's 5:30 and I still don't know what we're eating."    | dinner decision fatigue is real | Creator staring into an open fridge         |
| 2   | First-person confession | "I used to plan meals in the school pickup line. Badly." | my old system: panic            | Phone screen full of screenshotted recipes  |
| 3   | Proof-first             | "Four dinners, one grocery run, zero 5 pm panic."        | this week's plan took 4 minutes | App's weekly plan filled in, held to camera |
| 4   | Question                | "What's actually for dinner tonight?"                    | the question I stopped dreading | Creator mid-chop, looks up at camera        |

**Body** (fixed across hooks; first beat adjusted per hook to extend its premise. Spoken column is example phrasing, not a locked read - the creator says it their way.)

| Time    | Spoken (example phrasing)                                                                                       | On-screen text                 | Visual                                                 |
| ------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------ |
| 3-7 s   | "The deciding was the exhausting part - not the cooking."                                                       | deciding > cooking             | Creator talks, hand on hip                             |
| 7-12 s  | "This app builds the week's dinners around what my kids will actually eat, and writes the grocery list itself." | picky-eater filter → list done | Screen recording: tap picky-eater filter, list appears |
| 12-16 s | "Sunday I swap what I don't like - five minutes, done for the week."                                            | 5 minutes on Sunday            | Creator swipes two meals away, shrugs, smiles          |

**CTA** (16-20 s)

- Spoken: "There's a two-week free trial - do one Sunday with it and see."
- On-screen: `14 days free · link below`. Visual: creator points down, plan visible behind.

**Delivery notes**

- Read direction: talk like venting to a friend, mildly amused, not salesy. No presenter energy.
- Setting: real kitchen, daylight, some clutter is good. Hold the phone plan up at beat 3.
- Pacing: cut every 2-4 seconds; no intro, first frame is the hook visual.
- Compliance: creator received free access - spoken "they gave me the app to try" folded into beat 1, plus platform paid-partnership label.

## Worked example 2 - B2B founder-led script

**Concept**

- Segment: heads of operations at 20-80 person services firms, problem-aware.
- Motivation (verbatim, illustrative): "Approvals live in email and nobody knows who's blocking" - sales-call note, 2026-05.
- Format: founder to camera, professional-network feed, 30 seconds. Teaching-first framing.
- Offer: free teardown guide "5 approval bottlenecks and fixes" (low-commitment learning ask - no demo push at this stage).
- Duration: 30 seconds. Validation status: grounded.

**Hook variants**

| #   | Archetype                    | Spoken line                                                          | On-screen text                         | Opening visual                                 |
| --- | ---------------------------- | -------------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------- |
| 1   | Problem callout + credential | "I've watched 60 ops teams lose deals to their own approval chains." | approvals kill more deals than pricing | Founder at desk, whiteboard behind             |
| 2   | Contrarian                   | "Your approval process isn't slow because people are slow."          | it's the routing, not the people       | Founder shakes head, screen shows email thread |
| 3   | Proof-first                  | "This client cut approval time from 9 days to 1. Same team."         | 9 days → 1 day                         | Screenshot of before/after cycle-time chart    |

**Body**

| Time    | Spoken                                                                                               | On-screen text          | Visual                                   |
| ------- | ---------------------------------------------------------------------------------------------------- | ----------------------- | ---------------------------------------- |
| 3-10 s  | "The pattern is always the same: the request sits in an inbox, and nobody owns the wait."            | nobody owns the wait    | Founder talks; cut to blurred email pile |
| 10-20 s | "The fix is boring: one visible queue, one named approver per step, a clock on each one. That's it." | queue · owner · clock   | Simple 3-item list builds on screen      |
| 20-25 s | "We wrote up the five bottlenecks we see most, and the fix for each."                                | the 5 bottlenecks guide | Founder holds up printed one-pager       |

**CTA** (25-30 s)

- Spoken: "It's free, link's in the comments - steal it."
- On-screen: `free teardown · link in comments`.

**Delivery notes**

- Read direction: calm expert, first take energy, small imperfections stay in. Captions on throughout - assume sound off.
- Founder is identified as founder on-screen from second 1 ("Founder, [company]") - the connection is self-evident but label it anyway.
- Compliance: result claim in hook 3 must match a documented customer outcome; add "results vary by team" on-screen if it is not typical.
- Sequence note: this is an awareness-stage script; a buying committee will not convert off one touch. Plan the next-stage script separately.

## Negative example - what not to ship

> **Hook (spoken and on-screen, identical):** "Discover the revolutionary meal-planning solution busy families love!"
> **Body:** "MealApp is the #1 app with cutting-edge AI. Thousands of happy customers agree it will change your life. Sarah from Ohio says it cured her stress completely."
> **CTA:** "Download now! Follow us! Use code SAVE20 today only! Link in bio!"

What is wrong with it:

- Brand voice in a person's mouth: "revolutionary", "cutting-edge", "#1" - no human talks like this; it reads as an ad in the first second.
- Duplicated channels: spoken line and on-screen text are identical, and no opening visual is specified - one third of a hook.
- Hook never paid off: "discover" promises nothing specific, so the body has no premise to extend.
- Invented testimonial: no "Sarah from Ohio" exists in the evidence; a fabricated endorser is a compliance violation, not just lazy writing.
- Unsubstantiated cure-level claim: "cured her stress completely" is a health-adjacent efficacy claim with zero substantiation.
- Stacked CTAs: download + follow + code + link - four asks, so none lands.
- Fake urgency: "today only" that isn't true is a deceptive claim.
- No disclosure: paid creator reading this says nothing about the relationship.
- No delivery notes: nothing tells the creator tone, setting, props, or beats - they are left to invent.
SKILL.md›
---
name: ugc-ad-scripts
description: "Turn a product brief and target audience into UGC-style short-form video ad scripts a creator can film - hook, body, CTA - with 3-5 hook variants per concept written as spoken line plus on-screen text plus opening visual, with delivery notes and disclosure lines. Use whenever the user asks for a UGC ad or creator script, a short-form vertical video ad script, a founder-led video, employee-generated content, or a customer testimonial video script - even if they never say 'UGC'. Covers B2C creator scripts and B2B formats. Do NOT use to score existing hooks (mbfinotti/advertising-skills@ad-hook-analyzer), to write static ad copy (mbfinotti/advertising-skills@ad-copy-variants), or to brief a designer (mbfinotti/advertising-skills@ad-creative-brief)."
license: MIT
metadata:
  author: Maya-Beth Finotti
  version: "1.2.3"
---

# UGC Scripts

Turn a product brief and target audience into UGC-style short-form video ad scripts a creator can film: hook, body, CTA, 3-5 hook variants per concept, and the delivery notes needed to shoot.

The strategist writes the script; the creator performs it; the editor assembles it - "You're not paying the creator to be the creative strategist" (Savannah Sanchez, The Social Savannah). Roles stay separate; combining them is the most-cited cause of mediocre output.

## Scope

Out of scope - hand off instead of doing it here:

- Video production, casting, sourcing creators, editing, post-production. Hard out.
- Scoring or ranking existing hooks/transcripts → `mbfinotti/advertising-skills@ad-hook-analyzer`.
- Static ad copy A/B variants (headline/body/CTA text for feed and search ads) → `mbfinotti/advertising-skills@ad-copy-variants`.
- Full campaign creative brief (messaging pillars, visual guidelines, brand do/don'ts) → `mbfinotti/advertising-skills@ad-creative-brief`. This skill writes the script itself and only the delivery notes needed to shoot it.
- Deciding when an ad is worn out → `mbfinotti/advertising-skills@ad-creative-fatigue`.
- Designing the test matrix and sample sizes for the variants → `mbfinotti/advertising-skills@ad-creative-test-plan`.

## Interview

Ask one question per message. Offer multiple-choice options where possible. Skip anything the user's brief already answers.

1. Product - what is it, and what does it actually do?
2. Offer - free trial, discount code, demo, waitlist, direct purchase?
3. Audience - who, and what awareness stage: unaware / problem-aware / solution-aware / product-aware?
4. B2B or B2C?
5. Platform and placement - short-form vertical feed, stories, professional-network feed, video pre-roll?
6. Target duration - default 15-25 seconds, the strongest-cited band for paid social.
7. Performer - real customer, paid creator, founder, employee, or a concept test with nobody cast yet?
8. Evidence on hand - reviews, comments on past ads, support tickets, sales-call notes, observed winning ads?
9. Regulated category (health, finance, supplements)? Which markets does this run in?
10. Volume - how many concepts, how many hook variants each? Default: 2-3 concepts × 3-5 hooks × 2 CTAs.
11. Deadline - what date must the first ad be live?
12. One-off win or compounding asset - a single ad filling a slot now, or a script library and a repeatable format to build on?
13. Effort ceiling - hours available, who can be filmed, and what already exists: product footage, screen recordings, a documented customer result cleared for public use?

Every option menu below is ranked by a default that these last three answers override. Re-rank against them and say which answer moved what:

- A compounding mandate promotes the asset-gated hook archetypes and the customer testimonial, since the asset outlives the ad that used it.
- A shoot this week defers them to the next round - say "deferred", and keep them on the menu.
- A constraint that cannot be lifted at all (no footage, no cleared result, a category ban) deletes an option - a deleted option gets named as deleted rather than parked at the bottom of the ranking.

## Workflow

1. Run the interview.
2. Build the evidence base by review mining - the dominant input, taught as a named method by Copyhackers (Joanna Wiebe): pull the customer's own language back out of their own channels, then mirror it back. Work the sources in efficiency order - quotes returned per unit of digging:
   - Public reviews == past-ad comments: a real tie, not a shrug - both are already public, already in the customer's words, and both are read straight off a screen with nobody's permission to ask. Take whichever the product actually has.
   - Support tickets: need internal access, and a named customer's words need their consent before they reach a script.
   - Sales-call notes: cost someone's time to dig out, and pay it back with the objection language nothing else gives you.
   - Re-rank against what the user already holds: a tagged ticket export or a call-recording library drops to near-zero and outranks public reviews - as it does for most B2B products, where public reviews are too thin to carry a concept.
   - Record each quote as four columns:
     - Exact quote.
     - Source.
     - Underlying desire or problem.
     - Emotional tag.
   - If you can browse the web, pull recent public reviews of the product; otherwise ask the user to paste evidence.
   - Never invent a hook, pain point, claim, or testimonial line. Fabricated reviews and testimonials are a regulatory violation, not just weak writing.
   - No evidence at all? Say so, write from the brief alone, and label every script `UNVALIDATED - voice-of-customer not sourced`.
3. Define each concept: one audience segment × one motivation (in the customer's own words) × one format. Fix the offer. Concept, hook, and offer are three separately testable variables (Ralph Burns, Perpetual Traffic) - hold two constant, vary one.
4. Draft the body against the anatomy below, fitted to the target duration. Keep it fixed across hook variants.
5. Write 3-5 hook variants per concept, plus 2 CTA variants. One shoot then yields 6+ edit combinations against a single body - the standard way to isolate creative variables without re-filming.
   - Each hook is a triad: spoken line + on-screen text + opening visual, each carrying different information.
   - Pick distinct archetypes from [references/hook-archetypes.md](./references/hook-archetypes.md), which ranks them by persuasion bought per unit of production effort. Default: the dialogue-only archetypes lead (skeptic's turn, problem callout, POV), and an asset-gated one (proof-first, silent review, before/after contrast) earns a slot when that asset already exists. Near-identical openings re-test what is already known.
   - Say what the ratio starves. Before/after contrast and proof-first carry the strongest evidence on the list and cost the most to shoot, so an efficiency read defers them forever and the slate never shows the viewer anything checkable. Promote one when its asset already exists and is cleared, when the interview answer was a compounding mandate, or once a round of tier-1 hooks has landed within noise of itself.
   - An archetype the constraints rule out is **deleted from this concept's menu and named as deleted** in the script package:
     - A regulated category bars before/after.
     - Missing product footage kills silent review.
     - An uncleared result kills proof-first and bold claim.
   - Never rank a deleted archetype last; a ruled-out archetype at the bottom of a list gets briefed anyway next round.
6. Check every hook-to-body transition: the first body line must extend that hook's premise. Rewrite the transition line per hook when needed - never let the body pivot away from what the hook promised.
7. Lock the hook and the CTA word-for-word; leave the middle as bullet-point beats with example phrases. This is the practitioner reconciliation of authenticity versus control - see Scripting depth below.
8. Add delivery notes per script:
   - Beat timings.
   - What is on screen each beat.
   - Tone and read direction.
   - What to hold up to camera.
   - Do's/don'ts - these carry more signal than positive instruction alone.
9. Run the compliance pass with [references/compliance-checklist.md](./references/compliance-checklist.md). Disclosure lines are script lines - write them in, in the language of every market the ad runs in.
10. Run your preferred humanizer skill over every spoken line and on-screen text. Mandatory: UGC that reads machine-written destroys the authenticity the entire format depends on. Never ship raw first-draft output as final.
11. Assemble the script package (shape below) with its measurement plan. If your harness has persistent memory, store the evidence sources, chosen concepts, and winning hooks for the next iteration; otherwise put them in the package so the user can re-supply them.

## Scripting depth

Both extremes fail, and each has its own failure signature:

- Too vague ("just talk about why you love it") → the creator invents the strategy, and the footage misses the angle.
- Too scripted (every word locked) → the delivery goes stiff and the creator's own audience senses an ad and skips.

Lock the two beats that carry the test - hook and CTA - and brief the middle as beats with example phrasing. Hand the creator the actual customer-review quotes as talking points, so the lines sound real because they are real.

## Script anatomy

- Default spine: Hook → Problem → Solution → 2-3 value props → social proof → CTA. Target 15-25 seconds for paid social.
  - Under ~10 s: tends to under-communicate.
  - Past ~45 s: completion falls steeply.
- Common beat split: hook 0-3 s, value prop 3-15 s, proof or demo 15-25 s, CTA in the final ~5 s.
- Test hook lines against the Four U's: Unique, Urgent, Ultra-specific, Useful.
- Front-load the hook, but do not treat "3 seconds" as a behavioral law: it is a convention reverse-engineered from a platform counting a "view" at 3 seconds of watch time. Independent eye-tracking (Lumen Research, via WARC) puts 1.4 seconds of attention behind a 10% brand-awareness lift and 3.9 seconds behind prompted recall - the real window is likely shorter than the folklore.
  - Never cite the "8-second attention span": it traces to a 2015 report with no credible source and is debunked.
- Retention drops steeply after the first several seconds. Cut lines rather than consolidate into a longer video.

Structure the body with a general direct-response framework where one fits, in efficiency order at 15-25 seconds: PAS (Problem-Agitate-Solve) > BAB (Before-After-Bridge) > AIDA. All three cost the same to write, so the ordering is fit rather than effort:

- PAS: dialogue-only.
- BAB: needs a before state that is still filmable, plus a typicality line to clear.
- AIDA: four stages rarely land inside 25 seconds.

Default to PAS. Move to BAB when the before state is already on camera. Move to AIDA only in the longer B2B formats below.

These are classic copywriting scaffolds, not UGC-native inventions - none includes the social-proof beat paid social expects, so add it.

## Platform notes

Optional; skip when the user has not named a platform. These are placement facts, not vendor instructions.

- Short-form feeds count a "view" at different thresholds (2 s on some, 3 s on others), so hook rates are not comparable across platforms. Compare a script only against others on the same placement.
- Keep on-screen text at roughly 5-10 words per second of screen time.
- Assume sound off. On professional-network feeds especially, most video is watched muted - captions and on-screen text must carry the message alone.

## B2B adaptations

Transfers unchanged from B2C:

- Fast front-loaded hook.
- Native unpolished feel.
- Single CTA.
- Grounding in real customer language.
- On-screen text carrying the message with sound off.
- The Hook/Body/CTA spine itself.

Does not transfer:

- Haul and impulse-purchase framings.
- Discount-urgency CTAs.
- The single-decision-maker assumption.
- Purely aesthetic UGC.

B2B buying runs through a committee of roughly 6-10 people over a longer window, so one script rarely converts alone - plan scripts per awareness stage.

Lead with teaching, not pitching: "People come to LinkedIn to learn; not necessarily to watch commercials" (AJ Wilcox, B2Linked). Person-to-camera expertise outperforms polished corporate video on professional networks.

Use Challenge → Solution → Outcome as the B2B spine, and close the outcome with a quantified result and a named role. Testimonial-length formats run longer than B2C - roughly 45-90 seconds - and completion falls sharply past two minutes.

Three B2B stand-ins for the B2C creator testimonial, in efficiency order. Cost runs opposite to value here, so read every axis before casting:

- efficiency: founder-led > employee-generated > customer/practitioner testimonial
- cost: customer testimonial > employee-generated > founder-led
- value: customer testimonial > employee-generated > founder-led
- compliance cost: customer testimonial (their sign-off to be named, plus a generally-expected-result line) > employee-generated (employment disclosed in the script) > founder-led (self-evident, still labelled)

1. **Founder-led** - why we built this, the broken status quo, what changed. One person's hour and one calendar; the only rung that ships this week. Weakest proof of the three: the viewer discounts a vendor telling their own story.
2. **Employee-generated** - "how we actually do X here", practitioner voice, real workflow or screen on camera. Costs internal buy-in and someone comfortable being filmed. Buys practitioner credibility a founder cannot claim.
3. **Customer/practitioner testimonial** - real user, named role, quantified result, with a generally-expected-result line when results vary. Costs external scheduling and their approval, and it needs a documented outcome to exist first. Buys the only third-party proof on the list.

**What this order starves: the customer testimonial.**

- First on value and first on cost: the only rung carrying third-party proof, and the only one whose asset needs someone outside the company to say yes.
- A ratio picks founder-led every time, so the account ships vendor-tells-own-story video indefinitely and never once puts a customer on camera.
- Promote it when a named customer with a quantified result has already agreed to appear, when the interview answer was a compounding mandate (the cleared testimonial is reusable across every later script), or once founder-led video has stopped moving the number - that is the viewer discounting the source, which no rewrite fixes.

Move up to employee-generated when someone in-house does the job the product replaces and will show their real screen. Default to founder-led otherwise.

That order is a default, not a law. Re-rank it against the account and against the interview's deadline, durability and effort-ceiling answers: a founder with an existing audience beats a cold customer testimonial, and a signed case study already cleared for public use makes the customer testimonial the cheapest rung here rather than the dearest. Where no documented customer outcome exists and none can be obtained, **delete the customer testimonial from this account's menu and say so** - do not leave it ranked last, where the next round briefs a testimonial nobody can supply.

## Output shape

Deliver one script package per concept, using the two-column audio/video convention: one row per beat, visuals in one column, audio in the other, plus a timing column. Estimate narration time as spoken word count ÷ 150 words per minute.

- **Concept**: segment, motivation (verbatim evidence quote + source), format, offer.
- **Hook variants (3-5)**: table of spoken line / on-screen text / opening visual, with archetype label. Locked word-for-word.
- **Body**: beat-by-beat - timing, spoken beat, on-screen text, visual. Bulleted beats with example phrasing, not locked lines.
- **CTA variants (2)**: the ask, with spoken and on-screen wording. Locked word-for-word.
- **Delivery notes**: read direction, tone, setting, props, pacing, and do's/don'ts.
- **Compliance**: disclosure line(s), the markets they cover, and claim notes.
- **Validation status**: grounded (with sources) or `UNVALIDATED`.
- **Measurement plan**: which single variable this package tests, plus the baseline below.

See [references/script-examples.md](./references/script-examples.md) for a worked B2C package, a worked B2B package, and a negative example annotated with what is wrong.

## Invocation examples

- "Write 3 UGC ad concepts for our meal-planning app, busy parents, 20-second vertical video, 5 hooks each."
- "Turn these customer reviews into a founder-led video script for a professional network, 30 seconds."
- "A creator is booked Friday - script a testimonial-style ad for the discount offer, with delivery notes."

## Failure modes

- Vague direction ("just be authentic") → creator invents the strategy. Fix: lock hook and CTA, brief the middle as beats.
- Every word locked → stiff delivery that reads as an ad. Fix: same rule, from the other side.
- Hook the body never pays off → hold rate collapses. Fix: transition line extends the hook's premise (step 6).
- Generic hook → nothing to learn from the test. Test: if a competitor could say the same opening line word-for-word, rewrite it.
- Static or logo-card first frame → the most-cited cause of a low hook rate. Fix: open on motion, a face, or the money-shot.
- Problem beat that lists features instead of naming the moment the pain shows up. Fix: use the emotional tag from the evidence doc.
- Brand voice in a person's mouth ("revolutionary formula") → reads as an ad and dies. Fix: use only words found in the evidence.
- Stacked CTAs → every ask dilutes the others. Fix: one ask per script.
- Invented voice-of-customer → regulatory exposure. Fix: label `UNVALIDATED` instead.
- Everything varied at once → nothing learned. Fix: hold concept and offer fixed while testing hooks.
- Usage rights not signed before filming → unusable footage. Flag it in delivery notes; the paperwork is out of scope.

## Measurement

Set the objective against the account's own baseline, not a published number. Pull the trailing median hook rate and hold rate for comparable placements first; a new script passes when it beats that median and clears the diagnostic below. Iterate on one variable at a time until it does.

Published benchmarks conflict too much to use as a target: vendor "good" hook rates range from roughly 18% to 40% for the same metric on the same platform, and each vendor sells the analytics the number justifies. Treat any external figure as a sanity check, never a goal.

Diagnose in sequence and fix only the failing stage:

- Low hook rate (3-second plays ÷ impressions) → the opening fails. Rewrite hooks; do not touch targeting.
- Healthy hook rate, low hold rate (15-second plays ÷ 3-second plays) → the body or the hook-to-body transition fails.
- Healthy hold rate, low CTR → the CTA is weak or unclear.
- Healthy CTR, low conversion → the offer or the landing page, not the script.

Hook rate measures attention, not value - two ads at an identical hook rate can differ several-fold in return because one holds viewers to the CTA and the other does not. Never scale on hook rate alone.

## Reference

- `mbfinotti/advertising-skills@ad-hook-analyzer` - score and rank existing hooks or transcripts.
- `mbfinotti/advertising-skills@ad-copy-variants` - static headline/body/CTA text variants.
- `mbfinotti/advertising-skills@ad-creative-brief` - the full campaign creative brief.
- `mbfinotti/advertising-skills@ad-creative-fatigue` - when to replace a worn-out ad.
- `mbfinotti/advertising-skills@ad-creative-test-plan` - test matrix and sample sizes for the variants.