Communitygithub.com

chengfeng-videocut-skills

Erstellt Untertitel für geschnittene Sprachaufnahmen: Nutzt das vorhandene Transkript und das Edit-List, um die Timing nach dem Schnitt zu berechnen (ohne Export oder erneute Transkription), korrigiert fehlerhafte Eigennamen mit einem Wörterbuch und dem Manuskript, erzeugt Bildschirmaufteilungen basierend auf Sätzen und ermöglicht die Überprüfung Bildschirm für Bildschirm im Studio. Verwenden Sie dies, wenn der Nutzer Untertitel hinzufügen, bearbeiten, neu aufteilen oder korrigieren möchte. Nicht geeignet für Wortlöschung, physikalische Schnitte, Storyboard-Animationen oder Rendering.

Was ist chengfeng-videocut-skills?

Diese Fähigkeit automatisiert die Untertitelerstellung für geschnittene Sprachaufnahmen („Koubo“) in Videobearbeitungs-Workflows. Sie ist speziell für das Plugin „chengfeng-videocut“ konzipiert und wird über die Cursor- oder Codex-Plattform als Skill ausgeführt. Der Kernvorteil ist, dass **kein erneuter Export oder eine erneute Transkription** erforderlich ist: Die Untertitelzeit wird dynamisch aus dem vorhandenen Transkript und der Edit-List (‚edit-list.json‘, ‚transcript.json‘) berechnet. Die Fähigkeit korrigiert fehlerhafte Eigennamen (z. B. „Skills“ statt „Claude Skills“) mit einem zentralen KI-Wörterbuch und/oder dem Autorenmanuskript. Sie erzeugt dann Bildschirm-für-Bildschirm-Untertitel („Bildschirmaufteilung“) basierend auf Satzzeichen, Absätzen und Pausen. Die Ausgabe ist eine ‚subtitles.json‘-Datei, die Wort-IDs statt Zeitstempel speichert, um Inkonsistenzen mit dem Schnitt zu vermeiden. Der Skill öffnet auch das Studio zur visuellen Überprüfung, zeigt aber explizit an, dass die Untertitel noch nicht in das exportierte Video eingebrannt sind. Wichtige Einschränkungen: Die Fähigkeit ersetzt nicht das Rendering oder physikalische Schnitte und verlangt eine ausdrückliche Nutzerbestätigung, bevor vorhandene Untertitel überschrieben werden.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Agentchengfeng/chengfeng-videocut-skills/tree/HEAD/plugins/chengfeng-videocut/skills/chengfeng-subtitle

In Ihrer bevorzugten KI fragen

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

Dokumentation

Untertitel

Dies ist eine Aufgabe, kein Schritt in einem Ablauf. Sie wird immer dann ausgeführt, wenn der Nutzer danach ruft – direkt nach dem Schnitt, aber auch erneut, wenn nachträglich zwei Sätze gelöscht wurden.

Es gibt nur eine Voraussetzung: Die Edit-List („Konto“) muss existieren. Nicht, weil die Untertitel nach dem Schnitt kommen, sondern weil sie ohne die Edit-List nicht wissen, welche Sätze erhalten geblieben sind und an welcher Sekunde im Endvideo sie jeweils beginnen.

Benötigt   edit-list.json (Edit-List), transcript.json (Wort-für-Wort-Transkript)
Erzeugt    subtitles.json

Nach der Ausführung stoppt der Skill und gibt keine Anweisung, was der Nutzer als Nächstes tun soll.

Lies zuerst den Phasenvertrag des Geschäfts-Skills und führe ihn aus. Die Kriterien finden sich in Untertitel-Korrekturregeln, die Schreibweise von Eigennamen im KI-Wörterbuch.

Wer bestimmt was

Dies ist das Fundament des Abschnitts; alles andere leitet sich daraus ab.

Schnitt (Koubo)    bestimmt „welche Sätze bleiben und zu welchem Zeitpunkt“   ← die einzige Wahrheit für Timing
Untertitel         bestimmt „welcher Text auf dem Bildschirm erscheint“        ← die einzige Wahrheit für Anzeige

Ein Untertitel-Bildschirm speichert eine Liste von Wort-IDs + den anzuzeigenden Text, keine Sekunden. Die Zeit wird jedes Mal aus der Edit-List berechnet. Dadurch gibt es keine zweite Zeitquelle, die abweichen könnte. Fehler werden bildschirmgenau gemeldet: „Die Wörter des 7. und 12. Bildschirms wurden geschnitten“ – nicht die vage Aussage „Untertitel könnten veraltet sein“.

