Communitygithub.com

lainshao/video-editor

9:16 + 16:9 Dual-Format Short Video Assembly / Editing Skill (der einzige Einstieg für Videoproduktion). Drei Submodule – **opener** (gelbe Serifen-Überschrift, 4,5 s Titelcard), **animator** (chyron / cutaway / listicle / spec_review HTML-Review, mit „Drei-Tore“-Workflow), **subtitle** (Whisper-Transkription + Keyword-Highlight PNG-Overlay zum Einbrennen). Nach Auslösung wird **zuerst gefragt: Was soll gemacht werden?** ① Nur Untertitel ② Nur Titel einbrennen ③ Neue Animation Cues / Gesamtkomposition ④ Vollständiger Workflow (Sprache → Cue → Animation → Komposition → Untertitel). Ausgabe (standardmäßig drei Typen, Ablage im Movies-Ausgabeordner): ① Gesamtvideo mp4 / optional Alpha-Kanal B-Roll Layer mov ② 3:4 Titel-Transparenz-Layer PNG ③ Kapitel-Zeitleiste txt. Auslöse-Keywords: „Schneide dieses Video“, „Video schneiden / Schnitt“, „Mach eine Folge“, „Gesamtvideo ausgeben“, „Animation / Effekte hinzufügen“, „Untertitel / Chyron / Einblendungen“, „Intro / Titelcard / Opener“, „Sprache und B-Roll zusammensetzen“, „Neue Folge der X-Serie“. Unterstützt auch Maria-artige Sprachaufnahmen: echte Artikel-/News-Screenshots, echte Reaktionen und lokale Bilder; Material und Rhythmus werden inhaltlich gewählt, nicht mit Emoji-Karten ersetzt. Echtes Stock-Material wird von diesem Skill als Oberkommando an footage-finder delegiert (Hoch- / Querformat möglich).

Was ist video-editor?

Dieser Skill, `lainshao/video-editor`, ist der zentrale Einstiegspunkt für die Produktion von Kurzvideos im 9:16- oder 16:9-Format. Er fungiert als **Gesamtkommando**, das verschiedene Submodule orchestriert: den **opener** für Titelcards, den **animator** für Animationen wie Chyron, Cutaway und Listicle, sowie das **subtitle**-Modul für Whisper-basierte Transkription und das Einbrennen von Untertiteln mit Keyword-Highlights. Der Skill ist für Entwickler und Power-User konzipiert, die eine programmatische und hochgradig anpassbare Videoproduktionspipeline suchen. Er unterstützt Plattformen wie YouTube, TikTok, Bilibili und Xiaohongshu. Der Kern des Workflows ist das **„Drei-Tore“-System (Three-Gate Workflow)**, das eine schrittweise und qualitätsgesicherte Produktion erzwingt: Im ersten Tor wird ein Cue-Plan als Markdown-Tabelle erstellt und muss vom Benutzer bestätigt werden, bevor HTML gerendert wird. Im zweiten Tor werden die HTML-Cues erstellt, mit einem Layout-Lint überprüft und in einem Spec-Review zusammengefasst. Erst nach Freigabe durch den Benutzer wird im dritten Tor über die endgültige Ausgabeform entschieden (z. B. mp4, ProRes-mov mit Alpha-Kanal). Der Skill vermeidet teure Nachbesserungen, indem er zu jedem Zeitpunkt explizite Benutzerbestätigungen einholt. Das System ist modular aufgebaut: `opener/` erstellt 4,5-Sekunden-Titelcards mit transparentem Alpha, `animator/` erstellt visuelle Cues und durchläuft zwingend die drei Tore, und `subtitle/` verwendet Whisper und produziert PNG-Overlays. Für reine Screencast-Tutorials gibt es das `slidecast/`-Submodul im 3:4-Format. Der Skill delegiert die Beschaffung von echtem Stock-Material an den `footage-finder`-Skill und News-Highlight-Karten an den `news-highlight`-Skill. Eine Vielzahl von Konventionen (CONVENTIONS.md, PITFALLS.md) und Hilfsskripten (z. B. `preflight.py`, `doctor.sh`, `lint_layout.js`) stellen sicher, dass die Ausgaben den visuellen und technischen Qualitätsstandards des Kanals entsprechen. Der Skill ist für die Claude Code- und Cursor-Plattformen optimiert und wird durch natürliche Sprachbefehle wie „Schneide dieses Video“ oder „Füge Chyron ein“ ausgelöst. Die Produkte werden standardmäßig im `~/Movies/<Serie>/<Video-ID>/`-Verzeichnis abgelegt. Der Skill enthält detaillierte Entscheidungsmatrizen für Titel, Cutaway-Typen und Bildschirmformate und stellt sicher, dass echte Produktseiten oder Nachrichtenquellen verwendet werden, anstatt gefälschte Karten.

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

