Communitygithub.com

mairp/video-to-deck

Verwandle Videos in Marp-Foliensätze (PPTX/PDF/HTML). Lokales Whisper + OCR + optionaler VLM-Bildunterschriften erstellen ein Beweisbündel; ein frischer Agent pro Video schreibt den Foliensatz. Strukturelle Inhalte werden zu Mermaid-Diagrammen. Steckbarer Agent, CUDA-beschleunigt, CPU-portabel.

Was ist video-to-deck?

Diese Fähigkeit (Skill) ermöglicht es einem textbasierten KI-Assistenten, automatisch Präsentationsfolien aus Videoinhalten zu erstellen. Da der Assistent selbst weder Audio hören noch Bilder sehen kann, übernehmen die Skripte des Skills die Extraktion aller relevanten Informationen: Sie transkribieren die Tonspur, extrahieren und erkennen Text auf Schlüsselbildern (OCR) und bieten optional die Möglichkeit, Bildinhalte mit einem Vision-Language-Modell (VLM) zu beschreiben. Das Ergebnis ist ein strukturiertes Text-Dossier (`evidence.md`), das der Assistent dann in eine Marp-basierte Foliensatz-Markdown-Datei (`deck.md`) synthetisiert. Der Skill unterstützt insbesondere die Umwandlung von Vorlesungen, Screencasts oder Konferenzvorträgen in hochwertige Folien. Dabei wird großer Wert auf Detailtreue und die Beibehaltung der Informationsdichte gelegt: Quellfolien werden nicht zusammengefasst, sondern inhaltlich exakt mit allen Zahlen, Metriken und Diagrammen übertragen. Die Erstellung erfolgt lokal auf der Maschine des Nutzers, was Datenschutz und Offline-Nutzung ermöglicht. Für die Batch-Verarbeitung ganzer Kursordner gibt es spezielle Skripte, die einen hierarchischen Ausgabebaum erzeugen und den Kontext des Assistenten nicht überlasten, indem sie pro Video einen neuen Agenten starten. Die Ausgabe kann optional mittels `marp-cli` in PPTX, PDF oder HTML gerendert werden. Der Skill ist agentenunabhängig und funktioniert mit jedem textbasierten KI-Assistenten, der Bash-Befehle ausführen und Dateien lesen kann.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add mairp/video-to-deck

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Vorschau

Aus dem Skill-README

video-to-deck preview

Dokumentation

Was macht video-to-deck?

Erstelle eine Präsentation aus einem Video. Du (das Modell) bist nur Text – du kannst kein Audio hören oder Bilder sehen. Deshalb sehen und hören die Skripte dieses Skills für dich und übergeben dir ein Text- Beweisbündel (evidence.md). Deine Aufgabe ist nur die Synthese: Lies das Beweisbündel und schreibe einen guten Foliensatz. Erfinde nichts, was das Beweisbündel nicht stützt.

Die Ausgabe ist Marp-Markdown (deck.md): eine normale .md, die du jetzt lesen kannst, und ein echter Foliensatz (PPTX/PDF/HTML) über einen einzigen render.sh-Befehl später.

$SKILL unten = das Verzeichnis dieses Skills (der Ordner, der diese Datei enthält).

Ablauf

1. Einmalige Einrichtung (idempotent)

bash "$SKILL/scripts/setup.sh"

Installiert faster-whisper (Transkription), tesseract (OCR) und – falls npm vorhanden ist – marp-cli und mermaid-cli. Kann bedenkenlos wiederholt werden. ffmpeg muss bereits installiert sein.

2. Die Videos finden

bash "$SKILL/scripts/find_videos.sh" "<ordner>"        # ein Pfad pro Zeile, rekursiv

Bei einer einzelnen benannten Datei überspringe dies und verwende den Pfad direkt.

3. Das Beweisbündel für jedes Video erstellen (eines nach dem anderen)

bash "$SKILL/scripts/process_video.sh" "<video>" "<ausgabe_verz>/<video-name>"

Dies extrahiert Audio → transkribiert es, samplet Schlüsselbilder → OCR erkennt auf dem Bildschirm angezeigten Text und schreibt <ausgabe_verz>/<video-name>/evidence.md (plus transcript.txt, segments.tsv, frames/, ocr.txt). Lange Videos auf CPU sind langsam; setze WHISPER_MODEL=small für Qualität oder verwende eine CUDA-GPU für Geschwindigkeit (wird automatisch erkannt; siehe WHISPER_DEVICE in scripts/transcribe.py). Verarbeite Videos nacheinander, nicht parallel.

