Product video as a build artifact, not a performance.
Give Playhead a small spec and a URL. It drives your real app, films clean footage, composes the video, and reviews its own output before handing you a publishable MP4.
Capture once, compose forever.
The capture bundle is the only artifact that touches your app. Presentation — camera, captions, voice — is applied at compose time, so changing words or voices never means re-recording.
Playwright-driven capture with grounded locators — by role, label, and text, straight through shadow DOM. No mockups, no drift from the product.
Planned camera moves, a synthesized cursor, auto-written captions. Edit the spec and re-render in seconds — the app is never touched again.
Narration is spoken per step — macOS voices or the natural Kokoro model, offline. Audition a line with playhead say before committing.
Ten deterministic checks on the delivered pixels: targets framed, clicks landed and effective, no frozen footage, narration audible. Exit 0 only when the verdict is publishable.
Exit codes are a contract.
A video you can trust in an automated pipeline, without a human watching it end to end. Verification writes a signed verdict and a contact sheet of key moments.
| 0 | publishable — ship it |
| 1 | the app broke the flow — failure clip rendered |
| 2 | rendered, but failed verification |
| 3 | infrastructure problem |
| 4 | bad spec or arguments |
You never hand-write a locator.
A browser opens. Click through your flow like a user; every interaction becomes a validated step. Press Enter, get a spec.
URL in, verified MP4 out. Works with no API key at all — it explores your app and grounds the spec itself.
Every addressable element on the page as a ready-to-paste locator, grouped by toolbar, with camera focus targets included.