How to write a video script with an AI agent
For AI agents: find the right skill in one call —
curl -s "https://varg.ai/how-to/api/search?q=<what the person wants>"returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://varg.ai/how-to/llms.txt. Every page has a markdown twin: add.mdto its path. Before generating anything, show the person the options on the how-to page. From a terminal:curl -fsSL https://varg.ai/install | shinstalls the vargai CLI (https://varg.ai/how-to/cli.md):vargai searchandvargai install <slug>with no key, every varg model aftervargai login.
A brief and its facts go in; one script table comes out (time, spoken line, on-screen text, visual, sound) with three hooks and a timing check, before anything is generated. In a blind test on six briefs, two judges scored scripts written with this guide 7.54 out of 10 against 6.40 without it.
Step 3 of 10 in How to make a video with an AI agent in ten steps. Before: How to make a moodboard for an AI video. Next: How to design sound and voice for an AI video.
For your agent
Install the skill, then paste the prompt.
npx skills add vargHQ/skills --skill video-script
Use the video-script skill. Write the script for this video: [what it is, who it is for, platform, length].
Facts you may use: [numbers, names, prices, offer conditions]. Never invent one: write [TK] and ask.
Pick one of the six strategies, open the file for the format (demo, review, ad, social, drama),
write the script table, run the checker and fix every FAIL.
Show the script and three hooks, and wait for a yes before anything is generated.
No skill? Paste the full prompt from "The general prompt" below instead.
The short version
- Facts in, no inventions: only numbers, names and claims from the brief. Outside the drama brief, judges flagged 36 invented facts in scripts written without the guide and 14 with it.
- Size every line to its seconds: about 2.5 spoken words a second (150 a minute), on-screen text at least 0.33 s a word, shots of 4–11 s. Without the guide 5 of 12 scripts had lines too long for their slot; with it, none.
- Deliver the promise in the first 3 seconds, as a picture that reads on mute. Withhold the answer, never the subject.
- Join beats with BUT or THEREFORE, never AND THEN, and cut any line whose removal changes nothing.
- The voice adds only what the picture can't show; end on the payoff and one action, or a cut.
- Word budgets at 150 wpm: 37 words for 15 s, 75 for 30 s (60–70 reads better), 150 for 60 s.
- Show the script and three hooks and wait for a yes before anything is generated.
- Do not pick a winner with 1–10 scores: reversing the reading order changed the winner in 2 of 3 briefs. Measure with code, gate with yes/no checks, rank pairwise in both orders.
Guide for AI agents · November 3, 2026. Research, rules and a tested skill. Agents write the script before anything is generated, from real facts, and then measure it against the clock instead of grading their own taste. Get the skill on varg how to; source on GitHub.
| Number | What it is |
|---|---|
| 7.54 vs 6.40 | score out of 10, with the skill vs without |
| 10 / 12 | brief × judge pairs where the skill's script won |
| 0 / 12 vs 5 / 12 | scripts failing the timing check |
| 589 evidence items | 269 expert findings + 320 checked X advice items |
Short answer
An agent writes a great script when it writes the script first, from real facts, and then measures it against the clock instead of grading its own taste. In a blind test on six briefs, two judges scored scripts written with this guide 7.5 out of 10 against 6.4 without it, and preferred them in 10 of 12 comparisons.

