AI Video Playbook

Output

Recompose each aspect ratio, render variants and languages from one project, pick export settings and decide when cloud rendering is worth it.

Make one master, usually 16:9, and rebuild each other format as its own layout from the same scenes and assets. Never crop a 16:9 film to 9:16. Use variables and batch renders for languages and versions, export with --quality delivery, and render on your own computer unless the job is long, 4K or a large batch.

One master, then recompose each format

Cropping cuts off text and UI. Recompose instead: the same timeline and assets, with type and UI re laid out for each frame shape. One creator's single run produced 16:9, 9:16, a 15 second teaser and a web version (SYGNITO).

In HyperFrames, size is fixed when the composition is built. Width, height, the root duration, frame rate and output format cannot be changed by render variables, so each aspect ratio is its own composition, sharing assets and scene files. Start each one with the matching preset:

Terminal
npx hyperframes init launch-916 --resolution portrait
npx hyperframes init launch-11 --resolution square

In Remotion, register one <Composition> per size and pass layout props.

Text size by destination

ViewingBody textHeadlinesData labels
Full screen (YouTube, website)At least 20 px60 px or moreAt least 18 px
In a feed (X, LinkedIn, Instagram, TikTok)At least 32 pxAt least 90 pxAt least 24 px

Sizes are for a 1080 pixel frame. In 9:16, keep captions above the bottom 15%. Check the vertical cut on a phone width contact sheet before you call it done.

Check the format against the content before you build. "Vertical at 90 seconds with a chart-dense concept means charts a phone can't read." Cut the charts or shorten the film.

Variants and languages

Variables and batch renders

HyperFrames variables let one project render many versions. The agent declares slots on the root composition (types: string, number, color, boolean, enum, font, image), and you pass values at render time.

Terminal
# one variant
npx hyperframes render --variables '{"ink":"#c8ff3d"}' --strict-variables --output reskin.mp4

# a batch, one row per version
npx hyperframes render --batch rows.json --output "renders/{name}.mp4" --strict-variables

The batch writes a manifest.json with each row's status. Ask for a reusable template before the values are baked in. If two outputs come out identical, the variable never reached the property.

In Remotion, pass --props per render, or use Remotion Lambda for many renders. A company on the Automators license pays per render (0.01 USD, 100 USD per month minimum; prices checked on 15 Oct 2026).

Languages

The HyperFrames docs do not cover localization directly, but batch text variables are the mechanism. A 64 second HyperFrames launch film shipped "five languages from one source, each rendered in under a minute" (mrcsvlk).

  • Translate every on screen line in the batch file, in quotes, exactly as it should appear.
  • Re time each language when narration length changes. The voice is the clock, so a longer Vietnamese voiceover needs longer scenes.
  • Run npx hyperframes check per language. Translated lines are often longer and overflow their boxes.
  • Check the font covers every character in every language. One known failure: a Hindi heading rendered at the wrong weight because the fallback font had no bold.

Fonts for Vietnamese and other non Latin scripts are covered in Fonts. For text and fonts in generated video, see Text and fonts.

A/B versions

npx hyperframes compare <a> <b> --at 4.5 --labels A,B puts candidates side by side at the same timestamp, up to 16 per sheet. For a website hero, Inbox Zero's founder advises against A/B testing the video itself: only about 10% of visitors click play, so sign up tests have too little data. Compare versions on watch through instead (elie2222).

Export settings

NeedHyperFramesNotes
Review copyrender --quality draft --output review.mp4Lower quality, same timing
First real encoderender --quality looksThe default, CRF 16
Delivery masterrender --quality deliveryH.264, yuv420p, fast start for the web
60 fps--fps 60Doubles render time; for fast UI motion only
4K--resolution landscape-4kAbout 4 times slower per frame; does not sharpen 1080p video or small images
Transparent overlay for an editor--format movProRes 4444 with alpha; leave the page background unset
Transparent overlay for a browser--format webmVP9 with alpha; slow to encode
After Effects or Nuke--format png-sequenceLargest output
README or pull request--format gif --fps 15No audio
HDR--hdrHDR10 MP4; not on Lambda, not with 4K in one pass
Same result on every machine--dockerByte identical across hosts

An MP4 cannot hold transparency; one test flattened the alpha to white. Skip 4K at 60 fps for social video, since platforms transcode anyway.

Platform targets

  • YouTube (official): MP4, H.264, AAC audio at 48 kHz, about 8 Mbps at 1080p.
  • TikTok, Reels, Shorts (third party consensus, no official spec found): 1080x1920, 30 fps, H.264 with AAC, about 10 to 15 Mbps.
  • Loudness: -14 LUFS integrated, -1 dBTP true peak.

The full platform list, captions and AI labels are on Finishing.

Cloud rendering

Render locally by default. Use the cloud only for long, 4K or batch jobs.

OptionHowCost and limits
HeyGen hostednpx hyperframes cloud renderHeyGen credits, 4K billed at 1.5x, 200 MB upload limit; check first with --dry-run
Your AWS accountnpx hyperframes lambda deploy, then lambda renderPaid per invocation to AWS; SDR only
Google Cloud RunSupported by the HyperFrames CLIYour Google Cloud bill
Vercel SandboxHyperFrames on Vercel templateAn 11 second sample took about 2 minutes cold on 4 vCPU
Remotion Lambdanpx remotion lambdaVideos under about 80 minutes at Full HD, 1,000 concurrent functions per region by default, "a few pennies" for several minutes (Remotion's estimate), plus a company license where needed

Prices checked on 15 Oct 2026. Cloud machines often have no GPU, so WebGL, three.js and heavy blur render slowly there.

Deliverables checklist

  • master_16x9.mp4 and each recomposed format.
  • Captions burned in for muted autoplay, plus captions.srt or .vtt.
  • A poster frame baked in as frame 0, so the platform thumbnail shows it. Replace frame 0; do not add an extra frame.
  • The contact sheet from the final review.
  • The source project, so the next version is a one line change.
  • A README with duration, BPM, music license, which shots are AI generated, and the final check results.

Sources