decktalk build is safe to run after every edit, because each stage reuses what has not
changed. This page says what is reused, and how to limit a build to one section when
you want to save time or credits.
What an edit costs
The narration cache is
build/audio/manifest.json. Each entry carries a hash of the
provider, the voice settings, and the exact text sent, and narrate skips a section whose
hash, file, and words file are all present. The recording stage has no cache of its own,
so --only is how a recording is spared.
Limit a build to one section
--only, the record, measure, and check stages touch only the sections named.
Narration still runs for every section, which costs nothing for the cached ones, and
assemble still cuts every section, because the final mp4 needs all of them. Name every
section whose text or page changed. A section left out keeps its old recording even if
its words moved.
Run the stages by hand
Each stage is also a command, and the sequence below is whatbuild --only 3 does for
the recording.
record --only N, measure --only N, and
assemble are enough. After replacing a clip file, assemble alone is enough.
Force a fresh synthesis
decktalk narrate --dry-run prints what
would be sent, section by section, and the character count follows from it.
A silent build and a voiced build
The manifest records whether its entries are silent placeholders. A voiced build after a silent one starts from an empty cache, and a silent build after a voiced one does the same, so switching between them never mixes the two. Neither overwrites the other’s final mp4 until it finishes, and a timestamped copy of every finished video sits besidebuild/out/<name>.mp4.