Optionaler Vision-Durchgang (Qwen-VL). OCR liest nur Text. Um auch das zu erfassen, was Text nicht kann – Diagramme und deren Trend, Abläufe, UI-Layout, die Geste eines Sprechers – aktiviere ein Vision-Modell, das jedes behaltene Schlüsselbild beschreibt. Es ist standardmäßig deaktiviert; aktiviere es, indem du VISION_MODEL (und ggf. VISION_ENDPOINT) in der Umgebung desselben Befehls setzt:

VISION_MODEL=qwen2.5-vl \
VISION_ENDPOINT=http://127.0.0.1:8081/v1/chat/completions \
  bash "$SKILL/scripts/process_video.sh" "<video>" "<ausgabe_verz>/<video-name>"

Wenn aktiviert, erhält evidence.md einen Abschnitt "## Visuelle Beschreibungen" zusätzlich zur OCR – nutze dies für Diagramm-/Chart-Folien. Jeder OpenAI-kompatible Vision-Endpunkt funktioniert (llama-swap sobald ein lokaler Server wie llama.cpp/llama-swap oder Ollama, oder eine gehostete API; VISION_API_KEY falls ein Token benötigt wird). Wenn der Endpunkt nicht erreichbar ist, wird der Durchlauf nur mit OCR fortgesetzt – nichts bricht ab.

4. Den Foliensatz schreiben

Lese die gesamte evidence.md. Kopiere "$SKILL/templates/deck.marp.md" nach <ausgabe_verz>/<video-name>/deck.md und fülle sie aus. Regeln:

  • Behalte das marp: true Frontmatter – das macht es zu einem Foliensatz.
  • Verwende das Transkript für das, was gesagt wurde; verwende die OCR / den auf dem Bildschirm angezeigten Text für genaue Beschriftungen, Zahlen, Titel und Code, die auf Folien gezeigt werden; wenn ein Abschnitt "Visuelle Beschreibungen" vorhanden ist (Vision-Durchgang war aktiviert), verwende ihn für Diagramme/Charts/UI, die OCR nicht vermitteln kann.
  • Markiere eine Aussage mit ihrem Zeitpunkt, wenn nützlich: [00:04:12].
  • Füge das Schlüsselbild der Folie auf die Folie ein – das ist STANDARD, keine optionale Garnitur. Jeder ### [Zeitraum] frames/kf_####.jpg-Block in ocr.txt benennt das repräsentative Bild für diese Folie; übertrage es auf die Deck-Folie, die daraus wurde: ![](frames/kf_0007.jpg). Das Schlüsselbild ist der Beweis für die Folie, es zeigt das Diagramm/Chart/UI, das Aufzählungspunkte nur beschreiben können, und es lässt den Deck die Quellpräsentation widerspiegeln. Lasse es nur weg, wenn die Folie eine reine Diagrammfolie ist, die du in Mermaid neu gezeichnet hast, oder wenn das Bild kein visuelles Signal enthält (ein sprechender Kopf, ein leerer Übergang). Wenn aus einer Quellfolie zwei Deck-Folien entstehen, verwende zwei verschiedene Bilder aus diesem Lauf, anstatt eines zu wiederholen.
  • Nimm nur das auf, was das Beweisbündel stützt. Wenn Transkript und OCR leer sind, sage, dass das Video keinen extrahierbaren Inhalt hatte, anstatt einen Deck zu erfinden.

Dichte – der Deck muss das Beweisbündel KONSOLIDIEREN, nicht zusammenfassen. Der häufigste Fehler ist ein dünner Deck: 20 Folien mit Vier-Wort-Aufzählungspunkten, die den Großteil dessen wegwerfen, was das Video tatsächlich enthielt. Das Beweisbündel ist teuer zu erstellen; der Deck ist das, was die Leute lesen.

  • Eine Deck-Folie pro Quellfolie. Jeder ### [Zeitraum] frames/…-Block im OCR-Abschnitt ist eine echte Folie aus dem Video – diese Liste ist deine Checkliste und ungefähr deine Folienanzahl. Verschmelze nicht drei Quellfolien zu einem Aufzählungspunkt. Ein 40-minütiger Vortrag hat normalerweise 30-45 Folien.
  • Übernimm die Details auf die Folie. Jede Zahl, Metrik, Schwelle, Prozentangabe, Produktname, CRD, Konfigurationsschlüssel und Bezeichnung, die im Beweisbündel vorhanden sind, gehören auf die Folie selbst. Wenn die Quellfolie sechs Aufzählungspunkte und vier Statistiken hatte, hat deine Folie sechs Aufzählungspunkte und vier Statistiken – nicht „verbesserte Genauigkeit".
  • Aufzählungspunkte sind eine vollständige Zeile (~15-20 Wörter), nicht vier Wörter. 5-8 pro Folie sind normal. Knappheit ist nur richtig, wenn die Quelle knapp war.
  • Verwende eine Tabelle, wann immer die Quelle tabellarisch ist – Routing-Matrizen, Benchmark-Tabellen, Level-Definitionen, Prioritätsregeln. Gib jede Zeile und Spalte wieder, nicht eine Stichprobe.
  • Sprechernotizen sind additiv für das, was gesagt wurde, aber nicht auf der Folie steht: Einschränkungen, Erfahrungsberichte, das „Warum", Details aus der Fragerunde. Sie sind nicht der Ort, um Inhalte zu verstecken, die auf die Folie gehören.
  • Überprüfe die Abdeckung, bevor du fertig bist. Gehe die ### [..]-Blöcke in ocr.txt der Reihe nach durch und bestätige, dass jeder repräsentiert ist. Wenn du einen Block übersprungen hast, war es entweder ein Duplikat/eine Animation der vorherigen Folie oder ein Demo-Bild – sei in der Lage zu sagen, welches.