In Ihrer bevorzugten KI fragen

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

Dokumentation

Video Editor · Video-Arbeiter

Setzt 9:16 / 16:9 Talking-Head-Sprachaufnahmen + Overlay-Material (Titel / B-Roll Cutaway / Chyron / Untertitel) zu Kurzvideos zusammen. Die Komposition ist autark; echtes Stock-/Nachrichtenmaterial wird von diesem Skill als Oberkommando an den footage-finder / news-highlight delegiert.

Wann auslösen

Der Benutzer sagt:

  • "Schneide dieses Video", "Video schneiden", "Schnitt" – häufigster Einstieg
  • "Mach eine Folge", "Gesamtvideo ausgeben", "Sprache und B-Roll zusammensetzen"
  • "Neue Folge [der Serie X / Übersee / KI-Startup]"
  • "Füge Untertitel / Chyron / Einblendungen / Titelcard hinzu"
  • "Animationen / Effekte / visuelle Elemente hinzufügen"
  • "Füge Maria-artige echte Artikelbilder / echte Reaktionen / lokale Bilder zur Sprachaufnahme hinzu" → reaction_overlay (1080×1920 Portrait-Talking-Head; zuerst recipes/reaction_overlay.md lesen)

Nicht auslösend, aber verwandt (wird an Schwester-Skills delegiert, video-editor als Oberkommando):

  • Echtes Stock-Material / Stock Footage / B-Roll Leeraufnahmen → footage-finder Skill aufrufen
  • News-Highlight-Karten (echte Quellen-Screenshots + gelbe Licht-Hervorhebung) → news-highlight Skill aufrufen
  • Reine Voice-Over-Generierung, kurzes Material unter 30s → nicht auslösen

Delegation: Shot-Cue-Typ → Welcher Skill

In der Shot-Plan (Tor 1)-Phase wird jedem Cue ein Typ zugewiesen; die beiden nicht in diesem Skill integrierten Typen werden delegiert:

Cue-TypWer macht esProdukt
real_footagefootage-finder SkillZugeschnittenes echtes mp4-Kandidatenmaterial + Review-Seite
news_highlightnews-highlight SkillEchte News-Schlagzeile mit gelber Licht-Hervorhebung als Karte mp4 (Vox-Stil)
source_progressive_highlightDieser Skill animator/cutaway/scene_source_progressive_highlight.htmlSchrittweise gelbe Hervorhebung auf echtem News-/Artikel-Screenshot, ohne Medienseite neu zu zeichnen
tenure_bulletsDieser Skill animator/cutaway/scene_tenure_bullets.htmlNummerierte Bullets mit Personen-Porträt: aktuelles Element gelb, alte Elemente verblassend
numbered_pillsDieser Skill animator/cutaway/scene_numbered_pills.htmlYC-artige 01–04 weiße Kapseln + orangefarbener Randbogen, Gruppenübersicht erscheint nacheinander; inhaltlich gleich wie bestehendes Listicle, Auswahl via Vorschau
company_siteDieser Skill recipes/compose_company_site.pyEchte Website-Scrolling-Aufnahme im Vollbild + durchgehendes rundes PIP der Person; Website standardmäßig PIP, vermeidet Untertitel und Schlüsselbereiche abschnittsweise
cutout_sticker_slideinDieser Skill animator/cutaway/scene_sticker_slidein.htmlTransparente Personen-/Objekt-Sticker mit Quelle, kurzer Verbleib, Einrutschen aus verschiedenen Richtungen; keine alten weißen Rahmen-Reaktionskarten verwenden
source_quote / source_screenshotDieser Skill sucht den Originaltext und erstellt einen echten Screenshot der SeiteMit Original-URL, entsprechendem Absatz und hervorgehobenen echten Screenshot; Zitate dürfen nicht durch neu gezeichnete Karten ersetzt werden
real_person_reactionDieser Skill sucht zuerst Benutzermaterial / originales öffentliches Video, delegiert bei Bedarf an footage-finderEchte Personen-Fotos oder Kurzvideos mit Quelle; nicht automatisch durch Emojis ersetzen
opener / chyron / cutaway / listicle / spec_reviewDieser Skill animator/openerHTML → mov/mp4
reaction_overlay (Person durchgehend sichtbar, echtes Material erscheint lokal)Dieser Skill recipes/reaction_overlay.py + bestehende VideokompositionKomposition von statischen Bild-Overlays und echten Personen-Segmenten; Cue-JSON, Quelllinks und Material wiederverwendbar
UntertitelDieser Skill subtitleKeyword-Highlight eingebrannte Untertitel

