Features
Demo videos built out of your product instead of a model's impression of it, and a lesson mode for explaining one idea at a time.
In a demo, nothing on screen is invented.
The requirement is one sentence: your frontend has to load and work in Chrome under Playwright. If a person can click through your app in a browser, this can film it.
There are hosted pipelines that go from a storyboard to generated visuals, voiceover and captions in one pass. They are genuinely fast for a rough pacing draft, and this does not replace that.
But generated visuals standing in for the product is the opposite of why this exists. Every piece of product text a viewer can read came off your real, running app. The optional b roll tier covers shots with no product UI in them at all, and never carries product text.
Lesson videos work the other way on purpose. They are drawn from code to explain an idea, and the description says so. Nothing in one pretends to be footage.
openvidstudio
Real captured UI, on your machine, free.
Generic AI video tool
A synthetic guess at your product, hosted, usually paid.
Cost
$0
Apache 2.0. No account, no key, no metering. Rendering runs on Remotion, under its own license: free for individuals, non-profits, evaluation and for-profit companies with up to 3 employees. Larger companies need a Remotion Company License.
Interface
MCP
44 tools over stdio, 45 with the Higgsfield tier. Claude Code, Cursor, or any MCP client.
Real capture
Playwright drives Chrome against your running app. Screenshots and full viewport recordings at twice the CSS resolution, zoom compensated, so nothing comes back soft once the camera pushes in.
Nothing caught half-finished
Every capture waits for webfonts to swap, images to decode and entrance transitions to land before it fires. Infinite spinners are recognised and skipped rather than waited on forever.
Retime any clip
Real interaction is often too slow to watch and sometimes too quick to follow. Speed a clip up to compress dead time, or slow it down when the thing worth seeing happens in three frames.
No URL needed
A desktop app, a phone, a terminal. ffmpeg for windows and screens, adb and the iOS Simulator for mobile, and a terminal recorded as timed text rather than pixels, so it stays sharp at any size.
Director mode
For a launch video or trailer, ask for the peak or mid creative level and the agent works like a director. It writes a brief first (the story, the one feeling, a design rationale, a music plan and a shot list that marks each shot real or constructed) and waits for your yes. Literal mode stays for exactly what you specified. Anything constructed is disclosed in the description.
Cinematic camera
Named shots: pushIn, pullOut, pan, whip, orbit, dutch, hold and drift. Handheld sway that settles to zero on a hold, an impact shake that decays, and motion blur only while the camera moves. Pushes on a capture with text stay around 105 to 160 percent so the words stay sharp, and depth of field is off by default and never on product text. The cursor travels in small arcs and overshoots a little on arrival.
Real depth
capture_screenshot can split a page into depth layers: a background plus one transparent image per element you name. The camera then moves the real pieces against each other instead of scaling one flat picture. Put the layers back together and you get the original screenshot.
Transitions that work
Choose cut, whip, fade, push, wipe or light-leak for each beat. They are drawn over the cut, so beat start times, durations and audio joins do not move.
Captions and pacing
Captions sit at the bottom, top, left or right, or pick a spot on their own and steer around areas you name. They finish revealing within 8 frames however many words they hold. validate_beats warns when every shot is close to the same length, which reads as a metronome.
Approval gate
Your agent shows you the whole beats file and waits for an explicit yes before writing anything to disk.
Edit one beat, render one beat
Each beat caches its own segment, keyed on its real inputs. Fix a caption in a five minute video and one beat re-renders, then the segments are joined with a stream copy rather than a second encode.
More than a video
A README GIF through a real two-pass palette, a docs screenshot set that cannot drift from the footage, store frames at the exact dimensions each store demands, and a 9:16 cut whose crop follows the manifest instead of the middle of the frame. A project can also be vertical from the first frame, 1080 by 1920, with the camera, the layouts and the safe zones sized to match, and export_rendition has a reels format.
It notices when it goes stale
Re-capture the pages a clip documents and it tells you which beats no longer match. Render on every merge and it diffs the frames against the last accepted run and comments the deltas on the pull request.
One manifest, many languages
Translated lines live in the beats file and get their own composition, with one cloned voice across all of them. A missing translation fails that language rather than shipping a half-narrated cut.
Review loop
render_stills tiles several frames per beat into one labelled grid, with numbers for cropping, text size, contrast and safe area, in a fraction of the time of a render. A crop option gives a closer look at small text. qc_extract_frames pulls frames from a finished render, and finalize_video sets loudness and writes a poster and a size-capped share copy.
An original score
compose_score writes a score to the arc of the video, with an exact cue grid and no rights question. It has no percussion by default, because evenly repeated hits read as a ticking clock under a voiceover, and finalize_video warns when the final audio ticks. plan_music_cues reads the grid, or estimates one for a track you bring, so a cut can land on the beat.
Lessons
Supernova mode makes a vertical lesson of up to two minutes from a script, in seven fixed beats: hook, picture, set up, derive, use it, aha, close. The pictures are drawn from code, and the description says they are constructed, not footage.
Equations that match the voice
Every Equation carries the words the voice says for it. check_script fails the lesson when the narration does not contain them, so a viewer never reads one thing and hears another.
A script linter
check_script counts and matches. It flags long sentences, a reading level above grade nine, a term used before it is defined, pace against each beat, a lesson over its two minute budget, a first beat that does not name the chapter, and a last beat that is not a question. It cannot judge the explanation, so someone still listens.
The picture follows the voice
Narration writes a timing for every word, so a scene can point at the word being said. One glowing element at a time keeps the eye where the voice is.
A poster you chose
export_rendition picks a beat and bakes its frame in as the video thumbnail, copied not re-encoded, so the idle preview everywhere is the frame you picked, not whatever the first frame happened to be.
Runs locally
Capture, scoring and rendering run on your machine, with no account and no key. One exception to know about: narration through edge-tts sends your script text to Microsoft. say, espeak and omnivoice stay local.
Built on three existing tools
Remotion renders it, Playwright captures it, MCP drives it. All three are public and none of them are hidden behind this. Remotion has its own license, described in the cost box above.