Show HN: DemoForge – Product demo videos generated from Playwright scripts DemoForge, a new open-source tool, generates product demo videos from Playwright scripts by driving an app, recording it, auto-zooming on every click from the click log, drawing a synthetic cursor, speaking per-step narration and exporting an MP4. The tool requires Node, pnpm and ffmpeg, supports local espeak-ng narration or Gemini, ElevenLabs and Mistral Voxtral with API keys, and exports an 86-second demo in about 2 minutes via native ffmpeg or more slowly through ffmpeg.wasm in the browser. A companion MV3 Chrome extension records flows by hand via chrome.tabCapture, and a Claude Code skill writes demos//flow.json from a page. Product demo videos from a script. Write the flow once as Playwright steps with a line of narration on each; DemoForge drives the app, records it, zooms in on every click, draws a smooth cursor, speaks the narration and exports an MP4. When the UI changes, run the same command again. - Auto-zoom from the click log , not computer vision — the browser already knows where you clicked. - Synthetic cursor with natural motion, since Playwright never moves a real one. - Narration : local espeak-ng, or Gemini / ElevenLabs / Mistral with a key. The recorder holds each step until its line has been said. - Editor in the browser: drag zooms, cut, captions, background, then export. - A Chrome extension for recording by hand, feeding the same editor. Needs Node, pnpm and ffmpeg. espeak-ng dnf install espeak-ng / apt install espeak-ng gives you a free local voice; no API key needed. pnpm install pnpm -C packages/core build pnpm exec playwright-core install chromium node scripts/demoforge.mjs record demos/todomvc/flow.json drive the app, record node scripts/demoforge.mjs open demos/todomvc review in the editor node scripts/demoforge.mjs export demos/todomvc - demos/todomvc/demo.mp4 demos/todomvc/flow.json records Playwright's public TodoMVC demo — copy it and point url at your own app. packages/core @demoforge/core — types, zoom planner, evaluator, cursor path apps/editor Vite + React + Tailwind — player, timeline, compositor, export apps/extension MV3 Chrome extension — capture by hand + click log scripts/ demoforge.mjs — the record / open / export CLI pnpm -r test runs the tests. demoforge-docs/ has the product vision and architecture notes. Narration needs a voice provider; nothing else does, and the editor tells you which ones are available. - espeak-ng local — free, offline, robotic. - Gemini AI — copy .env.example to .env and put a key in GEMINI API KEY . The same key writes the script. Sounds like a person. .env at the repo root or in apps/editor/ both work; the key is read by the dev server only and never reaches the browser.A free-tier key allows only a few requests a minute, so generating a long script pauses when the quota says to and picks up again — the button tells you how long it is waiting. - ElevenLabs — ELEVENLABS API KEY , same two locations. The best voices. Metered per character: the free tier is 10,000 characters a month, personal use only, and asks you to credit ElevenLabs. The panel shows what is left and what the next generate will cost, and warns before a run that would run out partway. - Mistral Voxtral — MISTRAL API KEY , same two locations. 1. Record. pnpm -C apps/extension build , load apps/extension/dist unpacked in Chrome, open any http s page, click the DemoForge action → Start. It captures the tab with chrome.tabCapture and logs every click, input, scroll and navigation against the recorder's own clock. 2. Stop. Two files land in ~/Downloads/demoforge/