Materialvorschläge im Sprachskript: Vor der Cue-Erstellung lesen

Gilt für ganze Videos mit Bildern, Animations-Cues, reaction_overlay und 3:4 slidecast. Wenn der Benutzer ein Sprachskript (HTML / Markdown / Feishu-Dokument) bereitstellt, zuerst den Haupttext und den separaten Bereich "Materialvorschläge" lesen; wenn nur Audio oder Video gegeben wurde, zuerst prüfen, ob im selben Themenordner ein entsprechendes Sprachskript existiert. Reine Untertitel- oder Titel-Aufgaben benötigen diesen Schritt nicht.

  • "Materialvorschläge" sind redaktionelle Absichten, keine vorzulesenden Textzeilen; die Whisper-Transkription dient nur zur Überprüfung des tatsächlich Gesagten und zur Bestimmung der Zeitcodes, darf aber nicht dazu führen, dass die Bildvorschläge aus dem Skript verloren gehen, nur weil neu transkribiert wurde.
  • Jeder Vorschlag wird nach „Anker-Satz / gewünschtes Bild / Originalmaterial oder Quelllink / Alternative“ gelesen. Zuerst die Anker im tatsächlichen Transkript finden; wenn der Sprecher Wörter oder die Reihenfolge ändert, semantisch neu ausrichten, nicht mechanisch die erwarteten Sekunden aus dem Skript übernehmen. Für nicht gesprochene Absätze kein Material erzwingen.
  • Füge eine Spalte „Materialvorschlag aus Skript → Übernommen / Angepasst / Übersprungen“ zur Cue-Tabelle in Tor 1 hinzu. Bei Übernahme den Original-Link behalten; bei Anpassung oder Überspringen einen Grund angeben und ein alternatives Bild vorschlagen. Für Absätze ohne Vorschläge im Skript können dennoch Cues basierend auf dem Sprachinhalt ergänzt werden, dies aber als „Neu“ kennzeichnen.
  • Wenn der Originallink ungültig ist, sich Fakten geändert haben oder das Bild nicht zum aktuellen Bildschirmformat passt, zuerst überprüfen und dann ersetzen; keine ungenauen Screenshots, keine nachgeahmten Originalseiten oder falsch positionierte Bilder verwenden, nur um die Liste abzuarbeiten.
  • Wenn ein Sprachskript vorhanden ist, aber kein Bereich für Materialvorschläge gefunden wird, den Schnitt normal durchführen und den Benutzer nicht bitten, das Skript neu zu schreiben. Die endgültige Cue-Lösung basiert auf der tatsächlichen Sprache + dem Feedback des Benutzers in Tor 1.

Beim Schreiben neuer Sprachskripte siehe das Format im Abschnitt „Sprach-Materialvorschläge“ des html-report Skills.

