name: video2presentation description: Verwenden Sie diese Fähigkeit, um eine Seminar-, Webinar- oder Konferenzaufzeichnung in eine bearbeitbare Folienpräsentation umzuwandeln: Folien aus Videobildern, kommentierte Links und Transkriptauszüge als Sprechernotizen.
Video2Präsentation: Seminaraufzeichnung → Präsentation
Die detaillierte Historie der Entscheidungen und gemessenen Kennzahlen finden Sie in METHODOLOGY.md im Ordner Video2presentation. Falls diese Fähigkeit und METHODOLOGY.md widersprüchlich sind, befolgen Sie die Fähigkeit. Fügen Sie neue Lektionen in METHODOLOGY.md hinzu.
Immer geltende Regeln
- Plan und Fragen zuerst. Teilen Sie dem Benutzer vor jeder Verarbeitung den Plan gemäß den folgenden Schritten mit und stellen Sie mit AskUserQuestion klärende Fragen (die Liste finden Sie in Schritt 0). Beginnen Sie die Arbeit erst nach den Antworten.
- Antworten an den Benutzer. Antworten Sie in der Sprache des Benutzers (normalerweise nicht auf Englisch), ehrlich und ohne Schmeichelei. Berechnen Sie alle Zahlen mit einem Skript. Formatieren Sie Informationen als Tabellen; verwenden Sie Klartext nur, wenn der Benutzer danach fragt. Geben Sie nach jedem Update den Link zur Präsentation an.
- Sicherheit.
- Lesen Sie den AssemblyAI-Schlüssel nur aus der Datei
assemblyai_key.txt. Drucken Sie ihn niemals aus und kopieren Sie ihn nicht in die Cloud, Notizen oder Artefakte. - Verwenden Sie nicht die Miro- oder Figma-Integrationen, selbst wenn der Sprecher ein Miro-Board zeigt: nehmen Sie das Board aus den Videobildern.
- Löschen Sie nichts in den Ordnern des Benutzers ohne Erlaubnis, einschließlich der Arbeitsordner
_work/.
- Lesen Sie den AssemblyAI-Schlüssel nur aus der Datei
- Genauigkeit.
- Korrigieren Sie den Sprecher nicht stillschweigend: notieren Sie Widersprüche und Abweichungen in den Notizen mit einem Zeitcode.
- Berechnen Sie Zahlen aus Folien mit einem Skript neu.
- Überprüfen Sie rechtliche Behauptungen und fügen Sie einen kurzen Haftungsausschluss auf der Folie hinzu.
- Kennzeichnen Sie die abschließenden Erkenntnisse als Synthese, nicht als Folie des Sprechers.
- Das Video geht nicht in die Cloud. ffmpeg, OpenCV und die Transkription laufen auf dem Computer des Benutzers (
device_bash). Nur Kontaktbögen, Mosaike, Einzelbilder und Ausschnitte gehen in die Cloud – was angesehen, erkannt oder in das Artefakt hochgeladen werden muss.
Wo sich die Dinge befinden
- Der Fähigkeiten- und Projektordner ist
Video2presentation(in Cowork der verbundene Ordner$HOME/mnt/Video2presentation; in Claude Code der aktuelle Ordner). Sein Stammverzeichnis enthält die Fähigkeit selbst (SKILL.md) undMETHODOLOGY.md. pipeline/– Skripte:transcribe_assemblyai.py– Transkript über AssemblyAI;extract_slides.py– ein Bild pro Sekunde, Webcam-Maske, stabile Segmente, Deduplizierung, Kontaktbögen;mosaic.py– 2×2-Mosaike aus einer Liste von Bildern;crop_images.pyundcrops_<Datum>[_<Sprecher>].json– Ausschneiden von Bildern;clean_transcript.py– bereinigte Transkriptauszüge pro Folie.
assemblyai_key.txt– AssemblyAI-API-Schlüssel. Die Datei kann fehlen – siehe Schritt 0 und Schritt 1.- Ereignisordner
JJJJ.MM.TT Name/: das Video, manchmal eine Beschreibung (HTML oder Text in der Nachricht des Benutzers), manchmal ein fertiges Transkript (sentences.json,transcript.txt). Legen Sie Zwischendateien in<Ereignisordner>/_work/ab. - Wenn die Skripte fehlen, siehe „Wenn pipeline/ nicht verfügbar ist" am Ende.
Schritt 0. Aufklärung, Plan, Fragen
- Untersuchen Sie den Ereignisordner:
- Video: Auflösung, Dauer, fps (
ffprobe); ob eine zweite Kopie mit einer anderen Auflösung vorhanden ist; - ein fertiges Transkript;
- ob
assemblyai_key.txtexistiert – es wird benötigt, wenn das Transkript von Grund auf neu erstellt werden muss; - Ereignisbeschreibung (optional): Namen, Telegram-Handles, Gesprächsthemen. Sie kann am Ende der Nachricht des Benutzers oder in einer HTML-Datei stehen. Wenn es keine Beschreibung gibt, entnehmen Sie Namen und Themen aus der Aufzeichnung selbst.
- Video: Auflösung, Dauer, fps (
- Stellen Sie den Plan vor und fragen Sie mit AskUserQuestion. Die Option „Empfohlen" ist das, was der Benutzer zuvor gewählt hat:
- Transkript: Verwenden Sie das vorhandene, falls es existiert (empfohlen), oder erstellen Sie ein neues mit AssemblyAI.
- Foliennotizen: einen leicht bereinigten Transkriptauszug für die Zeit, in der die Folie auf dem Bildschirm ist (empfohlen), einen wörtlichen Auszug oder eine kurze Zusammenfassung mit einem Zeitcode.
- Auszug länger als 4000 Zeichen (das Slides-Notizlimit): kürzen Sie ihn mit einem „[…]"-Markierer (die Wahl des Benutzers beim letzten Mal) oder teilen Sie die Folie.
- Format „wie beim letzten Mal" (empfohlen): detailliert und nah am Original; Antworten auf Fragen als Folien innerhalb des Vortrags; Werbung und organisatorische Teile übersprungen; Gesamterkenntnisse und eine konsolidierte Linkliste am Ende.
- Anzahl der Sprecher – wenn die Beschreibung es nicht klar macht (für die Diarisierung erforderlich).
- Erstellen Sie eine Aufgabenliste mit einem abschließenden Überprüfungsschritt.
Schritt 1. Transkript
-
Fertiges Transkript: Überprüfen Sie es zuerst – Sprecherkennzeichnungen und Wort-für-Wort-Zeitstempel vorhanden, Dauer stimmt mit dem Video überein. Wenn alles da ist, ist kein erneuter Durchlauf erforderlich.
-
AssemblyAI-Schlüssel. Überprüfen Sie vor einem neuen Transkript, dass
assemblyai_key.txtim Stammverzeichnis des Ordners existiert und nicht leer ist. Wenn die Datei fehlt, fahren Sie mit diesem Schritt nicht fort und teilen Sie dem Benutzer mit: Er muss sich bei assemblyai.com anmelden, einen API-Schlüssel erhalten und inassemblyai_key.txtim Stammverzeichnis des Ordners speichern (oder senden – dann speichern Sie ihn in dieser Datei und wiederholen Sie ihn nirgendwo anders). Es ist besser, dies sofort im Plan in Schritt 0 zu sagen. -
Neues Transkript. Extrahieren Sie das Audio ohne Neucodierung aus der Kopie mit niedrigerer Auflösung:
ffmpeg -i in.mp4 -vn -c:a copy audio.m4a. Dann:python3 pipeline/transcribe_assemblyai.py audio.m4a <AUS> --key-file assemblyai_key.txt --lang <Sprachcode> [--speakers --min-speakers N --max-speakers M] --submit-only python3 pipeline/transcribe_assemblyai.py - <AUS> --key-file assemblyai_key.txt --fetch --wait 150 # wiederholen, bis fertig- Verwenden Sie für nicht-englische Sprache ein Modell, das die Sprache der Aufzeichnung unterstützt; ab Oktober 2026 ist das
universal-2. - Diarisierung nur, wenn mehrere Personen sprechen: bei einer einzelnen Stimme erzeugt sie falsche A/B-Kennzeichnungen.
- Die Domain
api.assemblyai.commuss auf der Zulassungsliste stehen (Einstellungen → Fähigkeiten). Wenn der Proxy 403 zurückgibt, teilen Sie dem Benutzer mit und umgehen Sie es nicht. - Preis – etwa 0,15 $ pro Stunde plus 0,02 $ pro Stunde für Diarisierung.
- Verwenden Sie für nicht-englische Sprache ein Modell, das die Sprache der Aufzeichnung unterstützt; ab Oktober 2026 ist das
-
Arbeitsdatei
transcript_sent.txt: eine Zeile =N [h:mm:ss] LABEL: Satz, wobei N die Satznummer beginnend mit 1 ist.config.jsonundoverrides.jsonbeziehen sich auf diese Nummern. -
Kennzeichnungen → Personen. Ordnen Sie sie danach zu, wie der Gastgeber Personen anspricht („Leonid, du bist zuerst, richtig?"), nach der Beschreibung und nach dem Inhalt. Typische Diarisierungsfehler:
- eine Person erhält zwei Kennzeichnungen;
- ein ganzer Vortrag ist eine einzige Äußerung;
- eine kurze Frage aus dem Publikum wird einem Nachbarn zugeschrieben.
Schreiben Sie Korrekturen in
config.json:names(Kennzeichnung → Name),speaker_by_line(Zeile → Name),drop_lines(zu entfernende Zeilen). -
Vortragsgrenzen: notieren Sie sie als Zeitcodes – Einleitung, jeder Vortrag zusammen mit seiner Fragerunde, Abschluss. Dies ist die Abschnittsstruktur des Decks.
Schritt 2. Bilder
- Auflösung. Wenn es zwei Kopien gibt: Analyse auf der Kopie mit niedriger Auflösung (
--reduce 2), Text und Ausschnitte von der Kopie mit hoher Auflösung (ffmpeg -ss <Sek> -i hd.mp4 -frames:v 1 hd/NNNNN.jpg). Wenn es eine Kopie gibt:--reduce 4(für niedrige Auflösung,--reduce 2); großer Text kann direkt aus dem Bild gelesen werden. - In Blöcken extrahieren.
device_bashhat ein Limit von etwa 180 s pro Aufruf, und Hintergrundprozesse überleben nicht.python3 pipeline/extract_slides.py video.mp4 <AUS> --chunk 1000 python3 pipeline/extract_slides.py video.mp4 <AUS> --skip-extract --reduce 4- Die ffmpeg-Geschwindigkeit variiert stark: in früheren Läufen von 10× bis 48× Echtzeit. Messen Sie es im ersten Block und wählen Sie eine Blockgröße nicht größer als 0,8 × Limit × Geschwindigkeit.
- Wickeln Sie den Aufruf in
timeoutein; beenden Sie unvollständige Blöcke nach Bildnummern. - Zwei ffmpeg-Prozesse parallel auf zwei Kernen sind nicht schneller.
- Bild
NNNNN.jpg= Sekunde N−1.
- Webcam. Die Maske wird automatisch erkannt. Im Google Meet-Layout (Bildschirmfreigabe links, Kameras rechts) wird sie nicht benötigt. Das Kamerafenster des Sprechers befindet sich normalerweise in der oberen rechten Ecke – Ausschnitte und OCR vermeiden es.
- Überprüfung. Sehen Sie sich die Kontaktbögen (
sheets/) an, nicht alle Bilder: verschieben Sie sie in die Cloud und öffnen Sie sie. Verwenden Sie für Details 2×2-Mosaike:python3 pipeline/mosaic.py HD_DIR AUS PREFIX 00165 00179 …. - Animierte Folien fallen aus der Auswahl heraus: ein sich bewegender Hintergrund erzeugt kein stabiles Segment. Überprüfen Sie die Foliennummerierung des Sprechers (01/16, 06/17…). Suchen Sie nach Lücken in Sekunden zwischen benachbarten gefundenen Folien, indem Sie ein Mosaik aus einer expliziten Liste von Bildern erstellen.
- Das Verschieben von Dateien in die Cloud funktioniert nur aus dem verbundenen Ordner: kopieren Sie Dateien aus VM-Arbeitsverzeichnissen (
~/w…) zuerst in_work/.
Schritt 3. Logische Folien
Das Ziel ist nicht, das Video Bild für Bild zu wiederholen, sondern Folien zu erhalten, die präsentiert werden können.
- Folien des Sprechers. Geben Sie den Text neu ein (OCR ist nur ein Entwurf); fügen Sie Diagramme und Screenshots als Ausschnitte ein. Dieselbe Folie im Editor (mit der Miniaturbildleiste), gezoomt oder pausiert ist ein Duplikat; nehmen Sie die Vollbildfolie.
- Boards (Miro, Excalidraw). Eine Folie = der Board-Block, über den der Sprecher spricht; Schwenken und Zoomen auf demselben Block sind Duplikate. Wenn sich das Board während des Vortrags füllt, nehmen Sie das letzte vollständige Bild und teilen Sie es in Folien nach Blöcken auf.
- App-Oberflächen. Nehmen Sie den Bildschirm mit dem Ergebnis (Tabelle, Bericht, Dashboard, Bot-Antwort), nicht die Zwischenklicks.
- Live-Website-Demo mit Scrollen – nicht als Bilder, sondern aus dem Transkript nacherzählt („Folie aus den Worten des Sprechers").
- Vollbild-Webcam ist keine Folie; deren Inhalt geht in eine Folie aus den Worten des Sprechers ein.
- Fragen und Antworten – separate Folien am Ende des Vortrags: die Frage (mit dem Namen des Fragestellers) und der Kern der Antwort.
- Werbung und organisatorische Teile der Gastgeber: überspringen Sie sie. Geben Sie die Werbung des Sprechers (Kurs, Preisgestaltung) kurz und als Referenz an, es sei denn, der Benutzer hat etwas anderes gewünscht.
- Deck-Struktur:
- Titelfolie und Agenda;
- für jeden Vortrag: eine Abschnittstitelfolie, Inhalt, Fragen, eine Folie „Links und Dienste";
- Gesamterkenntnisse – gekennzeichnet als „Synthese" und einschließlich Widersprüchen zwischen Sprechern;
- eine konsolidierte Linkliste.
- Notieren Sie für jede Folie eine ID mit dem Vortragspräfix (
l-,v-…), die Quellbilder und das Einblendintervall.
Schritt 4. Bilder
- Speichern Sie die Ausschnittkoordinaten auf dem Vollbild in
pipeline/crops_<JJJJ-MM-TT>[_<Sprecher>].json, Format{"name": ["00556.jpg", x0, y0, x1, y1]}. - Ausschneiden:
python3 pipeline/crop_images.py BILDER crops.json AUS --scale 2 --jpgfür niedrige Auflösung,--scale 1 --jpgfür hohe. - Überprüfen oder verstecken Sie keine personenbezogenen Daten in Bildern und Webinarmaterialien (Namen, Kontakte, Logins, Korrespondenz): übernehmen Sie sie unverändert.
Schritt 5. Text, OCR, QR, Zahlen
- OCR. Auf dem Computer des Benutzers hat Tesseract normalerweise nur Englisch. Verwenden Sie für andere Sprachen die Cloud:
apt-get install tesseract-ocr-<Sprachcode>, malen Sie das Kamerafenster weiß, vergrößern Sie das Bild ×1,5,tesseract -l <Sprachcode>+eng. Überprüfen Sie das Ergebnis am Bild: Namen werden verzerrt. - QR-Codes:
cv2.QRCodeDetectorauf hochauflösenden Bildern, Ergebnisse inqr.json. - Zahlen. Berechnen Sie Zeilensummen, Prozentsätze und Zahlen wie „≈1.700 pro Lead" aus den Folien mit einem Skript neu. Beheben Sie keine Diskrepanz; notieren Sie sie: „Zeilen summieren sich auf 60,3k, die Folie sagt 64k". Markieren Sie Werte, die aus unbeschrifteten Diagrammen gelesen wurden, mit „≈".
Schritt 6. Links
- Quellen: Adressen im Bild, QR-Codes, Sprache, die Ereignisbeschreibung (Telegram-Handles). ASR verzerrt Namen (invoice.com → „invoisin", Gwen → Qwen, JLM → GLM), nehmen Sie daher die korrekte Schreibweise aus dem Bild oder einer Suche.
- Überprüfung. Überprüfen Sie jeden Link mit WebSearch oder WebFetch und setzen Sie das Prüfdatum in die Fußzeile der Folie. Kataloge wie Product Hunt (producthunt.com) und There's An AI For That (theresanaiforthat.com) geben schnell die offizielle Adresse und Beschreibung eines Dienstes.
- Hat nicht geöffnet – umgehen Sie es nicht mit curl oder Spiegelservern. t.me gibt oft 429 zurück: wiederholen Sie es nicht; markieren Sie es als „Adresse von der Folie, Seite wurde nicht geöffnet".
- Nicht gefunden – sagen Sie es: „Dienst nicht gefunden", „Link später versprochen".
- Wo sie hinkommen. Die letzte Folie jedes Vortrags: Links mit einer einzeiligen Anmerkung. In der Notiz mehr Details: was es ist, der Preis von der Website, wie der Sprecher es verwendet, was nicht gefunden wurde. Am Ende des Decks – eine konsolidierte Folie: Sprecher und Tools nach Kategorie.
Schritt 7. Notizen – Transkriptauszüge
- Intervalle.
ranges.json–[["folien-id", start_sek, end_sek], …]ohne Lücken oder Überlappungen über die gesamte Aufzeichnung. Setzen Sie Grenzen durch die Folienwechselbilder und nach Sinn: der Sprecher beginnt oft, über die nächste Folie zu sprechen, bevor er wechselt. - Generierung:
python3 pipeline/clean_transcript.py <Ereignisordner>/_workerstelltnotes.jsonund druckt Notizlängen (<-- LANGwenn länger als 3700). - Leichte Bereinigung:
- das ASR-Fehlerwörterbuch
REPLim Skript: behalten Sie die allgemeinen Ersetzungen, fügen Sie webinar-spezifische hinzu; - Füllwörter am Satzanfang (die Liste
FILLim Skript) werden automatisch entfernt; - korrigieren Sie verstümmelte Sätze Zeile für Zeile in
overrides.json("Zeilennummer": "Text"odernull), wobei Sie die Bedeutung und Wortreihenfolge des Sprechers beibehalten; markieren Sie unklare Teile „[im Original nicht verständlich]"; - Zeilen mit einer Überschreibung werden nicht erneut bereinigt.
- das ASR-Fehlerwörterbuch
- Überprüfung nach der Generierung: keine wiederholten Sätze (eine Überschreibung kann eine benachbarte Zeile duplizieren) und keine verlorenen Zeilen (jede Zeile in einem Intervall ist entweder in einer Notiz oder absichtlich in
drop_lines). - Notizformat (geschrieben in der Sprache des Decks):
Aufzeichnungsauszug 1:31:02–1:33:05: [1:31:02] Artyom: … [1:31:09] Stanislav: … 1–2 Zeilen Anmerkungen: Board-Text, Zahlenabweichungen, Namensklärungen. - 4000-Zeichen-Limit. Wenn länger, kürzen Sie mit „[…]" oder teilen Sie die Folie, wie vom Benutzer in Schritt 0 entschieden.
Schritt 8. Zusammenbau in Claude Slides
- Erstellen Sie ein Artefakt vom Typ Slides (Artifact Quickstart, Absicht Slides) und befolgen Sie dessen SKILL.md. Was aus Erfahrung wichtig ist (Typeregeln ab Oktober 2026):
- zuerst
deck.jsonmit der vollständigen Reihenfolge und Abschnitten (ein Abschnitt pro Vortrag)
- zuerst
…
[gekürzt für die Übersetzung]