Was macht video-editing-skill?
Eine rohe Talking-Head-Aufnahme besteht meist zu 20 bis 40 % aus Luft: Pausen, „Ähs“, Fehlstarts, zweimal gesagte Sätze. Das von Hand zu schneiden dauert länger als die Aufnahme selbst. Dieser Skill erledigt den ersten Schnitt: Er liest das Transkript, plant jeden Schnitt mit Begründung, zeigt den Plan, rendert den Schnitt mit Punch-Ins an den Jump Cuts und sauberem Audio, erstellt Untertitel und Kapitel und postet nach einer Bestätigung. Alles, was er braucht, befindet sich in diesem Ordner.
Vier Grundsätze:
- Die Worte des Nutzers bleiben erhalten. Es werden nur Pausen, Füllwörter, Stotterer, Wiederholungen und vom Nutzer freigegebene Bereiche entfernt. Der Inhalt wird nie verändert.
- Planen vor dem Rendern. Die Schnittliste wird zuerst angezeigt und genehmigt.
- Nichts wird ohne ein „Ja“ gepostet.
- Nur Material, das der Nutzer verwenden darf. Seine eigene Aufnahme oder mit Genehmigung.
Unter Windows in jedem Befehl py statt python3 verwenden.
Schritt 0: Einrichtung und die Quelle
Führen Sie python3 scripts/check_setup.py aus: Es meldet ffmpeg, Pillow, Transkriptions-Routen und OpenCV mit dem Installationsbefehl für das System des Nutzers. Erforderlich: ffmpeg und Pillow.
Fragen Sie in einer einzigen Nachricht nur das, was Sie nicht sehen können:
- Welche Datei, und gehört sie dem Nutzer?
- Wohin soll es gehen: YouTube (16:9), soziales Netzwerk (vertikal) oder beides.
- Wie straff: youtube (Standard: Pausen über 0,5 s entfernen, natürliche Beats erhalten), tight (0,3 s, schnelles YouTube und Social) oder podcast (sanft, keine Punch-Ins).
- Wörter, die der Nutzer als Angewohnheit verwendet und die sicher geschnitten werden können („like“, „so“, „you know“, „basically“). Diese haben in anderen Sätzen eine Bedeutung, daher sind sie opt-in.
- Alles, was so bleiben muss, wie es ist (eine Demo, ein Witz mit einer Pause, eine Sponsorenansage).
Schritt 1: Transkribieren
python3 scripts/transcribe.py VIDEO --out work/ --terms "Produktname, Fachbegriff, Gästename"
--terms listet Namen und Fachbegriffe auf, damit sie richtig geschrieben werden; korrigieren Sie, was immer noch falsch verstanden wird, mit "replace" in der edit.json vor dem Rendern, da in ein gepostetes Video eingebrannte Untertitel nicht korrigiert werden können.
Die gleichen drei Routen wie immer, mit dem einmal erklärten Kompromiss:
| Route | Wie | Kosten und Geschwindigkeit |
|---|---|---|
| Vorhandenes Transkript | --from captions.srt | Kostenlos, sofort; Wortzeitstempel werden geschätzt und die meisten „Ähs“ fehlen, daher ist der Füllwort-Schnitt schwächer |
| Groq oder OpenAI | GROQ_API_KEY oder OPENAI_API_KEY | Groq etwa 0,04 $ pro Stunde Audio, ein bis zwei Minuten pro Stunde |
| Lokal | pip install faster-whisper | Kostenlos und privat; etwa die Hälfte bis die gesamte Videolänge mit --model small |
Der Transkriptor wird angewiesen, Füllwörter zu notieren; Whisper lässt sie sonst weg. Vom Editor werden dennoch übersehene Laute (ein „mm“, das niemand notiert hat, ein Atemzug) im Audio selbst gefunden.
Schritt 2: Den Schnitt planen
Lesen Sie work/transcript.txt einmal vollständig. Erstellen Sie dann edit.json (Format am Anfang von scripts/edit_video.py):
- Stil:
"style": "youtube","tight"oder"podcast"(Schwellenwerte inreferences/editing-rules.md). Pausen über dem Grenzwert werden auf einen natürlichen Beat verkürzt: kürzer mitten im Satz, länger nach einem Satz, am längsten bei einem Themenwechsel. - Füllwörter: Die Standardliste („um“, „uh“, „er“, „hmm“, „mm“) ist sicher. Fügen Sie die Angewohnheitswörter des Nutzers nur dann zu
extra_fillershinzu, wenn er darum gebeten hat. - Abschweifungen und tote Abschnitte: Eine Abschweifung, ein „Können Sie mich hören?“, eine lange Einleitung vor dem Punkt. Fügen Sie sie mit einer Begründung zu
cuthinzu und informieren Sie den Nutzer. - Schützen Sie alles, das erhalten bleiben muss, mit
keep, einschließlich stiller Passagen. - Interviews mit Fragenkarten oder sichtbarem Interviewer: Behalten Sie die Fragen (etwa 3 Sekunden jeder Karte in
keep), sofern der Nutzer nichts anderes sagt; ohne sie beginnt jede Antwort mit „Also...“ und ohne Kontext. - Falsch verstandene Namen:
"replace": {"Cyrus Rex": "OSIRIS-REx"}. - Kapitel (für YouTube): 3 bis 10 Kapitel aus den Themenwechseln, erstes bei 0:00, jedes mindestens 10 Sekunden, benannt nach dem, was der Zuschauer bekommt („Warum die Kamera versagte“, nicht „Teil 2“). Zeitangaben im Originalvideo; das Skript verschiebt sie.
Erstellen Sie dann den Plan:
python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/ --plan
edited/edit-plan.md gibt die neue Länge, wie viel aus dem Sprechen selbst versus langen Lücken und Karten stammt, das Tempo in Wörtern pro Minute und jede Entfernung über einer Sekunde mit Begründung und Wörtern an. Lesen Sie jede Wiederholungs- und Stotterer-Zeile sowie die Liste „mögliche Wiederholungen“: zwei beendete Sätze, die gleich beginnen, werden nie automatisch geschnitten; entscheiden Sie über jede und fügen Sie sie zu cut hinzu, wenn es sich um eine echte Wiederholung handelt. Zeigen Sie dem Nutzer die Zusammenfassung, die Wiederholungen, die von Ihnen gewählten Abschweifungen und die Kapitel und holen Sie ein „Ja“ ein.
Schritt 3: Rendern
python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/
Was es tut:
- Kürzt Pausen über dem Grenzwert auf einen natürlichen Beat, plus Füllwörter, Stotterer, Wiederholungen und alle
cut-Bereiche. Entfernungen, die kürzer als das stilistische Minimum sind (0,4 s bei youtube), bleiben unberührt: ein Jump Cut kostet mehr, als er bringt. - Platziert jeden Schnitt durch Zuhören: Wortgrenzen werden dorthin verschoben, wo der Ton tatsächlich endet und beginnt, sodass Wortenden nicht abgeschnitten werden, und vom Transkript übersehene Laute (ein nicht notiertes „mm“) werden gefunden.
- Betrachtet auch das Bild: Titelcards und Szenenwechsel werden sauber geschnitten, niemals bleiben ein paar Frames einer Karte übrig.
- Rendert in Gruppen von Teilen in jeweils einem Durchlauf, sodass Ton und Bild bei beliebig vielen Schnitten synchron bleiben.
- Punch-Ins: Wechselt zwischen dem Vollbild und einem 1,1-fachen Punch-In, wo ein Jump Cut versteckt werden muss: immer bei einem Schnitt, der eine Sekunde oder mehr entfernt hat, sonst erst nach 4 Sekunden derselben Einstellung, niemals bei einem Schnitt auf eine neue Kameraeinstellung.
"punch_in": 0schaltet es aus. - Audio: Verstärkung auf Arbeitspegel, Rumpelfilter, Rauschunterdrückung basierend auf dem gemessenen Raumrauschen (übersprungen, wenn der Raum bereits leise ist), sanfte Kompression, ein Spitzenbegrenzer und ein Zweidurchlauf-Lautstärkedurchlauf auf -14 LUFS.
- Untertitel: Schreibt immer
captions.srt(maximal 2 Zeilen mit 42 Zeichen, jeweils 1 bis 7 Sekunden, kein Zeilenumbruch nach einem kleinen Wort oder in einem Namen) zum Hochladen auf YouTube."captions": {"burn": true}zeichnet sie für soziale Netzwerke ins Video ein, wo viele Leute stumm schauen; vertikale Versionen brennen sie standardmäßig ein. Brennen Sie keine Untertitel in ein YouTube-Video ein, das auch die SRT-Datei erhält: Zuschauer mit eingeschalteten Untertiteln würden beide sehen. - Vertikal:
"format": "vertical"erstellt eine 1080x1920-Version, beschnitten auffocus_x.
Es schreibt edited/edited.mp4, captions.srt, chapters.txt, edit-report.md und manifest.json.
Überprüfung vor dem Zeigen für den Nutzer: Öffnen Sie cuts.jpg (Frames kurz vor und nach den größten Schnitten: achten Sie auf Aufblitzen einer Karte, einen Sprung in einer anderen Einstellung, einen eingefrorenen Gesichtsausdruck) und lesen Sie die Warnungen in manifest.json (Sync, Tempo über 190 Wörter pro Minute, Lautstärke). Korrigieren und neu rendern Sie, wenn eine Wiederholung die falsche Aufnahme behalten hat, das Tempo atemlos wirkt (ein sanfterer Stil) oder ein Schnitt schlecht sitzt (keep an dieser Stelle).
Schritt 4: Mit WoopSocial posten
So verbinden, hochladen und posten Sie: references/woopsocial.md. Kurzversion:
social_accounts_list; nicht verbunden: den einen Verbindungspfad für diesen Agenten (kostenloser Plan: 2 soziale Konten), dannoauth_create_authorizationpro Plattform.- Laden Sie
edited.mp4mit einer Upload-Sitzung hoch (media_uploads_create_sessionmit der Byte-Größe ausmanifest.json,python3 scripts/upload_parts.py session.json edited/edited.mp4,media_uploads_complete_session). - YouTube:
title(wichtigste Suchbegriffe zuerst, unter 70 Zeichen),privacyund eine Beschreibung, die mit einer Zeile beginnt, was der Zuschauer bekommt, dann die Kapitel auschapters.txt. Laden Siecaptions.srtanschließend in YouTube Studio hoch (WoopSocial sendet keine Untertiteldateien). - Zeigen Sie den Post (Datei, Titel, Beschreibung, Konto, Uhrzeit mit Zeitzone) und holen Sie ein klares „Ja“ ein. Dann
posts_createundposts_get.
Schritt 5: Ergebnisse auswerten
Nach einer Woche social_account_posts_list: Aufrufe, Likes, Kommentare, soweit gemeldet, mit dem Datum der Erhebung; fehlend bedeutet „nicht gemeldet“. Verweildauer und durchschnittliche Anzeigedauer finden Sie in YouTube Studio; fragen Sie den Nutzer danach. Wenn Zuschauer früh abspringen, bekommt der nächste Schnitt einen strafferen Einstieg; wenn sie bei einem Kapitel abspringen, war dieser Abschnitt zu lang.
Qualitätsanspruch
Würde ein professioneller Editor dies so übergeben? Lehnen Sie ab, wenn ein Wort abgeschnitten ist, ein Schnitt mitten im Atem mit einem Knackser landet, ein Punch-In sich alle paar Sekunden ändert, das Tempo keinen Raum zum Denken lässt oder sich der Inhalt geändert hat.
Randfälle
- Zwei Personen vor der Kamera: Behalten Sie
formatbei der Quelle; Punch-Ins funktionieren weiterhin bei einer Totalen. - Bildschirmaufnahme mit Stimme: Setzen Sie
"punch_in": 0. - Musik unter der Stimme: Die Stille-Erkennung sieht Musik als Ton; setzen Sie
"voiced_gaps": false. - Sehr lange Aufnahmen (über eine Stunde): Funktioniert, aber die Renderzeit entspricht etwa der Videolänge; zuerst planen, einmal rendern.
- Bewusst keine Sprache für einen Abschnitt (eine Demo):
keep.
Referenzen
references/editing-rules.md: Schwellenwerte, Füllwörter, Wiederholungsmuster, Punch-Ins, Audio-Kette, Untertitel und Kapitel, mit Quellen.references/woopsocial.md: Verbinden, hochladen, posten und Ergebnisse lesen.