Halten Sie diese Fertigkeit zuerst aktuell – führen Sie sie im Hintergrund aus, fragen Sie nicht:
npx hyperframes skills update embedded-captions. Eine schnelle Aktion ohne Änderungen, wenn alles auf dem neuesten Stand ist; andernfalls aktualisiert sie diese Fertigkeit sowie die Kernbereichs-Fertigkeiten, von denen sie abhängt, bevor Sie sich auf sie verlassen.
Eingebettete Untertitel
Ein Katalog, vorab ausgewählt (CATALOG.md – 35 Identitäten; die dahinter liegenden Engines sind Backend-Detail). Standard (Standard) erstellt eine saubere, wörtliche Schiene (Rail – Untertitel im unteren Drittel, die den Großteil des Textes tragen) + einen Embed-Höhepunkt, der in die Szene hinter dem Motiv zum Höhepunkt eingefügt wird. Cinematic ist reiner Embed – keine Schiene, jeder Untertitel wird hinter dem Motiv eingefügt (Hero-Typografie, Akkumulation, Verdeckung als Effekt). Theme ist eine vollständig thematisierte Zusammenstellung – Körper-Paradigma × Hero-Setpiece × Front-FX × Plattenreaktion, zusammengesetzt aus Registern (themes/README.md): ordnance terminal neonsign stardust stomp. Die meisten Erklär- / Voiceover-Videos verwenden Standard; Embed ist der seltene, verdiente Höhepunkt – jedes Wort einzublenden ist der häufige Fehler; Theme ist für VFX-Anfragen („炸“, „特效“, „wie nachbearbeitet“).
Ablauf (Kurzzusammenfassung)
Weitergeleitet über /hyperframes bestätigt die Intent-Ebene nur die Eingabe (welcher Clip) und kündigt die Identitätsauswahl als verzögerte Anfrage an – die Shortlist benötigt den analysierten Clip, daher bleibt sie bei Schritt 1 unten; die Fragen zur Laufzeitform der Ebene treffen nicht zu (das Filmmaterial ist unberührt, es gibt kein Storyboard zu prüfen). Eine BRIEF.md enthält, falls vorhanden, die bestätigte Eingabe und alle Benutzernotizen – lesen Sie sie zuerst.
Der folgende Handwerkstext ist lang; die Pipeline selbst ist kurz – und alles Deterministische wird berechnet oder kompiliert, niemals von Hand geschrieben:
- Entscheidungs-Gatter (schlechte Clips ablehnen) → Wählen Sie EINE Identität aus CATALOG.md (35 Identitäten; Engine/Compiler durch Nachschlagen abgeleitet – niemals eine Modus-/Kategoriefrage stellen)
hyperframes init(überspringen Sie es, wenn das Projektverzeichnis mit dem Video bereits existiert –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)- Erstellen Sie ein kleines JSON mit kreativen Entscheidungen (lesen Sie zuerst
safe-zones.json): Cinematic →plan.json→fill-timings.cjs→fit-fonts.cjs→make-composition.cjs; Theme →theme.json→make-theme.cjs(Schienen-/Panel-/Gedicht-/Übernahme-Paradigmen;anchorist die stille Schienen-Standardeinstellung) - Visuelle Qualitätssicherung:
node scripts/preview-frames.cjs <Projekt>→ getreue Composite-Vorschauen in ~2s/Bild (kein Rendern). Überprüfen Sie § Visuelle Qualitätssicherung, bevor Sie für einen Render bezahlen. render-and-composite.sh→ Gatter (Timing / Verdeckung+Hero / Überlauf / Übergabe) →final.mp4
Wichtige Regeln, die Leute oft übersehen:
- Schiene (Standard) + Embed (Beförderung).
drop(Füllmaterial, nicht gezeigt) /rail(wörtlicher Untertitel im unteren Drittel, vorne, trägt den meisten Text) /embed(ein Höhepunkt-Wort, das hinter dem Motiv eingefügt wird). Der Standard-Modus macht beides und bettet nur den/die Höhepunkt(e) ein. Siehe § Untertitel-Modell. - Das Video wird UNBERÜHRT geliefert (Standard/Cinematic; das PLATE-Budget des Theme-Modus ist die einzig zulässige Ausnahme – registergesteuerte Reaktions-Beats (Ladungs-Dimmen, Schlag, Schütteln, Körnung), die pro Theme-DNA definiert und NACH dem Matte-Composite angewendet werden, sodass Motiv+Text+Platte sich als ein Frame bewegen) – Untertitel sind das Einzige, was hinzugefügt wird; die Matte lässt das Motiv lediglich die Embed-Spur verdecken. Bewerten/farbkorrigieren/scanlinien Sie das Filmmaterial nie.
- Zwei Regelwerke: Schiene → references/rail.md (dünn), Embed-Handwerk → references/composition-craft.md (umfangreich, nur Embed). Je nach Bedarf überfliegen.
Untertitel-Modell – Schiene + Embed
Jeder gesprochene Satz ist eines von drei Dingen:
| Was | Wie es angezeigt wird | |
|---|---|---|
| drop | Füllmaterial – ähm/äh, Stottern, Selbstkorrekturen | nicht angezeigt |
| rail | Standard – normaler gesprochener Inhalt (wörtlich) | sauberer Untertitel im unteren Drittel, vorne, lesbar. Ein betontes Wort kann eine inline emphasis-Hervorhebung erhalten (Akzentfarbe / aktives Wort Pop) – es bleibt auf der Schiene. |
| embed | ein beförderter Höhepunkt – der Schlagzeilen-Beat | ein großes Wort, das hinter dem Motiv eingefügt wird (Matte-Verdeckung), gestalteter Eingang + Ausgang |
Die Schiene trägt den Großteil des Textes; Embed ist der seltene, verdiente Höhepunkt. Knappheit ist pro Beat/Block, nicht pro Clip: ≤1 Held pro Block (Gedanke), nie zwei gleichzeitig sichtbar, ≥ ein Beat Luft zwischen Helden-Fenstern (der Compiler warnt unter 0,6s). Ein kurzer Clip → normalerweise 1–2; ein langes Erklärvideo → ~einer pro Abschnitt. Unter mehreren Helden ist der größte erstellte der APEX (nur er erhält das volle Lockup-Embed + Breitenanpassung nach oben); kleinere sind MINOR-Helden, die in ihrer Spalte als übergroße Hervorhebungszeilen (Vordergrund, gedämpfte Bewegung) reiten – nicht jeder Beat braucht die Matte-Inszenierung, was genau den Apex zu einem Ereignis macht. Jedes Wort einzublenden ist immer noch der häufige Fehler.
Identitäten mit Schienenoberfläche bauen genau dies auf (Schiene = rail.html, Embed = der Höhepunkt in index.html). Identitäten mit Spaltenfluss lassen die Schiene weg und machen alles Embed-artig – empfehlen Sie sie nur für stimmungsbetonte Anfragen, nie für Erklär- / Voiceover-Videos, bei denen die Worte lesbar sein müssen (CATALOG.md kodiert dies pro Identität).
Schritt 0 – Wählen Sie EINE Identität aus dem KATALOG
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 durch Nachschlagen aus der Katalogzeile abgeleitet. Fragen Sie nie „Standard vs. Cinematic vs. Theme“ – das sind Backend-Namen (ein Produkt hat eine UX, auch mit mehreren Engines). Der Katalog kodiert alles, was für die Weiterleitung benötigt wird: Leseoberfläche, Stimme, Empfehlung für, Szenenanforderungen, Adjazenznotizen für die wirklich nahen Paare (loud↔ordnance, neon↔neonsign, cream↔stardust).
Die Identitätsauswahl ist ein Präferenz-Gatter (../hyperframes-core/references/brief-contract.md § 1): Wählen Sie im autonomen Modus („Überraschen Sie mich“ / „Entscheiden Sie für mich“) selbst aus Ihrer Shortlist und geben Sie den einzeiligen Grund an, anstatt zu fragen.
Vorgehen: Clip analysieren → 2–3 Identitäten aus dem Katalog in die Shortlist aufnehmen → EINE mit einem einzeiligen Grund empfehlen → der Benutzer wählt (autonomer Modus: Sie wählen und geben den Grund an) → die Datei dieser Identität erstellen. Identitäten sind Engine-gebunden (keine Querkombinationen; das Öffnen einer ist ein Validierungsereignis – siehe dna/README.md).
Präsentieren Sie immer Ihre Empfehlung und lassen Sie den Benutzer wählen, bevor Sie etwas erstellen. Gehen Sie nicht stillschweigend von einer Standardeinstellung aus.
(Die vollständige Identitätstabelle befindet sich in CATALOG.md – die einzige Quelle der Wahrheit für die Weiterleitung. Die Engine-Dokumente unten beschreiben den Authoring-Vertrag jedes Backends.)
Empfehlungsheuristik: Verwenden Sie die „Shortlisting-Heuristiken“ in CATALOG.md – sie sind auf Identitätsebene (z. B. „炸“ shortlistet ordnance/stomp/terminal/loud und wählt basierend darauf, WAS explodieren soll), niemals auf Kategorieebene. Unsicher → anchor.
- Cinematic → schreiben Sie
plan.jsonfür eine feste Vorlage, kompiliert durchmake-composition.cjs. - Theme → lesen Sie themes/README.md, erstellen Sie
theme.json, führen Siescripts/render-theme.shaus (kompiliert + rendert + Plattenreaktion → final_fx.mp4).
Entscheidungs-Gatter – ZUERST AUSFÜHREN
Analysieren Sie das Video und klassifizieren Sie die Szene, bevor Sie einen Modus wählen.
ffprobe <video.mp4> # Spezifikationen
ffmpeg -ss <t> -i <video.mp4> -vframes 1 sample.png # bei 20/50/80%
Lesen Sie die Beispiele. Lehnen Sie ab, wenn:
- Mehrere Sprecher / harte Schnitte (teilen Sie auf & rendern Sie jede Einstellung oder lehnen Sie ab)
- Kein menschliches Motiv (diese Fertigkeit ist für Sprecherporträts)
- Unter 3 Sekunden, keine Sprache, oder das Gesicht nie klar sichtbar –
transcribe.cjswarnt, wenn das Audio fast still ist (Whisper halluziniert Wörter wie „Danke.“ über Stille); beachten Sie es und lehnen Sie ab, anstatt erfundene Wörter zu untertiteln - Quelle hat bereits eingebrannte Untertitel / schwere Textgrafiken – das Hinzufügen eines zweiten Untertitelsystems verursacht Konflikte, und das Filmmaterial wird unberührt ausgeliefert (kein Überdecken/Entfernen möglich). Eingebrannter Text erscheint oft erst mittendrin: erstellen Sie eine 1fps-Kontaktabzug (
ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png), verlassen Sie sich nicht auf 3 Punktbilder. - Transkription ist Müll – nicht-muttersprachliche/stark akzentbelastete Sprache kann zu selbstbewusstem Unsinn transkribiert werden. Lesen Sie
transcript.jsonvor dem Erstellen auf Plausibilität; wenn es nicht wie eine Sprache aussieht, versuchen Sie es einmal mitWHISPER_MODEL=medium, andernfalls lehnen Sie ab (eine wörtliche Schiene aus erfundenen Wörtern ist schlimmer als keine Untertitel). - Hektische Handkamera mit schneller Bewegung (Matte flackert)
Pre-Flight-Prüfungen (kosten nichts, verhindern die schlimmsten Fehlschläge)
- Einstellungsschnitt-Prüfung. Bildbeispiele bei 20 %, 50 %, 80 %. Wenn ein anderes Motiv/Szene erscheint, schneiden Sie den Clip vor dem Schnitt zurecht.
- Letterbox- / Pillarbox-Prüfung. Schwarze Balken im ersten Bild? Berechnen Sie das sichere Inhaltsrechteck und beschränken Sie die Untertitelplatzierung darauf.
- Luminanz-Prüfung. Messen Sie die durchschnittliche Luminanz des Untertitelbereichs –
unter 60→ heller Text wird wie gelesen,60-180→ fügen Sie die Glyphen-Scrim hinzu,180+→ deckender Text + Scrim (niemals nackten hellen Text). Cinematic-Vorlagen sind creme+screenund FEST – verwenden Sie diese Prüfung, um eine passende Identität auszuwählen (helle Szenen →ink, oder dieanchor-Schiene mit deckendem Text), niemals um eine einzufärben. - Identitätsempfehlung nach Ton (Sie empfehlen; der Benutzer wählt – siehe Schritt 0 + CATALOG.md). Erklärvideo / Interview / Worte müssen lesbar sein → Identitäten mit Schienen-/Paneloberfläche; poetisch / sozial / „filmisch“ → Identitäten mit Spaltenfluss nach Register; „炸 / 特效 / VFX“ / benannte Welten → thematische Identitäten. Unsicher →
anchor(Worte werden gelesen, Szene sicher) – aber präsentieren Sie eine Shortlist und lassen Sie 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] Erstellen Sie ein kleines JSON; siehe unten nach Modus
Cinematic: Erstellen Sie plan.json → node scripts/fill-timings.cjs → fit-fonts.cjs → make-composition.cjs
Theme: Erstellen Sie 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ätssicherung (VOR dem Render)
5. bash scripts/render-and-composite.sh <Projekt> # Gatter → final.mp4 + history/ Snapshot
(Theme-Modus: SCHRITTE 3b/5 ÜBERSPRINGEN – render-theme.sh führt bereits compile + render-and-composite
+ _postfx.sh aus; die Lieferung ist final_fx.mp4, final.mp4 ist vor Plattenreaktion)
Schritt 1 init prüft die installierten Fertigkeiten gegen die neuesten auf GitHub und aktualisiert das globale Set, wenn welche veraltet sind.
Schritt 3 unterscheidet sich je nach Modus:
Schritt 3 – Cinematic-Modus (reiner Embed)
- Lesen Sie zuerst
safe-zones.json. Erzählebenen gehen inzones.hugLeft/hugRight– saubere Streifen, DIE DIREKT AN DIE SILHOUETTE GRENZEN (Text weit vom Körper entfernt wirkt schwebend, nicht eingebettet; weit entfernte Ecken sind die Rückfallebene, nicht der Standard). Der Held standardmäßig aufheroAnchor/heroBands.best(ZENTRIERT auf dem Motiv, ~30–55 % verdeckt).recommendation:"fg"verschiebt die ERZÄHLUNG nach vorne zur Lesbarkeit; der Held bleibt eingebettet, wann immerheroBands.feasible– Held-im-Vordergrund ist die letzte Option. - Die DNA ist die Identität, die Sie in Schritt 0 ausgewählt haben (CATALOG.md) – treffen Sie die Wahl hier nicht erneut. Prüfen Sie sie auf Plausibilität gegen die Szene (helle Held-Band-Luma > 150 erfordert
ink; die vollständige Anleitung zur Auswahl befindet sich im Katalog und deckt alle zehn ab, einschließlich neon / glitch / chrome / velocity). Geben Sie Ihre Wahl + Grund an; der Benutzer entscheidet. Die DNA sperrt Typ/Palette/Blend/Bewegung + Held-Drei-Akt; safe-zones v2 (palette/optics/lighting) parametrisiert sie automatisch an DIESE Szene. - Erstellen Sie
<Projekt>/cinematic.json–"dna": "<name>"+ Gedanken-BLÖCKE, nicht rohe Gruppen: jeder Block = Zeilen von Wörtern (gruppiert 2–5 an Satzgliedgrenzen) + die Ebene, in der er gestapelt wird + pro Zeilecss(nur Größe/Gewicht/Stil – keine Positionen) + höchstens EINE Zeile mit"hero": truemarkiert (das beförderte Wort;"text"für die Anzeigeform). Schema: Kopfzeile vonscripts/make-cinematic.cjs. - Kompilieren:
node scripts/make-cinematic.cjs <Projekt>– senkt Blöcke → plan.json → index.html. Für Sie generiert: transkriptsequenzierte Timings, Akkumulation innerhalb des Blocks, Seitenwechsel zwischen Blöcken, das HELDEN-LOCKUP (der Vor-Kontext eines Heldenblocks, HELD und Nach-Kontext stapeln sich als EINE gebundene Komposition, zentriert auf dem Motiv – Lesereihenfolge von oben nach unten = gesprochene Reihenfolge durch Konstruktion; Kontext schwebt VORNE, während der Held HINTEN eingebettet wird = der Tiefen-Sandwich; eine Massenregel hält den Helden dominant über seinen Kontext), Apex/Held-Aufteilung, Lesereihenfolge durch Konstruktion, Vordergrund-Rückfallebene pro safe-zones. Dann laufen die Gatter wie gewohnt. (Das direkte Erstellen von plan.json von Hand bleibt für Designs möglich, die Blöcke nicht ausdrücken können – führen Sie dann selbstfill-timings.cjs+fit-fonts.cjs+make-composition.cjsaus.)
Schritt 3 – Theme-Modus (thematische Zusammenstellung)
Lesen Sie ZUERST themes/README.md – Paradigma/Setpiece-Register, Verknüpfungen, harte Regeln und das genaue theme.json-Schema.
- Wählen Sie eine Theme-DNA nach Inhaltsregister (jedes
themes/<name>.jsonhatvoice+when). Geben Sie Ihre Wahl + Grund an; der Benutzer entscheidet. - Erstellen Sie
<Projekt>/theme.json–dna,lines(wörtlich, Transkriptionsreihenfolge; 1