Video To Deck banner
mairp mairp

Video To Deck

Development community

Description

Turn videos into Marp slide decks (PPTX/PDF/HTML). Local whisper + OCR + optional VLM captions build an evidence bundle; a fresh agent per video writes the deck. Structural content becomes Mermaid diagrams. Pluggable agent, CUDA-accelerated, CPU-portable.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

video-to-deck

Turn a video — or a whole folder of them (`.mkv .mp4 .mov .webm .avi …`, recursed) — into a **Marp slide deck** you can read as Markdown and export to **PPTX / PDF / HTML**.

The pipeline does the seeing and hearing, so the model doesn't have to: it transcribes the audio, samples and OCRs keyframes, optionally captions them with a vision model, and hands the authoring agent one plain-text **evidence bundle** per video. The agent's only job is synthesis.

Structural content (architecture, call flows, state machines, data models) is drawn as a **Mermaid diagram** instead of being flattened into bullets.

video ──▶ ffmpeg ──▶ whisper ──▶ transcript.txt + segments.tsv ─┐
      └─▶ keyframes ──▶ tesseract OCR ──▶ ocr.txt ──────────────┼──▶ evidence.md ──▶ agent ──▶ deck.md ──▶ PDF/PPTX
                    └─▶ vision captions (optional) ────────────┘

Why the shell owns the loop

`drive_decks.sh` is the batch driver, and **the shell drives it, not the model**. It spawns a **fresh agent process per video**, so each agent only ever sees one `evidence.md`. That means it can't overflow a small context window, can't "forget to iterate", can't background-and-quit the batch, and a single bad video can't kill the run. Resumption is a plain file test on `deck.md`.

A model-orchestrated loop reliably quits after about one video. This is why that approach isn't used here.

Install

git clone https://github.com/mairp/video-to-deck
cd video-to-deck
bash scripts/setup.sh          # whisper venv, tesseract, marp-cli, mermaid-cli

`ffmpeg` must already be on the system. `setup.sh` is idempotent — re-run it any time. If `npm` is missing it skips marp/mermaid and decks simply stay as valid Markdown.

Quick start

# one video
scripts/drive_decks.sh talk.mkv --agent-cmd "claude -p"

# a whole tree, detached and logged
scripts/drive_decks.sh /path/to/videos --agent-cmd "claude -p" --background

Decks land at `/decks/