Echte Seiten und dynamische Bilder: Standard-Schnittregeln

  • Wenn über ein bestimmtes Unternehmen / Produkt gesprochen wird, dessen echte Website oder offizielle Produktoberfläche zeigen. Firmenkennung, Firmenname und echte visuelle Identität beibehalten; bevorzugt Seiten-Scrolling, Mauspositionierung, Produkt-Demo oder lokale Vergrößerung aufnehmen. Für Website-Aufnahmen recipes/capture_company_site.js verwenden, für die Komposition recipes/compose_company_site.py; kein reines Logo zeigen, auch keine selbst erstellten nachgeahmten Webseiten-Karten anstelle der echten Website verwenden. Nur wenn die Website nicht erreichbar ist, offizielle Screenshots mit überprüfbarer Quelle verwenden und den Grund in der Cue-Tabelle angeben.
  • Informationen, die mit dem Sprachfluss präsentiert werden, einzeln animieren. Z. B. die vier Punkte „1, 2, 3, 4“ in der gesprochenen Reihenfolge nacheinander enthüllen, das aktuelle Element hervorheben, und am Ende kurz das Gesamtbild zeigen lassen; eine vollständige Liste von 11 Punkten kann in Gruppen / aufgeteiltem Bildschirm eingeführt werden, muss aber dem Zuschauer am Ende alle 11 Punkte zeigen. Nicht alle vier Punkte bereits beim ersten Punkt als statische Seite anzeigen, und keine informationslosen, kreisenden Animationen anstelle einer schrittweisen Präsentation verwenden.
  • Vollbild-statische Quellen können mit dynamischem Personen-PIP überlagert werden; die echte Firmenwebsite wird standardmäßig mit PIP überlagert, auch wenn sie scrollt. Für die Website recipes/compose_company_site.py verwenden: echte Seite als Vollbild-Aufnahme, das durchgehende Sprachvideo wird in ein rundes kleines Fenster zugeschnitten. Stock-B-Roll-Videos werden standardmäßig nicht mit PIP überlagert. Für jeden Cue zuerst den Untertitelbereich und das wichtigste visuelle Element markieren, dann eine der vier sicheren Positionen (oben links, oben rechts, Mitte links, Mitte rechts) wählen; bei mehreren sicheren Positionen in benachbarten Cues rotieren, damit nicht alle Firmenseiten in derselben Ecke fixiert sind. Innerhalb eines Cues die Position beibehalten, nicht springen. Wenn keine sichere Position vorhanden ist, die Größe ändern oder den Website-Zuschnitt verändern; falls immer noch keine Lösung, Ausnahme dokumentieren und Cue streichen. Für statische Quellen recipes/compose_static_pip.py verwenden. Details siehe Abschnitt 9 der CONVENTIONS.md.
  • Für geordnete Listen zuerst zwei reale Bildvarianten zur Auswahl anbieten. Für denselben Satz von 3–5 Inhalten: scene_numbered_pills.html für nummerierte Kapseln im Vollbild, scene_listicle.html für eine nummerierte Liste mit gelben Punkten und Personen-Porträt; in Tor 2 die gleichen Texte nebeneinander zeigen. Für Kategorien-/Richtungsübersichten bevorzugt nummerierte Kapseln, für die aufeinanderfolgende Erklärung jedes Punktes bevorzugt Listicle; Hunger-artige Top-Bullets sind eine dritte, leichtere Variante mit Porträt. Nach der Fertigstellung die Punkte gemäß der tatsächlichen Sprachzeit nacheinander erscheinen lassen, nicht das gesamte Bild beim ersten Punkt zeigen.
  • Kurze Grafiken und geeignete Einstiegsbilder können von den vier Seiten hereingleiten. Echte Personen-/Objekt-Sticker, Memes, Fotos, lokale Screenshots können pro Cue aus den Richtungen oben, links, unten, rechts rotieren oder mit einem festen Seed zufällig ausgewählt werden; zuerst prüfen, ob der Pfad nicht über Untertitel, Gesichter, Originaltext oder Schlüsseldaten verläuft. Vollbild-Website-Aufnahmen und Original-Post-Videos, die direkt erkannt werden müssen, entscheiden inhaltlich, ob ein Hereingleiten geeignet ist; keine Zwangsübergänge nur für Bewegungseffekt. Das Einrutschen dauert etwa 0,25–0,35 Sekunden, danach genug Lesezeit lassen; innerhalb desselben Shots nicht wiederholt zufällig bewegen. Für Sticker animator/cutaway/scene_sticker_slidein.html verwenden, nicht die alten weißen Rahmen-Emoji-Reaktionskarten aktivieren.
  • Visuelles Rhythmus-Kriterium: Standardmäßig nicht länger als 8 Sekunden reine Personenaufnahmen bei erklärendem Sprachbeitrag. Gemessen vom Ende der letzten effektiven visuellen Unterstützung bis zum Beginn der nächsten; bei Überschreitung von 8 Sekunden muss dies in der Cue-Tabelle vermerkt und begründet werden. Innerhalb der ersten 5 Sekunden den Titel oder den ersten Beleg zeigen. Dies ist die Schnitt-Prüflinie dieses Kanals, nicht eine feste Frequenz, die aus Mariah-Videos abgeleitet wurde; keine Emojis oder Textkarten, die die Sprache wiederholen, nur um Sekunden zu füllen. Effektive visuelle Unterstützung sind Quellseiten, Produktbedienung, echtes Filmmaterial, Diagramme, schrittweise Listen oder neue visuelle Zustände mit Information; normale Untertitel, ständige Titel und reine Mundbewegungsänderungen zählen nicht. Vollständige Definition und QA siehe CONVENTIONS.md.

Schritt Null · Bildschirmformat + Einstieg (★ video-editor ist der einzige Einstieg für den gesamten Workflow)

video-editor ist der Oberbefehlshaber – der Benutzer steigt hier ein, muss nicht selbst zuerst footage-finder / news-highlight / data-viz gehen. Nach der Auslösung als Erstes mit AskUserQuestion nach dem Bildschirmformat fragen:

