The commands
setup passes --with-deps to Playwright so that Chromium’s system libraries
are installed too. The verify command with a list of SECTION:CUE checks is the test:
build verifies section starts and cuts, and the cue checks measure each reveal in the
finished mp4. A silent build’s placeholder track carries a click at every word start, so
the cue table also reports an a/v column, the picture’s first change measured against
the click nearest the cue, and the job fails when the finished file’s audio and picture
disagree by more than max_offset_frames. That makes a silent build a test of the whole
chain, not only of the cues.
How it works explains the columns.
A GitHub Actions job
.github/workflows/video.yml
~/.cache/ms-playwright on Linux,
~/Library/Caches/ms-playwright on macOS, and %LOCALAPPDATA%\ms-playwright on Windows.
KaTeX lives in DeckTalk’s own cache, which follows the same platform rule under a
decktalk directory, and DECKTALK_CACHE_DIR moves it. ffmpeg arrives with the
static-ffmpeg package, so it is cached with the Python environment.
To build a voiced video in CI, put ELEVENLABS_API_KEY and ELEVENLABS_VOICE_ID in the
job’s secrets and export them. DeckTalk never prints either.
Two flags that do not mix
The--strict flag makes a missing clip, a missing recording, or a loudness miss an
error. A silent build’s mix is clicks and silence, so its loudness report is meaningless
and --strict would fail on it. Use --strict on voiced builds only.
The project directory
Every project command takes--project DIR, and the DECKTALK_PROJECT variable sets
the default, so a job can run from the repository root.
Offline
Afterdecktalk setup, nothing needs the network. decktalk init copies the cached
KaTeX into deck/katex/, and the scaffold’s page loads it from there. A project created
before setup ran loads KaTeX from a CDN instead, which fails offline and leaves every
equation as plain text with a KATEX? verdict in the check table. Run setup, then
either run init again into a fresh directory or copy the cached katex directory into
deck/ and point the two tags at it.
deck/index.html
PLAYWRIGHT_DOWNLOAD_HOST, as Playwright documents.