CommunityCodierung & Entwicklunggithub.com

akimov121-hub/watch

Sieht sich jedes Video anhand einer URL an (YouTube, Loom, Zoom-Aufnahme, direktes MP4) – nicht nur das Transkript, sondern auch das, was tatsächlich auf dem Bildschirm zu sehen ist. Frames werden durch Szenenwechsel erkannt (ffmpeg scene detection), nicht zeitgesteuert, damit keine Grafiken, Demos, Schnitte oder B-Roll verpasst werden. Audio: Untertitel zuerst über yt-dlp, Whisper als Fallback.

Was ist watch?

Dieses Skill ermöglicht es Claude, Videos vollständig zu analysieren, indem es sowohl den visuellen Inhalt (Bildschirmaufnahmen) als auch das gesprochene Wort erfasst. Es unterstützt verschiedene Videoquellen wie YouTube, Loom, Zoom-Aufnahmen und direkte MP4-Dateien. Der entscheidende Vorteil gegenüber einfachen Transkriptionen ist die Framerfassung per Szenenerkennung: Statt nur in festen Zeitabständen Bilder aufzunehmen, erkennt das Skill mit ffmpeg tatsächliche Szenenwechsel und liefert so genau die relevanten visuellen Informationen – Grafiken, Code-Schnipsel, Demos oder UI-Elemente, die im Transkript fehlen. Das Skill arbeitet zweisprachig (Englisch und Russisch) und ist für Claude Code sowie ähnliche KI-Agenten konzipiert, die über das Read-Tool auf Bilder und Text zugreifen können. Die Einrichtung erfolgt über ein Installationsskript, das alle Abhängigkeiten (yt-dlp, ffmpeg, Whisper, Node.js) sowie YouTube-spezifische Schutzmechanismen wie Cookies, PO-Token und n-Challenge-Lösung automatisch konfiguriert.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/akimov121-hub/watch/tree/main

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

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 → von imageio-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 – anpassen 0.2–0.4 für die Szenendichte (ein niedrigerer Schwellenwert = mehr Frames).
  • Ermitteln Sie den Zeitstempel jedes Frames aus dem showinfo-Log (pts_time) in scenes.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“:

  1. Cookies von einem eingeloggten Konto (~/.config/watch/cookies.txt);
  2. ein PO-Token (Proof-of-Origin) – lokal generiert durch bgutil (Skript-Modus, Node);
  3. Lösung der n-Challenge – eine Node-Laufzeitumgebung + eine EJS-Komponente (--remote-components ejs:github). All dies ist bereits in yt.sh eingebaut – 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 frisches cookies.txt an.

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.

Verwandte Skills