CommunitySchreiben & Editierengithub.com

SissiMeow/codex-skill-YouTube-Transcript-PDF

Verwandle einen YouTube-Link in ein lesbares Lesedokument – kein Roh-Export von Untertiteln. Bevorzugt native YouTube-Untertitel und fällt nur auf Spracherkennung zurück, wenn Untertitel fehlen, unbrauchbar oder unvollständig sind.

Was ist codex-skill-YouTube-Transcript-PDF?

Diese Fähigkeit (Skill) wandelt einen YouTube-URL in ein strukturiertes, lesbares PDF-Dokument um, das weit über eine bloße Aneinanderreihung von Untertiteln hinausgeht. Sie ist für Entwickler und KI-Agenten konzipiert, die in Umgebungen wie Claude Code, Cursor oder Codex arbeiten und automatisch Transkripte aus Videos extrahieren möchten. Der Skill folgt einem klaren Workflow: Zuerst werden die Metadaten des Videos abgerufen und die Verfügbarkeit von Untertiteln geprüft. Liegen manuelle oder automatisch generierte YouTube-Untertitel vor, werden diese bevorzugt, da dieser Prozess schneller und ressourcenschonender als eine Audio-basierte Spracherkennung (ASR) ist. Falls die Untertitel jedoch fehlen, unvollständig oder von minderer Qualität sind, wird auf eine ASR-Fallback-Option wie Whisper zurückgegriffen. Der Skill stellt sicher, dass die Sprache des Transkripts mit der des Quellmaterials übereinstimmt, und bietet die Möglichkeit, Übersetzungen nur auf ausdrücklichen Wunsch hinzuzufügen. Das Endergebnis ist ein formatiertes PDF mit Titel, Veröffentlichungsdatum, Quellenangaben, einer Zusammenfassung, einem Kapitelverzeichnis und dem formatierten Transkripttext, der als lesbarer Artikel und nicht als Rohdaten präsentiert wird.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add SissiMeow/codex-skill-YouTube-Transcript-PDF

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

YouTube-Transkript

Überblick

Verwandle einen YouTube-URL in ein lesbares Lesedokument – kein Roh-Export von Untertiteln. Bevorzuge native YouTube-Untertitel und falle nur auf Spracherkennung zurück, wenn Untertitel fehlen, unbrauchbar oder materiell unvollständig sind.

Arbeitsablauf

  1. Bestätige, dass die Eingabe ein YouTube-URL ist.
  2. Sammle Metadaten und überprüfe, ob native Untertitel oder automatisch generierte Untertitel verfügbar sind.
  3. Entscheide die erwartete Transkriptsprache vor der Extraktion. Wenn der Benutzer nach einem englischen Transkript fragt, übergib --language en. Wenn der Benutzer die Originalsprache beibehalten möchte, bevorzuge die gesprochene Sprachspur, wenn diese bekannt ist; andernfalls behandle die Sprache als ungeklärt, bis sie verifiziert ist.
  4. Bevorzuge die Untertitelextraktion, da sie schneller und günstiger als ASR ist.
  5. Überprüfe report.json sofort nach dem Abruf und verifiziere, dass selected_language mit der beabsichtigten Sprache übereinstimmt, bevor du etwas zusammenstellst oder rendert.
  6. Falle auf Spracherkennung nur zurück, wenn die Untertitelextraktion fehlschlägt, materiell unvollständig ist oder die verfügbaren Untertitelspuren sprachlich mehrdeutig sind.
  7. Sammle Metadaten: Titel, Veröffentlichungsdatum, Kanal, URL und Quellkapitel, wenn verfügbar.
  8. Normalisiere das Transkript in lesbare Absätze anstelle von Untertitelfragmenten.
  9. Erstelle ein Dokument mit Titel, Datum, Quellmetadaten, Zusammenfassung, Kapitelliste und Transkripttext.
  10. Speichere das endgültige PDF im aktuellen Projektordner.
  11. Füge eine chinesische Übersetzung nur hinzu, wenn die Eingabeaufforderung explizit danach fragt.

Umgebungsvertrag

Erwarte, dass die Umgebung Folgendes bereitstellt:

  • python3
  • Netzwerkzugriff, um die YouTube-Seite und jede Transkriptquelle zu lesen
  • yt-dlp für Metadaten und Untertitelextraktion auf dem untertitelbasierten Pfad
  • Ein lokales Whisper-kompatibles ASR-Tool oder eine gehostete Transkriptions-API für den Rückfall
  • Die gebündelten Skripte in scripts/

