Iterate
Run the gate loop, give notes the agent can act on, check contact sheets yourself, keep a taste rules file and know when to stop.
Expect the first render to be about 80% there and plan for 2 to 5 rounds of notes. Approve a plan, then one still per scene, then a rough animatic, and only then full motion, sound and the final render. Change one thing per note, give exact values, and judge the result yourself on contact sheets. Scores from the model do not measure taste.
The gate loop
Every serious source uses the same order, with a human look at each gate: plan, stills, animatic, full motion, polish, sound, render.
| Gate | What you look at | What to fix here |
|---|---|---|
| Plan | A frame table in chat and the sentence "This video tells [audience] that [message]" | Message, order of scenes, length, what to cut |
| Stills | One frame per scene with real fonts, colors and copy, no motion (HyperFrames draws them on storyboard.html) | Layout, hierarchy, readability, real assets |
| Animatic | The whole film at half resolution with placeholder audio | Pacing: "fix pacing here, before polish" |
| Full motion | The draft render | Entrances, transitions, one focal action at a time |
| Polish | Draft render plus contact sheet | Easing, holds, small timing shifts |
| Sound | The film with music, voice and effects | Sync to the beat, levels, endings |
| Render | The final file on a phone and a big screen | Only defects, never new ideas |
The build step dresses the approved layout and never redraws it, so a still you approve is a promise. HyperFrames Studio now offers this as a storyboard first flow that returns still frames before the full video.
Why stills come first
Besides being cheaper to fix, stills save context. Attaching an image to the conversation "re-prices your whole context", because it invalidates the prompt cache. So batch your visual checks into one contact sheet at the end of each phase instead of sending single frames in the middle of a build. "Rendering and having a model watch video are both heavy" (aiworkflowprolk).
How many rounds
There is no agreed number; most reports land between 2 and 5.
| Report | Rounds |
|---|---|
| HyperFrames recreating a reference | First build about 75%, then several rounds of exact corrections |
| Director skill | 2 to 4 scored rounds |
| "first render is usually 80% there" (rexan_wong) | Notes until the last 20% |
| Product film from a real repo (daniel_haida) | 1 prompt and 2 rounds of feedback |
| Ultracode run (AlRocha_) | One hour, five versions; "every miss was my direction, not the model" |
| 64 second launch film in five languages (mrcsvlk) | First cuts too fast to read, final slowed down |
Give notes like an editor
- Change one thing at a time. "Change one thing, render, judge, repeat." Work in layers: subject and motion first, then camera, then background, then style. If a scene keeps failing, strip it back to what works and add layers again.
- Use absolute values, not nudges. Write "dot radius = 25% of row spacing" or "glow at about 35% peak opacity", not "2x finer". Relative notes overshoot and swing back and forth.
- Freeze what works. "The framing and motion are right, don't touch them."
- Use timestamps and frame numbers. "Land 6 frames earlier", "hard cut at 4.2 s", "slow every zoom to 0.7x". Notes like "make it better" or "make it pop" get random changes (rexan_wong).
- Point at the thing. In HyperFrames Studio you click an element and the agent reads exactly what you selected.
npx hyperframes history undo --who <name>reverts the agent's last turn without touching your own edits (a trial feature).
Re-render only what changed
Render only the affected scene or range, and keep a before and after frame for each fix.
# HyperFrames: one scene
npx hyperframes render -c compositions/frames/03-proof.html
# Remotion: a frame range
npx remotion render src/index.ts MyComp out/fix.mp4 --frames=120-240If you use your own engine, give it a sub range setting "so fixes don't need a full render" (elie2222).
Contact sheets and objective checks
A contact sheet is a grid of frames from the film, one per beat or one every 2 seconds. It is the fastest way to see a whole film at once, and the main review tool of every careful creator in our research. Make two: one at full size and one with 360 pixel wide tiles, which shows whether every line is readable on a phone.
Automated checks catch mechanical problems. Run them, but do not stop there.
| Check | What it catches |
|---|---|
npx hyperframes lint | Structure errors: missing ids, unregistered timeline, fonts without a font file |
npx hyperframes check --snapshots | Runtime errors, text outside its box or the canvas, overlaps, WCAG AA contrast (4.5:1 for normal text, 3:1 for large), a scene of 3 seconds or more where nothing changes |
npx hyperframes compare a/ b/ --at 4.5 | A labeled side by side sheet of two versions |
| Film level checks in a director skill | Cuts off the beat grid (0.06 s tolerance), frozen stretches over 1 s, a black first frame, more than 3 flashes per second, loudness away from -14 LUFS, true peak above -1 dBTP |
Two warnings. A lint error switches the browser checks off, and they then report "0 samples" and look clean. And "passing lint and check doesn't mean the video is good": one tester found check passed while an element appeared before its animation, which a frame review caught.
Other creators' checklist: pull a frame every 2 seconds and look at each, transcribe the whole film and check every line, keep body text at least 20 px at 1080p, no unreadable wide UI shot longer than about 1 second, no words cut at the frame edge, and captions settled at least 0.4 seconds before the click they describe.
Why scores and judge models do not measure taste
A scored loop is useful for catching regressions. The director skill rates each draft 1 to 10 on the hook in the first 2 seconds, readability at phone width, motion, variety, composition, brand accuracy and sound sync, fixes the 3 worst problems, and stops at 8 or above everywhere or after round 4.
But numbers are not taste. "I had it score every scene on ten dimensions. The numbers were great. The video still looked like a slide deck" (aiworkflowprolk, single source). What worked for that creator: watch once like a viewer without pausing, then go back to the contact sheet, compare it side by side with a top reference, and write the review in sentences with a verdict.
- The builder should not be the judge. One open source kit shows the finished video to a separate reviewer that never saw the build. Another creator reviewed every version blind in a separate session.
- Judge models invent problems. Video and audio judges "hallucinate problems, so verify every claim against frames" (elie2222).
- Reviewing every frame is expensive. One Remotion user found Claude subagents reviewing every frame cost 127 USD and more than 4 hours per video and used up a Max plan (bigironchris; the author works for a cheaper model's maker). Sample one frame per beat or one every 2 seconds instead.
Keep a taste rules file
Save what you learn so the next video starts higher. Inbox Zero keeps an AGENTS.md in the video project: "Every time the reviewer gives feedback, or an agent makes a mistake, add a one-line rule... This file is what makes the tenth video good on the first try." Start yours with rules like these and add one line per note you had to give twice.
Body text at least 20 px at 1080p. Headlines at least 64 px.
Hold every line 0.3 s per word after it settles.
No wide UI shot longer than 1 s unless it is readable at phone width.
Captions settle at least 0.4 s before the click they describe.
One moving element at a time. The camera never moves while text is on screen.
Never redraw UI. Use the captured screens in assets/screens.
Every number on screen comes from the brief or the data file.HyperFrames can also freeze an approved run as a recipe and recall it with "make another <name>". Every's team ends each video by saving the process and corrections as a skill, and a saved Claude Code workflow script can be rerun as /<name>.
Case study: Inbox Zero's production system
The most complete case study we found is Inbox Zero's founder describing how he made a landing page hero, launch films and about 15 docs walkthroughs with Opus (elie2222 on X). What he does:
- A small engine instead of a framework. About 200 lines: a
renderAt(t)function, Playwright workers and FFmpeg. He says "Don't use Remotion or any other video framework"; that is one person's preference, but it shows a framework is optional. - Real UI, fictional data. The app runs locally with a seeded database; about 140 screen states are captured as real DOM; missing states are built from the real component source, "never invented"; every snapshot is audited for leaks.
- Humans review contact sheets. 2x2 contact sheets are the main review. Judge models are used, but every claim is checked against frames.
- Audio by ear. Generated music ignores the requested length, so he detects the beat grid and cuts at phrase boundaries. He makes 2 to 3 takes per voice line, and normalizes loudness in two passes to -14 LUFS and -1.2 dBTP.
- Safe parallel work. Render workers are capped per agent, and renders are never killed by name, which would kill other agents' jobs.
- The rules file. Every note becomes a one line rule in
AGENTS.md.
Long runs and what they cost
Prices checked on 15 Oct 2026. All single creator reports.
| Run | Time | Cost or usage |
|---|---|---|
| 15 second earphone ad, same prompt | 50 minutes at xhigh, 113 minutes with ultracode | Ultracode about 7 times the cost (nobunosuke_hori) |
| Ultracode motion video | About 8 hours | 5 hour limit hit 3 times on Max 5x (ehsanshares) |
| Ultracode motion video | 8 hours | 220 USD in API credits (_junaidkhalid1) |
| Music visualizer, 3,663 frames | 9 hours | 330M tokens, about 105 USD at API prices (deadpixeldavid) |
| "Best launch video it possibly could", ultracode | 12 hours | Not stated (gauravsbuilding) |
| Recreate a Seedance video in code, ultracode | 3 days | 3 weekly plan limits (RPDbyte) |
| 3D scene (not video, same mechanics) | 1 h 13 min at xhigh versus 9 h 14 min with max and ultracode | 18 USD versus 554 USD (jcraane) |
Reports agree that long ultracode runs cost 7 to 30 times more and nobody has shown a matching quality gain. One overnight run turned out to have worked for only 49 minutes (SimonasLTU1). Do the first build at xhigh without ultracode. Use ultracode only for a long film split into chapters with a shared animation guide.
When the agent stops early
On long unattended runs, Opus 5.5 sometimes ends its turn with a progress report instead of continuing. Anthropic's advice: keep a checklist file the model updates, and send a short "continue with the open items" message, at most 2 or 3 times.
When to stop
Stop when all of these are true:
- A viewer can repeat the message after one viewing.
- Every line is readable on the 360 pixel contact sheet and holds long enough to read.
- Nothing from the failure table is left, and the automated checks pass.
- Your last round of notes was about taste, not defects, and the reference comparison holds up.
If round 4 still misses, the problem is usually the brief, not the number of rounds. "Every miss was my direction, not the model." Go back to Brief, fix the message, reference or banned list, and rebuild the weak scene from its still. Even good runs are not perfect: after 30 minutes of iteration on a heavy motion graphics task, one creator wrote "Is it perfect? Absolutely not" (jboogx_creative).
Sources
- HyperFrames: Iterating, Recreating references, the review loop and CLI skills installed with the plugin, storyboard first Studio (vendor)
- Prompting Opus 5.5, unattended agentic runs, Workflows
- Remotion render CLI
- Checklists: roo.beehiiv.com, GoSailGlobal, elie2222
- Reviewers and judges: tetumemo, 2ssol, xinc3s (likely promo, method sound)