Video production, made repeatable

How I make these videos with HyperFrames

You asked whether there's a skill behind the videos. There is, and here it is: the workflow, the voice setup you shared, and the lessons I burned through a lot of renders to learn. Everything here works for your own products too.

The short version

HyperFrames renders video from HTML. You write your scenes as styled, animated web pages, the tool turns them into a real MP4 with narration and captions. The magic is not one clever step, it is running the same quality checks on every change instead of eyeballing it once at the end.

What it actually is

Think of each scene as a slide built in HTML and CSS, with a timeline that says when things move. HyperFrames plays that timeline back frame by frame in a headless browser and records it. Because it records deterministically, the scenes have to be reproducible: no live clocks, no randomness, no network calls mid-render. That constraint is what makes the output consistent every time.

The workflow, start to finish

  1. Storyboard first

    Write a SCRIPT.md: one line of narration, one on-screen headline, and any screen-capture cue per scene. Skipping this is where projects drift.

  2. Record the narration early

    The voiceover drives all the timing, so make it first. This is where your ElevenLabs voice comes in (details below).

  3. Build the scenes in HTML

    One full-frame scene per beat, a caption strip, and the audio, each on its own track.

  4. Time everything to the voiceover

    Measure each narration clip, give each scene the clip length plus about 1.3 seconds of breathing room, and snap all the numbers to one decimal place.

  5. Run the three checks after every change

    lint, validate, inspect. Zero errors before moving on. This is the single biggest quality lever.

  6. Add captions from the real audio

    Transcribe the rendered voiceover so the words on screen match the words spoken, exactly.

  7. Preview, then a human approves

    Open it in the Studio editor, watch it, tweak it. Never auto-render, that is the gate.

  8. Render and publish

    Draft quality while iterating, high quality to deliver, then publish for a shareable link. Large or 4K jobs can go to the cloud renderer.

Your voice is already wired in

You added me to your ElevenLabs and shared the voice Dylan Platelle

Voice ID: wJ4U84X4t4rzenAmCmRG  ·  Model: eleven_multilingual_v2

Good default settings: stability 0.5, similarity 0.75, style 0, speaker boost on. Clean the script before sending it to the voice: no em-dashes, and spell out abbreviations, because it reads the text literally.

One heads-up: that voice lives in your ElevenLabs workspace. When you make videos yourself, it just works with your own API key. If you want me to render narration in your voice from my side, send me a workspace API key for that account and I will drop it into the setup.

The lessons that matter most

Do

Let the voiceover set the pace

Record narration, then fit the scenes to it. The result breathes.

Don't

Lock scene lengths first

You end up trimming narration to fit and it sounds rushed and clipped.

Do

Use a real music track

A no-copyright track, looped and volume-normalized, with a soft crossfade at the loop point.

Don't

Fake a music bed

Synthesized tones read as low rumble on real headphones. It fails the second someone listens properly.

Do

Match captions to the audio

Generate them from the actual recorded voiceover so the text matches word for word.

Don't

Paraphrase captions

If the caption says one thing while the voice says another, viewers notice immediately.

Do

Light text on dark labels

Reads cleanly and passes the accessibility checker.

Don't

Trust a generator's counts

Ask for 7 nodes and you may get 9. The image looks polished so the error hides. Count them against the brief before shipping.

Getting started

You need Node 22+ and FFmpeg. Then:

# scaffold a project (bundled skills come with it)
npx hyperframes init my-video

# check your providers before generating audio
npx hyperframes auth status

# after every change, the three gates
npx hyperframes lint
npx hyperframes validate
npx hyperframes inspect

# preview for approval, then render
npx hyperframes preview
npx hyperframes render --quality high --output out.mp4

I am also sending a companion .md file written for your Claude. Drop it in your project and your Claude will follow this exact workflow, including the gotchas, without you having to steer it each time.