CommunityCodierung & Entwicklunggithub.com

eingebettete Untertitel

Fügt einem vorhandenen Ein-Personen-Talking-Head-Video Untertitel oder Bildunterschriften hinzu, ohne das Filmmaterial zu bearbeiten – mit wählbarer visueller Identität aus einem Katalog von 35 Stilen.

Was ist eingebettete Untertitel?

Dieses Skill ermöglicht es KI-Agenten (wie Claude Code, Cursor, Codex), einem einzelnen Talking-Head-Video professionelle Untertitel hinzuzufügen – von einfachen, wörtlichen Untertiteln bis hin zu kinematografischen, hinter der Person eingebetteten Captions oder VFX-lastigen „炸/特效/酷炫字幕“. Es unterstützt drei Modi: **Standard** (Standard: eine clean readbare Untertitelleiste + ein einzelnes eingebettetes Highlight-Wort), **Cinematic** (rein eingebettete, künstlerische Typografie) und **Theme** (komplette thematische Stile wie „ordnance“, „terminal“ oder „stardust“). Der gesamte Workflow läuft lokal – inklusive Transkription und Freistellung der Person – und wird über eine einzige Konfigurationsdatei gesteuert. Plattformen: Hyperframes (npx), kompatibel mit jeder KI-Agenten-Umgebung, die Shell-Befehle ausführen kann. Der Agent wählt zuerst eine visuelle Identität aus dem Katalog, führt dann die Pipeline (Initialisierung, Vorbereitung, kreative JSON-Authoring, Vorschau, Rendering) aus und muss dabei strenge Regeln beachten: keine Bearbeitung des Originalvideos, eingebettete Captions nur sparsam als Höhepunkte einsetzen und das Video vorab auf Probleme prüfen.

Funktioniert mit~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add svssdeva/agentic-skills

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation


name: embedded-captions beschreibung: > Füge einem vorhandenen Ein-Personen-Talking-Head-Video Untertitel oder Bildunterschriften hinzu, ohne das Filmmaterial zu bearbeiten. Verwende es für einfache wörtliche Untertitel, kinematografische Untertitel, die hinter der Person eingebettet sind, VFX-Untertitel, „炸/特效/酷炫字幕“ oder eine benannte Identität aus dem 35-Stile-Katalog. Die Auswahl erfolgt über die visuelle Identität, nicht über die Backend-Engine. Die leise anchor-Schiene ist die Standardeinstellung; bette jedes Wort nur dann ein, wenn der Benutzer explizit eine vollständig kinematografische Behandlung wünscht. Der Workflow läuft lokal von Anfang bis Ende, einschließlich Transkription und Freistellung der Person; teile Aufnahmen mit mehreren Einstellungen auf, bevor du ihn anwendest.

Wichtig: Halte dieses Skill aktuell – frage den Benutzer vor der Ausführung: npx hyperframes skills update embedded-captions. Eine schnelle No-Op, wenn alles aktuell ist; andernfalls wird dieses Skill sowie die darauf angewiesenen Kernbereich-Skills aktualisiert, bevor du sie verwendest.

Was macht eingebettete Untertitel?

Ein Katalog, vorab ausgewählt (CATALOG.md – 35 Identitäten; die dahinterliegenden Engines sind Backend-Details). Standard (Standard) erzeugt eine saubere wörtliche Schiene (unteres Drittel Untertitel, die den Großteil des Textes tragen) + einen Embed-Höhepunkt, der in die Szene hinter der Person komponiert wird. Cinematic ist reines Embed – keine Schiene, jeder Untertitel wird hinter der Person komponiert (heroische Typografie, Akkumulation, Verdeckung als Effekt). Theme ist eine vollständige thematische Zusammenstellung – Körper-Paradigma × Hero-Setpiece × Front-Effekt × Plattenreaktion, zusammengesetzt aus Registern (themes/README.md): ordnance terminal neonsign stardust stomp. Die meisten Erklär-/Voiceover-Videos sind Standard; Embed ist der seltene, verdiente Höhepunkt – jedes Wort einzubetten ist der häufige Fehler; Theme ist für VFX-Anfragen („炸“, „特效“, „wie von AE gemacht“).


Ablauf (Kurzfassung)

