B-Roll für Talking-Head-Videos
Die Aufnahme des Nutzers ist bereits gut: Die Worte und die Darbietung sind endgültig. Ein reiner Talking-Head ist jedoch langweilig anzusehen, daher besteht die Aufgabe des Films darin, für jeden Sprechabschnitt zu entscheiden, was das Bild zeigt. Die Stimme stoppt nie; nur das Bild ändert sich.
Die Aufnahme wird nie geschnitten, verschoben, beschnitten oder skaliert. Alles, was du erstellst, ist eine darüber gezeichnete Ebene: transparent, wo der Sprecher sichtbar sein soll, deckend, wo eine Grafik ihn verdeckt. scripts/render.mjs legt diese Ebene über die Aufnahme und behält den Ton bei.
Erstelle alles in einem Durchlauf: Stelle keine Fragen, die die Aufnahme oder eine sinnvolle Voreinstellung beantwortet, und liste auf, was du gewählt hast, wenn du auslieferst. Arbeite in einem Ordner, der die Aufnahme enthält, und führe die Skripte von dort aus; die Ausgaben landen dort. Unten ist <skill> der Ordner dieser Fertigkeit (der Ordner, der diese Datei enthält).
1. Transkribieren
node <skill>/scripts/transcribe.mjs talk.mp4 # → transcript.json, und gibt jede Zeile mit ihrem Start und Ende aus
Das Skript gibt die Größe, Bildrate und Länge des Videos aus (diese gehen in die Seite) und das Transkript, aufgeteilt an Satzenden, mit jedem Wort zeitlich versehen in transcript.json. Lies das gesamte Transkript, bevor du irgendetwas entscheidest. Es verwendet lokal installiertes whisper.cpp, andernfalls ELEVENLABS_API_KEY; mit keinem von beiden gibt es aus, wie eines davon eingerichtet wird. Pausen stammen aus dem Audio selbst, daher sind die Lücken zwischen den Sätzen dort, wo der Sprecher tatsächlich stoppt; Zeiten innerhalb eines Satzes liegen innerhalb von einigen Zehntelsekunden. Ein Transkript kann eine Zahl falsch verstehen: Wenn eine Zahl nicht mit dem Rest des Gesagten übereinstimmt, lass sie nicht auf dem Bildschirm erscheinen und sag dies bei der Auslieferung.
2. Planen: Drei Behandlungstypen
A. Sprecher. Das Video allein, nichts darüber gelegt. Verwenden, wo die Person im Mittelpunkt steht: die Eröffnungszeile, eine persönliche Meinung oder Geschichte, ein emotionaler Moment, der Aufruf zum Handeln, die Schlusszeile.
B. Überlagerung. Das Video bleibt sichtbar; eine transparente Bewegungsebene liegt darüber: ein Schlüsselwort oder kurzer Satz, eine hochzählende Zahl, ein Icon, ein Pfeil, ein Logo, eine kurze Liste, die Punkt für Punkt aufgebaut wird. Verwenden, wenn eine Zeile ein konkretes Ding zeigt, das es wert ist, gesehen zu werden, während der Sprecher immer noch sehenswert ist. Halte Überlagerungen zu den Rändern und zum oberen oder unteren Drittel, wo sie nicht auf dem Gesicht des Sprechers liegen. Eine Idee auf dem Bildschirm zur Zeit; sie verschwindet, wenn die Zeile weitergeht.
C. Abdeckung. Eine deckende Vollbild-Bewegungsszene verdeckt den Sprecher, während seine Stimme weiterläuft. Verwenden, wenn die Zeile besser gezeigt als von einem Gesicht gesagt wird: Zahlen und Vergleiche, ein Prozess oder eine Abfolge von Schritten, wie etwas funktioniert, ein Produkt oder eine Oberfläche, alles mit drei oder mehr Teilen. Die Bewegung sollte die Zeile erklären, nicht dekorieren.
Teile das Transkript in Zeilen an Satz- oder Satzteilenden. Gib jeder Zeile A, B oder C mit einem Ein-Satz-Grund und sage, was B oder C zeigt. Überprüfe dann den Rhythmus:
- Beginne mit A, damit der Betrachter die Person kennenlernt; beende mit A.
- Kein A-Abschnitt länger als etwa 8 Sekunden; unterbreche ihn mit B oder C.
- Ein C-Abschnitt dauert etwa 3–8 Sekunden; kehre zwischen C-Abschnitten zum Sprecher zurück, damit der Film nicht zu einer Diashow mit Voice-Over wird.
- Wechsle die Behandlung nur an einer Zeilengrenze, niemals mitten im Wort. Zeitliche Abstimmung der Überlagerungseinblendungen auf das Wort, das sie illustrieren.
- Bevorzuge weniger, klarere Behandlungen gegenüber einem Wechsel in jeder Zeile.
Vollständige eingebrannte Untertitel sind nicht Teil davon; füge sie nur hinzu, wenn der Nutzer darum bittet. Der Text einer B-Überlagerung besteht aus einigen Schlüsselwörtern, nicht dem gesprochenen Satz.
Text auf dem Bildschirm verwendet Wörter, die der Sprecher tatsächlich sagt, oder Zahlen und Namen aus dem Transkript oder den Materialien des Nutzers. Erfinde keine Zahlen, Behauptungen oder Zitate.
3. Die Seite erstellen
Kopiere <skill>/templates/b-roll.html neben die Aufnahme als page.html und setze:
VIDEO,W×H(das Seitenverhältnis des Videos: 1920 × 1080 oder 1080 × 1920 für Hochformat; eine 4K-Datei kann eine 1920 × 1080 Seite behalten),FPS,DURATION, aus dem, wastranscribe.mjsausgegeben hat.FACE: wo der Kopf des Sprechers ist (mit Haaren und etwas Platz darum), als Bruchteile des Frames.node <skill>/scripts/render.mjs page.html face --stills 2s,20s --facezeigt die Aufnahme mit dem Kästchen; passe an, bis es den Kopf in jedem Standbild hält.SCENES: ein Eintrag pro B- oder C-Abschnitt,{ from, to, kind: 'overlay' | 'cover', draw }, Zeiten aus den Wortzeitangaben intranscript.json. Alles, was nicht in einer Szene ist, ist A. Zwei Szenen können aneinandergrenzen (dastoder einen ist dasfromder nächsten); ein Hauch des Sprechers dazwischen wirkt wie ein Flackern.- Ein
draw(t, s)pro Szene, geschrieben für das, was diese Zeile sagt. Die beiden Vorlagen (eine Schlüsselwortkarte und eine hochzählende Zahl) zeigen die Struktur, nicht das Aussehen.s.inunds.outgeben den Ein- und Ausgang;s.nowist die Zeit im Video, um eine Enthüllung auf das Wort zu timen, das sie zeigt.
Oberflächen sind standardmäßig HELL. Gehe nur auf dunkel, wenn (a) der Nutzer oder die Marke explizit danach fragt, oder (b) das Thema von Natur aus auf einer dunklen Oberfläche lebt (Terminal/Code, Nachthimmel, Kino). Neon-auf-Schwarz ist der klischeehafte Standard jedes KI-Videos; es unaufgefordert zu wählen, ist ein Designfehler.
Schriftarten: ein <link> von Google Fonts pro Familie mit den Gewichten, die du verwendest, und jedes Gesicht, das du zeichnest, in FONTS aufgeführt, damit nichts in einer Fallback-Schriftart gerendert wird (das Rendern benötigt Netzwerkzugriff, um sie zu laden).
4. Überprüfen
node <skill>/scripts/render.mjs page.html --check # den Plan gegen das Transkript und die Pixel
node <skill>/scripts/render.mjs page.html film.jpg --sheet 1 # den gesamten Film, ein Bild pro Sekunde, über der Aufnahme
node <skill>/scripts/render.mjs page.html shot --stills 12s,20s # Vollbilder, um Text und Abstände zu lesen
--check muss bestehen: Jede Abdeckung verdeckt den Sprecher vollständig, sobald sie eingeblendet ist, keine Überlagerung reicht in FACE hinein, jede Szene beginnt und endet zwischen Wörtern, nichts wird außerhalb einer Szene gezeichnet, kein Text läuft aus dem Bild oder auf anderen Text. Es warnt, wenn Text innerhalb von 3 % des Bildrands sitzt, wo einige Player abschneiden. Es gibt auch die Zeitleiste mit dem aus, was in jedem Abschnitt gesagt wird, und warnt vor Rhythmusproblemen (ein langer Abschnitt nur mit dem Sprecher, eine Abdeckung kürzer als 3 s oder länger als 8 s, Abdeckungen hintereinander, nicht mit dem Sprecher beginnen oder enden); eine Warnung kann bestehen bleiben, wenn du einen Grund hast, also sag ihn.
Es kann nicht erkennen, ob eine Grafik das sagt, was ihre Zeile sagt, ob Text lesbar ist oder ob er von seiner Karte oder über eine Linie eines Diagramms läuft: Sieh dir das Blatt für den Ablauf an und Standbilder jeder Szene für den Text. Korrigiere und sieh noch einmal nach, bis es Bestand hat.
5. Rendern und ausliefern
node <skill>/scripts/render.mjs page.html film.mp4 # der fertige Film: die Aufnahme, das B-Roll darüber, der Originalton
node <skill>/scripts/render.mjs page.html b-roll.mov # das B-Roll allein mit Alpha: ProRes 4444 für Premiere Pro, Resolve, Final Cut
node <skill>/scripts/render.mjs page.html b-roll.webm # dasselbe als VP9 mit Alpha: klein, für Browser und OBS
Übergebe film.mp4, die Seite (öffne sie in einem Browser, um den Film mit Ton abzuspielen und durch die Szenen zu navigieren) und den Plan als kurze Tabelle: Zeit, was gesagt wird, Behandlung, was auf dem Bildschirm ist. Gib die Alpha-Ebene auch weiter, wenn der Nutzer in Premiere Pro, DaVinci Resolve oder Final Cut bearbeitet (die .mov; ProRes ist groß, etwa 5 MB pro Sekunde bei 1080p): Sie kommt auf die Spur über der Aufnahme, beginnend bei 0. Sage, was du gewählt hast, worum sie nicht gebeten haben.
Benötigt: Node 18+, npm i playwright-core im Arbeitsordner oder einem Ordner darüber (oder im eigenen Ordner der Fertigkeit oder darüber), ffmpeg, Chrome (oder npx playwright install chromium) und whisper.cpp oder einen ElevenLabs-Schlüssel für das Transkript.