--- name: report-video description: "Chaptered, narrated manim explainer of a report's main concepts with a brand look, embedded as a `video` block with captions and chapters. Use only when the user asks for a video, animation or explainer." license: MIT metadata: version: 0.3.0 publisher: skaile-ai --- # report-video Turn a report's main concepts (the answer, the chosen questions, entities, diagrams, numbers) into a chaptered, branded explainer video. Output in `.media/`: `.script.md`, `.py`, `brand.py`, `timestamps.json`, `.mp4` (mp4 chapter markers, AAC voice when a TTS exists), `.vtt`, `.jpg`, `.block.json`; the `video` block carries `track` and `chapters`, so `build.py` renders a caption track and a clickable chapter list. Use this skill only when the user asks for a video, an animation or an explainer. `skill://report` offers it unchecked otherwise. Inputs: a built `report.json` (under report), or the user's text alone. Reading contract: follow `skill://report` (citations, labels, answer-first). The video is supplementary: the prose of the report MUST answer the question without it. It goes last and the reader starts it (the block has controls and no autoplay). Read [`TECHNIQUES.md`](TECHNIQUES.md) before you write the script and again before you write the scenes. It holds the visual grammar, the arc per profile, the block → shot table, the layouts, the pacing and the checklist for stills. One video per media folder: `timestamps.json` and `beats.json` are per folder. A second video gets its own `.media/`. ## Install 1. `manim --version || uv tool install "manim[typst]"`, then `manim checkhealth`. Check `ffmpeg -version` and `ffprobe -version`. 2. Set formulas with `Typst` or `MathTypst`. LaTeX is not installed (`Tex`/`MathTex` fail). 3. TTS: `narrate.py --provider auto` picks ElevenLabs (`ELEVENLABS_API_KEY` in the environment, in a `.env` from cwd upward, or in `~/.env`), else macOS `say`, else captions only. A harness TTS tool (omp `tts`) works through the `dir` provider (see Narrate). 4. Install fails → state the failure in chat, deliver the script and the scene file, leave the `video` block out. A block with a dead `src` fails the build. ## Brief Read `report.json`: `title`, `meta`, `stats`, the first section (the answer), every section with `question` in order, `entities` with their badges, the diagrams (`flow`, `states`, `lineage`, `map`, `mermaid`), `tree`, charts, `since`. Plan the chapters: - Chapter 1 is the answer: a hook sentence, the answer in at most 3 sentences, the `stats` as counters. - One chapter per chosen question in section order. Merge two thin sections into one chapter. - The last chapter is the verdict or the next step. Critique: the "fix first" items. Explanation: a replay of the full pipeline with pulses. Comparison: the verdict. Inventory/exploration: the gaps. - At most 6 chapters including the last one. With more questions, keep the ones that hold a diagram, tree or chart first, then the earliest. - 20-40 s and 3-7 beats per chapter. The language is the report's `lang`. - Alone, without a report: the user's text supplies the chapters, one chapter per stage the text names. Done when you hold a list of chapters, each with its section, the concepts it must show and its role in the arc (`TECHNIQUES.md`, Arc per profile). ## Script Write `.media/.script.md`. `narrate.py` and `stitch.py` parse it with one parser, so the grammar is exact: ``` #