--- name: short-form-video description: This skill should be used when the user asks to "make a Reels/TikTok/YouTube Shorts video", "build a short-form video template", "write a hook for a short", "edit for retention", "add pattern interrupts", "make a video loop", "fix the first 3 seconds", "pace cuts for a vertical video", or "set up 9:16 safe areas". Covers the hook→retention→loop grammar of vertical short-form (distinct from a launch hype film). version: 0.1.0 --- # Short-Form Video Engineer a 9:16 video that survives the swipe. Short-form is not a small launch film — it is a retention machine: a hook that earns the first second, pattern interrupts that reset attention every few seconds, and often a loop that buys watch-time past 100%. The craft is timing, not polish. ## When to use - Reels / TikTok / YouTube Shorts (7–60s, vertical 9:16). - Retention editing: fixing drop-off, adding pattern interrupts, tightening pacing. - Hooks, seamless loops, repeatable short-form templates (one design, many topics). ## Story structure (the retention contract) Short-form storytelling is a contract with the viewer's thumb: every second must re-earn the next one. The narrative is shaped *backwards from the retention curve*, not forwards from an intro. Lock these before touching the timeline. - **One idea per video.** A short carries exactly one payoff. A second idea splits attention and the curve sags in the middle — make it a second video instead. If you can't name the single takeaway in a sentence, you don't have a short yet. - **Open a loop in the first ~3s, close it last.** The hook poses a question or gap (the open loop); the payoff answers it. The viewer stays because the loop is open — so never answer it early, and never bury the payoff under setup. - **No dead air.** Every beat either advances the idea or resets attention. Cut anything that does neither. Silence, slow ramps, throat-clearing intros ("hey guys, in this video…") are where viewers swipe. - **Why the curve, not the cut, is the unit of work.** The algorithm distributes whatever holds the per-second retention curve flat; a "good" edit that flattens the curve loses to an ugly one that keeps it up. You are editing the *curve*, and the hook gates everything after it — fix it first. The narrative spine (the `Hook → Setup → Body → Payoff/loop` arc is budgeted in the table below): | Move | Story job | Failure if missed | |---|---|---| | Hook | Open the loop; promise the payoff | Swipe in first 3s | | Tension hold | Keep the gap open through the body | Flat middle, mid-drop | | Payoff | Close the loop — the one idea, delivered | "Wasted my time," no share | | Loop / CTA | Feed back to frame 0, or one clear ask | No re-watch, no action | (`The retention arc` table below assigns seconds to each move; this section is the narrative logic and ordering behind it. `Hook grammar` lists the hook archetypes.) ## The one metric that drives everything **Retention, not production value.** The algorithm distributes whatever holds viewers; ~87% decide to stay or swipe inside 3 seconds, and the threshold for distribution sits near **70%+ average view-through** (Shorts ~73%, TikTok ~78%, Reels ~65%). Every decision below trades against that curve. A flawless shot that bores at 0:04 loses to an ugly one that holds. ## The retention arc | Beat | Job | Budget (of a 20s short) | |---|---|---| | Hook (0–1s) | One frame + one line that creates an open loop | 0–1s | | Setup | Pay off *why watch* — promise, stakes, or the gap | 1–4s | | Body | Deliver value in beats; one idea per beat | 4–17s | | Payoff / loop | Close the loop — or feed it back to frame 0 | 17–20s | Scale the *body*, never the hook. A 60s short has a longer body and more beats — the same 1-second hook. ## Hook grammar (first ~1s) The hook is a sentence + a visual that opens a curiosity gap the brain needs closed. Pick one pattern and commit: | Hook type | Shape | Best for | |---|---|---| | Open loop | "The reason your X keeps Y…" (answer delayed) | most content | | Direct promise | "3 ways to ___ in 30 seconds" | educational / listicle | | Pattern interrupt | snap-zoom / whip-pan / visual mismatch in frame 1 | entertainment | | Negation | "Stop doing ___" / "You're ___ wrong" | strong opinions | Two rules: the hook line is **on-screen as text by frame 1** (85% watch muted), and the most striking *visual* is also the first frame — never a slow ramp-in. Hold a strong opening frame; do not fade up from black. ## Pattern interrupts & cut rhythm A pattern interrupt is any change that resets attention: a hard cut, zoom punch, b-roll insert, sound effect, caption pop, or angle change. In short-form, density is high — a *visual change every ~2–4 seconds*; videos with an interrupt roughly every 4s hold ~58% vs ~41% for a static talking head. The killer is a flat middle: TikTok throttles distribution when the watch-through curve flattens, so never stitch the body from low-energy takes. ```js // Drive every interrupt off the FRAME, not wall-clock — renders deterministically. import { useCurrentFrame } from "remotion"; const fps = 30; const cuts = [0, 1.2, 3.0, 5.4, 8.0, 11.2, 14.0]; // seconds — uneven on purpose const frame = useCurrentFrame(); const shot = cuts.findIndex((t, i) => frame < (cuts[i + 1] ?? Infinity) * fps); ``` Vary the interval — a metronome reads as boredom; uneven cuts read as momentum. A punch-in zoom is the cheapest interrupt that needs no new footage: ```jsx import { useCurrentFrame, interpolate, spring, useVideoConfig } from "remotion"; const PunchIn = ({ at, children }) => { const frame = useCurrentFrame(); const { fps } = useVideoConfig(); const s = spring({ frame: frame - at * fps, fps, config: { damping: 12, stiffness: 200 } }); const scale = interpolate(s, [0, 1], [1, 1.12]); // snap to 112% on the beat return