Communitygithub.com

browser-use/video-use

Jedes Video per Gespräch bearbeiten. Transkribieren, schneiden, color gradieren, Overlay-Animationen generieren, Untertitel einbrennen – für Sprecherköpfe, Montagen, Tutorials, Reisen, Interviews. Keine Presets, keine Menüs. Fragen stellen, den Plan bestätigen, ausführen, iterieren, speichern.

Was ist video-use?

Dieses Skill ermöglicht die künstlergesteuerte Videobearbeitung allein durch natürliche Sprachdialoge. Es wurde entwickelt, um professionelle, produktionsreife Videos zu erstellen, ohne auf traditionelle Schnittprogramme angewiesen zu sein. Der Prozess beginnt mit dem Transkribieren des Rohmaterials, gefolgt von einem Gespräch, in dem das LLM den Inhalt analysiert und einen Schnittplan vorschlägt. Der Benutzer bestätigt den Plan, woraufhin das Skill Segmente extrahiert, Untertitel generiert, Farbkorrekturen vornimmt und Animationen wie Split-Screen oder Lower Thirds einfügt – alles mit ffmpeg und Python. Es unterstützt verschiedene Videotypen wie Tutorials, Interviews oder Reisevideos und legt großen Wert auf künstlerische Freiheit. Der Workflow folgt einem klaren „Fragen → Bestätigen → Ausführen → Iterieren → Speichern“-Muster, und die Ausgabe wird vor der Präsentation automatisch auf Fehler wie falsche Untertitelplatzierung oder Audioprobleme überprüft. Das Skill ist für Claude Code und ähnliche KI-Agenten-Plattformen optimiert und nutzt parallele Unter-Agenten für Animationen, um die Bearbeitungszeit zu verkürzen.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add browser-use/video-use

In Ihrer bevorzugten KI fragen

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

Dokumentation

Video Use

Prinzip

  1. Das LLM denkt vom rohen Transkript + bedarfsgesteuerten visuellen Elementen aus. Das einzige abgeleitete Artefakt, das sich lohnt, ist ein gepacktes Transkript auf Phrasenebene (takes_packed.md). Alles andere – Füllwort-Tagging, Retake-Erkennung, Shot-Klassifizierung, Betonungsbewertung – leitest du zum Entscheidungszeitpunkt ab.
  2. Audio ist primär, Bilder folgen. Schnittkandidaten ergeben sich aus Sprachgrenzen und Stillelücken. Tauche nur an Entscheidungspunkten in die visuelle Ebene ein.
  3. Fragen → Bestätigen → Ausführen → Iterieren → Speichern. Berühre den Schnitt erst, wenn der Benutzer die Strategie in einfachem Englisch bestätigt hat.
  4. Verallgemeinere. Gehe nicht von einem bestimmten Videotyp aus. Sieh dir das Material an, frage den Benutzer und bearbeite dann.
  5. Künstlerische Freiheit ist der Standard. Jeder spezifische Wert, jedes Preset, jede Schriftart, Farbe, Dauer, Tonhöhenstruktur und Technik in diesem Dokument ist ein ausgearbeitetes Beispiel aus einem bewährten Video – kein Muss. Lies sie, um zu verstehen, was möglich ist und warum jedes funktioniert hat. Triff dann deine eigenen Geschmacksentscheidungen basierend darauf, was das Material tatsächlich ist und was der Benutzer wirklich will. Das Einzige, was du TUN MUSST, steht im Abschnitt „Harte Regeln“ unten. Alles andere ist deine Sache.
  6. Erfinde frei. Wenn das Material eine hier nicht beschriebene Technik erfordert – geteilter Bildschirm, Bild-in-Bild, Lower-Third-Identitätskarten, Reaktionsschnitte, Geschwindigkeitsrampen, eingefrorene Frames, Überblendungen, Match Cuts, L-Cuts, J-Cuts, Geschwindigkeitsrampen über Atemzüge hinweg, was auch immer – baue sie ein. Die Helfer sind ffmpeg und PIL. Sie können alles, was das Format unterstützt. Warte nicht um Erlaubnis.
  7. Überprüfe deine eigene Ausgabe, bevor du sie dem Benutzer zeigst. Wenn du sie nicht ausliefern würdest, zeige sie nicht.

Harte Regeln (Produktionskorrektheit – nicht verhandelbar)

