watch – Claude sieht sich ein Video vollständig an
Zerlegt ein Video in das, was Claude nativ lesen kann: Bild-Frames (mit dem Read-Tool betrachtet) + ein Transkript (Text). Das Ergebnis ist nicht nur das Verständnis der Worte, sondern auch dessen, was auf dem Bildschirm passiert.
Zweisprachig. Dies ist die englische Version. Ein vollständiges russisches Pendant ist
SKILL.ru.md. Arbeiten Sie in der Sprache, die der Benutzer verwendet; der Workflow und die Befehle sind identisch.
Abhängigkeiten (einmalig über install.sh installiert)
Überprüfen mit: command -v yt-dlp ffmpeg whisper node.
yt-dlp→~/.local/bin/yt-dlp(unter Python 3.12 in~/.local/python312– das System-Python ist normalerweise zu alt; neuere yt-dlp-Versionen benötigen 3.10+);ffmpeg→ vonimageio-ffmpeg, verlinkt nach~/.local/bin/ffmpeg;whisper→openai-whisper(unter dem System-Python; das Modell wird beim ersten Aufruf heruntergeladen);node→~/.local/node(v24) – erforderlich, um YouTube-Schutzmaßnahmen zu umgehen.
Speziell für YouTube richtet install.sh außerdem ein:
- einen PO-Token-Anbieter (
bgutil), erstellt im Skript-Modus unter~/.local/bgutil-pot/server/build/; - eine Node.js-Laufzeitumgebung + eine EJS-Komponente, um die YouTube-n-Challenge zu lösen;
- Cookies von einem eingeloggten YouTube-Konto, unter
~/.config/watch/cookies.txt.
Wenn Cookies veralten (YouTube beginnt erneut zu fragen, „Bestätigen Sie, dass Sie kein Roboter sind“), bitten Sie den Benutzer, cookies.txt mit einer Browser-Erweiterung wie „Get cookies.txt LOCALLY“ erneut zu exportieren und unter ~/.config/watch/cookies.txt abzulegen.
Laden Sie immer über den Wrapper herunter: bash ~/.claude/skills/watch/yt.sh … – er fügt automatisch die richtigen YouTube-Flags hinzu. Für direkte MP4/Loom/Zoom-URLs sind die zusätzlichen Flags unschädlich.
Arbeitsablauf
1. Einrichtung
- Erstellen Sie einen Arbeitsordner:
mkdir -p /tmp/watch/<slug>(slug = ein Kurzname aus der URL/dem Thema). - Analysieren Sie die URL (YouTube/Loom/Zoom-Freigabelink/direkte Videodatei). Eine lokale Datei überspringt die Download-Schritte – arbeiten Sie direkt damit.
2. Transkript – Untertitel zuerst (kostenlos, falls verfügbar)
bash ~/.claude/skills/watch/yt.sh --write-subs --write-auto-subs --sub-langs "en,ru" \
--skip-download --convert-subs srt -o "/tmp/watch/<slug>/subs.%(ext)s" "<URL>"
Wenn eine .srt-Datei erscheint, ist das ein fertiges Transkript mit Zeitstempeln – verwenden Sie es.
3. Video herunterladen (erforderlich sowohl für Frames als auch als Whisper-Fallback)
bash ~/.claude/skills/watch/yt.sh -f "bv*[height<=480]+ba/b[height<=480]/18/best" \
-o "/tmp/watch/<slug>/video.%(ext)s" "<URL>"
Sie erhalten eine .mp4 oder .webm – verwenden Sie von nun an den tatsächlichen Dateinamen (video.*).
Falls keine Untertitel vorhanden waren, transkribieren Sie das Audio mit Whisper (Modell small; base ist für einen schnellen Test schneller):
whisper "/tmp/watch/<slug>/video.webm" --model small --language en \
--output_format srt --output_dir "/tmp/watch/<slug>/"
Der erste Durchlauf lädt das Modell herunter (~460 MB für small) – das ist normal und einmalig.
Entfernen Sie --language en für nicht-englische Audiodateien oder setzen Sie den richtigen Sprachcode. Whisper ist langsam: Ein 34-minütiger Clip dauert mehrere Minuten – führen Sie ihn im Hintergrund aus.
4. Frames DURCH SZENENWECHSEL (der entscheidende Schritt – nicht zeitgesteuert)
ffmpeg -i "/tmp/watch/<slug>/video.webm" -vf "select='gt(scene,0.3)',showinfo" \
-vsync vfr "/tmp/watch/<slug>/frames/frame_%04d.png" 2> "/tmp/watch/<slug>/scenes.log"
- Schwellenwert
0.3– anpassen0.2–0.4für die Szenendichte (ein niedrigerer Schwellenwert = mehr Frames). - Ermitteln Sie den Zeitstempel jedes Frames aus dem showinfo-Log (
pts_time) inscenes.log. - Wenn es zu viele Frames gibt (bei einem langen Video), behalten Sie etwa 60–150 der informativsten Frames und entfernen Sie Frames, die zeitlich nahe beieinander liegen. Das Dekodieren eines langen Videos dauert eine Weile – führen Sie es im Hintergrund aus.
FALLBACK – falls es zu wenige Szenen gibt (0–2 Frames). Glattes, ungeschnittenes Material (eine durchgehende Einstellung, eine Drohnenaufnahme, ein sprechender Kopf) erzeugt wenige Szenenwechsel. In diesem Fall in einem festen Intervall sampeln:
ffmpeg -i "/tmp/watch/<slug>/video.webm" -vf "fps=1/5,scale=960:-1,showinfo" \
-vsync vfr "/tmp/watch/<slug>/frames/frame_%04d.png" 2> "/tmp/watch/<slug>/scenes.log"
Passen Sie das Intervall (1/5 = ein Frame alle 5s) an die Videolänge an, sodass Sie bei etwa ~150 Frames bleiben. Der Zeitstempel des i-ten Frames = i × Intervall.
4a. YouTube: Warum alles über yt.sh läuft
YouTube (2025+) erfordert alle drei der folgenden Punkte gleichzeitig, sonst erhalten Sie HTTP 403 / „Kein Roboter“ / „nur Bilder“:
- Cookies von einem eingeloggten Konto (
~/.config/watch/cookies.txt); - ein PO-Token (Proof-of-Origin) – lokal generiert durch
bgutil(Skript-Modus, Node); - Lösung der n-Challenge – eine Node-Laufzeitumgebung + eine EJS-Komponente (
--remote-components ejs:github). All dies ist bereits inyt.sheingebaut – rufen Sie es einfach auf. Direkte MP4/Loom/Zoom-Quellen haben diese Schutzmaßnahmen nicht. Wenn erneut nach „Bestätigen Sie, dass Sie kein Roboter sind“ gefragt wird, sind die Cookies abgelaufen – fordern Sie ein frischescookies.txtan.
5. Analyse
- Lesen Sie das Transkript (
.srt). - Betrachten Sie die extrahierten Frames (Vision, über das Read-Tool): Folien, Code, Demos, Grafiken.
- Verknüpfen Sie die visuellen Informationen mit dem Transkript anhand der Zeitstempel.
6. Bericht
Liefern:
- einen TL;DR (3–5 Zeilen);
- Schlüsselkonzepte mit Zeitstempeln;
- was auf dem BILDSCHIRM zu sehen ist, das nicht im Text steht (Diagramme, Benutzeroberflächen, Demos);
- bemerkenswerte Momente / Zitate mit Zeitstempeln.
7. In einer Wissensdatenbank speichern (vorher fragen)
Fragen: „Diese Aufschlüsselung in Ihrer Wissensdatenbank (Obsidian) speichern?“ Wenn ja, schreiben Sie eine Markdown-Notiz in den richtigen Ordner mit Links zu verwandten Notizen. Nicht ohne Bestätigung speichern.
Regeln
- Arbeitsdateien werden in einen temporären Ordner
/tmp/watch/<slug>abgelegt – das Projekt nicht überladen. - Veröffentlichen oder versenden Sie nichts ohne ausdrückliche Aufforderung nach außen.
- Umgehen Sie kein login-geschütztes privates Video – informieren Sie stattdessen den Benutzer.