Communitygithub.com

Talking-Head B-Roll: Motion Graphics aus dem, was du sagst

Fügt einem Talking-Head-Video, Podcast-Clip, einer Lektion oder einem Ad-Read B-Roll-Motion-Graphics hinzu. Transkribiert wortgenau, entscheidet Satz für Satz, ob der Sprecher zu sehen ist, eine Grafik über ihm liegt oder eine Vollbild-Szene ihn verdeckt, zeichnet jede Grafik aus dem tatsächlich Gesagten und rendert das fertige MP4 mit Originalton, dazu eine Alpha-B-Roll-Ebene für Premiere, Resolve oder Final Cut.

Was ist Talking-Head B-Roll: Motion Graphics aus dem, was du sagst?

Schritt 1 des Rezepts Vom Podcast zum YouTube-Video (die ganze Folge sehenswert machen), aus iart-ai/b-roll-skills (MIT, Showcase-GIF und Beispiel-Kontaktbögen im Repo). transcribe.mjs timt jedes Wort mit lokalem whisper.cpp oder einem ElevenLabs-Key. Der Agent liest das ganze Transkript und gibt jedem Satz eine von drei Behandlungen mit Begründung: A nur Sprecher (Einstieg, Meinung, Geschichte, Call to Action), B Overlay (ein Stichwort, eine hochzählende Zahl, ein Icon oder eine kurze Liste, außerhalb der Gesichtsbox) oder C Cover (eine deckende Vollbild-Szene für Zahlen, Vergleiche, Schritte und Funktionsweisen). Rhythmusregeln: mit dem Sprecher öffnen und schließen, keine reine Sprecherstrecke über ca. 8 s, Cover 3–8 s, Wechsel nur an Satzgrenzen, Einblendungen auf das Wort getimt, standardmäßig helle Flächen statt Neon auf Schwarz. Jede Zahl im Bild muss aus dem Transkript stammen. render.mjs --check prüft, dass Cover den Sprecher ganz verdecken, nichts ins Gesicht oder aus dem Bild ragt, und rendert dann film.mp4, eine ProRes-4444-Alpha-.mov und eine VP9-.webm. Die Aufnahme selbst wird nie geschnitten, verschoben oder beschnitten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iart-ai/b-roll-skills/tree/HEAD/skills/talking-head-b-roll

In Ihrer bevorzugten KI fragen

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

Dokumentation

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, was transcribe.mjs ausgegeben 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 --face zeigt 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 in transcript.json. Alles, was nicht in einer Szene ist, ist A. Zwei Szenen können aneinandergrenzen (das to der einen ist das from der 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.in und s.out geben den Ein- und Ausgang; s.now ist 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.

Verwandte Skills