Example output: a 30-second explainer from the skill, with BUT/SO joins between beats and the checker's verdict.
Five rules carry most of the difference:
- Facts in, no inventions. Only numbers, names and claims from the brief; never a made-up customer, review or experience. Outside the drama brief, judges flagged 36 invented facts in scripts written without the guide and 14 with it.
- Size every line to its seconds. About 2.5 spoken words a second (150 a minute), captions on screen at least 0.33 s a word, shots of 4–11 s. Without the guide, 5 of 12 scripts had lines too long to say in their slot; with it, none.
- Deliver the promise in the first 3 seconds, as a picture that reads on mute, and name the topic: withhold the answer, never the subject.
- Every beat turns the next: join beats with BUT or THEREFORE, never AND THEN, and cut any line whose removal changes nothing.
- Show it, then end on the payoff: the voice adds only what the picture can't show, and the video ends on one action or a cut.
How to use it: install the video-script skill (or paste the general prompt below). The agent picks one of six strategies, opens the file for its format (demo, review, ad, social, drama), writes the script table, runs the checker and shows the script for approval before anything is generated.
| Blind test, 6 briefs | With the guide | Without |
|---|---|---|
| Score out of 10, two judges | 7.54 | 6.40 |
| Ranked best (brief × judge pairs) | 10 of 12 | 2 of 12 |
| Lowest score | 6.0 | 4.5 |
| Scripts failing the timing check | 0 of 12 | 5 of 12 |
The writers were fresh Claude Sonnet agents; the judges were Claude Opus and Claude Sonnet, blind to which script was which (sign test p = 0.039, judges agree at r = 0.66). Judges from the same model family can favor its style, so treat this as triage until audience numbers come in. The guide lost one brief, a plane-windows short, where its hooks hid the topic. That note became a rule, and a second round lifted that brief from 5.75 to 7.0.
Shipped: the skill video-script (vargHQ/skills#77), the card varg.ai/how-to/skills/video-script, a web version in varg's look at https://varg.ai/how-to/write-a-video-script-with-an-agent, and the research data (kept in varg's private research repo).
The general prompt
Paste this into any agent before it writes a script. It is the short form of the video-script skill: seven steps, nine rules, the defaults to replace and the clock. The skill adds a checker script, six example scripts and the variation files.
You are writing the script for a video. Write it before any voice, image or clip is made: every later step is cut to it.
Left alone you drift to the most probable script: a "have you ever wondered" opener, three adjectives, a narrator
describing the picture, a vague happy ending. Replace each default with the specific thing.
1. Brief and facts. Get the viewer, the one promise, platform + length + ratio, the facts, the one action and the
production limits (AI video or footage, voice, speakers, model). Ask once, only for what changes the script; assume
the rest and say so. Write facts.md. Never invent a number, quote, review, customer or experience: write [TK] and ask.
2. Skeleton. Find what already works for this viewer: top videos in the niche from the last 30 days, ads that have run
for months. Note the hook, the format, how the product appears, the ending. Copy the structure, never the words.
3. Promise, ending, ten hooks. Write the promise as one sentence. Write the last line. Write ten first lines of
different kinds; cross out the first idea you had and anything two drafts share; keep the three most specific.
4. Beat sheet. One line per beat with its time. BUT or THEREFORE between beats, never AND THEN. Where people appear:
who wants what, what happens if they don't get it, why now.
5. Table: | # | time | spoken | on screen | visual | sound |. One spoken line = one visual. Numbers as they are said.
6. Check. Spoken words <= seconds x 2.5 (150 wpm). On-screen text >= 0.33 s a word. Every shot fits the model
(runs of 4-11 s). Hook lands by 3 s in feeds. Run the checker, fix every FAIL, read every line aloud.
7. Show the script and three hooks, and wait for a yes before anything is generated.
Rules: one viewer, one promise. The first frame and line pay off the packaging and read on mute. Open a loop;
withhold the answer, never the topic or the stakes. Every beat turns something; cut what changes nothing. Show it, and say
only what the picture can't. Write for the ear. Specific beats general. End on the payoff and one action.
Disclose paid deals at the start; never fake a customer; an AI presenter never claims to have used the product.
Offers keep their conditions exactly as given. Codes and reference numbers go on screen, not in the voice.
| You will drift to | Write instead |
|---|---|
| "Have you ever wondered…", "In this video…" | the result, the conflict or the strangest true detail, shown |
| three adjectives ("fast, simple, powerful") | one fact you can show or measure |
| "It's not just X, it's Y" | say Y |
| a narrator describing the shot | the shot alone, or a line that adds what it can't show |
| a vague hopeful ending | the payoff, then cut; or one action |
| speakers who all sound alike | a want and a way of talking for each person |
| Sarah, Emily, Elara Voss | names from the brief, or plain specific ones |
| the first twist that comes to mind | the third idea; drop what two drafts share |
| "seamless", "game-changer", "unlock", "delve" | the concrete thing |
| invented stats, "studies show" | a fact from facts.md with its source, or nothing |
| Length | Spoken words, max at 150 wpm | Beats |
|---|---|---|
| 15 s | 37 | 3–4 |
| 30 s | 75 (60–70 reads better) | 5–7 |
| 45 s | 112 | 6–9 |
| 60 s | 150 (90–120 when the product must be watched) | 7–12 |
| 3 min | 450 | chapters of 3–5 beats |
Pace comes from the National Center for Voice and Speech (about 150 wpm) and Brysbaert's review (audiobooks 140–180 wpm); caption speed from the BBC subtitle guidelines; shot length from varg's tested runs and each model's spec.
Strategies that work
Six structures cover most videos. Each has a credible origin and one full example script, and every example passes the checker with 0 fail and 0 warn. Pick by what the video must do, then use the format templates under Variations.
| Strategy | Use for | Beats | Who backs it |
|---|---|---|---|
| But / therefore | true stories, founder stories, history | situation → BUT → THEREFORE → BUT → payoff | Trey Parker & Matt Stone; Aristotle |
| Question ladder | social shorts, mysteries, skits | hook + what's coming → question → bigger question → twist → cut | Jenny Hoyos; Andrew Stanton; Loewenstein |
| Problem, agitate, solve | ads to people who know the problem | problem → why it's worse → product as fix → proof shown → action | Ogilvy ("above average in sales results"); TikTok; Motion 2026 |
| Result first | demos, tutorials, app ads | finished result → how, fewest steps → payoff → action | Peter Cohan, Great Demo! |
| Misconception first | explainers, science | question → common wrong answer → why it seems right → evidence → right model | Derek Muller's PhD |
| What is / what could be | launches, pitches, brand films | today's pain → the possible → today → the possible made real → action | Nancy Duarte |
The Post-it facts come from the National Inventors Hall of Fame; the hammer and feather from NASA's NSSDC. Ferm, Sift and Relay are fictional products, and the recipe story is fiction.
But / therefore: the Post-it Note (30 s)
The sticky note started as a glue nobody could use.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "This glue failed at its job." | THE GLUE THAT FAILED | a yellow square peels off a page, leaves no mark | soft peel |
| 2 | 0:03-0:09 | "Spencer Silver at Three M made it: sticky, but useless for tape." | SPENCER SILVER · 3M | lab bench, a tape strip lifts away clean | lab hum |
| 3 | 0:09-0:16 | BUT "But in nineteen seventy-four, Art Fry's bookmark kept falling out of his hymnal." | 1974 | church choir; a paper slip slides out and drifts down | choir humming |
| 4 | 0:16-0:21 | SO "So he made bookmarks with a thin coat of Silver's glue." | brush on paper; the slip holds to a page, lifts clean | ||
| 5 | 0:21-0:26 | SO "So Three M tried them in four cities, in nineteen seventy-seven." | PRESS 'N PEEL · 1977 | a 1970s shop shelf, small pads | register ding |
| 6 | 0:26-0:30 | "Renamed, they went national in nineteen eighty. Post-it Notes." | POST-IT · 1980 | a wall of yellow notes | pop |
Question ladder: the crossed-out line (30 s, fiction)
Why grandma crossed out the best line in her recipe.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "Grandma crossed out one line here." | ONE LINE CROSSED OUT | old recipe card, one line inked over | pen scratch |
| 2 | 0:03-0:07 | SO "So I baked her cake both ways." | two bowls, two tins, oven door shuts | timer ticking | |
| 3 | 0:07-0:11 | "Without the line: dry and flat." | WITHOUT IT | cake A sliced, crumbling | knife |
| 4 | 0:11-0:16 | "With it, perfect. So why cross out the best part?" | WITH IT | cake B, tall and glossy; cut back to the card | |
| 5 | 0:16-0:22 | "Under the ink, against the light: a cup of coffee. Don't tell Harold." | DON'T TELL HAROLD | card held to the window, the words show through | |
| 6 | 0:22-0:28 | "Harold, my grandpa, hated coffee. He ate this cake every Sunday for forty years." | 40 YEARS | old photo of grandpa holding a slice | soft piano |
| 7 | 0:28-0:30 | "I'm keeping it crossed out." | the card goes back in the tin, lid shuts | click, cut |
Problem, agitate, solve: Ferm proofer (30 s ad)
A warm, steady place for dough in a cold kitchen. Facts: holds 24–28 °C, folds flat, $89, 30-day returns.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "Fourth flat loaf this month." | #ad · MY 4TH FLAT LOAF | a hand presses a dense loaf; it doesn't spring back | thud |
| 2 | 0:03-0:08 | "Same starter, same recipe. My kitchen is just cold." | 17 °C | thermometer on the counter, breath-cold window | fridge hum |
| 3 | 0:08-0:13 | "I tried the oven with the light on. It melted my bowl." | warped plastic bowl held up to camera | ||
| 4 | 0:13-0:19 | SO "So now the dough goes in this. Ferm holds it at twenty-six degrees all night." | FERM · 26 °C | box unfolds, dial clicks to 26, bowl goes in | dial click |
| 5 | 0:19-0:24 | "Eight hours later." | lid lifts: domed dough full of bubbles | soft gasp, music in | |
| 6 | 0:24-0:26 | "It folds flat after." | box folds into a slim panel beside the fridge | ||
| 7 | 0:26-0:30 | "Eighty-nine dollars, thirty days to send it back. Link below." | $89 · 30-DAY RETURNS | loaf with a tall ear; finger taps the link |
Result first: Sift (25 s app ad)
An hour-long call in five lines you can trust.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "An hour-long sales call, in five lines." | 58:12 → 5 LINES | a long waveform collapses into five bullet lines | whoosh |
| 2 | 0:03-0:08 | "Who decided what, who owns it, by when." | DECISION · OWNER · DATE | the summary on a phone, three lines highlight in turn | ticks |
| 3 | 0:08-0:14 | "Drop in the recording. Thirty seconds later, this." | 0:30 | screen recording: drag file, progress bar, summary appears | click |
| 4 | 0:14-0:20 | "Tap any line to hear the moment it was said." | finger taps a line; the clip plays, waveform lit | "...ship it Friday." | |
| 5 | 0:20-0:25 | "Sift. Try your longest call free." | sift.app | logo and URL | music out |
Misconception first: the hammer and the feather (40 s)
Why a hammer and a feather hit the Moon at the same time.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "Hammer or feather: which lands first?" | WHICH LANDS FIRST? | a hand holds a hammer and a feather side by side | wind |
| 2 | 0:03-0:08 | "Most people say the hammer. Heavy things fall faster." | HEAVIER = FASTER? | on grass: the hammer thuds, the feather drifts | thud |
| 3 | 0:08-0:14 | "On Earth the hammer wins, but not because it's heavier. Air holds the feather back." | AIR | slow motion: air currents lift the feather | |
| 4 | 0:14-0:23 | SO "So Apollo 15's David Scott tried it on the Moon, where there is no air. A hammer and a falcon feather." | 1.32 KG · 0.03 KG | an astronaut on grey dust holds both out at shoulder height | radio static |
| 5 | 0:23-0:28 | "He let go." | both start to fall | silence | |
| 6 | 0:28-0:33 | "They hit the dust together." | SAME TIME | both land at once, a small puff of dust | |
| 7 | 0:33-0:40 | "With no air, everything falls at the same rate. Galileo said it. Scott showed it." | ALL FALL AT ONE RATE | Earth over the lunar horizon | music |
What is / what could be: Relay (45 s brand film)
No patient call goes unanswered while staff look after the patient in front of them.
| # | time | spoken | on screen | visual | sound |
|---|---|---|---|---|---|
| 1 | 0:00-0:03 | "This patient is calling. Nobody will answer." | a phone rings on an empty front desk, full waiting room | ringing | |
| 2 | 0:03-0:11 | "The front desk is checking someone in. The call goes to voicemail. The patient books somewhere else." | MISSED CALL | receptionist with a patient; phone shows missed call; the caller dials another clinic | |
| 3 | 0:11-0:16 | "Now picture every call answered on the first ring, at any hour." | FIRST RING. ANY HOUR. | same desk; the phone lights once and a calm voice answers | one ring, "Lakeside Clinic, good morning" |
| 4 | 0:16-0:22 | "Today your staff choose between the person in front of them and the phone." | receptionist's eyes flick from the patient to the ringing phone | ringing | |
| 5 | 0:22-0:32 | "With Relay they don't have to. It answers, books the visit in your calendar and texts the patient." | BOOKED · TEXTED | call transcript, a calendar slot fills, a text lands on a patient's phone | ding |
| 6 | 0:32-0:40 | "Your team stays with the patient in the room. The one on the phone is booked too." | receptionist laughing with a patient; the day's calendar full | music lifts | |
| 7 | 0:40-0:45 | "Relay. Book a fifteen-minute demo at relay dot health." | relay.health | logo and URL | music out |
Variations
Each format changes a few rules on top of the general prompt; each has its own reference file in the skill with one checked example script.
| Making | What changes | Length | Hook by | Product or answer enters |
|---|---|---|---|---|
| Demo or launch film | result first, villain, headline, 2–3 value moments, real UI | 45–90 s (demo 2–5 min) | 3 s (first frame = result) | at once, as the result |
| Product review | disclosure, frame of reference, own test, the flaw, verdict for whom | 30–60 s (long 5–15 min) | 3–6 s | at once |
| Ad or UGC ad | opener by awareness level, brand by 5 s, real proof, one action | 15–30 s | proposition by 3 s, hook done by 6 s | by 5 s (story formats: before halfway) |
| Social short | packaging paid off, foreshadow, rehook at 20–25 s, cut on the payoff | 15–90 s | 3 s, readable on mute | value by about 4 s |
| Short-form drama | cold open on conflict, one beat per episode, a named button | 60–90 s an episode | 3–5 s, 2–3 lines | the series question stays open |
Pro demo and launch video
- Open on a change in the world, never on the company (Andy Raskin; Peter Cohan).
- Show the result first: "Start by presenting the highest impact, most compelling screen" (Cohan, Great Demo!).
- Name the villain and reject the obvious fix out loud: "Who wants a stylus?" (Jobs, 2007).
- Write the 140-character headline first and script exactly one showstopper (Carmine Gallo).
- Demo by value, not by menu; in longer demos set up the insight, the alternatives and a "perfect world" first (April Dunford).
- "Smth should be happening every 2-3 seconds", 45 s to 1:30 (Roy Lee, 2,808 bookmarks).
Example: Patchwork (fictional dev tool), 60 s, 86 words.
| # | time | spoken | on screen | visual |
|---|---|---|---|---|
| 1 | 0:00-0:03 | Issue #4127 → FAIL checkout.test.ts | an issue page snaps into a red failing test | |
| 2 | 0:03-0:10 | "Most of fixing a bug is making it happen again." | dev clicks through the app, nothing breaks | |
| 3 | 0:10-0:16 | "You could ask the reporter for steps. They'll answer Tuesday." | Seen 9:14 | chat bubble marked seen, no reply |
| 4 | 0:16-0:21 | "This is Patchwork. It turns a bug report into a failing test." | PATCHWORK | logo over the issue page |
| 5 | 0:21-0:26 | "Paste the issue link." | the link drops into Patchwork | |
| 6 | 0:26-0:33 | "It reads the report, finds the code path, and writes the test." | progress lines; a test file types itself | |
| 7 | 0:33-0:40 | "Run it. Red. Now you're not guessing." | FAIL 1 of 1 | terminal turns red on the exact line |
| 8 | 0:40-0:48 | "Fix one line. Green." | PASS | one edit; terminal flips green |
| 9 | 0:48-0:55 | "And it opens the pull request with the test inside, so this bug never comes back." | Draft PR #4128 | the showstopper: PR with the test |
| 10 | 0:55-1:00 | "Patchwork. Free for open source. Try it on your oldest bug." | patchwork.dev | logo, URL |
Product review
- A review is "a preview of what it will be like to own the product", pros, cons, worth it, and whether competitors are (Marques Brownlee).
- Give every verdict a frame of reference: what you used before (MKBHD).
- Prove it with your own test, and make "flaws but not dealbreakers" a beat (Wirecutter).
- Disclose a free product or paid deal at the start, spoken and on screen (FTC).
- No invented experience: AI presenters are endorsers and cannot claim use (FTC 2024 rule).
Example: Lumo H2 headlamp (fictional), 45 s, the reviewer's own test.
| # | time | spoken | on screen |
|---|---|---|---|
| 1 | 0:00-0:04 | "The box says five hours. Mine died at four ten." | #ad · Lumo sent it free / 5 H? 4:10 |
| 2 | 0:04-0:10 | "I've worn it on fourteen runs. Before this, a cheap AAA lamp." | 14 RUNS |
| 3 | 0:10-0:17 | "It's much brighter, and it doesn't bounce when I run." | 350 LUMENS |
| 4 | 0:17-0:24 | "Seventy-eight grams. Red mode, so I don't blind my dog." | 78 G |
| 5 | 0:24-0:31 | "The bad part: the strap stretched. By week two I tied a knot in it." | STRAP ✗ |
| 6 | 0:31-0:38 | SO "So, four hours, not five. That's still longer than my longest run." | VERDICT: yes, under 4 h runs |
| 7 | 0:38-0:45 | "It's forty-five dollars. If you run in the dark, I'd buy it. Link's in my bio." | $45 · link in bio |
Ad and UGC ad
- Pick the opener by what the viewer already knows: the offer (wants it), proof (doubts it), a comparison (shops the category), the problem (feels it), a story (feels nothing yet). Eugene Schwartz's awareness levels via book notes, mapped by Dara Denney.
- Who it's for and what they get by 3 s, hook done by 6 s (TikTok Creative Codes); product shown by 5 s (Google ABCD), named about three times (P&G rule in Ogilvy on Advertising).
- Problem, solution, real proof; an honest demonstration beats a claim (Ogilvy).
- Native and a little ugly beats polished (Barry Hott); write 3–5 versions that differ in angle, since about 5% of Meta creatives win (Motion 2026).
- "Write it like something is happening, not like someone is explaining" (@AlessandroLavis).
- Truth checklist: real customers or labeled actors, typical results, no AI personas giving testimonials, disclosures early (16 CFR 255, 465).
Example: Fold&Go packing cubes (fictional), solution-aware side-by-side, 20 s, 37 words.
| # | time | spoken | visual |
|---|---|---|---|
| 1 | 0:00-0:02 | "Same clothes. Two cubes." | split screen: two identical piles of five shirts |
| 2 | 0:02-0:06 | "Regular on the left. Fold and Go on the right." | both cubes zipped full, the same height |
| 3 | 0:06-0:10 | "Now the second zip." | the right cube squeezes down |
| 4 | 0:10-0:14 | "Half the height. Same five shirts." | a ruler beside both cubes |
| 5 | 0:14-0:16 | SO "So the carry-on closes." | the lid shuts over three cubes |
| 6 | 0:16-0:20 | "Fold and Go. Three for thirty-four dollars. Link below." | the set of three, a tap on the link |
Social short and YouTube intro
- The opening pays off the title or thumbnail; on autoplay many never see the thumbnail (MrBeast production doc; Paddy Galloway).
- The hook is a picture that reads on mute in 3 s, then foreshadow the ending in the same 3 s (Jenny Hoyos).
- Rehook about 20–25 s in, at most twice in 60–90 s (Kallaway).
- End right after the payoff: Hoyos cut one second and retention rose from 83% to 88%.
- One version per platform; one recurring character and a series name turn views into follows (@laurgrowth).
Example: steak on a car engine (fictional experiment), YouTube Short, 34 s.
| # | time | spoken | visual |
|---|---|---|---|
| 1 | 0:00-0:03 | "Steak on my engine. My mechanic eats it." | foil-wrapped steak on an engine block |
| 2 | 0:03-0:08 | "Foil, salt, wrap it three times, tuck it by the manifold." | hands triple-wrap it and wedge it in |
| 3 | 0:08-0:14 | "Ten minutes of driving. I pull over. Still raw." | roadside, the foil opens on grey-red meat |
| 4 | 0:14-0:20 | SO "So, the highway. Hotter engine, hotter steak, right?" | speedometer climbs |
| 5 | 0:20-0:25 | "Thirty minutes. Smoke from the hood." | thin smoke from the hood seam |
| 6 | 0:25-0:30 | "Medium rare. Honestly perfect." | steak sliced on the bumper |
| 7 | 0:30-0:34 | MECHANIC: "Tastes like a radiator." [beat] "Can I have another?" | he chews, frowns, holds out his hand; cut |
Short-form drama
- Open on the conflict: 3–5 seconds, about 2–3 lines (Asmaa Jamil, Casting Workbook).
- One beat per episode: hook, turn, cliffhanger; a "micro-closure" while the series question stays open (Safaricom brief; 28-writer study).
- End on a named button: revelation, reversal, deadline or intrusion (InkTip).
- "Every second has to deliver information or emotional engagement"; clarity over subtlety (Shicong Zhu, DramaBox, PGA).
- For AI video: talking heads and confessionals render well, fights don't (Neural Viz in WIRED); write action the model can render (MIT Technology Review); 4–8 s shots with a time per line.
Example: Wrong Number, episode 1 (fiction), 70 s, two locations, every shot 8 s or less.
| # | time | spoken | on screen | visual |
|---|---|---|---|---|
| 1 | 0:00-0:03 | HE KNOWS. LEAVE TONIGHT. | a phone lights up on a bus dashboard | |
| 2 | 0:03-0:08 | JUNE: "Wrong number." | June types one-thumbed at a red light | |
| 3 | 0:08-0:13 | JUNE. DON'T GO HOME. | the reply lands; her thumb stops | |
| 4 | 0:13-0:19 | JUNE: [whispers] "Who is this?" | she checks the mirror: the bus is empty | |
| 5 | 0:19-0:25 | CHECK THE FREEZER. | the light turns green; she doesn't move | |
| 6 | 0:25-0:33 | DEREK: "You're early." | kitchen; Derek at the sink, very calm | |
| 7 | 0:33-0:39 | JUNE: "Shift got cut." | her smile too wide; eyes on the freezer | |
| 8 | 0:39-0:45 | DEREK: "Sit. I'll make tea." | he turns his back, fills the kettle | |
| 9 | 0:45-0:52 | under frozen peas, a passport | ||
| 10 | 0:52-0:58 | JUNE: [breath] "That's me." | ANNA KELLER | her photo, another name |
| 11 | 0:58-1:04 | DEREK: "I told you not to open that." | Derek in the doorway with two mugs | |
| 12 | 1:04-1:10 | RUN. | the phone lights up; cut to black |
How agents expand and improve the guide
The guide changes only on evidence, because most ideas that sound better lose: only a third of the ideas Microsoft tested improved the metric they were built for (Kohavi et al., 2013). The skill's references/improve.md is the full loop; this is the short form.
- Keep a test set. Six briefs, one per format, ship with the skill. Before editing the skill, write all six with the current version and keep them as the baseline. "Create evaluations BEFORE writing extensive documentation" (Anthropic, skill best practices).
- Log every script that ships: format, strategy, hook, length, words, checker result, who approved it, where it was posted, and the numbers when they come back. Log the losers too.
- Read the number, fix only the part it grades (table below).
- Test one thing at a time: the same body with a new hook, or the same script with a new ending, using the platform's own split test.
- Judge drafts the way that works: YES/NO checks from the brief, pairwise in both orders, a judge from another model family, edits that quote the failing line, at most three rounds. Model judges agree with people only about 73% of the time on stories (LitBench), so the audience decides.
- Promote a lesson into the skill only after a clean test win, the same note from the person twice, or two independent credible sources. Then re-run the six briefs with a fresh agent that has only the skill loaded ("Claude B") and keep the change only if it loses on no brief.
- Add a format by copying the shape of
ad.md: when to use it, beats in seconds, word budget, rules with sources, one checked example. - Refresh the evidence every few weeks: X posts from the last 7 days and 4 months sorted by bookmarks with bait accounts dropped, the Wikipedia AI-writing page for new tell-tale phrases, and the varg model specs for clip lengths.
| Number | It grades | Change |
|---|---|---|
| Shorts "viewed vs swiped away", 3-second hold | the hook | rewrite the first beat, keep the body |
| YouTube "Intro" (still watching at 30 s) | whether the opening keeps the title's promise | deliver the promise sooner |
| a dip in the retention graph | that beat | cut it or tighten it |
| a top moment late in the video | the order | move it earlier |
| a spike | a great moment, or a confusing one | rewatch before copying it |
| CTR, downloads, sales, "what is this?" comments | the ending and product clarity | rewrite the last two beats |
Sources: YouTube Help, key moments; practitioners map it the same way on X: views grade the hook, downloads the CTA, revenue the funnel (@gregisenberg, 8,282 bookmarks), and Pocket FM rewrites only the hook or cliffhanger when a video misses 2.5% CTR or 55% 3-second through-play (@RohanNayak2, 12,697 bookmarks).
Ranking scripts with an LLM judge
A judge that rates scripts 1–10 is not stable enough to pick a winner. Reading the same 18 scripts in reverse order changed the winner in 2 of 3 briefs for both of our judges. What works is structural: measure what code can, gate with yes/no checks written from the brief, then rank the rest pairwise in both orders, with the judge counting and quoting failures, a different model family or a panel, and calibration on human picks. Telling the judge to be unbiased does not work: MT-Bench's default prompt already said to avoid position and length bias, and its judge still showed both (Zheng et al.).
What our own judges did
| Test on our scripts (2026-11-03) | Result |
|---|---|
| Same judge, same 18 scripts, 1–10 scores, reading order reversed | rank correlation 0.62 (Opus) and 0.51 (Sonnet); winner changed in 2 of 3 briefs for each judge |
| Two judges, same 24 scripts, 1–10 scores | rank correlation 0.64; same winner in 4 of 6 briefs; their six criterion scores moved together (0.58 between criteria) |
| Two judges, 12 generic yes/no questions | 84% raw agreement but mean kappa 0.33; questions every script passed added nothing, vague ones split ("every beat follows from the last": kappa 0.07) |
| One judge, pairwise, counting quoted failures with a fixed decision order, both orders, 90 comparisons | same winner in both orders in 41 of 45 pairs; the first-shown script won 50%; the two orders' rankings correlate 0.87 |
Stable is not the same as right. The counting judge decided half its comparisons on "invented facts", and in one brief it picked a different winner than the 1–10 judges. That order of criteria is a statement of values, and it has to be checked against what the person would pick.
The biases and their fixes
| Bias | How big | Fix |
|---|---|---|
| Position | GPT-4 kept its verdict after a swap in 42% of writing comparisons (MT-Bench) | judge both orders; a win counts only if it holds both ways, otherwise a tie |
| Length | a "be verbose" instruction moved a win rate from 22.9% to 64.3% (Dubois et al.) | compare at equal length; log length and check wins don't track it |
| Self-preference | GPT-4 recognized its own text 73.5% of the time, and preferred it more the better it recognized it (Panickssery et al.) | judge with another model family, or a panel of three: kappa 0.763 vs 0.627 for GPT-4 alone (PoLL) |
| Halo | two attributes scored in one call correlated at r = 0.979, against 0.315 for humans (Stureborg et al.) | one criterion per call |
| Bandwagon and names | a fake "85% prefer X" swayed 11 of 15 models (CoBBLEr) | neutral ids; no model names, versions, strategy labels or "the team liked this" |
| Sycophancy | "I wrote this" made feedback more positive across 5 assistants (Sharma et al., Anthropic) | never tell the judge who wrote it |
| Familiar text | judges score low-perplexity and LLM-written text above what humans prefer (Wataoka et al.; G-Eval) | add anti-cliché and specificity checks; humans judge AI-vs-human |
| Creativity blind spot | on 14 creativity tests, judges' correlation with experts was close to zero (TTCW); the best general judge matched readers on 73% of story pairs (LitBench) | a person decides originality, emotion and the final pick |
| Run-to-run noise | GPT-4 agreed with itself across samples at alpha 0.587, against 0.659 between humans (Stureborg et al.) | sample three times and average |
The protocol
- Measure with code first. Pace, hook timing, shot length, numbers not in the facts and AI tells come from
check_script.py. Code is "fastest and most reliable" (Anthropic). - Normalize. One plain template, neutral ids, no author or version, equal length within a pair.
- Gate with yes/no checks written from each brief. About five per brief plus the house checks, one check per call, the judge quoting evidence before PASS, FAIL or UNKNOWN. Per-brief criteria reached 87% consistency with humans against 67% for one fixed rubric (WritingBench). Drop scripts that fail a blocking check, such as an invented claim or a missing disclosure.
- Rank the survivors pairwise, on one to three taste criteria (hook, ending, voice), both orders, wins only when consistent, ranked by consistent wins or Bradley–Terry.
- Use a judge from another model family than the writer, or a panel of three.
- Send to a person: pairs that flip when swapped, emotion-led ads and drama, originality.
- Validate the judge. Label 100–200 scripts per failure mode, pass or fail with a one-line critique. Split them 10–20% examples, 40–45% dev and 40–45% test, and report the share of failures caught (TPR), the share of good scripts passed (TNR) and Cohen's kappa, not raw agreement (Hamel Husain & Shreya Shankar). For ads, platform results and audience pretests are the stronger ground truth.
Writing criteria judges agree on
- Observable and one thing. Two people must reach the same answer without talking.
- Count, don't rate. "List every number or claim not in the brief, with the quote" beats "Is it accurate?"
- Define the edge cases. A paraphrase of a brief fact is not an invention; an inference the brief doesn't state is.
- Drop criteria every script passes. They raise agreement and add no ranking signal.
- Write the decision order down and agree it with the person who owns the brand.
- Allow UNKNOWN and TIE.
| Vague criterion | Clear criterion | Pass | Fail |
|---|---|---|---|
| "Rate the hook 1–10" | Do the words in the first 3 s name the viewer's problem or the payoff? | "Your fridge is lying to you about how long food lasts." | "Hey guys, welcome back!" |
| "Is it specific?" | Is there at least one concrete fact from the brief: a number, a name, a visible detail? | "Charges to 80% in 18 minutes." | "Incredibly fast charging." |
| "Good visual storytelling" | Does every spoken line add something its shot does not show? | Shot: batter poured. VO: "No eggs, same rise." | Shot: batter poured. VO: "Here I'm pouring the batter." |
| "Characters feel real" | Could two characters swap lines without anyone noticing? (FAIL if yes) | one speaks in clipped questions, the other in long excuses | both speak in the same polite full sentences |
| "Follows the brief" | Is the runtime within the brief's limit? (a code check) | 28 s for a 30 s slot | 41 s for a 30 s slot |
The example rows illustrate the sourced principles; they are not quotes.
The judge prompt (run twice, swapping the order)
Compare two video scripts written for the same brief. Do not reward length, confidence or formatting.
<brief>{brief}</brief>
<script id="K7">{script}</script>
<script id="Q2">{script}</script>
For EACH script, list with quotes or beat numbers:
- inventions: numbers, names, prices, offer conditions or claims not in the brief
(a paraphrase of a brief fact is not an invention; drama may invent characters and plot)
- hook_miss: 1 if the first beat does not make clear what the video is about, as a picture that works on mute
- removable_beats: beats you could cut without changing what happens or what the viewer learns
- unsaid_lines: spoken lines a person would not say out loud like that
- unproducible_shots: shots AI video can't make in one clip of 10 s or less
Decide in this order: fewer inventions; fewer hook misses; fewer removable beats; fewer unsaid lines;
fewer unproducible shots. If all are equal, answer TIE.
<verdict>K7 | Q2 | TIE</verdict>
The skill ships this prompt, a one-check yes/no gate prompt and the protocol as references/judge.md.
What practitioners on X say
| Post | Followers | Bookmarks / views | Rule |
|---|---|---|---|
| @trq212 (formerly Claude Code, Anthropic) | 401K | 24,776 / 3.4M | have the agent interview you for the rubric before ranking, then double-check the top |
| @Vtrivedy10 | 17K | 5,148 / 1.1M | a few targeted evals of real behaviors, not hundreds of tests |
| @HamelHusain | 65K | 3,111 / 204K | one evaluator per failure type, never one generic score |
| @undefinedKi, summarizing Airbnb's eval write-up | 20K | 2,749 / 211K | code checks, then an LLM judge, humans only to calibrate it; golden sets of 50–100 with failures; kappa in the high 80s to 90s |
| @nateliason | 109K | 1,624 / 70K | one model writes, another judges, and how much the human edits is the quality score |
| @pbakaus | 22K | 1,357 / 67K | test a creative skill by running the same brief with and without it and measuring how alike the outputs come out |
| @Kangwook_Lee | 7.5K | 1,263 / 223K | correct the judge's pass rate for its known error rate instead of reporting it raw |
| @cwolferesearch | 43K | 1,118 / 52K | human raters are the north star; calibrated LLM judges are the cheap proxy; confirm with an A/B test |
| @AndrewYNg | 2.0M | 901 / 143K | for video, combine prompt similarity, a criteria judge and yes/no questions ("does the camera motion match?") |
The X sample was 1,444 posts from 48 queries in three windows. A reader kept 80 advice items from 53 authors, all quotes checked word for word. It flagged a campaign of 18 posts pushing one judge model, so their numbers were not used. The expert side is 45 findings from 34 sources, every quote checked against the saved page.
What varg how-to already has
varg had no script skill of its own on 2026-11-03: "video script" and "write a video script" both return two unverified community skills first, and the varg fallback is a hooks-only card. The audit ran 41 searches on the how-to engine and read 26 cards and the skills repo at origin/main f7fdc2f.
| Query | #1 result today | Best varg result |
|---|---|---|
| video script | ai-video-script (community) | write-video-hooks-that-sell #3 |
| TikTok script | photo-carousel card (off-topic) | none |
| YouTube script | a transcript fetcher (off-topic) | hooks card #2 |
| short drama script | zenstory-drama-skills (community) | none in top 5 |
| storyboard from script | a community storyboard skill | none in top 5 |
| сценарий для видео / guion de video | hooks card | hooks card #1 |
The knowledge exists but is scattered over about 20 files in 15 skills, and they disagree:
- Speaking pace. Plans range from 2.0 to 3.5 words a second, so a 30-second slot gets 60 to 105 words depending on the file read.
- On-screen text. Some files allow 5–10 words a second, others about 3.
- Hook length. Definitions run from 2–3 s to 0–13 s, and spoken hook budgets from 9 to 25 words.
- Product entry. Checklists say "product by second 2" while the yapper, street-interview and drama-ad formats bring it in after 15–60 s.
- Beats. Three, four or five, depending on the skill.
Gaps no file covers: one script format, a word budget per delivery (narration, dialogue, lip-sync), a check before money is spent, chunking lines into generated shots, the body of the script (only the hook has a bank), and templates for demo voiceover, review, skit and micro-drama.
Changes made in vargHQ/skills#77, merged 2026-11-03:
- New skill
video-script, with one script format, the checker, six strategies and five format files. - One speaking pace across skills:
ecommerce-video-ads(was 3.5 words a second),ai-ugc-ad-video,product-video-hooks(spoken hook now 6–8 words, so it fits 3 s),varg-podcast-video,tiktok-shop-video(captions at reading speed) and thevarg-video-promptingtemplates now plan at about 2.5 words a second, or under 10 words per 5 s for lip-synced close-ups. - Step 3 of
how-to-make-ai-videoandvideo-skills, the whole-video prompt andvarg-previzstep 2 now send the agent tovideo-script. - The plugin's skill list now includes
video-scriptandvideo-moodboard; the latter had been left out when it shipped.
| Query | Rank of the new card |
|---|---|
| video script, write a video script, how to write a script for an AI video | #1 |
| TikTok script, YouTube script, product demo video script, product review script | #1 |
| сценарий для видео, guion de video | #1 |
| UGC ad script | #2 |
| storyboard from script | #3 |
| short drama script | #5 (behind four dedicated drama skills) |
| how many words for a 30 second voiceover | not in top 10 yet |
Experts and sources
Every rule traces to a page that was opened and quoted on 2026-11-03: 269 expert findings, 265 of them verified on the page (verbatim quotes, credibility line and link for each) and 320 advice items from X, all 320 quotes checked word for word by script with 0 failures. X corpus: 5,531 unique posts from 124 queries in three windows (last 7 days, since July, since mid-2024), 2,359 of them from the last 7 days, plus 400 X Articles read in full.
| Who | Why listen | What the guide uses |
|---|---|---|
| Trey Parker & Matt Stone | created South Park; NYU Tisch class, 2011 | but / therefore, never "and then" |
| David Mamet | Pulitzer-winning playwright, showrunner of The Unit | who wants what, what if they don't get it, why now |
| Aaron Sorkin | The Social Network, The West Wing | intention and obstacle as "the drive shaft" |
| Robert McKee | author of STORY | a scene whose value doesn't turn is a "nonevent" |
| Andrew Stanton | Pixar, Finding Nemo and WALL-E | promise in the first line; 2 + 2, not 4 |
| Kurt Vonnegut | novelist, 8 rules | start as close to the end as possible |
| Billy Wilder | Some Like It Hot | voice-over adds to the picture, never describes it |
| NPR, Sound Reporting | NPR's own production guide | one idea per sentence; read it aloud |
| Derek Muller | Veritasium; PhD in physics education | misconception first beats clean exposition |
| MrBeast production doc | 525M subscribers | the opening pays off the title and thumbnail |
| Jenny Hoyos | Shorts creator, 12.4M subscribers | hook + foreshadow in 3 s; cut on the payoff (83% → 88% retention) |
| Kallaway | short-form strategist, 1B+ views | lean-in, but, snapback hooks; rehook at 20–25 s |
| Paddy Galloway | YouTube strategist, worked with MrBeast | Shorts study of 3.3B views (10,221 bookmarks) |
| David Ogilvy | founder of Ogilvy & Mather | problem-solution "above average in sales results"; honest demonstration |
| Google ABCD | Google/Kantar study of 11,000 ads | brand by 5 s; one message |
| TikTok Creative Codes | TikTok's official guide | proposition by 3 s, hook done by 6 s |
| Motion 2026 | $1.29B of Meta ad spend analyzed | about 5% of creatives become winners |
| Peter Cohan | Great Demo!, 46,000+ copies | do the last thing first |
| April Dunford | Obviously Awesome, 100,000+ copies | insight, alternatives, perfect world, then demo |
| Marques Brownlee | MKBHD, reviewing since 2009 | a review is a preview of owning it |
| FTC | US regulator | disclosure up front; no fake or AI testimonials |
| Micro-drama makers | ReelShort, DramaBox, Holywater, Pocket FM | 3-second cold open, one beat per episode, a named button |
| Anthropic | makers of Claude | name the defaults; evals first; Claude A edits, Claude B tests |
| Wikipedia: Signs of AI writing | editors' field guide | the phrases and structures to replace |
Most-saved X posts behind the rules (numbers as of 2026-11-03):
| Post | Followers | Bookmarks / views | Rule |
|---|---|---|---|
| @RohanNayak2, Pocket FM CEO | 13.9K | 12,697 / 3.8M | a hook every 5 s in a trailer ad; fix the hook when CTR or 3-second hold misses |
| @gregisenberg | 756K | 8,282 / 1.3M | views grade the hook, downloads the CTA |
| @nathanbaugh27 | 233K | 7,213 / 589K | but / therefore with a worked example |
| @aakashgupta, on MrBeast | 337K | 5,099 / 438K | thumbnail, title, first 5 s, first 30 s before filming |
| @gregisenberg | 756K | 4,534 / 140K | ten first lines before opening any tool |
| @deedydas | 262K | 4,382 / 160K | tell the model to avoid Claudisms; add a critic |
| @im_roy_lee, Cluely CEO | 257K | 2,808 / 310K | something new on screen every 2–3 s |
| @MarioJoos | 33K | 2,415 / 145K | don't let AI invent the idea; copy proven formats |
| @finnardley | 3.6K | 1,090 / 57K | beat sheet first; one line, one visual |
Not used, because the source could not be opened or the attribution is wrong: Ira Glass's "anecdote, then reflection"; William Goldman's "enter late, leave early"; Facebook's "47% of value in the first 3 seconds"; "kill your darlings" as Faulkner's (it is Quiller-Couch's "murder your darlings", 1914). Schwartz's awareness levels come from book notes, not the original text. Suspect X accounts (bait, bookmarks far above likes, paid-promo networks) were dropped.
The research data (corpus, reader outputs, expert findings, test scripts and judge scores) is kept in varg's private research repo.
Go deeper
- The skill: video-script (
npx skills add vargHQ/skills --skill video-script) - The designed version of this guide, with every picture and clip: https://varg.ai/how-to/write-a-video-script-with-an-agent
- Every claim of the ten steps traced to its source: the evidence bank
All 10 steps
The route, with the one line that hands it to an agent: How to make a video with an AI agent in ten steps
- How to find references for an AI video
- How to make a moodboard for an AI video
- How to write a video script with an AI agent (this page)
- How to design sound and voice for an AI video
- How to design characters and props for AI video
- How to previz a video in Three.js or Blender
- How to animate a previz with AI video models
- How to edit a video with HyperFrames and AI agents
- How to judge an AI video: measure, don't grade
- How to keep an AI video project in GitHub