CommunityCodierung & Entwicklunggithub.com

findbene/skills

Agent-Fähigkeit für Videobearbeitung – erstellt aus Rohmaterial mit Transkription, Schnitt, Animationen und Untertiteln final bearbeitete Videoclips.

Was ist skills?

Diese Agent-Fähigkeit namens „Video Use“ ermöglicht es einem KI-Agenten (wie Claude Code), professionelle Videobearbeitung durchzuführen. Der Prozess beginnt mit der Transkription des Audiomaterials und der Erstellung eines dichten, phrasenbasierten Transkripts. Darauf basierend wählt der Agent die besten Takes aus, plant die Schnittstrategie (z. B. Hook → Problem → Lösung) und erstellt einen EDL (Edit Decision List). Die tatsächliche Videobearbeitung erfolgt mithilfe von ffmpeg und Python-Skripten – mit Overlays, Animationen (via Manim oder Remotion in parallelen Sub-Agenten), Grading und Untertiteln, die als letztes in der Filterkette angewendet werden. Harte Regeln stellen sicher, dass keine Stillen Fehler (z. B. Untertitel hinter Overlays, Audiopops an Schnittkanten) entstehen. Die Fähigkeit unterstützt beliebige Videoformate (Tutorials, Demos, Interviews usw.) und erfordert die Bestätigung des Benutzers vor der Ausführung. Das Ergebnis ist eine qualitativ geprüfte, final exportierte MP4-Datei im Ausgabeverzeichnis.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add findbene/skills

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

Video Use

Grundsatz

  1. LLM denkt aus rohem Transkript + visuellen Elementen bei Bedarf. Das einzige abgeleitete Artefakt, das seinen Platz verdient, ist ein dichtes phrasenbasiertes Transkript (takes_packed.md). Alles andere – Füllwörter-Tagging, Retake-Erkennung, Shot-Klassifizierung, Betonungsbewertung – leitest Du zum Entscheidungszeitpunkt ab. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  2. Audio ist primär, Visuelles folgt. Schnittkandidaten stammen von Sprachgrenzen und Stillelücken. Tauche nur an Entscheidungspunkten ins Visuelle ein. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  3. Fragen → Bestätigen → Ausführen → Iterieren → Speichern. Rühre den Schnitt nicht an, bis der Benutzer die Strategie in einfachem Englisch bestätigt hat.
  4. Verallgemeinern. Gehe nicht von einer bestimmten Videoart aus. Schaue Dir das Material an, frage den Benutzer und editiere dann. → Überprüfen: Diff entspricht gewünschter Änderung.
  5. Künstlerische Freiheit ist der Standard. Jeder spezifische Wert, Preset, Schriftart, Farbe, Dauer, Tonhöhenstruktur und Technik in diesem Dokument ist ein ausgearbeitetes Beispiel aus einem bewährten Video – keine Vorschrift. Lies sie, um zu verstehen, was möglich ist und warum jedes funktioniert hat. Triff dann Deine eigenen geschmacklichen Entscheidungen basierend auf dem, was das Material tatsächlich ist und was der Benutzer tatsächlich will. Die einzigen Dinge, die Du UNBEDINGT tun musst, stehen im Abschnitt Harte Regeln. Alles andere liegt bei Dir. → Überprüfen: Datei-Inhalt entspricht erwarteter Struktur.
  6. Erfinde frei. Wenn das Material eine hier nicht beschriebene Technik erfordert – Split-Screen, Bild-im-Bild, Identitätskarten im unteren Drittel, Reaktionsschnitte, Speed Ramps, Standbilder, Überblendungen, Match Cuts, L-Cuts, J-Cuts, Speed Ramps über Atem, was auch immer – baue sie ein. Die Helfer sind ffmpeg und PIL. Sie können alles tun, was das Format unterstützt. Warte nicht auf Erlaubnis. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  7. Überprüfe Deine eigene Ausgabe, bevor Du sie dem Benutzer zeigst. Wenn Du es nicht ausliefern würdest, zeige es nicht.

Harte Regeln (Produktionskorrektheit – nicht verhandelbar)