Wenn eine erforderliche Fähigkeit fehlt, sage genau, welche Abhängigkeit nicht verfügbar ist, und stoppe, bevor du behauptest, das Transkript sei vollständig.

Quellenauswahl

Untertitel-basierter Pfad

Bevorzuge diesen Pfad, wenn native Untertitel oder automatisch generierte YouTube-Untertitel existieren.

  • Rufe zuerst Metadaten und Untertitelverfügbarkeit ab.
  • Lade die beste Untertitelspur in der beabsichtigten Sprache herunter.
  • Wenn sowohl manuelle als auch automatische Untertitel existieren, bevorzuge manuelle Untertitel.
  • Wenn der Benutzer eine Zielsprache für das Transkript angibt, übergib sie explizit mit --language.
  • Wenn der Benutzer keine Sprache angibt, behalte die gesprochene Sprache nur bei, wenn sie bekannt oder zuverlässig ableitbar ist. Wenn die verfügbaren Untertitelspuren mehrere Sprachen umfassen und die gesprochene Sprache nicht bekannt ist, stoppe den Untertitelpfad und behandle ihn als mehrdeutig, anstatt eine willkürlich auszuwählen.
  • Wenn Untertitel teilweise, schlecht synchronisiert sind oder große gesprochene Abschnitte auslassen, wechsle zu ASR.
  • Überprüfe nach dem Untertitelabruf report.json und lehne das Ergebnis ab, wenn selected_language nicht mit der beabsichtigten Transkriptsprache übereinstimmt.

Nützliche Werkzeuge, falls in der Umgebung verfügbar:

  • yt-dlp für Metadaten und Untertitelextraktion
  • Der kanonische Extraktions-Wrapper in scripts/, wenn vorhanden

ASR-Rückfallpfad

Verwende ASR nur, wenn die Untertitelextraktion nicht verfügbar oder nicht gut genug ist.

  • Lade das YouTube-Audio herunter oder greife darauf zu.
  • Führe die Transkription in der Quellsprache durch, wenn diese bekannt ist.
  • Behalte die Originalsprache im Transkript bei.
  • Übersetze standardmäßig nicht.
  • Verwende das Transkript als Quelle der Wahrheit für den endgültigen lesbaren Artikel und das PDF.

Häufige Optionen, falls verfügbar:

  • Lokales Whisper / faster-whisper
  • Gehostete Transkriptions-API

Fehlerstrategie

Stoppe und erkläre den Fehler, wenn eine der folgenden Bedingungen zutrifft:

  • Die Eingabe ist kein gültiger YouTube-URL
  • Metadaten können nicht abgerufen werden
  • Untertitel sind nicht verfügbar und kein ASR-Rückfall ist verfügbar
  • Der Audio-Download für den ASR-Pfad schlägt fehl
  • Das Transkript ist zu unvollständig, um eine vertrauenswürdige Zusammenfassung zu unterstützen

Fahre mit einer Warnung fort, wenn Arbeit möglich ist, aber die Qualität eingeschränkt ist:

  • Untertitel existieren, scheinen aber teilweise, verrauscht oder desynchronisiert
  • ASR wird abgeschlossen, aber Zeichensetzung oder Sprechergrenzen sind schwach
  • Kapitelgrenzen müssen aus verrauschtem Transkripttext abgeleitet werden

Stoppe und führe mit einer expliziten Sprache erneut aus, wenn:

  • Der Benutzer ein englisches Transkript erwartet hat und report.json eine nicht-englische Spur ausgewählt hat
  • Der Benutzer die Beibehaltung der Quellsprache erwartet hat, aber die ausgewählte Untertitelsprache mehrdeutig oder eindeutig übersetzt ist

Ausgabevertrag

Sofern der Benutzer nichts anderes verlangt, erstelle ein ordentliches PDF im aktuellen Projektordner, das Folgendes enthält:

  1. Titel
  2. Veröffentlichungsdatum
  3. Quellenzeile mit Kanal oder Herkunft
  4. Zusammenfassung oder Dek
  5. Kapitelliste in der Nähe des Anfangs
  6. Lesbarer Transkripttext in der Originalsprache
  7. Grobe Zeitstempelmarkierungen nur wenn nützlich, z. B. alle 20 Minuten

Gib keinen riesigen unstrukturierten Block von Untertiteltext als Hauptausgabe zurück.

Formatierungsregeln

