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, for the person to 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.