Ist dieses Video Hoch- oder Querformat?

  1. 9:16 Hochformat (Douyin / Xiaohongshu / Video-Konto / Reels) → 1080×1920
  2. 16:9 Querformat (YouTube / Bilibili) → 1920×1080
  3. 3:4 Praktisches Lehrvideo (Bildschirmaufnahme / „Wie ich mit AI X mache“) → 1080×1440 · über slidecast/ Submodul

Das Bildschirmformat folgt dem Inhaltstyp: Praktisches Lehrvideo / Bildschirmaufnahme-Demo standardmäßig 3:4 (slidecast); Meinungsbeiträge / Vlogs / allgemeine Kultur usw. sind 9:16. Stecke keine normalen Sprachbeiträge in ein 3:4 Bildschirmaufnahme-Layout, und mache kein praktisches Lehrvideo im 9:16-Format.

Abkürzung für die Entscheidung: Wenn der Benutzer bereits das Bildschirmformat genannt hat („Mach ein 16:9“ / „für YouTube“ / „für Bilibili“), nicht fragen, direkt festlegen.

Das Bildschirmformat bestimmt die nachgelagerten Schritte:

9:1616:9
Submodul-Leinwand1080×19201920×1080
Echte Leeraufnahmenfootage-finder --verticalfootage-finder (Standard Querformat)
Nachrichtenkartenews-highlight (angepasst Hochformat)news-highlight (Root Standard 1920×1080)
Datendiagrammdata-viz (1080×1920)data-viz (1920×1080)
composerecipes/compose_dual.sh.templaterecipes/compose_16x9.sh.template
SicherheitszoneCONVENTIONS Abschnitt 3CONVENTIONS Abschnitt 1 Zeile 16:9

Diese Sub-Skills unterstützen bereits Querformat; video-editor ist für die Aufgabenverteilung + endgültige Komposition verantwortlich, der Benutzer spricht während des gesamten Prozesses nur mit video-editor. 16:9 bietet zusätzlich eine Person-PIP-Funktion (sauberes Personen-Talking-Head → wenn kein Inhalt, Person vollbild; wenn Inhalt vorhanden, schrumpfen auf kleines Fenster unten rechts, siehe CONVENTIONS Abschnitt 9 + compose_16x9 Template).

Nach Festlegung des Bildschirmformats zur untenstehenden Produktform-Routing gehen.


Schritt Eins · Routing-Frage (★ Sofort nach der Auslösung ausführen)

Nicht davon ausgehen, dass der Benutzer den gesamten Workflow durchlaufen möchte. Zuerst einmal mit AskUserQuestion fragen. Nach dem endgültigen Produktform unterscheiden, nicht nach der Aktion – der Benutzer denkt in Produkten, nicht in Prozessen.

Was soll am Ende dabei herauskommen?

  1. Ein fertiges Video mit Untertiteln: Fertiges Video vorhanden, nur Untertitel hinzufügen → subtitle/ Submodul (ohne Drei-Tore-Workflow)
  2. Eine Titelcard / Intro: 4,5s transparente Alpha-Overlay → opener/ Submodul (ohne Drei-Tore-Workflow)
  3. Ein fertiges Video mit Animationen: Chyron / Cutaway / Aufzählungs-Animationen hinzufügen → animator/ Submodul (mit Drei-Tore-Workflow)
  4. Komplett von Null aus: Sprache → Titel → Animationen → Untertitel alles inklusive → opener → animator → subtitle nacheinander
  5. Praktisches Sprach-Lehrvideo (3:4): Sprache → Case-Step Bildschirmaufnahme-Fenster Slide + Untertitel, du überlagerst Bildschirmaufnahme/Gesicht → slidecast/ Submodul (mit Drei-Tore-Workflow)

Standard für Optionsnummern: Für die AskUserQuestion-Options-Präfixe ausschließlich die reinen Ziffern 1 / 2 / 3 / 4 verwenden, keine eingekreisten / Katakana-Zeichen wie ①②③④, ㋐㋑㋒㋓ – diese werden von den Schriftarten der Benutzer oft nicht unterstützt und als Kauderwelsch dargestellt.

Abkürzung für die Entscheidung (Fälle, in denen ohne Frage direkt navigiert werden kann):

