Making a video
Usually you just ask your agent — the installed skill knows the playbook. This is what happens under the hood.
1. Shoot
Recording starts before the page opens, so loaders and entrance animations are on camera; it holds while the page loads, then scrolls.
video_record({ route: "/dashboard", seconds: 8, scroll: true })
video_record({ route: "/analytics", seconds: 8, scroll: true })
video_record({ tap: "My Analytics", tapAt: 1, seconds: 6 }) // tap → hero / side pop-outLogged-out screens (landing, login)? Shoot them first, then log in yourself on the phone — the agent never types real passwords.
2. Plan
video_plan({ targetSeconds: 45, format: "landscape", appName: "MyApp", cta: "Get it on Google Play" })The director builds: intro → one scene per take (timing, zooms on stat rows / buttons, scroll speed-ups, captions, pop-up chips, pop-outs) → outro.
3. Direct
Write benefit-led captions and tune pacing in one call:
video_edit({ ops: [
{ op: "update", scene: "dashboard", title: "Your prep at a glance",
callouts: [{ value: "1 tap", label: "to resume your last paper" }] },
{ op: "update", scene: "start an exam", popouts: [], focus: "Start", zoom: 2.2, zoomTimes: [0.3, 1.3, 2.1, 3.2] },
{ op: "settings", captionSide: "right", sound: { volume: 0.7 } },
]})4. Collaborate in the studio
video_studio()
// loop:
video_wait_for_prompt() // → "User asked: … They were looking at scene #4 …"
video_edit({ ops: [...] })
video_reply({ text: "Done — zoom is slower now." })5. Render
video_render() // → launch-video/out/launch-landscape.mp4 (H.264 + AAC)Want a vertical cut too? video_edit({ ops: [{ op: "settings", format: "portrait" }] }), then render again.