craft-video-assemble — the finished video
Part of the
explainer-video-from-courseworkpipeline — stage 8 of 8. The orchestrator over the render stage.The pipeline's tools and scene hosts live in the sibling
explainer-video-from-courseworkskill: run them asnode ../explainer-video-from-coursework/tools/<tool>.mjs, resolved against this skill's folder. Run from the project, soout/scratch lands beside your notes.
Prerequisites: the script, out/<name>/<NN>/timeline.json, manifest.json, and
narration.wav; on the machine, ffmpeg + headless Chromium (see SETUP.md).
A
[setup]/Playwright cache not foundfailure means ffmpeg or Chromium is absent — relay the matchingSETUP.mdstep to the user and re-run.
node ../explainer-video-from-coursework/tools/assemble.mjs --script out/<name>/scripts/<NN>-*.json \
--work out/<name>/<NN> --name <output> \
--dest <destination>
Per segment: render its own window through its own host + config, silent — parts
are silent on purpose, because muxing narration onto each would restart the whole track
at every boundary. Then concatenate (-c copy), mux the single measured narration
track once, and verify. --only <key> renders a single segment, for a smoke test.
Asserts: every segment has a timeline window and a manifest.json entry · the
windows tile the timeline with no gaps · the finished audio matches the narration at
sample level.
Done when: the run exits 0 and prints [done] …<output>.mp4 with audio ok.
The MP4 is copied to --dest.
Maintenance
If you modify this file, or the user asks to change this stage, tell the user that the main
explainer-video-from-courseworkskill's "Stage 8 — /assemble" section must be reconciled to match, and name that section in your reply.