From a sentence to a finished video
A chain of small programs, each reading and writing plain files. A person can open, read and fix any of those files, and the same files always give the same video.
The stages
-
Scenario
The ad in plain words: who it is for, the one message, and each beat with its caption and voice line. Written by hand today; the scenario writer proposes them next.
scenarios/*.md -
Steps
How to drive the app for each shot: open this screen, tap that button, mark this moment, find that row. Buttons are found by their role and name or by test id, so the steps survive small design changes.
steps.json -
Recording
The demo data is reset, the app opens, logs in off camera, and each shot is filmed. Next to every clip goes a list of when each tap and mark happened and where each found element sits on screen.
clip.mp4 + markers.json -
Edit plan
The cut: scenes in order, each a piece of a clip from a named moment, with a caption, zooms, lifts and a transition; cards; music and voice.
edit.json -
Rendering
Every frame is worked out from the time alone, drawn in a hidden browser and encoded to video. Music, effects and voice are made and mixed alongside.
video.mp4 -
Checks
The finished video is tested like code: reading time, length, forbidden words, end card, voice timing, still stretches. A failure stops it from reaching review.
checks.json -
Review
The video goes to a private review page on the owner's phone. Comments become changes to the plan, and the video is made again.
Why it is built this way
- Repeatable. The app changes all the time. Because filming is a script and editing is a plan, a new version of the video is one command, not a day in an editor.
- The real app. Stores require previews to show the real app, and viewers trust it more. Nothing is mocked up.
- Our own tools. The renderer, music, mixer, sound effects and phone helper are written for this project. From outside come only a video codec (ffmpeg), a browser (Chromium with Playwright), Google's Android bridge (adb) and a free voice model (Kokoro).
- Mobile first. Everything that depends on the platform sits behind one interface, so iPhone is one more driver, not a rewrite.
- Agents only for judgment. Programs do what can be exact; language models are used where taste or reading the app is needed: scenarios, steps, critique.
What the video is made of
| Part | Where it comes from |
|---|---|
| Screens | Recorded from the real app (Android emulator, browser, or a phone recording) |
| Motion | Our renderer: phone frame, zooms, lifts, captions, cards, transitions |
| Music | Our synthesizer and composer, or a licensed song cut to length |
| Voice | Kokoro (free, offline, Apache-2.0), or a recorded voice |
| Effects | Our own: taps, whooshes, pops |
| Encoding | ffmpeg, H.264 video and AAC sound |