5. Diagramm-Durchlauf (die „Kann das ein Diagramm sein?“-Prüfung)

Frage für jedes Thema: Ist dies strukturell (Komponenten + Verbindungen, Akteursinteraktionen, ein Prozess/Ablauf, Zustände + Übergänge, Entitäten + Beziehungen)? Wenn ja, zeichne es als Mermaid (Standard) oder PlantUML-Diagramm auf einer eigenen Folie anstelle von Aufzählungspunkten. Konsultiere "$SKILL/references/diagrams-cheatsheet.md" für die Inhalt→Typ-Entscheidungstabelle und Vorlagen zum Kopieren und Einfügen. Erzwinge kein Diagramm, wo der Inhalt nur narrativ ist.

6. (Optional) Den echten Foliensatz exportieren

bash "$SKILL/scripts/render.sh" "<ausgabe_verz>/<video-name>/deck.md" pptx   # oder pdf | html | all

Dies rendert Diagrammblöcke vorab zu Bildern und erzeugt dann das PPTX/PDF. Wenn marp/mermaid nicht installiert sind, bleibt der Deck einfach als .md (immer noch gültig und anzeigbar).

Für einen gesamten Baum auf einmal füge dem Batch-Treiber (unten) --pdf hinzu, anstatt render.sh pro Deck aufzurufen.

Batch / verschachtelte Ordner

Für einen ganzen Ordner – insbesondere einen verschachtelten Kursbaum – bevorzuge scripts/drive_decks.sh <wurzel>: es looped in Bash und startet einen frischen Agenten pro Video (überlastet niemals den Kontext des Modells) und spiegelt die Quell-Unterordner in die Ausgabe, so dass die Eltern→Kind-Hierarchie erhalten bleibt. scripts/rename_by_topic.sh <decks> slugifiziert dann jedes Blatt nach seinem Thema innerhalb seines Kursordners. Füge --pdf hinzu, um jeden Deck nach Abschluss der Erstellung zu PDF zu exportieren – Mermaid wird vorab zu Bildern gerendert, und der Blattordner wird komprimiert, so dass jedes PDF in seinem Elternordner landet (<aus>/KursA/Lektion/deck.md → <aus>/KursA/Lektion.pdf), wodurch ein Unterordner pro PDF vermieden wird. Um die Hierarchie von Decks wiederherzustellen, die von einem älteren Lauf flach erstellt wurden, verwende scripts/regroup_by_source.sh <decks> – es liest die Quelle:-Zeile jeder evidence.md, um jeden Deck unter seinen Kurs-Eltern zu platzieren (Duplikate werden in _duplicates/ isoliert), und führe dann die Umbenennung durch. Siehe README.md für die vollständige Batch-Anleitung.

Referenzen

  • references/marp-cheatsheet.md – Marp-Foliensyntax (Trennzeichen, Bilder, Notizen, Spalten).
  • references/diagrams-cheatsheet.md – wann ein Diagramm gezeichnet wird und die Syntax für jeden Typ.

Hinweise

  • OCR erfasst auf dem Bildschirm angezeigten Text gut für Screencasts/Folienvideos. Bei Live-Action-Material trägt das Transkript den Großteil der Information – verlasse dich darauf und mache keine überzogenen Behauptungen über visuelle Elemente.
  • Transkription, OCR und Rendering sind immer lokal. Ob der Autorenschritt die Maschine verlässt, liegt ganz bei dem Agenten, auf den du mit --agent-cmd zeigst.
  • Das Design ist modellunabhängig: Jeder Text-Agent, der Bash-Befehle ausführen und Dateien lesen kann, kann diesen Skill verwenden.

Verwandte Skills