viral-short-script
A theme-agnostic skeleton for sub-60s vertical video. Structure first; the topic is plugged in afterwards.
Provenance, stated honestly: the story shape (hook → escalate → turn → pay off) was inspired by a structural read of 47 acclaimed films, then stress-tested by a panel of seven frontier models. It is a heuristic, not a proven formula — the film study had no control group and no engagement data. Treat it as a strong starting structure and validate it against your own retention numbers.
The reality it is built around: the feed is hostile, watched muted, and frame 1 is a thumbnail. You do not earn attention — you stop the thumb in about one second with a picture, then hold it with rising tension and a sensory change every couple of seconds.
Use for: anything under ~90s; writing or fixing a hook; feeding a generation pipeline; when a draft trails off, buries the payoff, or reads like a monologue. Not for: long-form (>3 min), carousels, or news briefings with their own planner.
THE GATE — the 3-second silent test
Do this before anything else. Mute the first 3 seconds. From the frame and the on-screen text alone, can a stranger tell who it is for and feel a question or a tension?
No → rewrite frame 1. This single binary gate replaces manual hook-scoring.
The skeleton — 4 beats, two parallel layers
Every beat is written on two layers at once, because most viewers never turn the sound on:
- SCREEN — what is seen and read: first frame, burned-in text, cut, zoom, sound hit.
- STORY — what is said, and what happens.
Times are soft defaults for a ~45–60s clip, in absolute seconds — not laws. (Film act percentages do not port to 60 seconds. Ignore them here.)
| Beat | ~Time | Job | Pass criterion |
|---|---|---|---|
| 1. STOP | 0–2s | Stop the scroll | Survives the 3s silent test. Frame 1 works as a thumbnail. No "hi guys", no setup shot. |
| 2. STAKES | 2–8s | Earn the next 5s | One line names the payoff or the risk, and for whom. Exactly ONE question is open. A claim carries a proof token. |
| 3. RUN | 8s → last 8s | One rising arc + interrupts | No plateau. A micro-payoff every ~5–8s. Exactly ONE turn. A sensory change every ~2–3s. |
| 4. LAND | last ~5–8s | Emotional punctuation + 1 trigger | Closes on emotion (clean snap or open loop), ideally loops back to frame 1. Exactly ONE action trigger. |
Beat 1 — STOP
- SCREEN: frame 1 is motion, a reacting face, a strange object, or a visual contradiction — plus a burned-in text hook. The text may contradict the image for surprise.
- STORY: show a result-glimpse or a tension, never a preamble. Qualify the viewer implicitly ("if you're the kind of person who…"). Identity and confessional framings beat tired angles like "Stop doing X" or "3 things about X".
Beat 2 — STAKES
One sentence: what is at risk or what they get, and for whom. Install exactly one question. Any claim gets an instant proof token — a number, a receipt, a screen recording, a before/after. Credibility in seconds, not paragraphs.
Beat 3 — RUN (keep the two layers independent)
- STORY: one tension arc — single problem, escalation with no plateau, then ONE turn that flips the meaning. The turn has no fixed timestamp; place it where it hits hardest. In short-form the turn is the biggest pattern break. Drop a micro-payoff every ~5–8s so someone who leaves early still got something.
- SCREEN: change one sensory channel every ~2–3s. Menu: punch-in · hard cut · zoom-to-keyword · whip-pan · snap-cut · text pop · sound hit · angle change · colour shift · number-appears · before/after · progress marker (1/3, 2/3, 3/3).
Beat 4 — LAND (close on emotion, not on theme)
- Made them laugh / gasp / feel satisfied → close clean, with a snap line.
- Made them curious / angry → leave an open loop.
- Premium close: loop back to frame 1 so a rewatch feels seamless (lifts average percentage viewed).
- Exactly ONE action trigger, native to the emotion: share ("send this to the person who…"), save ("save this before you forget"), or comment ("which one did you guess?"). Never a generic "follow for more".
Format modes — pick one; it decides where the payoff sits
| Mode | Payoff placement |
|---|---|
| story / confession | hold the turn for near the end |
| myth-bust | hold the "but actually" for the turn |
| tutorial / how-to | micro-payoffs throughout, result near the end |
| demo / transformation | front-load a result-glimpse, full reveal at the end |
| ranked list | progress markers (1/3…), save-bait close |
| reaction / commentary | react first, sharpest take last |
| news / explainer | the "so what" is the turn |
| product / ad | value first, ask once, late |
Also consider platform divergence (Shorts, TikTok and Reels reward different lengths and pacing) and series / Part 2 as a growth lever.
Optimise for the real signals
3-second retention → average percentage viewed / completion → shares (sends per reach) and saves → comments. Iterate hooks against watch-time data, not opinion.
Density budget: short-form is roughly 40% visual beats, pauses and on-screen text. Write line + text + visual per beat, not a 130-word monologue.
ADAPT TO THEME (the deliberately-later step)
- Pick the mode from the table.
- Name audience / pain / desire, one line each.
- Pick the goal (reach vs authority) → which close (loop vs clean).
- Fill each beat's SCREEN + STORY, then run THE GATE.
Credibility play for factual topics: source every claim to an official record, include the skeptical counterweight on purpose, and never overclaim. It reads as confidence, and it survives the comments.
Handing the script to a generator
Write the finished script as a machine-readable object so the render step skips AI planning entirely:
{
"hook": "...",
"segments": [
{"text": "...", "keywords": ["...", "..."], "duration_seconds": 4}
],
"cta": "...",
"total_duration": 48
}
Then feed each segment's visual into the model-specific prompt block — see
veo-flow-prompting,
wan-3-prompting or
seedance-prompting. For the hook shot specifically,
generating it is usually worth the money even when the rest is stock footage — the
first two seconds are where every cold account looks generic.
Common mistakes
- A strong first sentence but a weak first frame → dead on arrival in a muted feed.
- Two competing questions → pick one.
- A fixed "midpoint reversal at 30s" → that is the retention death-zone. Place the turn by impact.
- Best line at the start with nothing to climb to → keep a turn for late.
- A 130-word monologue → short-form is visual + text + pause, not narration.
- "Resolved, tidy, follow for more" → close on emotion with one native trigger instead.
How to improve this skill
- Real feedback loop (highest value): log retention, shares and saves; tag which hooks, closes and modes won; reweight the defaults by measured performance.
- Better evidence: re-extract structures with several models and keep only the flags they agree on; add a control corpus (un-acclaimed films + actual viral videos).
- A/B: three hooks per topic, ship the variants, keep the winners.