Ursprüngliche BenutzeraussageDirektnavigation
„Untertitel runterladen / hinzufügen / einbrennen“1 · subtitle/
„Intro / Titelcard / Opener machen“2 · opener/
„Neue Folge X-Serie“ / „Ein Video machen“ / „Gesamtvideo ausgeben“4 · Vollständiger Workflow
Kontext zeigt bereits Arbeit an einem Gesamtvideo, möchte Chyron / Cutaway hinzufügen3 · animator/
„Praktisches Lehrvideo / Bildschirmaufnahme-Demo / Wie ich mit AI X mache“ / 100 AI-Praxisbeispiel-Serie5 · slidecast/ (3:4)
„Wie Maria dem vertikalen Talking-Head echte Artikel, echte Reaktionen und Bilder hinzufügen“, und der Benutzer hat das Originalvideo bereits gegeben3 · reaction_overlay; zuerst bestätigen, dass das Quellvideo 1080×1920 ist, dann recipes/reaction_overlay.md lesen

Schlüsselprinzip: 1, 2 sind Einzeloperationen, ohne Drei-Tore-Workflow; 3, 4 müssen durch die Drei-Tore-Workflow gehen.

★ Drei-Tore-Workflow (für Optionen 3, 4 zwingend, kein Überspringen erlaubt)

⚠ Die Routing-Option ist keine Render-Erlaubnis – wenn der Benutzer 3 oder 4 wählt, bedeutet das nur „ich möchte den animator-Workflow durchlaufen“. Nach dem Eintritt in animator muss zwingend der Drei-Tore-Workflow durchlaufen werden, jedes Tor stoppt und wartet auf eine explizite Bestätigung des Benutzers, bevor es zum nächsten Schritt geht. Auch wenn der Benutzer dir bereits Titel / Cue-Anzahl / Text mitgeteilt hat, bedeutet das nicht, dass er dir erlaubt, ein Tor zu überspringen.

Tor 1 · Textplan        ─►   Gib eine Markdown-Cue-Tabelle im Chat aus
                              STOP · Warte auf eine explizite Rückmeldung wie „OK / Ändere X / Streiche Y / Bestätigt“
                              ❌ Kein Cue HTML schreiben
                              ❌ Nicht mit dem Rendern beginnen
                                   │
Tor 2 · Spec Review    ─►   Schreibe HTML für jeden Cue
                              ★ Zuerst node recipes/lint_layout.js --all <Cue-Verzeichnis> ausführen
                                (Sicherheitszone/Minimal-Schriftgröße/Textbreite/Zentrierung, erst nach bestandenem FAIL weiter)
                              Dann _review/spec_review.html generieren
                              STOP · Teile dem Benutzer mit: „Öffne file:///<Projekt>/_review/spec_review.html zum Ansehen, gib mir nach Feedback Bescheid“
                              ❌ Kein ProRes mov rendern
                              ❌ Kein Gesamtvideo komponieren
                                   │
Tor 3 · Letzter Check vor Render ─►  AskUserQuestion: Zusammenfassung + Ermessensentscheidungen + Ausgabeform (drei Optionen)
                                   STOP · Warte, bis der Benutzer eine Auswahl getroffen hat
                                   ❌ Nicht die Ausgabeform voraussetzen
                                   │
Rendern + Komponieren + Untertitel

Solange der Benutzer nicht explizit „Bestätigt / Ok / Los / Render / OK“ oder eine ähnlich eindeutige positive Aussage gemacht hat, befindest du dich noch im vorherigen Tor.

❌ Negativbeispiele (Nicht so machen)

Fehlerhaftes VerhaltenSchaden
Benutzer wählt 4 + gibt Titel → Du extrahierst direkt Sprache + transkribierst + schreibst HTML + renderstÜberspringt Tor 1, den günstigsten Checkpoint „1-2 Zeilen ändern“, spart 5–10 min + 10k Token
Benutzer sagt „Ich möchte das so“ → Du entscheidest „Da er es so will, rendere direkt los“Überspringt Tor 2, visueller/Font-Fehler im HTML neu rendern kostet 5x mehr (30s Render × Fehlschläge)
Benutzer gibt in Tor 2 Feedback „Cue 3 ändere X“ → Du änderst und renderst direktÜberspringt Tor 3 Last Call, lässt den Benutzer nicht die Ausgabeform wählen (komponiertes Original / B-Roll Transparenzspur / beides), möglicherweise 500 MB ProRes unnötig rendern
Benutzer sagt nicht explizit ja → Du nimmst an, er möchte fortfahren und tust esBenutzer hat noch nicht fertig geprüft, das gerenderte Ergebnis läuft in die falsche Richtung, muss den gesamten Durchlauf wiederholen

✅ Positivbeispiel

„Betrete animator. Zuerst transkribieren + Cue-Plan Markdown-Tabelle zum Ansehen ausgeben. Das ist Tor 1 – kein HTML schreiben, nicht rendern, warte auf dein OK / Änderung / Streichung.“