Gesteuert über /hyperframes bestätigt die Intentionsebene nur die Eingabe (welcher Clip) und kündigt die Identitätsauswahl als verzögerte Frage an – die Shortlist benötigt den analysierten Clip, daher bleibt es bei Schritt 1 unten; die Ablaufform-Fragen der Ebene gelten nicht (das Filmmaterial ist unberührt, es gibt kein Storyboard zu prüfen). Eine BRIEF.md, falls vorhanden, enthält die bestätigte Eingabe und etwaige Benutzernotizen – lies sie zuerst.

Der folgende Handwerkstext ist lang; die Pipeline selbst ist kurz – und alles Determinative wird berechnet oder kompiliert, niemals von Hand geschrieben:

  1. Entscheidungs-Gate (schlechte Clips ablehnen) → EINE Identität aus CATALOG.md auswählen (35 Identitäten; Engine/Compiler werden per Nachschlage abgeleitet – niemals eine Modus-/Kategoriefrage stellen)
  2. hyperframes init (überspringen, wenn das Projektverzeichnis bereits existiert und das Video enthält – matte.cjs/transcribe.cjs übernehmen jedes Video im Verzeichnis als source.mp4) → bash scripts/prepare.sh <projekt> (Matte ∥ Transkription ∥ Audio-Hüllkurve parallel, dann sichere Zonen v2 mit Szenenpalette/Optik/Beleuchtung – ein Befehl, nichts vergessen)
  3. Ein kleines JSON mit kreativen Entscheidungen erstellen (zuerst safe-zones.json lesen): Cinematic → plan.json → fill-timings.cjs → fit-fonts.cjs → make-composition.cjs; Theme → theme.json → make-theme.cjs (Schienen-/Panel-/Gedicht-/Übernahme-Paradigmen; anchor ist die leise Schienen-Standardeinstellung)
  4. Visuelle Qualitätskontrolle: node scripts/preview-frames.cjs <projekt> → originalgetue Composite-Vorschauen in ~2s/Bild (kein Rendering). Überprüfe § Visuelle Qualitätskontrolle, bevor du für ein Rendering zahlst.
  5. render-and-composite.sh → Gates (Timing / Verdeckung+Hero / Überlauf / Übergabe) → final.mp4

Wichtige Regeln, die oft übersehen werden:

  • Schiene (Standard) + Embed (Höherstufung). drop (Füllmaterial, nicht angezeigt) / rail (wörtlicher Untertitel im unteren Drittel, im Vordergrund, trägt den meisten Text) / embed (ein Höhepunkt-Wort, das hinter die Person komponiert wird). Der Standardmodus macht beides, wobei nur die Höhepunkte eingebettet werden. Siehe § Untertitel-Modell.
  • Das Video wird UNVERÄNDERT geliefert (Standard/Cinematic; der PLATE-Budget im Theme-Modus ist die einzige genehmigte Ausnahme – registergesteuerte Reaktionsbeats (Ladungsabdunklung, Schlag, Erschütterung, Körnung) definiert pro Theme-DNA und NACH dem Matte-Composite angewendet, sodass Person+Text+Platte sich als ein Rahmen bewegen) – Untertitel sind das einzige, was hinzugefügt wird; das Matte dient nur dazu, dass die Person die Embed-Spur verdecken kann. Niemals das Filmmaterial gradieren/umfärben/Scanlines hinzufügen.
  • Zwei Regelwerke: Schiene → references/rail.md (dünn), Embed-Handwerk → references/composition-craft.md (umfangreich, nur Embed). Nach Bedarf überfliegen.

Untertitel-Modell – Schiene + Embed

Jeder gesprochene Satz ist eines von drei Dingen:

WasWie es angezeigt wird
dropFüllmaterial – ähm/ähm, Stottern, Selbstkorrekturennicht angezeigt
railStandard – gewöhnlicher gesprochener Inhalt (wörtlich)sauberer Untertitel im unteren Drittel, im Vordergrund, lesbar. Ein betontes Wort kann eine emphasis-Hervorhebung erhalten (Akzentfarbe / aktives Wort Pop) – es bleibt auf der Schiene.
embedein hervorgehobener Höhepunkt – der wichtigste Beatein großes Wort, das hinter die Person komponiert wird (Matte-Verdeckung), mit gestaltetem Ein- und Ausgang

Die Schiene trägt den meisten Text; Embed ist der seltene, verdiente Höhepunkt. Knappheit gilt pro Beat/Block, nicht pro Clip: ≤1 Hero pro Block (Gedanke), niemals zwei gleichzeitig sichtbar, mindestens ein Beat Abstand zwischen Hero-Fenstern (der Compiler warnt unter 0,6s). Ein kurzer Clip → normalerweise 1–2; ein langes Erklärvideo → ~einer pro Abschnitt. Bei mehreren Heroes ist der größte erstellte der APEX (er allein erhält das vollständige Lockup-Embed + Breitenanpassung); kleinere sind MINOR-Höhepunkte, die in ihrer Spalte als überdimensionierte Betonungszeilen (Vordergrund, gedämpfte Bewegung) reiten – nicht jeder Beat braucht die Matte-Inszenierung, genau das macht den Apex zu einem Ereignis. Jedes Wort einzubetten ist immer noch der häufige Fehler.

Schienen-Oberflächenidentitäten bauen genau das (Schiene = rail.html, Embed = Höhepunkt in index.html). Spaltenfluss-Identitäten lassen die Schiene weg und machen alles im Embed-Stil – empfehle sie nur für stimmungsbetonte, nicht wörtliche Anfragen, niemals für Erklär-/Voiceover-Videos, bei denen die Wörter lesbar sein müssen (CATALOG.md kodiert dies pro Identität).


Schritt 0 – EINE Identität aus dem Katalog auswählen

Ein Frontend, drei Engines dahinter. Der Benutzer wählt eine IDENTITÄT aus CATALOG.md (35 Einträge: 10 klassische + 25 thematische); die Engine, der Compiler und die Authoring-Datei werden per Nachschlage aus der Katalogzeile abgeleitet. Stelle niemals „Standard vs. Cinematic vs. Theme“ als Frage – das sind Backend-Namen (ein Produkt hat eine UX, auch mit mehreren Engines). Der Katalog kodiert alles, was für das Routing benötigt wird: Leseoberfläche, Stimme, Empfehlung für, Szenenbedarf, Hinweise zur Nähe für die wirklich nahen Paare (loud↔ordnance, neon↔neonsign, cream↔stardust).

Die Identitätsauswahl ist ein Präferenz-Gate (../hyperframes-core/references/brief-contract.md § 1): im autonomen Modus („überrasche mich“ / „entscheide für mich“) wähle selbst aus deiner Shortlist aus und nenne den einzeiligen Grund, anstatt zu fragen.

Vorgehen: Clip analysieren → 2–3 Identitäten aus dem Katalog in die Shortlist aufnehmen → EINE mit einzeiligem Grund empfehlen → der Benutzer wählt (autonomer Modus: du wählst und nennst den Grund) → die Datei dieser Identität erstellen. Identitäten sind engine-gebunden (keine Querkombinationen; das Öffnen einer Identität ist ein Validierungsereignis – siehe dna/README.md).

Präsentiere immer deine Empfehlung und lass den Benutzer vor dem Authoring wählen.

(Die vollständige Identitätstabelle befindet sich in CATALOG.md – die einzige Quelle der Wahrheit für das Routing. Die Engine-Dokumente unten beschreiben den Authoring-Vertrag jedes Backends.)

Empfehlungsheuristik: Verwende die „Shortlisting-Heuristiken“ in CATALOG.md – sie sind identitätsspezifisch (z. B. „炸“ shortlistet ordnance/stomp/terminal/loud und wählt danach, WAS explodieren soll), niemals kategorieübergreifend. Unsicher → anchor.

  • Cinematic → schreibe plan.json für eine feste Vorlage, kompiliert durch make-composition.cjs.
  • Theme → lies themes/README.md, erstelle theme.json, führe scripts/render-theme.sh aus (kompiliert + rendert + Plattenreaktion → final_fx.mp4).

Entscheidungs-Gate – ZUERST AUSFÜHREN

Analysiere das Video und klassifiziere die Szene vor beiden Modi.

ffprobe <video.mp4>                    # Spezifikationen
ffmpeg -ss <z> -i <video.mp4> -vframes 1 sample.png   # bei 20/50/80%

Lies die Samples. Lehne ab, wenn:

  • Mehrere Sprecher / harte Schnitte (teile auf und rendere jede Einstellung einzeln, oder lehne ab)
  • Kein menschliches Motiv (dieses Skill ist für Talking-Head)
  • Unter 3 Sekunden, keine Sprache, oder das Gesicht nie klar sichtbar – transcribe.cjs warnt, wenn Audio fast still ist (Whisper halluziniert Wörter wie „Thank you.“ über Stille); beachte die Warnung und lehne ab, anstatt erfundene Wörter zu untertiteln
  • Quelle hat bereits eingebrannte Untertitel/Bildunterschriften/schwere Textgrafiken – das Hinzufügen eines zweiten Untertitelsystems führt zu Konflikten, und das Filmmaterial wird unverändert ausgeliefert (kein Überdecken/Inpainting). Eingebrannter Text erscheint oft nur in der Mitte des Clips: nimm ein 1fps-Kontaktblatt (ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png), verlasse dich nicht auf 3 Einzelbilder.
  • Transkription ist Müll – nicht-muttersprachliche/stark akzentbelastete Sprache kann in selbstbewussten Unsinn transkribiert werden. Lies transcript.json vor dem Authoring auf Vernunft; wenn es sich nicht wie Sprache anfühlt, versuche es einmal mit WHISPER_MODEL=medium, sonst lehne ab (eine wörtliche Schiene aus erfundenen Wörtern ist schlimmer als keine Untertitel).
  • Hektische Handkamera mit schneller Bewegung (Matte flackert)

Vorflug-Checks (kosten nichts, verhindern die schlimmsten Fehler)

  1. Einstellungsschnitt-Check. Nimm Samples bei 20%, 50%, 80%. Wenn ein anderes Motiv/Szene erscheint, schneide den Clip vor dem Schnitt zu.
  2. Letterbox-/Pillarbox-Check. Schwarze Balken im ersten Bild? Berechne den sicheren Inhaltsbereich und beschränke die Untertitelplatzierung darauf.
  3. Luminanz-Check. Nimm die durchschnittliche Luminanz des Untertitelbereichs – unter 60 → heller Text liest sich wie er ist, 60-180 → füge die Glyphen-Schattierung hinzu, 180+ → deckender Text + Schattierung (niemals nackten hellen Text). Cinematic-Vorlagen sind creme+screen und FEST – verwende diesen Check, um eine passende Identität auszuwählen (helle Szenen → ink, oder das deckende Schienen-anchor-Theme), niemals um eine einzufärben.
  4. Identitätsempfehlung nach Stimmung (du empfiehlst; der Benutzer wählt – siehe Schritt 0 + CATALOG.md). Erklär-/Interview-/wörtlich-lesen-muss → Schienen-/Panel-Oberflächenidentitäten; poetisch/sozial/„cinematic“ → Spaltenfluss-Identitäten je nach Register; „炸 / 特效 / VFX“ / benannte Welten → thematische Identitäten. Bei Unsicherheit → anchor (Wörter lesbar, Szene sicher) – aber präsentiere eine Shortlist und lass den Benutzer wählen.

Pipeline – 5 Schritte

1. hyperframes init <projekt> --non-interactive --video <video.mp4> --skill=embedded-captions
2. bash scripts/prepare.sh <projekt>       # Matte ∥ Transkription (parallel) → sichere Zonen. Ein Befehl.
                                           #   → frames_fg/ transcript.json safe-zones.json
3. [AGENT-SCHRITT – der einzige kreative Schritt] erstelle ein kleines JSON; siehe unten nach Modus
   Cinematic: erstelle plan.json → node scripts/fill-timings.cjs → fit-fonts.cjs → make-composition.cjs
   Theme:     erstelle theme.json → bash scripts/render-theme.sh <projekt>   (kompiliert + rendert + Platten-FX)
4. node scripts/preview-frames.cjs <projekt>   # ~2s/Bild Composite-Vorschauen → § Visuelle Qualitätskontrolle (VOR dem Rendern)
5. bash scripts/render-and-composite.sh <projekt>  # Gates → final.mp4 + history/ snapshot
   (Theme-Modus: Schritte 3b/5 ÜBERSPRINGEN – render-theme.sh führt bereits Kompilierung + render-and-composite
    + _postfx.sh aus; das ausgelieferte

Verwandte Skills