A-Roll-Verarbeitung
Das Ziel: eine lange Aufnahme oder mehrere Aufnahmen desselben Skripts gehen hinein, und ein straffer Rohschnitt kommt heraus, aufgebaut aus dem besten Take jeder Zeile. Sprache fließt direkt in Sprache, jedes Wort ist ganz, und der Schnitt klingt wie ein sauberer Take – beim ersten Versuch.
Dieses Skill ist für Claude Code und Runneth entwickelt. Es benötigt:
- ffmpeg zur Messung des Audios, zum Aufnehmen von Standbildern und zum Schneiden des Videos.
- Wortzeitstempel für alles Gesagte: ein Speech-to-Text-Tool, das die Zeit jedes Wortes liefert (Whisper, faster-whisper, whisper.cpp).
- Eine Methode zur Bewertung des Bildes: siehe „Wie man einen Take bewertet“ unten.
- Das Überprüfungsskript in
scripts/cut_check.py(Python3 mit numpy und ffmpeg).
Sprich mit dem Editor in einfachen alltäglichen Worten, eine Idee nach der anderen.
Bevor du beginnst: Die Werkzeuge
In Runneth ist bereits alles installiert: überspringe diesen Abschnitt.
In Claude Code benötigt dieses Skill die kostenlosen Videowerkzeuge, die das Video-Editing-Setup-Skill installiert. Überprüfe leise, ob ~/.video-editing-tools/bin/ffmpeg -version funktioniert. Wenn ja, verwende die Werkzeuge in ~/.video-editing-tools/bin (ffmpeg, ffprobe, python) überall dort, wo dieses Skill ffmpeg, ffprobe oder python3 sagt, und fahre fort. Wenn nicht, befolge zuerst das Video-Editing-Setup-Skill und kehre dann hierher zurück.
Schritt 0: Zwei kurze Checks vor der Arbeit
-
Die Datei ist die, die der Editor meint. Wenn der Editor sagt, es sei eine Neuaufnahme oder ein neuer Clip und dieser die gleiche Länge oder Umgebung wie ein früherer hat, frage in einem Satz nach, bevor du beginnst.
-
Frage genau dies als eine Frage mit zwei Optionen:
„Möchtest du, dass ich dir zuerst die Takes zeige, die ich behalten würde, oder soll ich direkt den Schnitt machen?“
- Zeig mir zuerst → befolge jeden Schritt unten und halte bei Schritt 4 für das OK des Editors an.
- Mach einfach den Schnitt → führe jeden Schritt von Anfang bis Ende ohne Unterbrechung aus. Erwähne am Ende einmal, was dir unklar war.
Überspringe die Frage, wenn der Editor bereits gesagt hat, was er möchte („schneid es einfach“, „zeig mir zuerst die Takes“). Wenn niemand da ist, um zu antworten, behandle es als „Mach einfach den Schnitt“.
Schritt 1: Die Worte extrahieren
- Überprüfe Länge, Ausrichtung und Bildrate jeder Aufnahme (
ffprobe). Bei mehreren Aufnahmen gib jeder ein einfaches Label (Video A, Video B, Video C) und führe jeden Schritt unten für alle durch. - Extrahiere das Audio aus jeder Aufnahme:
ffmpeg -i IN.mov -vn -ac 1 -ar 16000 audio.wav. - Markiere jeden Sprachabschnitt:
ffmpeg -i audio.wav -af silencedetect=n=-35dB:d=0.3 -f null -. Die Abschnitte zwischen den Stillephasen sind die Sprachinseln. Jedes Wort lebt in einer von ihnen, und sie sind genauer als jede Transkriptionszeit. - Transkribiere mit Wortzeitstempeln. Mit faster-whisper: Modell
base,word_timestamps=True,condition_on_previous_text=Falseund eineminitial_prompt, das im Video wahrscheinlich vorkommende Namen und Markenwörter auflistet. Größere englischsprachige Modelle bereinigen leise Neustarts, was die falschen Starts versteckt, die dieses Skill sehen muss. - Transkripte driften oder überspringen in langen Abschnitten. Jede Sprachinsel braucht Wörter. Wenn eine keine hat oder Wörter zwischen Sprachinseln zu fehlen scheinen, transkribiere diesen Abschnitt erneut: beginne das Fenster etwa 1 Sekunde vor der Insel, beende es etwa 1 Sekunde danach und schalte jeden Sprachfilter aus (
vad_filter=False). - Kurze, erneut transkribierte Fenster können Wörter am Ende erfinden, die nicht gesagt wurden („Vielen Dank“, „Danke fürs Zusehen“). Behalte nur Wörter, die innerhalb der Insel liegen und zur Zeile passen; Wörter, die zum gleichen Zeitstempel gestapelt sind, sind erfunden.
- Korrigiere klare Fehlhörungen von Namen und Markenwörtern. Wenn es ein Skript gibt, verwende es als Karte der Zeilen; wenn nicht, ist das Transkript die Karte.
Schritt 2: Die Takes gruppieren
- Teile das Filmmaterial in Zeilen auf (einen Satz oder eine Idee pro Zeile) und gruppiere jeden Versuch derselben Zeile über alle Aufnahmen hinweg. Mehrere Aufnahmen eines Skripts sind ein Pool von Takes: Zeile 1 bekommt jeden Take von Zeile 1 aus Video A, B und C nebeneinander, und jeder Take ist mit seiner Aufnahme beschriftet („Video B, Take 3“). Versuche beginnen normalerweise mit denselben wenigen Wörtern.
- Ein Take läuft vom Beginn eines Versuchs bis zum Ende seines letzten Wortes, bevor der nächste Versuch beginnt.
- Markiere jeden Take als vollständig (sagt die ganze Zeile) oder als Fehlstart (bricht vorzeitig ab).
- Jede Phrase innerhalb einer Zeile zählt als eigenes Stück. Eine Zeile kann aus den besten Stücken verschiedener Takes aufgebaut werden (der erste Satz aus Take 4, der zweite aus Take 2), einschließlich sauberer Teile von Fehlstarts.
Schritt 3: Jeden Take bewerten
Jeder Take jeder Zeile wird bewertet, einschließlich Zeilen, die nur einmal gesagt wurden. Die beste Version jeder Phrase gewinnt, unabhängig vom Take oder der Reihenfolge. Baue jede Zeile aus diesen besten Stücken, wenn die Verbindung zwischen ihnen sauber ist (siehe Regel 7 unten). Verwende „Was einen Take zum Gewinner macht“ unten und schreibe eine Zeile pro Take in die Takes-Datei (Vorlage: templates/takes.md): Zeile, Take, Zeit, was du gesehen hast, behalten oder nicht, und eine kurze Begründung.
Wie man einen Take bewertet
Was zu bewerten ist, bleibt in beiden Fällen gleich. Wie man es erkennt, hängt vom Werkzeug ab:
- In Runneth (oder einer Einrichtung, die Video an ein Modell senden kann, das es ansieht, wie Gemini), lass dieses Modell jede Aufnahme ansehen und jede wiederholte Zeile nach „Was einen Take zum Gewinner macht“ bewerten, plus Tonfall, Betonung, Timing von Witzen und Zögern. Behalte deine eigenen Auswahlen aus dem, was du sendest, damit die beiden Lesarten unabhängig bleiben. Wo es einen anderen Take auswählt als du, wird seine Auswahl verwendet. Nimm die Zeiten immer aus dem Transkript und den Sprachinseln, niemals vom Videomodell: seine Zeitstempel driften und es überspringt manchmal Zeilen.
- In Claude, das kein Video sehen kann, bewerte anhand von drei Dingen, die es selbst überprüfen kann:
- Die Wörter (Transkript): die ganze Zeile, kein Stolpern, keine Füllwörter, kein Neustart in der Mitte.
- Der Ton (
astatspro Take): gleichmäßige Lautstärke, kein Clipping, keine Stöße oder Geräuschspitzen. - Das Bild (Standbilder): ein Blatt pro wiederholter Zeile mit jedem gestapelten Take, 2 Bilder pro Sekunde:
ffmpeg -nostdin -ss START -t LENGTH -i IN.mov -vf fps=2,scale=160:-2,tile=10xN take.jpg, einer pro Take, gestapelt in ein Bild. Sieh dir die Blätter auf alles in „Was einen Take zum Gewinner macht“ an.
- Bildschirmaufnahmen mit Stimme: bewerte die Wortwahl, die Stimme und ob das Zeigen oder Klicken mit dem Gesagten übereinstimmt.
Schritt 4: Die Auswahl zeigen (nur wenn der Editor darum gebeten hat, sie zuerst zu sehen)
- Zeige die Schnittliste: eine nummerierte Zeile pro gehaltenem Stück,
Start-Endeund die genauen gehaltenen Wörter. Markiere knappe Entscheidungen mit „(knappe Entscheidung: Take 2 ist genauso sauber)“ in dieser Zeile, damit der Editor weiß, wo er hinschauen soll; klare Auswahlen bekommen keinen Hinweis. Füge am Ende nur eine kurze Zeile hinzu, wenn etwas den Schnitt blockiert (ein Wort, das du nicht verstehen kannst). - Der Editor genehmigt, tauscht einen Take aus („verwende Take 2 für Zeile 4“) oder schneidet eine Zeile. Seine Änderungen bleiben bestehen, selbst wenn ein Videomodell später anderer Meinung ist. Wenn der Editor einen Take austauscht, frage in einem kurzen Satz nach dem Grund, wenn der Editor keinen genannt hat. Der Grund des Editors ist, wie das Skill lernt (Schritt 7).
Schritt 5: Den Schnitt erstellen
Der Schnitt ist wirklich straff: Sprache fließt überall direkt in Sprache, auch innerhalb der gehaltenen Takes. Denkpausen und Atemzüge zwischen Phrasen werden weggeschnitten. Der einzige gehaltene Moment ist etwa 0,5s auf dem letzten Bild.
- Kanten kommen von den Sprachinseln, nicht vom Transkript. Jedes gehaltene Stück beginnt mit dem ersten Ton seiner Insel und endet mit dem letzten. Atemzüge, Lippengeräusche und Handhabungsgeräusche vor dem ersten Wort können über -30dB steigen und in die Insel eingenäht werden. Daher beginnt ein Stück mit dem Einsatz seines ersten Wortes (wo der Pegel zur Sprache hin ansteigt, normalerweise -25dB oder lauter), nicht mit dem ersten Pieps. Jeglicher Atemzug oder jedes Geräusch am Anfang oder Ende eines Stücks wird weggeschnitten. Enden funktionieren umgekehrt: Eine Zeile klingt oft leise aus („nachts schlafen“ leise gesagt), daher endet ein Stück nach seinem letzten Wort, selbst wenn dieses Wort leiser ist als der Rest. Überprüfe, ob das letzte Wort jeder Zeile im Transkript des Schnitts enthalten ist.
- Pausen innerhalb eines gehaltenen Takes werden mit einem empfindlicheren Durchlauf gefunden,
silencedetect=n=-30dB:d=0.2, und jede Pause von 0,25s oder mehr wird herausgeschnitten. Neustarts und wiederholte Wörter innerhalb eines Takes werden ebenfalls herausgeschnitten, wobei nur die saubere endgültige Formulierung übrig bleibt. - Polstere jedes Stück etwa 0,05s auf jeder Seite. Mehr hinterlässt eine Pause; weniger schneidet ein Wort ab. Dann raste jede Kante auf ein ganzes Bild ein (Start rundet auf das Bild davor ab, Ende rundet auf das Bild danach auf). Kanten zwischen Bildern führen dazu, dass die Verbindung Bilder dupliziert oder weglässt, was jeden späteren Schnitt um ein oder zwei Bilder verschiebt und einzelne Bilder durchlässt, wenn B-Roll auf die Schnitte gelegt wird.
- Stücke, die kürzer als etwa 0,3s sind, sind fast immer Überreste (eine einzelne Silbe). Wirf sie weg, es sei denn, sie enthalten ein ganzes Wort.
- Füge an jeder Verbindung einen 20ms Audio-Fade hinzu und verbinde alles in einer erneuten Codierung aus einer Arbeitskopie. Die Originaldatei bleibt unberührt.
- Speichere die Liste der Stücke (
[[start, end], ...]in Sekunden) alsclips.json; das Überprüfungsskript liest sie.
Schritt 6: Den Schnitt überprüfen, bevor der Editor ihn sieht
Jede Version, die der Editor sieht, hat jeden Check an genau dieser Datei bestanden. Ein Check, der nicht durchgeführt wurde, gilt als Fehler.
- Führe das Überprüfungsskript aus:
python3 scripts/cut_check.py --voice audio.wav --clips clips.json --out CUT.mp4. Es überprüft drei Dinge und gibtRESULT PASSoderFAILaus:- Endungen: die letzten 50ms jedes Stücks liegen unter Sprachpegel (-30dB). Wenn nicht, wurde ein Wort abgeschnitten: verschiebe dieses Ende nach hinten, bis der Pegel abfällt.
- Anfänge: die 30ms vor dem Beginn jedes Stücks sind leise, sodass kein Stück mitten in einem Wort beginnt.
- Lücken: keine Pause von 0,25s oder mehr irgendwo im Schnitt, außer der endgültigen Haltezeit.
Bei mehreren Aufnahmen führe es einmal pro Aufnahme aus: das Audio dieser Aufnahme als
--voiceund nur ihre Stücke inclips.json, jedes Mal mit demselben Schnitt als--out. Wenn der Ton aus einer anderen Datei als dem Bild stammt (ein separates Mikrofon), schneide auch das Kamera-Audio mit denselben Trimmungen und übergib es als--camlock, damit das Skript auch die Synch überprüft (alle 3 Sekunden innerhalb von 40ms).
- Jedes Wort, ganz, einmal: transkribiere den Schnitt mit Wortzeitstempeln und vergleiche ihn Wort für Wort mit der Schnittliste. Ein halbes Wort an einer Verbindung bedeutet, dass diese Kante zu eng ist. Ein wiederholtes Wort oder eine wiederholte Phrase an einer Verbindung bedeutet einen übrig gebliebenen Neustart. Keine tote Luft zwischen Wörtern: in diesem Transkript ist keine Lücke zwischen dem Ende eines Wortes und dem Beginn des nächsten länger als etwa 0,3s (außer der endgültigen Haltezeit). Die Lückenprüfung im Skript findet nur leise Pausen; eine Pause voller Atemgeräusche ist laut genug, um sie zu bestehen. Daher ist diese Wortlückenprüfung das, was sie abfängt. Trimme das Stück auf sein erstes Wort und führe jeden Check erneut aus.
- Jede Verbindung einzeln: nenne für jeden Schnitt das letzte Wort davor und das erste Wort danach und bestätige, dass beide vollständig gesagt sind. Transkribiere ein 2-Sekunden-Fenster um jede Verbindung herum, um zu überprüfen (eine allgemeine „irgendwelche Probleme?“-Frage lässt ein abgeschnittenes Wort durchrutschen). In Runneth lass auch das Videomodell den Schnitt wie ein pingeliger Erstzuschauer ansehen und Probleme mit Zeiten auflisten: abgeschnittene oder falsche Wörter, Störungen, eingefrorene Bilder, ruckartige Sprünge.
- Länge: die Länge des Schnitts stimmt mit dem Gesamtwert der Schnittliste überein.
Behebe alles, was fehlschlägt, schneide erneut und führe jeden Check erneut aus.
Schritt 7: Vom Editor lernen
Jedes Mal, wenn der Editor einen Take austauscht, eine Kante ändert oder sagt, warum ein Take besser ist, verwandle diesen Grund in eine allgemeine Regel und füge sie in „Was einen Take zum Gewinner macht“ unten ein (oder in Schritt 5, wenn es darum geht, wie straff der Schnitt sein soll). Halte die Liste kurz: schreibe Regeln um und kombiniere sie, anstatt neue hinzuzufügen. Nur die Gründe des Editors ändern die Regeln.
Was einen Take zum Gewinner macht
Diese Regeln stammen aus den echten Auswahlen einer Editorin für ihre eigenen Talking-Head-Videos. Wende sie in der Reihenfolge an und ersetze sie dann durch die Regeln deines eigenen Editors, sobald dessen Gründe eintreffen.
- Die ganze Zeile, sauber gesagt. Ein Take mit einem Stolperer oder einem fehlenden Wort verliert gegen einen sauberen, egal wie gut er aussieht.
- Nichts, das das Gesicht bedeckt. Eine Hand oder ein Mikrofon vor dem Mund schließt einen Take aus.
- Energie. Gestik, Bewegung und eine lebhafte Darbietung schlagen eine ruhige, monotone Lesung.
- Das glücklichste Gesicht. Ein echtes Lächeln und helle Augen gewinnen zwischen zwei sauberen Takes.
- Das Gesicht passt zur Zeile. Große Augen bei einem Lacher, ein echtes Lächeln bei einer fröhlichen Zeile.
- Natürliches, gleichmäßiges Tempo. Nicht gehetzt, keine langen Pausen.
- Beste Stücke, sauber verbunden. Der beste Take gewinnt, unabhängig von der Aufnahme, und eine Zeile, die aus Teilen von zwei Takes besteht, schlägt einen ganzen Take, wenn jeder Teil die bessere Version ist. Die Verbindung ist sauber, wenn der Kopf und die Hände des Sprechers auf beiden Seiten etwa an derselben Stelle sitzen (überprüfe das Bild vor und nach der Verbindung) oder wenn die Verbindung später durch B-Roll abgedeckt wird. Ein Wechsel zwischen Aufnahmen erfordert auch auf beiden Seiten das gleiche Erscheinungsbild (Haare, Licht, Bildausschnitt, Produkt in der Hand); wenn sich das Erscheinungsbild ändert, landet der Wechsel zwischen den Zeilen und wird durch B-Roll oder einen Zoomwechsel abgedeckt.
- Kürzer, wenn es mehr Wirkung erzielt. Schneide eine Zeile auf ihren stärksten Teil herunter, wenn der Rest wiederholt, was bereits gesagt wurde, oder das Video verlangsamt („bis mir das Zeug ausging“ statt „Ich wusste nicht, wie sehr es mir half, bis mir das Zeug ausging“).
- Knappe Entscheidungen bleiben knappe Entscheidungen. Wenn zwei Takes gleich sauber sind und die Bilder keinen wirklichen Unterschied zeigen, wähle einen und markiere ihn als knappe Entscheidung. Standbilder können den Tonfall nicht zeigen, also tu nicht so, als ob einer deutlich besser wäre.
Regeln für jeden Schnitt
- Jedes Wort im Schnitt stammt aus dem Audio. Wörter, die du nicht verstehen kannst, werden als unklar markiert, niemals geraten.
- Zeiten stammen aus der Zeitleiste der Originalaufnahme, und jedes Stück in der Schnittliste nennt seine Aufnahme.
- KI-Zeiten sind nah, nicht exakt. Jede Kante wird von den Sprachinseln aus festgelegt und im Audio überprüft.