Am Ende jedes Tores mit einem ähnlichen expliziten Satz den Benutzer darüber informieren, dass wir uns jetzt in Tor X befinden und auf sein OK warten – nicht stillschweigend fortfahren.

Detaillierter Ablauf + spezifische Produktliste pro Tor + Cue-Anzahl-Baseline siehe animator/README.md.


Submodul-Einstieg

SubmodulFunktionEinstiegsdokument
opener/4,5s gelbe Serifen-Titelcard, transparentes Alpha-Overlayopener/README.md
animator/Chyron / Cutaway / Listicle / Spec Review, Drei-Tore-Workflowanimator/README.md
subtitle/Whisper-Transkription → Keyword-Highlight PNG-Overlay → Untertitel einbrennen. 9:16 mit add_subtitles.py; 16:9 lange Videos müssen zwingend make_events_16x9.py + burn_chunked_16x9.py verwenden (eine durchgehende Kette brennt fest, siehe README)subtitle/README.md
slidecast/Praktisches Sprach-Lehrvideo (3:4): Sprache → Case-Step Bildschirmaufnahme-Fenster Slide mit Zeitcode-Hart-Schnitt + Untertitel → Vorschau mp4 + Transparenz-Layer movslidecast/README.md
reaction_overlayPersonen-Sprachaufnahme als Basis, bevorzugt echte Quellen-Screenshots und echte Reaktionen; Material und Verweildauer inhaltlich bestimmt, nicht nach fester Frequenz Emojis gestreutrecipes/reaction_overlay.md

