Skip to content

Run the video skills on Node, with nothing to install - #28

Merged
baransu merged 1 commit into
tomasz/wave-1-record-skillsfrom
tomasz/record-skills-node
Nov 2, 2026
Merged

baransu merged 1 commit into
tomasz/wave-1-record-skillsfrom
tomasz/record-skills-node

Conversation

@baransu

@baransu baransu commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

record-demo and add-voiceover were the only skills that needed Python: Python 3, uv, Pillow and websockets. Anyone recording a demo already has Node, since agent-browser installs from npm. Now both skills run on Node 22 or later with nothing to install.

  • record.mjs and voiceover.mjs are straight ports. Node 22's built-in WebSocket and fetch replace websockets and urllib.
  • polish.mjs lays out each frame as a web page (polish.html) in a headless Chrome through agent-browser, and pipes screenshots to ffmpeg. Chrome draws the card, window chrome, pointer and rings, which replaces about 150 lines of Pillow drawing.
  • Kokoro keeps its 29-line Python runner, because the model only ships for Python. It's needed only if someone picks the free local voice.

Polish takes about 6 s per second of video: 4 min 54 s for a 50 s take on a busy machine.

Checked against the Python version on the 50 s demo from #26:

  • voiceover.mjs writes an identical lines.json and reuses every cached line (cache keys match, including non-ASCII text).
  • record.mjs logs the same beats, pointer moves and clicks, and the opening scroll gets a new frame on all but 3 of about 120 frames.
  • Polished frames match the Python output side by side, including at 1:1 inside a 2x zoom, and the pointer still blurs along its path. The default card, --frame safari and --background none were each rendered on a 3 s clip.

Stacked on #26.

Created with Claude Opus 5.5 in Claude Code.

record.py, polish.py and voiceover.py needed Python 3, uv, Pillow and
websockets. The ports use Node 22's WebSocket and fetch; polish lays out
each frame in a headless Chrome through agent-browser instead of drawing
with Pillow. Kokoro keeps its Python runner, since the model is Python-only.
@baransu
baransu merged commit 98435ad into tomasz/wave-1-record-skills Nov 2, 2026
1 check passed
@baransu
baransu deleted the tomasz/record-skills-node branch November 2, 2026 10:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant