The video follows the voice. Every time.
Write one scenario. Get measured speech, deterministic Chromium frames, reusable scene caches, and a finished MP4.
Agentic Screencast renders declared web scenes at explicit moments in time. It never records a live desktop. Change one beat of narration and the affected timing, audio, and frames rebuild from the same source.
One authored source
Slides and build data are generated from the scenario and replaced on the next run.
Audio owns duration
Each paragraph is a measured beat. Visual anchors move with a new voice or speaking rate.
Frames are reproducible
The renderer injects its own clock and tests repeatability, animation, frozen time, and seeking.
From prose to MP4 through one observable pipeline
The cache key records the inputs that can change a scene: text, voice data and fingerprint, page bytes, frame and encoding settings, neighboring transitions, product source, ffmpeg, and Chromium.
Read the scenario
Reject unknown scene kinds, fields, required values, and timing anchors before rendering.
Measure each beat
Generate silence, synthesize speech, or use a human recording normalized to 48 kHz mono WAV.
Seek the declared page
Chromium receives an explicit clock. Saved application pages can render with network access blocked.
Produce the video
Encode scene segments with a fixed frame contract and join them with the measured audio.
Use the material you already have
Built-in slides
Comparison, chain, number, and quote scenes cover compact product explanations.
Saved pages
Capture a client-rendered application as MHTML, then zoom and focus the exact element named by the scenario.
Existing video
Place a clip in the timeline; the build fits it to the frame and speech duration.
External providers
Add scene kinds in any language through a JSON subprocess contract and verify the provider with the shipped checker.
The core does not own scene kinds
A material provider declares its fields, required values, effects, and frame-quality thresholds. The parser, schema, generator, and checker consume that one contract.
Record a human voice without changing the build
The recording page runs on loopback because browsers allow microphone access there. Each take is addressed by beat text and stored outside the repository.
agentic-screencast record --source story.md
agentic-screencast build --source story.md --out product-tour.mp4Cost-free iteration
The stub engine creates deterministic silence and makes no network request.
Recorded narration
Replacing one WAV changes its content fingerprint and invalidates the affected cache.
External speech
Voice engines receive text and voice data through a documented subprocess contract; keys stay in the environment.
Check what a successful build cannot judge
| Check | Observation |
|---|---|
check |
Declared content is present, contained, readable, and above provider-owned thresholds. |
order |
Elements appear in the scenario order at their beat or time anchors. |
verify |
Repeated frames match, animation changes frames, frozen time stays frozen, and seeks reproduce the stream. |
voice-check |
A voice program returns valid JSON, failure codes, stable fingerprints, and 48 kHz mono WAV. |
provider-check |
A material program declares valid kinds and produces a real page or an explicit failure. |
Start without a paid voice
npm install --global agentic-screencast
npx playwright install chromium
agentic-screencast build \
--source story.md \
--voice-json '{"engine":"stub","name":"silent","cps":15}' \
--keys-onlyAn explicit local trust boundary
Included: scenario parsing, built-in and external material providers, built-in and external voice engines, recorded narration, deterministic Chromium rendering, ffmpeg assembly, caching, and executable contract checks.
Outside the promise: live screen recording, choosing a voice for the author, judging whether a script is persuasive, protecting against an intentionally untrusted provider or voice command, and publishing a video on the author's behalf.
Where credentials belong
Voice and capture credentials come from environment variables or an ignored .env. Never put them in scenario voice data: that data participates in cache identity and build reports.
Agentic Screencast is licensed under GPL-3.0-or-later because its runtime dependency includes GPL ffmpeg. The repository also records the exact dependency graph and third-party notices.