Die Untertitel speichern bewusst ihren eigenen Text. Das Transkript antwortet auf „Was hat er gesagt?“, die Untertitel auf „Was soll der Zuschauer sehen?“ – Satzzeichen, weggelassene Füllwörter, die korrekte Schreibweise von Eigennamen – das darf ruhig unterschiedlich sein. Wenn man einen einzigen String zwingt, beides zu tun, kann man nie ein Komma in den Untertitel einfügen.

0. Bereitschaft

Führe zuerst die „Bereitschaftsprüfung“ aus Aktualisierungsprüfung aus – ob die Skills aktuell sind und die Runtime kompatibel ist; das Plugin-Stammverzeichnis wird dort ebenfalls ermittelt (alle <Plugin-Stamm> in diesem Dokument werden durch diesen tatsächlichen Pfad ersetzt). Nur bei „Bereit“ wird fortgefahren; bei „Neue Sitzung erforderlich“ oder „Anhalten“ wird gemäß dessen Anweisung verfahren (einschließlich des Verbots, eigene Ersatzoberflächen zu erstellen). Der Geschäfts-Skill enthält keine eigene Umgebungslogik.

Wenn das Bereitschaftsergebnis runtime.kind=desktop-managed ist, verwende direkt die bereits installierte stabile CLI der Desktop-App und denselben launchd/windows-task-Dienst; parst keine Electron-Pfade, installiert keine zusätzlichen Abhängigkeiten und startet keine zweite Runtime.

1. Eingangsbehauptungen

node "<Plugin-Stamm>/scripts/ensure-running.cjs" --json
node "<Plugin-Stamm>/scripts/videocut-cli.cjs" inspect "<Projektverzeichnis>" --json
BehauptungBei Nichterfüllung
edit-list.json existiert und enthält SegmenteSage klar, dass die Edit-List fehlt; der Nutzer soll zuerst den Schnitt-Skill aufrufen. Nicht selbst schneiden.
transcript.json existiertDas Projekt ist nicht bereit; anhalten. Kein eigenes Transkript erstellen.

Behaupte nicht source_cut.mp4 und starte keine Transkription. Die Untertitel brauchen beides nicht – siehe nächster Abschnitt.

2. Textkorrektur: Erst Wörterbuch, dann Manuskript

Keine erneute Transkription erforderlich. Das vorhandene Wort-für-Wort-Transkript enthält bereits die Zeitstempel; die Edit-List weiß, welche Segmente erhalten geblieben sind – die Position jedes Wortes im Endvideo wird berechnet, nicht durch erneutes Abhören ermittelt:

Die Sekunde des Wortes im Quellvideo      → steht im Transkript
Welche Segmente erhalten geblieben sind    → steht in der Edit-List
Die Sekunde des Wortes im Endvideo         → aus beidem berechnet

Ein erneuter ASR-Durchlauf würde lediglich dasselbe noch einmal abhören – Zeit- und Geldverschwendung, und das Ergebnis wäre schlechter, weil Eigennamen erneut korrigiert werden müssten. (transcript retranscribe ist ein Überbleibsel des alten Designs, bei dem die Untertitel ihre Zeitachse aus dem Transkript des geschnittenen Videos bezogen. Seit dem Wechsel zur Wort-ID-Methode ist dieses Problem gelöst. Verwende es nicht für die Untertitel.)

Es gibt zwei verschiedene Werkzeuge, beide müssen verwendet werden.

# Wörterbuch: Feste Schreibweise für diesen Sprecher, keine Belege erforderlich
node "<Plugin-Stamm>/scripts/videocut-cli.cjs" transcript dictionary "<Projektverzeichnis>" --dictionary "<Plugin-Stamm>/references/ai-term-dictionary.md" --json

# Manuskript: Nur wenn der Autor ein Skript hat, jeder Ersetzung müssen Belege beiliegen
node "<Plugin-Stamm>/scripts/videocut-cli.cjs" transcript align "<Projektverzeichnis>" --script "<Sprachaufnahme-Manuskript>" --json
Wörterbuch    Immer so schreiben            Ignoriert Kontext, ändert direkt, listet die geänderten Stellen auf
Manuskript    Nur bei Kontextübereinstimmung   Beleg für jede Stelle erforderlich; bei Nichtübereinstimmung wird „unsicher“ gemeldet, keine Vermutung

Warum das Wörterbuch zwingend erforderlich ist und das Manuskript allein nicht ausreicht: Bei Sprachaufnahmen wird oft wiederholt. In einem realen Projekt wurde derselbe Satz viermal aufgenommen, sodass Kontexte wie „Verbindungsgabel“ oder „Gabel ist“ mehrfach vorkommen. transcript align kann dann nur „unsicher“ melden – es vermutet nicht, denn ein falsch geschriebener Name ist schlimmer als ein falsch gehörtes Wort. Bei drei Vorkommen von „Gabel“ ändert es nur eines. Das Wörterbuch hat dieses Problem nicht: In den Werken dieses Sprechers ist „Gabel“ einfach „X“.

Es gibt nur ein Wörterbuch, auf Plugin-Ebene in references/ai-term-dictionary.md: Es korrigiert das Transkript, und sowohl der Schnitt-Skill als auch der Untertitel-Skill verwenden dasselbe Transkript. Erstelle kein zweites Wörterbuch innerhalb dieses Skills.

Nach der Korrektur muss die Liste der Änderungen geprüft werden. Das Wörterbuch ignoriert den Kontext und kann daher auch Fehler machen – z.B. wenn der Sprecher wirklich „Skills“ (Claude Skills, Plural-Eigenname) gesagt hat, normalisiert es zu „Skill“. Wenn du einen Fehler siehst, korrigiere das Wörterbuch; wende keinen Workaround über die Befehle an.

transcript align meldet nur, ändert nichts. Um seine Vorschläge anzuwenden, konvertiere die corrections in [{wordId, text}] und führe Folgendes aus:

node "<Plugin-Stamm>/scripts/videocut-cli.cjs" transcript correct "<Projektverzeichnis>" --file "<Korrekturdatei>" --json

Nachdem das Transkript korrigiert wurde, werden alle Untertitel-Bildschirme, die diese Wörter referenzieren, im selben Schritt aktualisiert und als subtitles.updated gemeldet. Wenn ein Bildschirm nicht geändert werden kann (weil die Zeile manuell überschrieben wurde), wird dies in needsAttention gemeldet, damit der Nutzer es sieht – keine Vermutung.

Wenn weder das Wörterbuch noch das Manuskript eine korrekte Schreibweise bestätigen können, darf nicht geraten werden. Melde es dem Nutzer, damit er das Wörterbuch ergänzt – beim nächsten Video ist es dann automatisch korrekt. Einmal richtig geraten bedeutet, dass man beim nächsten Mal wieder raten muss.

3. Bildschirmaufteilung

node "<Plugin-Stamm>/scripts/videocut-cli.cjs" subtitle build "<Projektverzeichnis>" --json

Vier Regeln, in dieser Reihenfolge:

① Hier wurde Text gelöscht       Die gelöschten Passagen liegen zeitlich nebeneinander, sind aber inhaltlich unverbunden.
                                „Stummgeschaltet“ zählt nicht – das Entfernen einer Pause mitten im Satz darf den Satz nicht teilen.
② Jedes Satzzeichen             Von Volcengine bereitgestellt, sowohl Satzpunkt als auch Komma zählen – **gleiche Granularität wie der Schnitt-Skill**,
                                beide Grenzen an derselben Stelle. Satzzeichen sind stärker als jedes zeitliche Indiz: Ein Sprecher kann
                                zwei Sätze ohne Atempause sprechen oder mitten in einem Satz eine Pause machen.
③ Absatzgrenze + Pause          **Nur verwenden, wenn das Wort kein Satzzeichen hat.** Es gilt „Wenn kein Satzzeichen, wird anhand des Absatzes
                                das Satzende erraten“. Wenn ein Satzzeichen vorhanden ist, sollte Regel ② (mit Komma) greifen – diese berücksichtigt,
                                ob der Bildschirm lang genug ist; Regel ③ tut das nicht. (Wird Regel ③ auch bei Grenzen mit Satzzeichen ausgelöst, 
                                führt das in realen Projekten von 40 auf 43 Bildschirme, also mehr unnötige Trennungen.)
④ Der Zuschauer hört eine lange Pause   Für eine Trennung innerhalb eines Satzes ist eine deutlich längere Stille erforderlich.

Der Schnitt-Skill und der Untertitel-Skill verwenden dieselben Satzzeichen in derselben Granularität: Ein Komma = ein Absatz / ein Bildschirm.

Fragmente (ein oder zwei Zeichen) werden zusammengeführt, aber nicht über einen Satzpunkt hinweg – „Siehst du“ beginnt einen neuen Satz, ist kein Ende des vorherigen; wenn man es nach vorne anhängt, erhält man „…Grok CLI aufrufen Siehst du“ – zwei Sätze verschmelzen.

Kurze Sätze, die der Sprecher schnell spricht, bleiben erhalten (in einem realen Projekt: „jeden Morgen“ und „Aufgabe ausführen“ jeweils 0,6 Sekunden). Das ist die tatsächliche Sprechweise – kein Alarm notwendig. Ein Komma = ein Bildschirm führt zwangsläufig zu solchen kurzen Bildschirmen; sie zu alarmieren bedeutet, gegen normales Sprechen zu alarmieren – dann werden Warnungen bald ignoriert.

Bleibt ein Bildschirm länger als nötig, wird er gleichmäßig auf mehrere Bildschirme aufgeteilt, ein Bildschirm = eine Zeile. Entstehen dabei ein- oder zweizeichige Fragmente, war die Grenze bei Regel ② eigentlich kein Satzpunkt – das Fragment wird in den vorherigen Bildschirm zurückgeführt.

Der Befehl meldet vier Dinge, die alle geprüft werden müssen:

stale                  Bildschirme, die durch den Schnitt geändert wurden – genaue Angabe: welcher Bildschirm, welche Wörter fehlen
tooFast                zu viele Zeichen, zu wenig Lesezeit
transcriptMoved        Das Transkript ist nicht mehr das ursprüngliche

Falls bereits Untertitel existieren – hier anhalten und nachfragen

Ohne --replace wird der Befehl direkt abgelehnt. Dies ist der einzige Punkt in diesem Skill, an dem die Zustimmung des Nutzers eingeholt werden muss, denn --replace überschreibt die manuelle Aufteilung und Formulierung, die der Nutzer möglicherweise bereits vorgenommen hat – das Produkt kann dies nicht selbst rückgängig machen.

Der Nutzer möchte nur ein paar Zeichen ändern      Nicht „build“. Lass ihn im Studio direkt bearbeiten oder sag ihm, welche Bildschirme er ändern soll.
Der Nutzer möchte komplett neu beginnen             Erst nach Bestätigung mit --replace.

4. Überprüfung: Bildschirm für Bildschirm im Studio

node "<Plugin-Stamm>/scripts/videocut-cli.cjs" open "<Projektverzeichnis>" --json

Nach dem Öffnen zum linken Bereich „Untertitel“-Tab wechseln. Eine Zeile = ein Bildschirm: links die Nummer und die Zeit, rechts der Text – direkt anklicken und bearbeiten.

  • Enter = neuen Bildschirm an der Cursorposition beginnen
  • Rücktaste am Zeilenanfang = mit dem vorherigen Bildschirm zusammenführen
  • Rechter Bereich „Parameter → Untertitel“: vier Voreinstellungen auswählen, ein Stil für das gesamte Video
  • Die Untertitel sind direkt auf dem Bildschirm sichtbar; Position und Schriftgröße sind proportional zum Bild – Vorschau und Export verwenden dieselben Zahlen

Bei der Überprüfung sollte der Nutzer mindestens Folgendes bestätigen: Sind die Eigennamen korrekt? Fehlen Zeichen? Ist der Zeilenumbruch flüssig lesbar? Bleibt genug Zeit, um einen Bildschirm zu lesen?

5. Ende bei subtitles.json

Dieser Abschnitt ist abgeschlossen. Keine physikalischen Schnitte, kein Storyboard, keine Animationen, kein Rendering des fertigen Videos, und keine Aufforderung an den Nutzer, den nächsten Schritt zu tun.

Der Bericht muss getrennt ausgewiesen werden: Product-strukturiertes Readback ist API/readback PASS; die tatsächliche Frame-Prüfung im selben Projekt-Browser ist visual frame PASS; wenn niemand die Untertiltel tatsächlich mit dem Video abgeglichen hat, lautet der Status human listening UNVERIFIED. Keine Verwendung von DOM-, Screenshot- oder Datei-Scans als Ersatz.

Grenze: Einbrennen in das Video ist nicht Teil dieser Aufgabe

Die Ausgabemethode ist Einbrennen in das Video, aber das Video wird erst im Export-Schritt gezeichnet. Die Ausgabe der Untertitel ist subtitles.json – alle Angaben darin sind Prozentsätze des Bildschirms; der Export wandelt sie je nach Ausgabeauflösung in Pixel um. Beide Seiten verwenden dieselben Zahlen.

Im heute exportierten mp4 sind keine Untertitel enthalten – dieser Schritt wurde noch nicht durchgeführt. Der Bericht muss diese Konsequenz klar angeben. Sag nicht einfach „Untertitel fertig“ – der Nutzer würde annehmen, sie seien im Endvideo enthalten.

Wiederherstellung und Fehlerbehandlung

  • subtitles_exist: Es gibt bereits Untertitel. Erst nachfragen, nicht direkt --replace.
  • revision_conflict: Eine andere Stelle schreibt gleichzeitig. Neu einlesen, nicht automatisch überschreiben.
  • Das Wörterbuch meldet „Zeile N nicht lesbar“: Das ist eine Tabellenzeile mit fehlerhaftem Format. Nur Zeilen im Format | Korrekte Schreibweise | Häufig falsch erkannt | werden erkannt; Prosa und Listen werden ignoriert.
  • transcript correct meldet „must not change any word id, time or gap flag“: Der Korrekturvorschlag enthält Änderungen an der Zeit. Korrigiere nur den Text.
  • runtime_unhealthy: Nicht in einer Schleife neu installieren.
  • Bei keinem Fehler darf „Transkription abgeschlossen“ als „Untertitel fertig“ gemeldet werden. ASR liefert das Rohmaterial, nicht das Endprodukt.

Individual skills in this repo

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

Agentchengfeng/chengfeng-videocut-skills

剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime 安装与体检。用户说检查更新、安装剪辑环境、装播放器、检查剪辑环境、剪辑环境就绪了吗、配置转录凭证时使用;业务 Skill(剪口播/字幕/画面/导出)第 0 步也引用本 Skill 的就绪检查。不用于剪辑、字幕、画面、导出本身或项目数据迁移。

Agentchengfeng/chengfeng-videocut-skills

剪辑中文口播原素材:逐词转录、词典修字出修字表、五轮扫描找口误与重复、汇总表与重复句子表、打开 Studio 让用户复核、复盘沉淀用户偏好与词典。只产出一份已复核的删词账本,不切媒体、不做字幕、不做分镜动画。用户说剪口播、处理口误、生成口播基础素材、继续剪口播,或确认卡回传 action=return_cut_review 时使用。不要用于执行物理剪切、导出剪后视频、单独安装、单独打开工作台或口播分镜成片。

Agentchengfeng/chengfeng-videocut-skills

把剪好的口播烧成一个成片文件:账本切片段、推近、字幕、HTML 画面层,一次全部烧进 mp4。用户说导出、出成片、烧字幕、渲染、导出视频、生成最终文件时使用。不要用于生成删词候选、写字幕、做画面动画。

Agentchengfeng/chengfeng-videocut-skills

整理、脱敏并上报 chengfeng-videocut 的 GitHub Bug。用户说上报 Bug、反馈剪口播问题、提交 GitHub Issue、这个问题告诉开发者,或要求继续提交已预览的 Bug 草稿时使用。不要用于功能建议、普通排错、代码提交或未获用户确认的自动上报。

Agentchengfeng/chengfeng-videocut-skills

操作 chengfeng-videocut 剪辑工作台的已有工程,通过 Runtime CLI 查工程与词句位置、添加或替换画面覆盖层、移除画面、删除明确指定的词句或片段、拆分裁剪移动已有片段、调整画布比例并回读核验。用户说插入片段、删掉这句、移除动画、换个画面、调整顺序或管理时间线时使用;先区分画面覆盖与主轨顺延插入,不负责自动判断口误、创作动画、制作字幕、导出或排查安装故障。

Agentchengfeng/chengfeng-videocut-skills

Create Ian Xiaohei-style HTML/SVG motion illustrations for Chinese articles, scripts, storyboard scenes, workflow explanations, concept metaphors, and short video visual aids. Use when the user asks for 小黑 SVG、漫画感 HTML、分层 SVG 动效、把小黑生图做成 HTML/SVG、可编辑矢量动效、口播流程动画、手绘漫画动效、正文配图动画, or wants a Xiaohei illustration style adapted into controllable HTML/SVG/GSAP output instead of raster image generation.

Agentchengfeng/chengfeng-videocut-skills

给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。

Verwandte Skills