--- name: podcast-slides-video description: >- Build a YouTube-ready MP4 from narrated audio plus a slide deck: a NotebookLM audio overview or podcast about a talk, a recorded voice track, a narrated walkthrough, matched to the deck's slides (PDF or PPTX) with slide changes cut to the transcript. Use this whenever the user has an audio file and slides and wants a video out of them, even if they never say "video": "put my slides to this audio", "turn the NotebookLM podcast into something I can upload", "sync the deck to the narration", "make a YouTube version of my talk from the deck and this recording", "the audio kind of maps to the slides". Produces the MP4, a cue sheet that is the auditable edit decision list, a validation pass with a contact sheet, and a YouTube chapter list. Not for editing existing video footage (use video-trim for that) and not for generating narration. --- # Podcast + slides -> YouTube video Turn "audio that talks about a deck" into a video where the right slide is on screen while it is being talked about. The only judgment step is placing the cuts; everything else is a bundled script. Working files go in a gitignored folder next to the source material (the user's convention is `local-only/` or `trim-work/`; ask only if the project has neither and nothing obvious fits). ## Requirements `ffmpeg`, `ffprobe`, `pdftoppm`, `pdftotext` (Homebrew ffmpeg + poppler), `uvx` (from uv) for MLX Whisper on demand, Python 3 with Pillow + numpy for the validator (or `uv run --with pillow --with numpy`). LibreOffice `soffice` only if the deck arrives as PPTX. Apple Silicon assumed for whisper; see references/ffmpeg-notes.md item 7 otherwise. ## Workflow ### 1. Probe and set up (1 min) Confirm the audio duration and the deck page count, and that the deck is the version the audio was made from (a NotebookLM overview generated from draft N does not always match deck N+1; say so if the transcript talks about slides that no longer exist). Pick the workdir and make sure it is gitignored. ### 2. Mechanical prep (2 to 4 min, mostly whisper) ```bash bash scripts/prep.sh "