Communitygithub.com

jun7799/video-autocut

Automatische Videobearbeitung für Screencast- und Tutorial-Videos (keine Abhängigkeit von Jianying, direkte Ausgabe über ffmpeg): Transkription mit Wort-Zeitstempeln → KI-Korrektur → automatische Entfernung von Stille/Stockern/Wiederholungen → Korrekturbalken über Fehlern → einmaliges Rendern des fertigen Videos.

Was ist video-autocut?

Dieses Skill (jun7799/video-autocut) automatisiert die gesamte Postproduktion von Screencast- und Tutorial-Videos: Transkription mit Wort-Zeitstempeln (faster-whisper), KI-basierte Korrektur von Transkriptionsfehlern, automatische Entfernung von Stille, Stockern, Wiederholungen und Versprechern sowie das Einblenden von Korrekturbalken für inhaltliche Fehler. Das Ergebnis ist ein sofort veröffentlichungsfertiges Video mit eingebrannten Untertiteln (Hard-Subtitles) und Korrekturbalken – alles ohne die Videobearbeitungssoftware Jianying. Der Workflow besteht aus sechs Schritten: Transkription, KI-Analyse, Benutzerfreigabe, Rendering, Stichprobenprüfung und Auslieferung. Das Skill ist für Entwickler und Content Creator gedacht, die eine effiziente, automatisierte und wiederholbare Lösung für die Videobearbeitung benötigen. Es läuft lokal unter Windows mit Python und ffmpeg, unterstützt aber keine Rückprojektion in Jianying – dafür ist das Schwester-Skill 'jianying-subtitle-fixer' zuständig.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jun7799/video-autocut/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Vollautomatische Videobearbeitung für Screencast-Videos (Jianying-freie Route)

Gelöstes Problem

Nach der Aufnahme eines Tutorial-Videos automatisiert dieses Skill die gesamte Kette: "Transkription → Korrektur → Stille entfernen → Stocker/Wiederholungen löschen → Fehler korrigieren → fertiges Video ausgeben". Jianying wird nie geöffnet; das Ergebnis ist ein sofort veröffentlichungsfertiges Video (mit eingebrannten Untertiteln und gelben Korrekturbalken am oberen Bildrand). Alle Parameter (Schriftgröße, Ausschnitte, Text) können durch erneutes Ausführen der Skripte in etwa einer Minute angepasst werden.

Abgrenzung zu jianying-subtitle-fixer: Dieses Skill bearbeitet Jianying-Entwürfe (Benutzer muss manuell exportieren); jianying-subtitle-fixer gibt direkt ein fertiges Video über ffmpeg aus. Falls der Benutzer Jianying nicht erwähnt, wird dieses Skill verwendet.

Systemvoraussetzungen (bereits installiert)

  • Python: C:\Users\44162\AppData\Local\Programs\Python\Python312\python.exe (mit faster-whisper 1.2.1 + torch; Modell-Cache unter ~/.cache/huggingface, small vorhanden)
  • ffmpeg: D:\Software\ffmpeg\bin\ffmpeg.exe (wird automatisch erkannt)

Standard-Workflow (vom KI-Assistenten zu befolgen)

Schritt 0  ffprobe zur Ermittlung von Videolänge/-auflösung (für spätere automatische Schriftgrößenanpassung)
Schritt 1  Transkription: transcribe.py -> raw.json (Satz- und Wort-Zeitstempel)
Schritt 2  KI-Analyse (der Kern dieses Skills, siehe unten) -> Erstelle cut_plan.json
Schritt 3  Inhaltslöschungen: AskUserQuestion für Benutzerfreigabe (alle auf einmal, nicht häppchenweise)
Schritt 4  Rendern: render.py --plan cut_plan.json -> fertiges Video
Schritt 5  Stichprobenprüfung (Einzelframes zu Korrekturbalken-Zeitpunkten extrahieren, visuelle Prüfung auf Vollständigkeit)
Schritt 6  Auslieferung: Bericht, was gelöscht/korrigiert wurde und wo die Datei liegt

Schritt 1: Transkriptionsbefehl

& "C:\Users\44162\AppData\Local\Programs\Python\Python312\python.exe" "<skill>/scripts/transcribe.py" --video "<Video-Pfad>" --outdir "<Arbeitsverzeichnis>" --prompt "Chinesisches Technik-Tutorial zum Thema XXX, YYY usw."

--prompt verwendet das Videothema + häufige Fachbegriffe (aus der Begriffstabelle ~/.claude/skills/jianying-subtitle-fixer/config/terms.json). Dies verbessert die Trefferquote bei Eigennamen signifikant. Empfohlenes Arbeitsverzeichnis: D:\Inhaltsproduktion\Schnitt\workspace\<Datum-Auftrag>\.

Schritt 2: KI-Analyse (nicht automatisierbarer Schritt, Methodik in references/cut-heuristics.md)

Nach dem Lesen des gesamten raw.json werden vier Dinge erstellt:

  1. Untertitel-Korrektur fixed: Korrektur homophoner Fehler und Fehlhörungen von Fachbegriffen. Gesprochenen Originaltext beibehalten, nur korrigieren, nicht umformulieren (Untertitel folgen der Sprachspur, Umformulierung würde zu visuellen Diskrepanzen führen). Muster von Whisper-Fehlhörungen finden sich in den Referenzen.
  2. Inhaltslöschungen content_cuts: Ganze Abschnitte, die gelöscht werden sollen (Zeitcode + Grund), Typen und Kriterien in den Referenzen. Wortwiederholungen (z.B. "ich habe einen... einen Beitrag veröffentlicht") werden mit Wort-Zeitstempeln präzise lokalisiert.
  3. deleted_ids: IDs der Untertitelzeilen, die von content_cuts abgedeckt werden (diese Zeilen erscheinen nicht im Untertitel).
  4. Korrekturbalken corrections: Gelber Balken am oberen Bildrand für Abschnitte mit inhaltlichen Fehlern. Alles wird in cut_plan.json geschrieben.

Schritt 3: Benutzerfreigabe (Prinzipien)

  • Eindeutig zu schneidende Stellen (Stocker, Neuansätze, abgebrochene Sätze): Direkt ins Plan aufnehmen, im Bericht nur erwähnen.
  • Abschnitte mit inhaltlichen Fehlern: Benutzer fragen "Löschen / Behalten + Korrekturbalken". Bei Meinungsinhalten tendenziell behalten + Korrekturbalken.
  • Korrekturbalken-Text und Faktencheck-Ergebnisse (bei Bedarf vorher per WebSearch recherchieren) dem Benutzer vorlegen.
  • Alle ausstehenden Entscheidungen mit einer einzigen AskUserQuestion abfragen.

Schritt 4: Render-Befehl

& "C:\Users\44162\AppData\Local\Programs\Python\Python312\python.exe" "<skill>/scripts/render.py" --plan "<Arbeitsverzeichnis>/cut_plan.json"

Format von cut_plan.json (vollständige Beschreibung im Kopf von render.py):

{
  "video": "C:/Originalvideo.mp4",
  "out": "C:/FertigesVideo.mp4",
  "raw": "raw.json",
  "content_cuts": [[213.45, 230.98, "Versuch, den Versuchsaufbau zu beschreiben"]],
  "deleted_ids": [48, 49, 50],
  "fixed": {"1": "Korrigierter Text"},
  "corrections": [[12.95, 20.14, "Korrektur: Der korrekte Name ist XX"]],
  "silence": {"min_dur": 1.0, "keep": 0.25},
  "style": {"sub_size": 64, "cor_size": 48}
}

Alle Zeitcodes basieren auf der Original-Zeitachse (das Skript remappt sie automatisch auf die geschnittene Zeitachse). silence/style können weggelassen werden. Standard-Schriftgröße für mobile Geräte (2560 Pixel Basis 64/48, automatisch proportional zur Auflösung skaliert). Wenn der Benutzer sagt "Schrift zu klein", style-Werte anpassen und neu rendern.

Schritt 5: Stichprobenprüfung

Aus final.ass die tatsächlichen Zeiten der Korrekturbalken (Cor-Zeilen) auslesen und Frames auf der neuen Zeitachse extrahieren:

& "D:\Software\ffmpeg\bin\ffmpeg.exe" -y -i "<FertigesVideo>" -vf "select='eq(n\,<Frame-Nummer>)',scale=1100:-1" -vsync vfr "<qc-Ordner>/qc_%d.jpg"

Frame-Nummer = Sekunden × 20 fps. Jeden Frame visuell prüfen: Text vollständig, nicht überbreit, keine Überschneidung mit unteren Untertiteln.

Fallstricke-Archiv (bitte beachten)

  1. aselect-Stille-Fehler: Bei manchen AAC-Streams schneidet aselect keinen Frame und meldet keinen Fehler → Audio-Schnitt muss mit asplit+atrim+concat erfolgen (render.py verwendet dies bereits, nicht zu aselect zurückwechseln).
  2. concat nach select auf Einzelstream: concat als Mischer verwenden (führt zu Pad-Zahlen-Konflikt); select+setpts erzeugt bereits einen kontinuierlichen Stream.
  3. Qualitätskontrolle muss Video- und Audiostream getrennt mit ffprobe prüfen: Die format-Dauer kann durch den längeren Stream auf die Originaldauer aufgebläht werden, was eine fehlgeschlagene Bearbeitung verschleiert (Erfahrung: Rendering "erfolgreich", aber Audio vollständig erhalten).
  4. subtitles-Filter-Pfad: ASS-Datei mit relativem Pfad zum Rendering-Working-Directory verwenden, um Escape-Probleme mit chinesischen Pfaden zu vermeiden.
  5. Stille-Entfernung muss Wort-Schutzzone verwenden (in render.py als strip_guard integriert): Whisper-Wort-Zeitstempel und silencedetect können abweichen; leise Wörter (z.B. englische Begriffe am Satzanfang) können in "Stille" fallen und beim Stille-Schnitt abgeschnitten werden.
  6. Das Transkriptionsskript toleriert GBK-Kodierungsfehler in ffmpeg stderr (häufiges Windows-Problem, entsprechende Thread-Fehler ignorieren).

Iterationskosten

Schriftgröße/Korrekturtext/Löschungen ändern → entsprechende Felder in cut_plan.json anpassen und render.py erneut ausführen, einmal 1-2 Minuten. Das fertige Video wird überschrieben, das Originalvideo bleibt unverändert.

Verwandte Skills