Dies sind die Dinge, bei denen Abweichungen zu stillen Fehlern oder defekter Ausgabe führen. Sie sind kein Geschmack, sondern Korrektheit. Merke sie dir.

  1. Untertitel werden als LETZTES in der Filterkette angewendet, nach jedem Overlay. Sonst verstecken Overlays die Untertitel. Stiller Fehler.
  2. Extraktion pro Segment → verlustfreies -c copy Concat, kein Single-Pass-Filtergraph. Sonst kodierst du jedes Segment doppelt, wenn Overlays hinzugefügt werden.
  3. 30 ms Audio-Fades an jeder Segmentgrenze (afade=t=in:st=0:d=0.03,afade=t=out:st={dur-0.03}:d=0.03). Sonst hörbare Knackser an jedem Schnitt.
  4. Overlays verwenden setpts=PTS-STARTPTS+T/TB, um Frame 0 des Overlays an seinen Fensterstart zu verschieben. Sonst siehst du die Mitte der Animation während des Overlay-Fensters.
  5. Master-SRT verwendet Ausgabe-Timeline-Offsets: output_time = word.start - segment_start + segment_offset. Sonst sind Untertitel nach dem Segment-Concat verschoben.
  6. Schneide niemals innerhalb eines Wortes. Setze jede Schnittkante auf eine Wortgrenze aus dem Scribe-Transkript.
  7. Polstere jede Schnittkante. Arbeitsfenster: 30–200 ms. Scribe-Zeitstempel driften 50–100 ms – die Polsterung absorbiert die Drift. Enger bei schnellem Tempo, lockerer bei filmischen Aufnahmen.
  8. Nur wortgenaue ASR. Niemals SRT-/Phrasenmodus (verliert Sub-Sekunden-Lückendaten). Niemals normalisierte Füllwörter (verliert redaktionelles Signal).
  9. Cache Transkripte pro Quelle. Transkribiere nie erneut, es sei denn, die Quelldatei selbst hat sich geändert.
  10. Parallele Unter-Agenten für mehrere Animationen. Niemals sequentiell. Starte N gleichzeitig über das Agent-Tool; die Gesamtdauer entspricht ≈ der langsamsten.
  11. Strategiebestätigung vor der Ausführung. Berühre den Schnitt erst, wenn der Benutzer den Plan in einfachem Englisch genehmigt hat.
  12. Alle Sitzungsausgaben in <videos_dir>/edit/. Schreibe niemals in das video-use/-Projektverzeichnis.

Alles andere in diesem Dokument ist ein ausgearbeitetes Beispiel. Weiche ab, wann immer das Material es erfordert.

Verzeichnisstruktur

Das Skill lebt in video-use/. Das Benutzermaterial befindet sich, wo immer der Benutzer es abgelegt hat. Alle Sitzungsausgaben gehen nach <videos_dir>/edit/.

<videos_dir>/
├── <Quelldateien, unberührt>
└── edit/
    ├── project.md              ← Gedächtnis; wird jede Sitzung angehängt
    ├── takes_packed.md          ← Transkripte auf Phrasenebene, die primäre Leseansicht des LLM
    ├── edl.json                 ← Schnittentscheidungen
    ├── transcripts/<name>.json  ← gecachtes rohes Scribe-JSON
    ├── animations/slot_<id>/    ← Quelle + Render + Begründung pro Animation
    ├── clips_graded/            ← Extrakte pro Segment mit Grading + Fades
    ├── master.srt               ← Untertitel der Ausgabe-Timeline
    ├── downloads/               ← yt-dlp-Ausgaben
    ├── verify/                  ← Debug-Frames / Timeline-PNGs
    ├── preview.mp4
    └── final.mp4

Einrichtung

Die Ersteinrichtung befindet sich in install.md (Klonen, Abhängigkeiten, ffmpeg, Skill-Registrierung, API-Key). Führe es nicht jede Sitzung erneut aus; überprüfe bei kaltem Start nur:

  • ELEVENLABS_API_KEY ist vorhanden – entweder in der Umgebung oder in .env im Stammverzeichnis des video-use-Repositorys. Wenn er fehlt, bitte den Benutzer, einen einzufügen, und schreibe ihn in .env (niemals in das <videos_dir> des Benutzers).
  • ffmpeg + ffprobe im PATH.
  • Python-Abhängigkeiten installiert (uv sync oder pip install -e . innerhalb des Repositorys).
  • Node.js + npm verfügbar, wenn die Sitzung HyperFrames- oder Remotion-Slots benötigt. HyperFrames erfordert derzeit Node.js 22+.
  • yt-dlp, HyperFrames, Remotion, Manim werden nur bei der ersten Verwendung installiert.
  • Die Ersteinrichtung von Animationen erfolgt innerhalb des Slot-Verzeichnisses, niemals im Stammverzeichnis des video-use-Repositorys. HyperFrames kann mit npx --yes hyperframes ... aufgerufen werden; Remotion kann mit npx create-video@latest eingerüstet oder als projektlokale Abhängigkeit installiert werden, bevor der Befehl remotion render verwendet wird.
  • Dieses Skill enthält skills/manim-video/. Lies seine SKILL.md beim Erstellen eines Manim-Slots.

Helfer (helpers/transcribe.py, helpers/render.py usw.) befinden sich neben dieser SKILL.md. Löse ihre Pfade relativ zum Verzeichnis auf, das diese Datei enthält – das Skill ist normalerweise unter ~/.claude/skills/video-use/ oder ~/.codex/skills/video-use/ symbolisch verlinkt.

Helfer

  • transcribe.py <video> – Single-File-Scribe-Aufruf. --num-speakers N optional. Gecached.
  • transcribe_batch.py <videos_dir> – Parallele Transkription mit 4 Workern. Verwende für mehrere Takes.
  • pack_transcripts.py --edit-dir <dir> – transcripts/*.json → takes_packed.md (Phrasenebene, Unterbrechung bei Stille ≥ 0,5 s).
  • timeline_view.py <video> <start> <end> – Filmstreifen + Wellenform-PNG. Bedarfsgesteuerter visueller Drill-Down. Kein Scan-Tool – verwende es an Entscheidungspunkten, nicht ständig.
  • render.py <edl.json> -o <out> – Extraktion pro Segment → Concat → Overlays (PTS-verschoben) → Untertitel als LETZTES. --preview für schnelles 720p. --build-subtitles zum Erstellen von master.srt inline.
  • grade.py <in> -o <out> – ffmpeg-Filterketten-Grading. Presets + --filter '<raw>' für benutzerdefiniert.

Erstelle für Animationen <edit>/animations/slot_<id>/ mit Bash und starte einen Unter-Agenten über das Agent-Tool.

Der Prozess

  1. Inventur. ffprobe für jede Quelle. transcribe_batch.py auf dem Verzeichnis. pack_transcripts.py, um takes_packed.md zu erstellen. Betrachte ein oder zwei timeline_views für einen ersten visuellen Eindruck.

  2. Vorab-Scan auf Probleme. Ein Durchgang durch takes_packed.md, um verbale Ausrutscher, offensichtliche Versprecher oder zu vermeidende Formulierungen zu notieren. Einfache Liste, die in das Redakteurs-Briefing einfließt.

  3. Gespräch. Beschreibe, was du siehst, in einfachem Englisch. Stelle durch das Material geprägte Fragen. Sammle: Inhaltstyp, Ziellänge/Seitenverhältnis, ästhetische/Marken-Richtung, Tempogefühl, unbedingt zu erhaltende Momente, unbedingt zu schneidende Momente, Animations- und Grading-Präferenzen, Untertitel-Bedarf. Verwende keine feste Checkliste – die richtigen Fragen sind jedes Mal anders.

  4. Strategie vorschlagen. 4–8 Sätze: Form, Take-Auswahl, Schnittrichtung, Animationsplan, Grading-Richtung, Untertitel-Stil, Längenschätzung. Warte auf Bestätigung.

  5. Ausführen. Erstelle edl.json über das Redakteurs-Unter-Agenten-Briefing. Tauche bei mehrdeutigen Momenten in timeline_view ein. Baue Animationen in parallelen Unter-Agenten. Wende Grading pro Segment an. Komponiere über render.py.

  6. Vorschau. render.py --preview.

  7. Selbstbewertung (bevor du es dem Benutzer zeigst). Führe timeline_view auf dem gerenderten Output (nicht den Quellen) an jeder Schnittgrenze aus (±1,5 s Fenster). Überprüfe jedes Bild auf:

    • Visuelle Diskontinuität / Blitz / Sprung am Schnitt
    • Wellenform-Spitze an der Grenze (Audio-Knackser, der den 30-ms-Fade umgangen hat)
    • Untertitel, die hinter einem Overlay versteckt sind (Regel-1-Verstoß)
    • Overlay falsch ausgerichtet oder mit falschen Frames (Regel-4-Verstoß)

    Stichprobe auch: erste 2 s, letzte 2 s und 2–3 Mittelpunkte – überprüfe Grading-Konsistenz, Untertitellesbarkeit, Gesamtkohärenz. Führe ffprobe auf dem Output aus, um zu überprüfen, ob die Dauer der EDL-Erwartung entspricht.

    Miss das Audio, nimm es nicht an: ffmpeg -i out.mp4 -af ebur128=peak=true -f null - für integrierte Lautstärke und True Peak, plus RMS pro Abschnitt (Dialog, nur Musik, Endkarte). Eine Endkarte, die 15 dB unter dem Dialog liegt, oder Effekte, die lauter als Sprache sind, ist ein Fehler. Du kannst nicht zuhören: Sag es und melde die Zahlen.

    Für alles, was der Benutzer veröffentlichen wird (Launch, Promo, Anzeige), starte auch einen Kritik-Unter-Agenten mit der gerenderten Datei, der EDL und allen Referenzvideos, die der Benutzer gegeben hat. Weise ihn an zu kritisieren, nicht zu loben: ein Urteil, Probleme mit Zeitcodes und Beweisen (Frames, Pegel), und die 5 zuerst zu behebenden Probleme. Neue Augen sehen, was der Autor nicht mehr sieht – abgeschnittene Pointe, 0,5 s langweilige Momente, unlesbarer 28px-Text in Telefongröße.

    Wenn etwas fehlschlägt: beheben → neu rendern → neu bewerten. Begrenze auf 3 Selbstbewertungsdurchgänge – wenn nach 3 Durchgängen noch Probleme bestehen, melde sie dem Benutzer, anstatt in einer Endlosschleife zu hängen. Zeige die Vorschau erst, wenn die Selbstbewertung bestanden ist.

  8. Iterieren + Speichern. Feedback in natürlicher Sprache, Neuplanung, Neu-Rendering. Nie erneut transkribieren. Finales Rendern nach Bestätigung. An project.md anhängen.

Schnitt-Handwerk (Techniken)

  • Audio zuerst. Kandidatenschnitte aus Wortgrenzen und Stillelücken.
  • Bewahre Höhepunkte. Lachen, Pointen, Betonungsbeats. Erstrecke dich über Pointen hinaus, um Reaktionen einzuschließen – das Lachen IST der Beat.
  • Sprecherwechsel profitieren von Luft zwischen den Äußerungen. Übliche Werte: 400–600 ms. Weniger bei schnellem Tempo, mehr bei filmischen Aufnahmen. Geschmacksentscheidung.
  • Audio-ereignisse als Signale. (lacht), (seufzt), (Applaus) markieren Beats. Erstrecke dich über sie hinaus.
  • Stillelücken sind Schnittkandidaten. Stille ≥ 400 ms ist normalerweise die sauberste. 150–400 ms Phrasengrenzen sind mit einer visuellen Prüfung brauchbar. <150 ms ist unsicher (mitten in der Phrase).
  • Beispiel für Schnittpolsterung (das mit diesem Skill ausgelieferte Launch-Video): 50 ms vor dem ersten beibehaltenen Wort, 80 ms nach dem letzten. Enger für Montage-Energie, lockerer für Dokumentationen. Bleibe im Arbeitsfenster von 30–200 ms (Harte Regel 7).
  • Behandle Audio und Video niemals unabhängig voneinander. Jeder Schnitt muss auf beiden Spuren funktionieren.

Das gepackte Transkript (primäre Leseansicht)

pack_transcripts.py liest alle transcripts/*.json und erzeugt eine Markdown-Datei, in der jeder Take eine Liste von Zeilen auf Phrasenebene ist, jede mit ihrem [Start-Ende]-Zeitbereich versehen. Phrasen werden bei Stille ≥ 0,5 s ODER Sprecherwechsel unterbrochen. Dies ist das Artefakt, das der Redakteurs-Unter-Agent zum Auswählen von Schnitten liest – es bietet Wortgrenzen-Präzision allein aus Text bei 1/10 der Token des rohen JSONs.

Beispielzeile:

## C0103  (Dauer: 43,0 s, 8 Phrasen)
  [002.52-005.36] S0 Neunzig Prozent dessen, was ein Webagent tut, ist völlig verschwendet.
  [006.08-006.74] S0 Wir haben das behoben.

Redakteurs-Unter-Agenten-Briefing (für Multi-Take-Auswahl)

Wenn die Aufgabe lautet: „Wähle den besten Take jedes Beats aus vielen Clips aus“, starte einen dedizierten Unter-Agenten mit einem so geformten Briefing. Die Struktur ist tragend; das Tonhöhen-Beispiel ist es nicht.

Du bearbeitest ein <Typ>-Video. Wähle den besten Take jedes Beats aus und
ordne sie chronologisch nach Beat, nicht nach Quellclip-Reihenfolge.

EINGABEN:
  - takes_packed.md (zeitannotierte Transkripte auf Phrasenebene aller Takes)
  - Produkt-/Erzählkontext: <2 Sätze vom Benutzer>
  - Sprecher: <Name, Rolle, Hinweis zum Vortragsstil>
  - Erwartete Struktur: <wähle einen Archetyp oder erfinde einen>
  - Zu vermeidende verbale Ausrutscher: <Liste aus dem Vorab-Scan-Durchgang>
  - Ziellaufzeit: <Sekunden>

Häufige strukturelle Archetypen (wähle, passe an oder erfinde):
  - Tech-Launch / Demo:   HOOK → PROBLEM → LÖSUNG → NUTZEN → BEISPIEL → CTA
  - Tutorium:             EINFÜHRUNG → EINRICHTUNG → SCHRITTE → HÄKEN → ZUSAMMENFASSUNG
  - Interview:            (FRAGE → ANTWORT → NACHRAGE) wiederholen
  - Reise / Event:        ANKUNFT → HIGHLIGHTS → RUHIGE MOMENTE → ABREISE
  - Dokumentation:        THESE → BEWEISE → GEGENARGUMENT → FAZIT
  - Musik / Performance:  INTRO → STROPHE → REFRAIN → BRÜCKE → OUTRO
  - Oder erfinde deine eigene.

REGELN:
  - Start-/Endzeiten müssen auf Wortgrenzen aus dem Transkript fallen.
  - Polstere Schnittgrenzen (Arbeitsfenster 30–200 ms).
  - Bevorzuge Stille ≥ 400 ms als Schnittziele.
  - Unvermeidbare Ausrutscher werden behalten, wenn kein besserer Take existiert. Notiere sie in „reason“.
  - Wenn das Budget überschritten wird, überarbeite: lasse einen Beat weg oder trimme Enden. Melde die Gesamtzeit und korrigiere dich selbst.

AUSGABE (JSON-Array, kein Prosa):
  [{"source": "C0103", "start": 2.42, "end": 6.85, "beat": "HOOK",
    "quote": "...", "reason": "..."}, ...]

Gib die endgültige EDL und eine einzeilige Überprüfung der Gesamtlaufzeit zurück.

Farbgrading (auf Anfrage)

Deine Aufgabe ist es, über das Bild nachzudenken, nicht ein Preset anzuwenden. Betrachte einen Frame (über timeline_view), entscheide, was falsch ist, passe eine Sache an, betrachte erneut.

Das mentale Modell ist ASC CDL. Pro Kanal: out = (in * slope + offset) ** power, dann globale Sättigung. slope → Lichter, offset → Schatten, power → Mitteltöne.

Beispiel-Filterketten (grade.py hat --list-presets; verwende sie als Ausgangspunkte oder mische deine eigenen):

  • warm_cinematic – Retro/technisch, subtile Teal/Orange-Aufteilung, entsättigt. In einem echten Launch-Video ausgeliefert. Sicher für Sprecherköpfe.
  • neutral_punch – minimal korrigierend: Kontrastanstieg + sanfte S-Kurve. Keine Farbtonverschiebungen.
  • none – direkte Kopie. Standard, wenn der Benutzer nichts angefordert hat.

Für alles andere – Porträt, Natur, Produkt, Musikvideo, Dokumentation – erfinde deine eigene Kette. grade.py --filter '<roher ffmpeg>' akzeptiert jeden Filterstring.

Harte Regeln: Wende während der Extraktion pro Segment an (nicht nach dem Concat, das zweimal neu kodiert). Geh niemals aggressiv vor, ohne Hauttöne zu testen.

Untertitel (auf Anfrage)

Untertitel haben drei Dimensionen, über die es sich nachzudenken lohnt: Aufteilung (1/…

(Hinweis: Der Originaltext war an dieser Stelle abgeschnitten / „truncated for translation“. Für eine vollständige Übersetzung wäre der restliche Inhalt des SKILL.md erforderlich. Die Übersetzung endet hier, wie angefordert.)

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills