Give it the product's facts (source/facts.md from guide-pull-product-highlights), the
length, the aspect, and who carries it (a presenter, a narrator over pictures, a
mascot). You get a beat table, one row per shot, and the narration word for word with
its audio tags, written to script.md for the person to approve (and edit) in a
review_approve at the script gate of the workflow that uses it (or guide-make-a-script-from-source, Process). You write it yourself: this is
text work, no model call.
Siblings: the first 3 seconds are llm-write-a-hook; the story world the pictures act
out is llm-pick-a-visual-metaphor; retelling a long source (a post, an article, a help
page, a deck) as narration is guide-make-a-script-from-source; a script the person
already wrote goes through llm-convert-written-script.
Inputs
source/facts.md: the headline, value props in the source's order, numbers with their lines, named parts, the CTA's exact words. No facts file, no script.- The length and aspect, and who presents. The person's accent and tone if a voice is involved (never inferred from a face).
- What's on screen in each beat: the product's real screens, a generated world, a presenter, type only.
Beat orders that worked
Choose a shape for the video's purpose and audience. These are delivered examples, not required formulas: a brand film can centre a feeling or one promise, while a demo can open on the result and show how it happens. Keep only the claims that serve the brief; source order is useful evidence, not an obligatory narrative order.
| Shape | Length and words | Beats, in order |
|---|---|---|
| Presenter ad over the product's UI | 30 s, about 70 words (a take ran 2.7 words/s) | The customer's pain, presenter full frame → one line per value prop, in the site's order, on the 1–2 screens that matter → the site's own headline as the close |
| Generated-world ad, five beats | 20 s, about 48 words, five shots of about 4 s | Pain, with a number → the place (" is where that changes") → what you get, two or three concrete things → proof, one number → the CTA in the site's own words |
| Faceless explainer over real screens | 35 s, about 85 words (32–37 s read) | The pain, shown as the customer's own mess → the brand and its own tagline → three steps in the product's own words → one feature worth paying for → proof with the real number → end card with where to get it |
| Mascot story | 28 s, about 7 shots of 3–5 s | One shot per substantive point (the problem, what it does, setup time, languages, integrations, monitoring), then the URL; the story world puns on the product's name |
| Repo explainer | 45 s, 110–120 words | Who made it and what it gives the user → one line per named part, each naming its real identifier → a quick "it does all of this" montage of 2 s shots → end card with the install command |
Words per second by kind of read: guide-make-a-script-from-source, Length.
Rules
- One shot per point, 3–5 s each (2 s shots only inside a montage). One idea per line. A point with no picture is a point to cut.
- The narration names the specifics: the languages, the stores, the integrations, the number. "Whatever language you ship" lost the product's substance; name them.
- Type says the gist, never what is spoken. "A list for anything" over "Create a list for anything: the weekly shop, a camping trip…"; the examples pop in as pills on their own words. Never print the narration as a headline.
- An ad, not slides: the presenter-over-UI recipe. One headline at most on screen at a time; no eyebrow, headline and subhead stack, no bullets beside a presenter in a window. The presenter talks full frame, then from a bubble over the product. This is the delivered layout for that recipe.
- Keep the product's substance on screen. Key phrases, the real screens, the named logos. A "no on-screen text" rule made a charming first cut that lost every point.
- Every fact from
facts.md. No invented reviews, ratings, user counts or claims; the CTA in the site's own words; numbers rounded down. - Close on the agreed message and action. The site's headline or CTA is a useful starting point; use the campaign's approved wording when the brief supplies it.
- Direct the read with audio tags where the delivery changes (
[warm, conversational]at the top,[brightening]at the turn,[upbeat]on the last line), and respell what a voice misreads (guide-voice-a-script).
What you get
A beat table and the narration as one block, written to script.md in the job folder:
| # | Time | Picture | Narration | On screen |
|---|---|---|---|---|
| 1 | 0–5 s | Presenter full frame; a whiteboard of crew names smudges and slides away | [warm, conversational] Still scheduling crews from a whiteboard? That's where callbacks slip through. | — |
| 2 | 5–11 s | Presenter shrinks to a bubble; the jobs table builds row by row | Acme Field is the service CRM that keeps every job, crew and customer in one place. | Acme Field logo |
| 3 | 11–17 s | Camera pushes to a new row typing itself in | Just say what happened on site, and it fills in the job for you. | a voice chip |
| 4 | 17–23 s | A row flips to Done; its total slides out to an accounting chip | Finished jobs flow straight into your accounting, with nothing typed twice. | "Nothing typed twice." |
| 5 | 23–30 s | The dashboard builds; end card | [upbeat] Built by tradespeople, for tradespeople. Acme Field: every job, on time. | logo, the site's CTA button |
That one is the presenter-ad shape: 62 words, five beats, two screens. A five-beat generated-world ad at 20 s reads like: "You've bookmarked fifty recipes. You still order takeout. / Globex Kitchen is where that changes. / Pick five dinners; it builds the week and the shopping list. / Forty thousand cooks plan their Sundays here. / Start planning."
Tips and traps
- Too many props for the length: 30 s holds four or five lines. Move props onto the screens that matter rather than giving each its own screen, and drop the rest with the person.
- A slides-and-bullets layout (a windowed presenter beside a kicker, headline and subhead) read as a deck; the person asked for an ad.
- The pain line generic ("Managing X is hard"): use the customer's own mess from the
source, and a number if the source has one (
llm-write-a-hook). - A payoff that repeats the hook's words sounds like padding; land somewhere new.
- The same claim twice (narration and a title saying it again): give the title the gist or the number instead.
Check it
- Every line traces to a line of
facts.md, and every value prop you planned to use is in it. - Word count against the length (
guide-make-a-script-from-source, Length), with the last line landing before the end card. - The hook passes
llm-write-a-hook's checks. - The CTA and the brand's name are spelled exactly as the source spells them.