Gemeinsame Spezifikationen

  • Liefer-Spezifikation: 做内容/_运营文档/视频成片流水线-模板.md – Ein Video = zwei gleichnamige Ordner (Arbeit / Lieferung) + Standard drei Produkte aus Tor 3 (Gesamtvideo / 3:4 Titel-Layer / Zeitachse) Ablage in ~/Movies/<Serie>/<Video-ID>/. Gesamtvideo-Workflow folgt dieser Vorlage.
  • Lieferprodukt-Rezept: recipes/deliverables.md (Wie Titel-Transparenz-Layer rendern · Zeitachse aus Cue-Plan generieren · Lieferordner benennen)
  • P0 Liefer-Tor: Für 9:16 Gesamtvideo nach Tor 1 python3 recipes/preflight.py plan <Projekt>/preflight.json ausführen, vor jeder Lieferung python3 recipes/preflight.py final <Projekt>/preflight.json ausführen und Stichproben prüfen, Review ausfüllen und erneut bestehen; auf 0-Sekunden-Titel, Untertitel-Preset, >8-Sekunden visuelle Lücken und PIP/Logo/Namensüberdeckung prüfen. Format siehe recipes/preflight.example.json und recipes/deliverables.md.
  • Visuelle Spezifikation: CONVENTIONS.md (Sicherheitszone, Hana-Farbpalette, Chyron-Timing, Schriftgrad-Hierarchie, Climax-Regeln) – vor dem Schreiben von HTML für jedes Submodul lesen
  • Layout-Lint (★ In Tor 2 zwingend ausführen): node recipes/lint_layout.js <cue.html> – nach dem Puppeteer-Rendering maschinelle Prüfung: Sicherheitszone / minimale Schriftgröße 22px / Textbreite ≤920 / Zentrierungsversatz / Anzahl Schriftgrade, drei Voreinstellungen 9:16·16:9·3:4 automatisch erkennen, Animations-Cues anhand des Endzustands bewerten. Bei FAIL erst reparieren, dann dem Benutzer das Spec Review zeigen. Dekorative Elemente, die bewusst die Grenzen überschreiten, mit data-lint-ignore versehen.
  • Umgebungs-Selbstprüfung: bash recipes/doctor.sh – bei neuem Rechner / Render-Fehler zuerst ausführen (ffmpeg / whisper / Chrome / puppeteer-core / avconvert / Schriftarten 11 Punkte)
  • ffmpeg Doppelausgabe-Rezept: recipes/compose_dual.sh.template (mp4 + optional Alpha mov)
  • Bekannte Fallstricke: recipes/PITFALLS.md (broll_reel Flackern / HyperFrames webm ohne Alpha / ffmpeg # Escape / Alpha-Layer wird grau / Chinesisch-Pfad TCC usw. 23 Einträge)
  • Historische Beispiel-Index: recipes/examples.md (11 Cue-Paradigmen aus deinen echten Videos)

Doppelausgabe-Strategie

DateiVerwendungWann ausgebenSpezifikation
<Filmname>_整片.mp4Vorschau / Veröffentlichung / ReviewBei jeder Iteration ausgebenH.264 yuv420p · CRF 20 · mit Audio + Overlay
<Filmname>_broll层.movOverlay für Schnittsoftware (Premiere / AE / FCP)Nur ausgeben, wenn der Benutzer explizit „Finale Version / Schnitt-Layer / ProRes-Layer / B-Roll only“ sagtProRes 4444 yuva444p10le · Transparent · Stumm

Während der Iteration standardmäßig nur das gesamte mp4-Video ausgeben. Ein einzelner Render des B-Roll-Layers dauert ~30s + schreibt ~500 MB auf die Platte, wird während der Iteration für Reviews nicht benötigt.

⚠ Der B-Roll-Layer ist immer eine vollständige, zeitlich korrekte Spur. Wenn der Benutzer "B-Roll only" sagt, meint er diese eine gesamte Spur, keinesfalls N einzelne Cue-Segmente als mov zum Selbstschneiden.

Die Alpha-Gesamtspur für nicht überlappende Cues muss zwingend mit der Concat-Methode erstellt werden: transparente Lücke + Cue + transparente Lücke + Cue, die Lücke wird basierend auf der tatsächlichen Cue-Dauer/Framerate von ffprobe berechnet. Nicht halbtransparente Karten einzeln auf eine [email protected] transparente Leinwand overlayen; dies führt dazu, dass cremefarbene Karten nach dem endgültigen Overlay auf dem Sprachvideo grau-schwarz erscheinen. Details siehe recipes/PITFALLS.md Punkt 23 und recipes/compose_dual.sh.template.

Vor der Lieferung des B-Roll-Layers muss eine echte Hintergrund-QA durchgeführt werden: Das endgültige <Filmname>_broll层.mov auf das Original-Sprachvideo overlayen, 4-8 Keyframes / Contact Sheet extrahieren und auf Farben, Alpha, Gesichtsüberdeckung und Timing prüfen. spec_review.html kann nur HTML/Animationen prüfen, ersetzt nicht die endgültige ffmpeg-Kompositionsprüfung.

Titel-Entscheidungsmatrix (Wenn der Benutzer „Titel hinzufügen / Intro / Schlüsselwörter“ sagt, wie entscheiden?)

Benutzer sagtStandard =Schlüsselparameter
„Titel hinzufügen” / „title card” / „Intro” / „opener”opener/yellow.html (Gelbe Serifen-Großüberschrift + weiße kursive Unterüberschrift)Transparentes Alpha · 0s Videostart · top-third (padding-top 280px) · 4,5s · ProRes 4444 mov
„An Zeitpunkt X ein Wort betonen” / „Text einblenden”animator/chyron/chyron.htmlGelbe Kapsel · top 16% (y≈307 Zentrum) · 1-2s pop
„1, 2, 3 Aufzählung” / „Drei / vier Punkte”animator/cutaway/scene_listicle.htmlNummerierte Liste zeilenweise enthüllt · Karte top 280px
„Vollbild-Datenkarte / Vergleichsgrafik” / „Zu X-Daten wechseln”animator/cutaway/scene_blank.htmlVollbild weißer Hintergrund Cutaway · caption top 280px · undurchsichtig mp4

Schlüsselprinzipien:

  • Video-„Titel” = 0s Intro, standardmäßig so. Auch wenn der Sprecher den Satz erst bei 22s sagt, erscheint der Titel dennoch bei 0s. Das Konto-Format mit gelber Hauptüberschrift + weißer Unterüberschrift beibehalten; auch wenn die Hauptüberschrift nur eine Zeile hat, die weiße Textschicht beibehalten, es sei denn, der Benutzer fordert explizit eine einfarbige Version an. Eine benutzerdefinierte Titel-Szene muss in Tor 2 mit opener/yellow.html auf Farbe und Hierarchie verglichen werden.
  • Intro-Titel = transparentes Alpha-Overlay auf dem Talking-Head. Kein separater goldener Vollbild-Schuss.
  • Datenkarte Cutaway = undurchsichtiges Vollbild, überlagert das Talking-Head; andere Overlays (Titel / Chyron) sind standardmäßig transparent.

Unterstützende Skills

  • hyperframes / hyperframes-cli — HyperFrames CLI (rendert HTML → mov/mp4), Render-Abhängigkeit für das Animations-Submodul

Außerhalb des Skopus dieses Skills (delegiert)

  • Echtes Stock-Material beschaffen (Pexels / Pixabay) → footage-finder Skill
  • News-Highlight-Karten → news-highlight Skill
  • Textskript-Generierung / Sprach-TTS → TTS-Funktion des hyperframes Skills
  • Content-Compliance-Prüfung → content-audit Skill

Verwandte Skills