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.

A scene buildEach stage leaves a result the next stage can verify.
  1. Read the scenario

    Reject unknown scene kinds, fields, required values, and timing anchors before rendering.

  2. Measure each beat

    Generate silence, synthesize speech, or use a human recording normalized to 48 kHz mono WAV.

  3. Seek the declared page

    Chromium receives an explicit clock. Saved application pages can render with network access blocked.

  4. 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.mp4

Cost-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-only

An 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.

Review workspace

Review this report

No discussion threads yet