Modelliere das Leseerlebnis nach OpenAIs langer Artikelform, wie dem Harness Engineering-Artikel: großzügiger Weißraum, starke Titelhierarchie, kompakte Metadaten, klare Abschnittsumbrüche und lesbare Absatzbreiten.

  • Beginne mit einer Überschrift oder einem Abschnitts-Label wie YouTube-Transkript.
  • Setze den Titel an die erste Stelle.
  • Halte Seite 1 frei von der wiederholten Seitenkopf-Label und dem oberen Trenner.
  • Platziere auf Seite 2 und später den oberen Trenner so, dass sein Abstand zum Seitenanfang dem Abstand des unteren Trenners zum Seitenende entspricht.
  • Setze das Seitenlabel Sissi Skill – YouTube-Transkript zu PDF direkt über den oberen Trenner auf Seite 2 und später.
  • Setze das Veröffentlichungsdatum und die Quellmetadaten direkt unter den Titel.
  • Setze die Kapitelliste in die Nähe des Dokumentanfangs.
  • Füge Kapitelüberschriften innerhalb des Transkripttextes an den entsprechenden Stellen ein, wenn Kapitelmetadaten vorhanden sind.
  • Halte Absätze kurz und lesbar.
  • Richte Textblöcke im Blocksatz aus, sodass die Textblockbreite der Breite der Trennlinie entspricht.
  • Fasse Untertitelfragmente zu prosaähnlichen Absätzen zusammen.
  • Entferne wiederholte Überlappungen, die durch Untertitelsegmentierung entstehen.
  • Entferne offensichtliches Rauschen wie wiederholte Pfeile oder eigenständige Musikmarkierungen, es sei denn, sie sind redaktionell nützlich.
  • Erfinde keine Sprechernamen.
  • Gib keine dichten Zeitstempelgeräusche aus.
  • Füge nur grobe Navigationshilfen in 20-Minuten-Intervallen ein.
  • Wenn das Video kürzer als 20 Minuten ist, lasse die Markierungen ganz weg.
  • Reserviere einen Fußzeilen-Weißraumbereich auf jeder Seite und trenne ihn vom Textkörper mit einer grauen horizontalen Linie.
  • Lasse den Textkörper nah am Fußzeilentrenner enden, sodass die letzte Zeile etwa eine Zeile darüber sitzt, ohne sich zu überlappen.

Lesbarkeitsheuristiken

Bei der Normalisierung von Untertiteln:

  • Dedupliziere exakte Wiederholungen aus überlappenden Untertitelfenstern.
  • Teile langen Text durch Zeitlücken, Satzenden und Absatzlänge in Absätze auf.
  • Bevorzuge Absatzlängen, die sich wie Essay-Prosa anfühlen, nicht wie Untertitelströme.
  • Behalte die Zeichensetzung bei, wenn die Quelle sie liefert.
  • Wenn die Quellzeichensetzung schlecht ist, füge nur die minimal notwendige Zeichensetzung für die Lesbarkeit hinzu.

Zusammenfassung und Kapitel

Erstelle nach dem Erstellen des Transkripts:

  • Eine prägnante Zusammenfassung, die sich auf das Hauptargument oder die wichtigsten Erkenntnisse des Videos konzentriert
  • Eine Kapitelliste mit kurzen Überschriften

Wenn die Quelldaten bereits zuverlässige Kapitelmetadaten enthalten, verwende sie wieder. Andernfalls leite Kapitel aus thematischen Wechseln im Transkript ab.

Beispiele

Beispiel 1: Podcast-Transkriptpaket

  • Benutzer sagt: „Verwandle dieses YouTube-Interview in ein sauberes PDF-Transkript.“
  • Aktionen:
    1. Rufe Metadaten und Untertitelverfügbarkeit ab.
    2. Bevorzuge manuelle Untertitel, wenn verfügbar.
    3. Normalisiere Transkriptabsätze.
    4. Erstelle Zusammenfassung und Kapitelliste.
    5. Rendere PDF im aktuellen Projektordner.
  • Ergebnis: Artikelähnliches Transkript-PDF mit Zusammenfassung und Kapitelaufschlüsselung.

Beispiel 2: Zusammenfassung plus Transkript von einer Keynote

  • Benutzer sagt: „Extrahiere das Transkript von dieser Keynote und fasse jeden Abschnitt zusammen.“
  • Aktionen:
    1. Extrahiere Untertitel oder verwende ASR-Rückfall.
    2. Verwende Quellkapitel, wenn vorhanden, andernfalls leite sie ab.
    3. Erstelle eine prägnante Zusammenfassung, die an der Kapitelstruktur ausgerichtet ist.
    4. Speichere das endgültige PDF und gib die Zusammenfassung im Chat zurück.
  • Ergebnis: Brauchbares Lesedokument anstelle von rohem Untertiteltext.

Beispiel 3: Quellsprache beibehalten

  • Benutzer sagt: „Erstelle ein lesbares Transkript von diesem spanischen YouTube-Vortrag.“
  • Aktionen:
    1. Behalte das spanische Transkript bei.
    2. Übersetze nicht, es sei denn, es wird explizit darum gebeten.
    3. Markiere Probleme mit der Quellqualität, wenn Untertitel schwach sind.
  • Ergebnis: Spanisches Transkriptpaket mit ehrlichen Qualitätshinweisen.

Beispiel 4: Explizite Übersetzungsanfrage

  • Benutzer sagt: „Erstelle ein Transkript-PDF von diesem YouTube-Video und füge eine chinesische Übersetzung hinzu.“
  • Aktionen:
    1. Extrahiere zuerst das Quelltranskript.
    2. Erstelle das ordentliche Quellsprachen-Transkript.
    3. Füge die chinesische Übersetzung hinzu, weil sie explizit angefordert wurde.
  • Ergebnis: Transkriptpaket, das Quelltext und übersetzten Text klar unterscheidet.

Ausgabeort

Speichere das endgültige PDF im aktuellen Projektordner, es sei denn, der Benutzer fragt nach einem anderen Pfad. Bevorzuge einen aus dem Videotitel abgeleiteten Slug-Dateinamen.

Beispiel:

./cult-leaders-have-terrible-pitches.pdf

Hilfsskripte

Verwende scripts/fetch_youtube_transcript.py als kanonischen Extraktionseinstiegspunkt. Es muss das erste Skript im Ablauf sein, weil es URL-Validierung, Metadatenabruf, Untertitelauswahl, Qualitätsprüfungen und optionalen ASR-Rückfall zentralisiert. Verwende scripts/asr_faster_whisper.py, wenn Untertitel nicht verfügbar sind und Audio heruntergeladen werden kann. Es schreibt Segment-JSON für den Rückfallpfad unter Verwendung eines lokalen faster-whisper-Modells.

Verwende scripts/assemble_transcript.py, um zeitgesteuerte Segmente in lesbare Transkriptprosa mit groben Markierungen umzuwandeln. Wenn Kapiteltitel an präzisen Positionen in den Transkripttext eingefügt werden müssen, schreibe auch Absatzmetadaten-JSON aus demselben Skript und übergib es an den PDF-Renderer. Wenn zuverlässige Quellkapitel existieren, übergib sie ebenfalls an assemble_transcript.py, sodass Absatzgrenzen vor dem PDF-Rendering an Kapitelgrenzen ausgerichtet werden können.

Verwende scripts/render_blog_pdf.py, um Metadaten, Zusammenfassung, Kapitel und Transkripttext in ein ordentliches PDF umzuwandeln, ohne externe PDF-Abhängigkeiten. Verwende scripts/validate_transcript_skill.py während der Entwicklung für Offline-Regressionstests zur VTT-Parsing, Überlappungsbereinigung, Markereinfügung, kapitelbewussten Transkriptmetadaten und PDF-Rendering. Verwende scripts/package_skill_release.py vor der Verteilung, um ein sauberes Zip zu erstellen, das nur Repo-Dateien wie README.md, .git/, tests/ und __pycache__ ausschließt.

Typischer Ablauf:

python scripts/fetch_youtube_transcript.py "https://www.youtube.com/watch?v=VIDEO_ID" --output-dir ./youtube_transcript_work --language en
sed -n '1,120p' ./youtube_transcript_work/report.json
python scripts/asr_faster_whisper.py ./downloaded-audio.m4a --output ./youtube_transcript_work/segments.json --model small --device cpu --compute-type int8 --beam-size 1 --vad-filter
python scripts/assemble_transcript.py ./youtube_transcript_work/segments.json --output transcript.txt
python scripts/assemble_transcript.py ./youtube_transcript_work/segments.json --output transcript.txt --metadata-output transcript-metadata.json --chapter-breaks-json ./youtube_transcript_work/chapters.json
# Dann lies Titel/Datum/Kanal aus ./youtube_transcript_work/metadata.json und übergib sie an den Renderer.
python scripts/render_blog_pdf.py \
  --title "Cult Leaders Have Terrible Pitches" \
  --date "2025-09-16" \
  --channel "The Knowledge Project Podcast" \
  --summary-file summary.txt \
  --chapters-json ./youtube_transcript_work/chapters.json \
  --transcript-metadata-json transcript-metadata.json \
  --transcript transcript.txt \
  --output ./cult-leaders-have-terrible-pitches.pdf
