// Blog
Blog
In-depth articles, tutorials and guides on software engineering topics.
// Blog
Blog
In-depth articles, tutorials and guides on software engineering topics.
TL;DR: Install Claude Code, Node.js 22 and FFmpeg. Run npx hyperframes skills update, then npx hyperframes init my-video, start Claude Code in that folder and describe the clip you want. Preview with npx hyperframes preview, render with npx hyperframes render --output final.mp4. To edit footage you already have, use npx hyperframes init my-edit --video talk.mp4 and ask Claude Code for a cut list first.
What "free" really means. Claude Code is not on Anthropic's free plan. Pro costs $20 a month, or $17 a month billed yearly ($200 up front), and there is no free trial for individual plans. So $0 means one of two things: you already pay for Pro and nothing in this guide costs extra, or you use the free Ollama route, where a local model on your own computer runs Claude Code. That route is slower and weaker than Opus. Everything else here is free: HyperFrames is open source (Apache-2.0), FFmpeg is free (LGPL 2.1 or later), the render runs on your machine, and the Kokoro voice is local.
HyperFrames also offers cloud rendering on HeyGen, paid per credit. Skip it. The local render is the free part.
Three things:
Install Claude Code with the official installer:
# macOS / Linux
curl -fsSL https://claude.ai/install.sh | bash# Windows PowerShell
irm https://claude.ai/install.ps1 | iexInstall FFmpeg, then run npx hyperframes doctor; it checks your setup and tells you what is missing.
On a Mac:
brew install ffmpegOn Windows, get a build from the FFmpeg download page. Its Windows section links to the builds (gyan.dev and BtbN). On Linux, apt install ffmpeg.
Then check everything:
npx hyperframes doctorHere is part of the real output on my Mac. A cross is a hint, not always a blocker: Kokoro and Docker are optional.
✓ Node.js v22.12.0 (darwin arm64)
✓ whisper-cpp /opt/homebrew/bin/whisper-cli
✗ TTS (Kokoro) Not installed (optional — local voice fallback)
pip install kokoro-onnx soundfile
✓ FFmpeg ffmpeg 8.1.2 at /opt/homebrew/bin/ffmpeg
✓ Chrome cache: ~/.cache/hyperframes/chrome/...Run npx hyperframes skills update so Claude Code knows how to write a video, then confirm with npx hyperframes skills check.
npx hyperframes skills update
npx hyperframes skills checkThe check prints where the skills live and whether they are current:
Location ~/.claude/skills (claude-code)
✓ 4 current ◦ 5 available on demandCreate a project with npx hyperframes init, start Claude Code inside it, and describe your clip using the /hyperframes skill.
npx hyperframes init my-video
cd my-video
claudeRestart Claude Code (a new session) after installing the skills so it loads them. Then paste this prompt. It is the exact one that made the clip at the start of the video:
Using /hyperframes, make a 5-second vertical 1080x1920 clip: dark background, a terminal that types "one prompt, $0", amber accent. Then render it to clip.mp4.On my run (Opus, paid plan) that was one prompt and one turn: 2 minutes 13 seconds from prompt to clip.mp4, a 5-second 1080x1920 video. Claude Code even found and fixed a cursor bug itself inside that turn.
Claude Code reads the skill, then writes the clip as HTML. On my run it wrote two files, index.html and compositions/terminal.html, animated with GSAP. Every frame of your video is a web page. HyperFrames opens that page in a headless browser (Puppeteer with a bundled Chromium), captures each frame, and FFmpeg encodes the MP4.
Preview in your browser, ask for changes in plain words, and render the final MP4 on your own computer.
npx hyperframes previewThe studio opens at http://localhost:3002, plays the clip back, and reloads when the code changes.
Don't like something? Just say so. These are the two follow-ups I sent:
Make the text bigger.Slow the typing down.Claude Code edits the code, and you look again. This loop is the whole job.
When it looks right, render:
npx hyperframes render --output final.mp4Real output from the 5-second clip:
◇ .../my-video/final.mp4
509.9 KB · 5.0s video · rendered in 3.8sFor a quick test render, add -q draft. The quality options are draft, looks and delivery.
Want a longer video? Use the same loop, one scene at a time: ask for a title, then a diagram, then a checklist.
Install Kokoro once with pip, turn a text file into a WAV with npx hyperframes tts, then get word timings with npx hyperframes transcribe.
Kokoro (Kokoro-82M) is a local model: no API key, and nothing leaves your machine. HyperFrames does not ship it, so install it first:
pip install kokoro-onnx soundfileWithout it, tts fails with The kokoro-onnx package is not installed. The error also says you can point HYPERFRAMES_PYTHON at a venv Python that has the packages. On my Mac it worked with Python 3.12; Python 3.15 could not resolve the dependencies.
Write your script in script.txt, then:
npx hyperframes tts script.txt --voice am_michael -o voice.wavOther voices include af_heart (the default), am_adam, bf_emma and bm_george.
Now get every word with its timestamp. Transcription runs locally with Whisper (model small.en by default):
npx hyperframes transcribe voice.wavThe first words of the real transcript.json:
[
{ "text": "One", "start": 0.05, "end": 0.24, "id": "w0" },
{ "text": "prompt", "start": 0.24, "end": 0.71, "id": "w1" }
]Claude Code uses those timings to land each animation on the right word, and to add captions.
Pass your video into a new project with --video, then ask Claude Code for a cut list and approve it before anything is cut.
A screen recording or a talking-head clip both work:
npx hyperframes init my-edit --video talk.mp4HyperFrames copies the video in and transcribes the speech with Whisper on your machine:
Video: 1920x1080, 41.0s
Transcribing...
Transcribed: 134 words (41.0s)It saves every word with its timestamp in transcript.json. The CLI docs say it also patches captions into the composition, but on version 0.8.226 it did not, so ask for captions yourself (Step 7).
Start Claude Code in my-edit and send this prompt:
Read the transcript. Find every pause longer than 0.5 s and every sentence I said twice. Show me the cut list and wait for my OK.Always ask for the list first. On my run Claude Code did not trust the Whisper gaps, so it measured the pauses in the audio with FFmpeg's silencedetect filter:
ffmpeg -hide_banner -nostats -i talk.mp4 -vn -af silencedetect=noise=-35dB:d=0.5 -f null - 2>&1 | grep silence_It found 12 pauses, reported "Sentences said twice: None found", and waited. Read the list, then say yes, or change it. My reply:
Yes, cut all 12 as listed. Add a tiny audio fade at every cut, so there is no click. Save it as talk-cut.mp4.FFmpeg trims each piece you keep (trim and atrim), fades the audio at every cut (afade) so you don't hear a click, and joins the pieces back together (concat). The clip went from 41.03 seconds to 35.40 seconds.
A second prompt worth stealing:
Add a title card at the start and a lower third with my name. Keep the footage untouched underneath.Claude Code builds those as separate layers over your footage, so the footage plays untouched underneath. Then render it with npx hyperframes render.
Either render the captions through HyperFrames, styled however you like, or export a caption file with npx hyperframes transcribe --to srt.
Option 1: ask Claude Code to add captions to the composition from the word timings, and render. They are burned into the video.
Option 2: export a caption sidecar file (srt or vtt):
npx hyperframes transcribe talk.mp4 --to srt -o captions.srt◇ Exported 109 words to SRT → .../captions.srtThe trap I hit. The classic way to burn in captions is FFmpeg's subtitles filter, but it only exists if FFmpeg was built with --enable-libass. The Homebrew FFmpeg 8.1.2 on my Mac was not, so this fails:
ffmpeg -i talk.mp4 -vf subtitles=filename=captions.srt out.mp4No such filter: 'subtitles'
Error opening output files: Filter not foundCheck your build with ffmpeg -filters | grep subtitles. No output means no filter. Rendering the captions through HyperFrames avoids it.
It can't judge taste. It does not know which joke landed, or which take felt right, so you still watch the cut. What it saves you is the boring part: finding pauses and typing timestamps.
If you skip Pro and run Claude Code on a local model in Ollama (setup in the free Windows guide, ollama launch claude needs Ollama v0.15 or newer), know three things:
OLLAMA_CONTEXT_LENGTH=65536.ollama ps while it works. If the PROCESSOR column does not say 100% GPU, it will crawl.I made this video on a paid plan. Then I tried the opening prompt once on a small local model, qwen3.5:9b, with a 65536 context at 100% GPU:
NAME SIZE PROCESSOR CONTEXT
qwen3.5:9b 9.8 GB 100% GPU 65536It took 22 minutes 50 seconds, said "Done", and got it wrong: a landscape 1920x1080 video with static white text, no typing, no "$0" and no amber. That is one model and one run, not a verdict on every local model. So start small, and check what you get.
brew install ffmpeg on a Mac, a build from ffmpeg.org on Windowsnpx hyperframes doctornpx hyperframes skills update, then npx hyperframes skills checknpx hyperframes init my-video, cd my-video, claude/hyperframesnpx hyperframes preview, ask for changesnpx hyperframes render --output final.mp4 (-q draft for a test)pip install kokoro-onnx soundfile, npx hyperframes tts, npx hyperframes transcribenpx hyperframes init my-edit --video talk.mp4, ask for the cut list, approve, then cuttranscribe --to srtChecked on 2026-11-07 and 2026-11-08. Command output is from real runs on a Mac (HyperFrames CLI 0.8.226, FFmpeg 8.1.2, Ollama 0.40.14).
Want an agent that turns a topic into a full explainer like this one, with the script, the voice and the scenes? That is the explainer-video agent: browse the AI agents.
New step-by-step guides and coding tutorials, straight to your inbox.
Written by
AamerSoftware engineer and creator of Prograamer — practical tutorials on AI tools, AWS, web development, and career growth for software engineers.
Claude Code is not on the free Claude plan, but the tool is free. Install it on Windows 11, run a local Ollama model, and connect them with one command.
Read moreDetailed comparison of Claude AI vs ChatGPT for software developers in 2026: coding capabilities, context windows, pricing, and which AI assistant you should choose.
Read moreComplete Claude AI pricing guide for 2026: Free tier ($0), Pro ($20/mo), Max ($100-200/mo), Team ($25-150/seat), Enterprise (custom), and API per-token costs compared.
Read more