Dies sind die Dinge, bei denen Abweichungen zu stillen Fehlern oder fehlerhaften Ausgaben führen. Sie sind kein Geschmack, sondern Korrektheit. Merke sie Dir.

  1. Untertitel werden ZULETZT in der Filterkette angewendet, nach jedem Overlay. Sonst verstecken Overlays die Untertitel. Stiller Fehler. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  2. Segmentweises Extrahieren → verlustfreies -c copy-Konkatenieren, nicht Single-Pass-Filtergraph. Sonst kodiert man jedes Segment doppelt, wenn Overlays hinzugefügt werden.
  3. 30ms 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. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  4. Overlays verwenden setpts=PTS-STARTPTS+T/TB, um das Frame 0 des Overlays auf seinen Fensterstart zu verschieben. Sonst siehst Du die Mitte der Animation während des Overlay-Fensters. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  5. Master-SRT verwendet Ausgabe-Zeitachsen-Offsets: output_time = word.start - segment_start + segment_offset. Sonst sind Untertitel nach dem Segment-Konkat verschoben. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  6. Schneide niemals innerhalb eines Wortes. Raste jeden Schnittrand auf eine Wortgrenze aus dem Scribe-Transkript ein. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  7. Polstere jeden Schnittrand. Arbeitsfenster: 30–200 ms. Scribe-Zeitstempel driften 50–100 ms – Polsterung absorbiert die Drift. Enger für temporeiche, lockerer für filmische Schnitte. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  8. Nur wortgenaue ASR (wörtlich). Niemals SRT-/Phrasen-Modus (verliert Sub-Sekunden-Lückendaten). Niemals normalisierte Füllwörter (verliert redaktionelles Signal). → Überprüfen: Diff entspricht gewünschter Änderung.
  9. Cache Transkripte pro Quelle. Niemals neu transkribieren, es sei denn, die Quelldatei selbst hat sich geändert. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  10. Parallele Sub-Agenten für mehrere Animationen. Niemals sequentiell. Spawne N auf einmal über das Agent-Tool; die Gesamtzeit ≈ die langsamste Animation. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  11. Strategiebestätigung vor der Ausführung. Rühre den Schnitt nicht an, bis der Benutzer den Plan in einfachem Englisch genehmigt hat. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.
  12. Alle Sitzungsausgaben in <videos_dir>/edit/. Niemals innerhalb des video-use/-Projektverzeichnisses schreiben. → Überprüfen: Ausgabe existiert + fehlerfreies Parsen.

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

Verzeichnislayout

Die Fähigkeit lebt in video-use/. Das Benutzermaterial liegt dort, wo der Benutzer es ablegt. Alle Sitzungsausgaben gehen nach <videos_dir>/edit/.

<videos_dir>/
├── <Quelldateien, unberührt>
└── edit/
    ├── project.md              ← Gedächtnis; wird bei jeder Sitzung ergänzt
    ├── takes_packed.md         ← phrasenbasierte Transkripte, primäre Leseansicht des LLMs
    ├── edl.json                ← Schnittentscheidungen
    ├── transcripts/<name>.json ← gecachtes rohes Scribe-JSON
    ├── animations/slot_<id>/   ← Quellen + Render + Begründung pro Animation
    ├── clips_graded/           ← segmentweise Extrakte mit Grading + Fades
    ├── master.srt              ← Untertitel auf Ausgabe-Zeitachse
    ├── downloads/              ← yt-dlp-Ausgaben
    ├── verify/                 ← Debug-Frames / Timeline-PNGs
    ├── preview.mp4
    └── final.mp4

Einrichtung

  • ELEVENLABS_API_KEY in .env im Projektstamm oder als Umgebungsvariable. Frage und schreibe .env, falls fehlend.
  • ffmpeg + ffprobe im PATH.
  • Python-Abhängigkeiten: pip install -e ..
  • yt-dlp, manim, Remotion werden nur bei erster Nutzung installiert.
  • Diese Fähigkeit enthält skills/manim-video/. Lese dessen SKILL.md, wenn Du einen Manim-Slot baust.