python scripts/validate_transcript_skill.py
python scripts/package_skill_release.py

Qualitätsprüfungen

Überprüfe vor der Rückgabe des Ergebnisses:

  • Die Transkriptsprache stimmt mit dem Quellinhalt überein, es sei denn, eine Übersetzung wurde explizit angefordert
  • report.json zeigt ein selected_language an, das mit der beabsichtigten Transkriptsprache übereinstimmt
  • Das Transkript ist materiell vollständig
  • Die Kapitelliste ist kohärent
  • Inline-Kapitelüberschriften erscheinen an den richtigen Transkriptpositionen, wenn Quellkapitel vorhanden sind
  • Wenn benachbarte Kapitelzeitstempel weniger als eine Minute auseinander liegen, fasse sie zu einer einzigen Inline-Kapitelüberschrift zusammen
  • Lasse Zeitstempel aus Inline-Kapitelüberschriften innerhalb des Transkripttextes weg
  • Das Dokument hat Titel, Datum und Quellmetadaten
  • Das PDF wurde erfolgreich in den Projektordner geschrieben
  • Textkörper ist im Blocksatz ausgerichtet und auf die gleiche Breite wie die Trennlinien
  • Keine Seite lässt Textkörper in den Fußzeilen-Weißraumbereich eindringen
  • Das endgültige Dokument ist als Artikel lesbar, nicht als rohe Untertitel

Wenn die Extraktionsqualität schlecht ist, sage dies kurz und gib an, ob die Schwäche von den Quelluntertiteln oder ASR herrührt.

Fehlerbehebung

Keine Untertitel gefunden

  • Ursache: Das Video hat keine manuellen oder automatisch generierten Untertitel.
  • Aktion: Verwende ASR nur, wenn eine ASR-Abhängigkeit verfügbar ist. Andernfalls stoppe und melde die fehlende Fähigkeit.

Untertitel sehen unvollständig aus

  • Ursache: Die Untertitelspur lässt gesprochene Abschnitte aus oder ist materiell desynchronisiert.
  • Aktion: Wechsle zu ASR, wenn verfügbar, und erkläre, warum der Untertitelpfad abgelehnt wurde.

Falsche Sprachspur ausgewählt

  • Ursache: Es existieren mehrere Untertitelspuren und die falsche wurde automatisch ausgewählt.
  • Aktion: Führe fetch_youtube_transcript.py erneut mit einem expliziten --language aus, wenn die Zielsprache bekannt ist. Wenn die gesprochene Sprache nicht bekannt ist und die verfügbaren Untertitelspuren mehrsprachig sind, stoppe den Untertitelpfad als mehrdeutig, anstatt eine willkürlich auszuwählen.

ASR-Rückfall nicht verfügbar

  • Ursache: Es existiert kein lokaler oder gehosteter Transkriptionspfad.
  • Aktion: Melde die fehlende Abhängigkeit, anstatt so zu tun, als ob das Transkript vollständig sei.

PDF rendert, aber Formatierung ist beeinträchtigt

  • Ursache: Transkriptblöcke sind zu lang, Metadaten fehlen oder die Kapitelplatzierung ist verrauscht.
  • Aktion: Überprüfe die Transkriptnormalisierung, Kapitel-Eingaben und Rendering-Eingaben erneut, bevor du die Datei zurückgibst.

Benutzer möchte nur eine Zusammenfassung

  • Ursache: Die Anfrage des Benutzers war nicht explizit genug.
  • Aktion: Bestätige die Anforderung und extrahiere nur die Zusammenfassung und das Kapitelverzeichnis aus dem vollständigen Transkriptpaket.

Ressourcenbeschränkungen

  • Ursache: Große Audiodatei, wenig System-RAM oder kleine/schwache ASR-Modelle (tiny/base).
  • Aktion: Verwende VAD-Filterung, kleinere Modelle, CPU mit verringerter Genauigkeit oder reduziere große Audiodateien, bevor du sie an ASR übergibst.

Verwandte Skills