Communitygithub.com

swei99386-alt/video-to-text-skill

Ein-Befehl-Video-zu-Text-Pipeline für X / YouTube / Bilibili. Untertitel-zuerst-Strategie, GPU-beschleunigte Transkription (~18x Echtzeit). 5G GPU-freundlich.

Was ist video-to-text-skill?

Diese Fähigkeit wandelt gesprochene Inhalte aus Videos/Audios in Text um. Sie folgt einer festgelegten, aus Fehlern gelernten Routine: Zuerst immer nach vorhandenen Untertiteln suchen (z. B. von YouTube oder X), erst wenn diese fehlen, eine GPU-beschleunigte Transkription durchführen. Der Prozess wird durch ein Skript (grab.py) gesteuert, das automatisch entscheidet, ob Untertitel heruntergeladen oder eine Audiotranskription mit einem kleinen Modell (small) auf einer NVIDIA GTX 1060 (5G VRAM) durchgeführt wird. Für chinesische Videos von Bilibili oder anderen nicht-YouTube-Quellen wird in der Regel die GPU-Transkription verwendet (mit optionalem Sprachparameter 'zh'), wobei die Genauigkeit bei Chinesisch aufgrund des kleinen Modells begrenzt ist. Für Videos ohne direkten Link (z. B. aus WeChat-Kanälen oder verschlüsselten Seiten) kann die Fähigkeit den Bildschirmton aufnehmen und ebenfalls transkribieren. Die Fähigkeit unterstützt die Plattformen X, YouTube, Bilibili sowie lokale Dateien und bietet eine klare, schrittweise Anleitung zur Fehlerbehebung bei der GPU-Konfiguration. Das Endergebnis ist eine saubere Textdatei (vollständiger_Text.txt) ohne Formatierung, zusammen mit allen heruntergeladenen Untertiteln.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add swei99386-alt/video-to-text-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

Konvertiere „gesprochene Wörter“ aus Video/Audio in Text. Hier ist eine bewährte Vorgehensweise, die durch bittere Erfahrung gelernt wurde. Halte dich strikt an die Reihenfolge und mache nicht eigenmächtig einen Bogen um Schritt 0.

Eiserne Regel (Diese ist am wichtigsten, merke sie dir zuerst)

Suche immer zuerst nach „vorhandenen Untertiteln“, und greife nur dann auf „Spracherkennung“ zurück, wenn es wirklich keine gibt. Die meisten seriösen Vorträge, Konferenzen und Podcasts werden auf YouTube hochgeladen, und YouTube hat fast immer Untertitel – mit einem einzigen Befehl in Sekunden heruntergeladen, kostenlos, ohne das gesamte Video herunterladen zu müssen und ohne die Grafikkarte zu belasten. Heute habe ich diesen kurzen Weg nicht genutzt, dummerweise ein 450 MB Video heruntergeladen, eine halbe Stunde mit der CPU transkribiert und dabei jede Menge Fehler produziert. Diese Falle darf nicht noch einmal passieren.

Schritt 0: Wenn du einen Link bekommst, unterscheide zuerst zwei Dinge, dann entscheide über die Reihenfolge

Transkription (den Text dieser Rede bekommen) und Quellenrecherche (wer hat gesprochen, wann wurde das Original gehalten, ist es vollständig) sind zwei verschiedene Paar Schuhe und sollten nicht zusammengeworfen werden. Die alte Methode, blind „Wenn ich X sehe, gehe ich sofort zu YouTube“, ist falsch – X hat oft selbst Untertitel, und der Umweg über YouTube war umsonst.

Transkription: Untersuche immer zuerst den vorliegenden Link, ohne standardmäßig über YouTube zu gehen.

  1. Führe direkt grab.py aus – Das Skript wird zuerst nach den Untertiteln des Links suchen (X hat oft Untertitel in en/es usw.). Wenn es welche findet, ist die Arbeit erledigt. Das ist der schnellste Weg.
  2. Nur in diesen beiden Fällen lohnt sich der Umweg über YouTube, um das Original zu finden:
    • X hat überhaupt keine Untertitel (YouTube hat sie wahrscheinlich);
    • Auf X handelt es sich um einen Ausschnitt – der Text bezieht sich auf ein längeres Video, aber der X-Beitrag ist nur ein oder zwei Minuten lang (das Herunterladen bringt nur einen kleinen Teil; für das gesamte Video muss das Original gefunden werden). Vorgehen: Suche nach „Redner + Thema/Titel + Veranstaltungsname“, um das YouTube-Original zu finden, und verwende es für Schritt 1.

Die Dauer ist der Prüfstein: Überprüfe zuerst mit yt-dlp --no-download --print "%(duration_string)s". Wenn der X-Beitrag ungefähr so lang ist wie im Text behauptet („28 Minuten“ und es sind 27 Minuten) = vollständige Übernahme, einfach herunterladen; wenn er deutlich kürzer ist = Ausschnitt, muss das Original gefunden werden.

Die Quellenrecherche (wer/wann gehalten/vollständig) ist eine separate Sache und wird nur durchgeführt, wenn der Benutzer danach fragt. Sie ist kein notwendiger Schritt für die Transkription. Und höre auf, wenn es ausreicht: Suche so lange, bis du die Informationen zur Beantwortung der Benutzerfrage hast. Jage nicht wiederholt nach präzisen Daten, offiziellen Originalversionen oder anderer Genauigkeit, die der Benutzer nicht verlangt hat (Diese Falle habe ich am 2026-07-22 selbst erlebt).

Schritt 1: Skript mit einem Befehl ausführen (Es entscheidet selbst, ob Untertitel oder Spracherkennung verwendet wird)

python "C:/Users/Administrator/.claude/skills/视频转文字/scripts/grab.py" "<Link oder lokale Datei>" "Ausgabeordnername" [Sprache]

Der dritte Parameter [Sprache] ist optional: Für chinesische Videos zh übergeben (erzwingt chinesische + vereinfachte Ausgabe), für englische en, ohne Angabe automatische Erkennung. Interne Logik des Skripts (fest codiert):

  • Zuerst vorhandene Untertitel extrahieren → bei Erfolg sofort 完整文字稿.txt ausgeben, fertig.
  • Keine Untertitel gefunden → automatisch Audio extrahieren, mit Grafikkarte (GPU) transkribieren (nicht CPU).
  • Die Ausgabe landet einheitlich im Ordner <Ausgabeordnername> auf dem Desktop: 完整文字稿.txt (sauberer Nur-Text) + Original-Untertitel/Subtitle-Dateien.

Melde dem Benutzer nach der Ausführung den Speicherort und die Wortanzahl von 完整文字稿.txt.

Bilibili / Chinesische Websites (Anders als YouTube, separat merken)

  • Herunterladen möglich: Das Download-Tool unterstützt Bilibili (B站) und viele andere chinesische Websites. Das Abrufen von Video/Audio ist kein Problem.
  • Aber der kurze, kostenlose Weg „vorhandene Untertitel extrahieren“ ist so gut wie unmöglich: B站 hat keine maschinellen Untertitel für die gesamte Seite wie YouTube. Nur wenige Uploader haben manuell CC-Untertitel hochgeladen, die extrahiert werden können. Danmaku (Barrage) sind keine Untertitel (Danmaku sind Kommentare, die über den Bildschirm scrollen, kein Text). Extrahiere keine Danmaku.
  • Daher wird bei den meisten B站-Videos direkt die „Grafikkarten-Spracherkennung“ verwendet. Bei chinesischen Videos übergib den dritten Parameter zh:
    python ".../grab.py" "<B站-Link>" "Ausgabeordnername" zh
    
  • Hinweis zur chinesischen Genauigkeit: Derzeit wird das kleine (small) Modell verwendet. Für Chinesisch ist es nur „ungefähr richtig“ und neigt zu Fehlzeichen. Für mehr Genauigkeit müsste auf das mittlere (medium) Modell umgestellt werden (ca. 1,5 GB, einmaliger Download, derzeit nicht installiert). Der Benutzer hat am 2026-07-21 entschieden, „erstmal mit dem kleinen Modell auszukommen“. Für mehr Genauigkeit später medium installieren und im Skript --model small durch medium ersetzen.
  • Anmeldung: Bei B站-Videos, die für Mitglieder exklusiv sind, in hoher Auflösung oder eine Anmeldung erfordern, muss beim Herunterladen ein Cookie des Kontos verwendet werden. Frage zuerst den Benutzer, greife nicht eigenmächtig auf das Konto zu.

Videos, deren Links nicht erfasst werden können (WeChat Video Accounts / kostenpflichtige, verschlüsselte Seiten / alles, was nur auf dem Bildschirm abgespielt werden kann) → Bildschirmton aufnehmen

Das Download-Tool erreicht solche Videos nicht (Video Accounts sind in der App eingeschlossen, kostenpflichtige Seiten sind verschlüsselt). Der einzige universelle Weg: Das Video abspielen und gleichzeitig den aktuell vom Computer ausgegebenen Ton aufnehmen, dann transkribieren. Der Computer ist bereits mit interner Aufnahmefähigkeit ausgestattet (soundcard-Bibliothek, keine Treiber oder Einstellungen erforderlich).

Drei Schritte:

  1. Aufnahme starten (läuft im Hintergrund, bis du sie stoppst):
    python "C:/Users/Administrator/.claude/skills/视频转文字/scripts/record.py" "Ausgabeordnername"
    
  2. Das Video von Anfang bis Ende abspielen (Live-Aufnahme, ein 3-stündiges Video muss 3 Stunden abgespielt werden, Vorspulen nicht möglich).
  3. Den Aufnahmeprozess stoppen (Agent stoppt Hintergrundaufgabe = harter Stopp, das ist in Ordnung), dann die Datei 录音.pcm direkt an grab.py zur Transkription übergeben (es erkennt pcm, bei Chinesisch mit zh):
    python "C:/Users/Administrator/.claude/skills/视频转文字/scripts/grab.py" "<Desktop-Pfad>/<Ordner>/录音.pcm" "<Ordner>" zh
    
  • Die Daten werden während der Aufnahme auf die Festplatte geschrieben. Ein vorzeitiger Abbruch führt nicht zum vollständigen Verlust (pcm bleibt erhalten, keine abschließenden Schritte erforderlich).
  • Wenn du einen Link bekommen kannst, verwende keine Aufnahme: Das Herunterladen dauert Minuten, die Aufnahme erfordert das Warten auf die gesamte Dauer. Bildschirmaufnahme nur für Fälle, in die du wirklich keinen Link bekommst.

Schritt 2: Nur bei Spracherkennung relevante Dinge

  • Muss über die Grafikkarte laufen: Dieser Computer hat eine NVIDIA GTX 1060 (5 GB VRAM). Das Skript wird sie automatisch priorisieren. Sollte das Log eines Tages „CPU“ anzeigen, bedeutet das, dass die GPU-fähige Version von torch wieder durch die CPU-Version ersetzt wurde. Repariere es gemäß dem Abschnitt [Grafikkarten-Grundlage] unten.
  • Sehr lange (> 20 Minuten): Es ist normal, dass es langsam läuft, aber mit Grafikkarte sollte es im Minutenbereich liegen. Wenn es sich wie eine halbe Stunde anfühlt, ist es definitiv auf die CPU zurückgefallen.
  • Spracherkennung ist nie perfekt: Fehler und Auslassungen sind unvermeidlich, es ist nur „ungefähr richtig“. Die Genauigkeit ist geringer als bei nativen Untertiteln. Wenn Untertitel extrahiert werden können, vermeide die Spracherkennung.

Grafikkarten-Grundlage (Wird für Spracherkennung benötigt, bei Problemen hier reparieren)

Die Spracherkennung mit Grafikkarte erfordert, dass die GPU-fähige Version von torch installiert ist. Selbsttest:

C:/Users/Administrator/portable-python311/runtime/python.exe -c "import torch;print(torch.__version__, torch.cuda.is_available())"
  • Zeigt ...+cu126 True = Normal, Grafikkarte funktioniert.
  • Zeigt ...+cpu False = Nur CPU verwendet, Neuinstallation:
C:/Users/Administrator/portable-python311/runtime/python.exe -m pip install --force-reinstall torch==2.11.0 --index-url https://download.pytorch.org/whl/cu126

(Der Treiber CUDA 12.6 → verwende die cu126-Quelle. Diese 5 GB Grafikkarte reicht für Spracherkennung/OCR/mittelgroße Modelle; für große Modelle, die 8 GB VRAM benötigen, ist sie nicht geeignet.)

Nützliche manuelle Befehle (Außerhalb des Skripts, zum Nachschlagen)

  • Nur Untertitelsprachen anzeigen: yt-dlp --no-download --list-subs "<url>"
  • Nur englische Untertitel herunterladen, ohne Video: yt-dlp --skip-download --write-auto-subs --sub-langs "en-orig,en.*" --convert-subs srt -o "%(title)s.%(ext)s" "<url>"
  • Dauer/Veröffentlichungsdatum überprüfen: yt-dlp --no-download --print "%(title)s | %(duration_string)s | %(upload_date)s" "<url>"

Verwandte Skills