Helfer

  • transcribe.py <video> – einzelner Scribe-Aufruf. --num-speakers N optional. Gecached.
  • transcribe_batch.py <videos_dir> – parallele Transkription mit 4 Workern. Für mehrere Takes.
  • pack_transcripts.py --edit-dir <dir> – transcripts/*.json → takes_packed.md (phrasenbasiert, Bruch bei Stille ≥ 0,5 s).
  • timeline_view.py <video> <start> <end> – Filmstreifen + Wellenform-PNG. Bei Bedarf visuelles Detail. Kein Scan-Tool – verwende es an Entscheidungspunkten, nicht ständig.
  • render.py <edl.json> -o <out> – segmentweise Extraktion → Konkatenation → Overlays (PTS-verschoben) → Untertitel ZULETZT. --preview für schnelles 720p. --build-subtitles zum Erzeugen von master.srt inline.
  • grade.py <in> -o <out> – ffmpeg-Filterketten-Grading. Presets + --filter '<raw>' für benutzerdefinierte.

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

Der Prozess

  1. Inventur. ffprobe für jede Quelle. transcribe_batch.py auf dem Verzeichnis. pack_transcripts.py zur Erstellung von takes_packed.md. Muster von ein oder zwei timeline_views für einen visuellen ersten Eindruck. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.

  2. Vorscan auf Probleme. Ein Durchlauf von takes_packed.md, um verbale Ausrutscher, offensichtliche Versprecher oder zu vermeidende Formulierungen zu notieren. Einfache Liste, einfließen lassen in das Editor-Briefing. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.

  3. Gespräch. Beschreibe, was Du siehst, in einfachem Englisch. Stelle durch das Material geprägte Fragen. Sammle: Inhaltstyp, Ziellänge/Seitenverhältnis, ästhetische/markenspezifische Ausrichtung, Pacing-Gefühl, Momente die unbedingt erhalten bleiben müssen, Momente die unbedingt geschnitten werden müssen, Animations- und Grading-Präferenzen, Untertitel-Bedarf. Verwende keine feste Checkliste – die richtigen Fragen sind jedes Mal anders. → Überprüfen: alle Tests bestanden.

  4. Strategie vorschlagen. 4–8 Sätze: Form, Take-Auswahl, Schnittrichtung, Animationsplan, Grading-Richtung, Untertitel-Stil, Längenschätzung. Warte auf Bestätigung. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.

  5. Ausführen. Erstelle edl.json über das Editor-Sub-Agenten-Briefing. Tauche bei mehrdeutigen Momenten in timeline_view ein. Baue Animationen in parallelen Sub-Agenten. Wende Grading segmentweise an. Komponiere über render.py. → Überprüfen: Befehls-Exit-Code 0.

  6. Vorschau. render.py --preview. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.

  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: → Überprüfen: Befehls-Exit-Code 0

    • Visuelle Diskontinuität / Blitz / Sprung am Schnitt
    • Wellenform-Spitze an der Grenze (Audiopop, der am 30-ms-Fade vorbeigeschlüpft ist)
    • Untertitel hinter einem Overlay versteckt (Regel-1-Verstoß)
    • Overlay falsch ausgerichtet oder falsche Frames zeigend (Regel-4-Verstoß)

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

    Wenn etwas fehlschlägt: reparieren → neu rendern → neu bewerten. Begrenze auf 3 Selbstbewertungsdurchläufe – wenn nach 3 Durchläufen immer noch Probleme bestehen, melde sie dem Benutzer, anstatt ewig zu schleifen. Zeige die Vorschau erst, wenn die Selbstbewertung bestanden ist.

  8. Iterieren + Speichern. Feedback in natürlicher Sprache, Neuplanung, Neurendern. Niemals neu transkribieren. Finales Rendern nach Bestätigung. Anhängen an project.md. → Überprüfen: Schritt-Output entspricht erwartetem Ergebnis.

Schnitt-Handwerk (Techniken)

  • Audio-zuerst. Schnittkandidaten von Wortgrenzen und Stillelücken.
  • Höhepunkte erhalten. Lachen, Pointen, Betonungsmomente. Verlängere über Pointen hinaus, um Reaktionen einzuschließen – das Lachen IST der Takt.
  • Sprecherwechsel profitieren von Luft zwischen den Äußerungen. Übliche Werte: 400–600 ms. Weniger für temporeiche, mehr für filmische Schnitte. Geschmackssache.
  • Audio-Ereignisse als Signale. (lacht), (seufzt), (Applaus) markieren Takte. Verlängere darüber hinaus.
  • Stillelücken sind Schnittkandidaten. Stille ≥400 ms ist meistens der sauberste Schnitt. 150–400 ms Phrasengrenzen sind mit einem visuellen Check nutzbar. <150 ms ist unsicher (mitten in einer Phrase).
  • Beispiel für Schnittpolsterung (das mitgelieferte Launch-Video): 50 ms vor dem ersten behaltenen Wort, 80 ms nach dem letzten. Enger für temporeiche Montage, lockerer für Dokumentation. Bleibe im 30–200 ms Arbeitsfenster (Harte Regel 7).
  • Bewerte Audio und Video niemals unabhängig. 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 als Liste von phrasenbasierten Zeilen dargestellt wird, jede mit ihrem [Start-Ende]-Zeitbereich. Phrasen werden bei jeder Stille ≥ 0,5 s ODER Sprecherwechsel unterbrochen. Dies ist das Artefakt, das der Editor-Sub-Agent liest, um Schnitte auszuwählen – es bietet Wortgrenzen-Genauigkeit allein aus Text bei 1/10 der Token des rohen JSONs.

Beispielzeile:

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

Editor-Sub-Agenten-Briefing (für Multi-Take-Auswahl)

Wenn die Aufgabe darin besteht, "den besten Take jedes Beats über mehrere Clips hinweg auszuwählen", starte einen dedizierten Sub-Agenten mit einem Briefing, das wie folgt geformt ist. Die Struktur ist tragend; das Pitch-Shape-Beispiel ist es nicht.

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

EINGABEN:
  - takes_packed.md (zeitannotierte phrasenbasierte Transkripte aller Takes)
  - Produkt-/Erzählkontext: <2 Sätze vom Benutzer>
  - Sprecher: <Name, Rolle, Stilhinweis zur Vortragsweise>
  - Erwartete Struktur: <wähle einen Archetyp oder erfinde einen>
  - Zu vermeidende verbale Ausrutscher: <Liste aus dem Vorscan-Durchlauf>
  - Ziellaufzeit: <Sekunden>

Häufige Struktur-Archetypen (wähle, passe an oder erfinde):
  - Tech-Launch / Demo:   HOOK → PROBLEM → LÖSUNG → NUTZEN → BEISPIEL → CTA
  - Tutorial:             EINFÜHRUNG → EINRICHTUNG → SCHRITTE → FALLSTRICKE → ZUSAMMENFASSUNG
  - Interview:            (FRAGE → ANTWORT → NACHFRAGE) wiederholen
  - Reise / Event:        ANKUNFT → HÖHEPUNKTE → RUHIGE MOMENTE → ABREISE
  - Dokumentation:        THESE → BEWEISE → GEGENPOSITION → FAZIT
  - Musik / Performance:  EINFÜHRUNG → STROPHE → REFRAIN → BRÜCKE → OUTRO
  - Oder erfinde Deinen eigenen.

REGELN:
  - Start-/Endzeiten müssen auf Wortgrenzen des Transkripts fallen.
  - Polstere Schnittränder (Arbeitsfenster 30–200 ms).
  - Bevorzuge Takes mit natürlicher Betonung und gutem Tempo.
  - Fülle Lücken mit B-Roll oder Animationen, wenn es die Struktur erfordert.
  - Gib am Ende einen JSON-ähnlichen Ausgabeplan aus mit: Quellclip, Start, Ende, vorgeschlagenem Overlay/Animation.

Animationen

  • Lege pro Animation ein eigenes Verzeichnis <edit>/animations/slot_<id>/ an.
  • Jeder Slot kann ein Bash-Tool mit einem Manim- oder Remotion-Skript verwenden – starte es mit & für Parallelität.
  • Verwende Sub-Agenten für Animationen über das Agent-Tool mit einem Briefing. Weise den Sub-Agenten an, "eine Animation zu erstellen, die zeigt, in ein Verzeichnis zu rendern und dem Benutzer die Ausgabe zu zeigen". Der Hauptagent kann sich dann auf den Schnitt konzentrieren.
  • Die SKILL.md in skills/manim-video/ beschreibt die Manim-Integration.

Skalierung / Qualitätssicherung

  • Vorlage für verify/-Ausgaben: timeline_view.py erzeugt PNG-Filmstreifen + Wellenform. Prüfe an den Schnittgrenzen auf visuelle und auditive Fehler.
  • Parallelität der Animationen: Alle Slots gleichzeitig starten. Warte dann auf alle. Ergebnis: Die Gesamtzeit ≈ der langsamste Slot, nicht die Summe.
  • Überprüfung der Ausgabezeitachse: ffprobe + ffmpeg -f null - auf der gerenderten Datei. Prüfe, ob die Dauer der EDL + Padding entspricht.
  • Grenzfälle: Keine Stille (durchgehendes Sprechen) → weiche Schnitte bei Atempausen oder Phrasengrenzen. Stille am Anfang/Ende → trimme auf die erste/letzte Äußerung. Sehr lange Takes → unterteile in logische Beats.

Die Rolle von project.md

project.md im edit/-Verzeichnis ist das Sitzungsgedächtnis. Bei jedem Ausführen dieses Skills (oder jedes Editor-Sub-Agenten) wird eine kurze Zusammenfassung dessen, was getan wurde und warum, angehängt. Dies verhindert, dass der Agent den Kontext zwischen Sitzungen verliert und vermeidet redundante Fragen.


Dieses Skill-Dokument wurde mit dem Anspruch erstellt, eine vollständige, aber flexible Videobearbeitungsfähigkeit für KI-Agenten zu definieren. Feedback und Verbesserungen sind willkommen.

Verwandte Skills