render
Generates a narrated, captioned product-demo MP4 from a storyboard.json. Returns a job ID immediately and rejects concurrent jobs.
Instructions
Full pipeline: voice → record → captions → compose (the CLI render). Returns a jobId immediately — poll job_status. Rejects if another job is running.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | demo project directory — pass an absolute path | |
| gif | No | also export output/final-demo.gif | |
| lang | No | render a language variant from scene.narrations[<code>] over the shared take (artifacts namespaced: audio/<code>/, captions.<code>.*, output/final-demo.<code>.mp4). Omit for the default single-language render. | |
| fresh | No | run against a WIPED throwaway profile — use for any demo whose story starts at a first-run gate, onboarding, an empty state or a one-shot flow, since carried-over cookies/localStorage silently record the wrong story. Not for logged-in demos (a fresh profile has no login). | |
| params | No | storyboard template params (name → value); each must be declared in the storyboard's params block. Substitutes {{name}} across all stages. | |
| capture | No | ||
| cookies | No | cookies to seed before the first action (name, value, domain[, path, secure, httpOnly, sameSite, expires]). Also storyboard setup.cookies. | |
| profile | No | Chrome user-data dir (logged-in profile) | |
| headless | No | run Chrome headless (default false — headed, like the CLI) | |
| fromScene | No | resume: keep the previous take's scenes before this scene id (footage + timeline, verified unchanged by hash) and record from it — after a late-scene failure or a change to the tail of the storyboard | |
| forceVoice | No | ||
| storageState | No | absolute path to a Playwright storageState JSON (cookies + per-origin localStorage) to seed into the profile before the first action — for cookie-gated sites. Also available as storyboard setup.storageState. | |
| profileSeeded | No | the profile is seeded on purpose (login / cookie gate): silence the carried-over-state warning. Implied by storageState/cookies. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| jobId | Yes | ||
| status | Yes | ||
| demoDir | Yes | resolved absolute demo directory | |
| logFile | Yes |