Was macht Marken-Promo (Studio-Showreel)?
Dieser Skill erstellt ein fertiges Promo-Video aus einer einzigen Konfigurationsdatei, promo.json. Eine Canvas-Szene zeichnet jedes Bild in einem headless Chrome, sodass das Video reines Motion-Design ohne Vorlagen oder Stockmaterial ist:
- Bildmaterial: die eigenen Clips der Marke, ihre Logo-Animation, ihre Texte.
- Musik: ein origineller Synthesizer-Track, der im Code generiert wird (128 bpm). Jeder Schnitt, Drop und Hit sitzt auf seinen Takten.
- Erzähler: VoxCPM2, lokal ausgeführt.
- Sound: Jede Arbeit spielt ihren eigenen Audioclip im Spotlight.
Die Struktur ist fest und funktioniert in jeder Markengröße. Nur der Inhalt ändert sich.
| Zeit | Abschnitt |
|---|---|
| 0–3,4 s | { Jede Geschichte } wird eingetippt, dann „verdient es, sich zu bewegen.“ |
| 3,2–7,6 s | ein Ring aus 3D-Karten (Standbilder aller Arbeiten): „Hier sind fünf unsere.“ |
| 7,6 s (Takt 4) | der Drop: Augenbraue, der Markenname in einer glitchigen Akzentbox, eine Unterzeile |
| 9,5 s + je 5,6 s | ein Spotlight pro Arbeit: Titelblock plus die Arbeit auf einer geneigten Karte (16:9) oder einem Smartphone (9:16), „Full video · m:ss“-Chip, eigener Sound mit Live-Pegelbalken |
| Pause | „Deine Geschichte“ dann ein großes „next.“ auf dem letzten Wort der Erzählerzeile |
| Rausch | alle Clips fliegen in 3D vorbei, mit drei Wörtern (Geschrieben · Vertont · Animiert) auf den Phrasen des Erzählers |
| Ende | das flüssige Logo landet auf dem finalen Hit, gleitet nach links, der Name erscheint, dann die Chips und die URL |
Die Länge beträgt 51,5 s mit 5 Arbeiten, 45,9 s mit 4 und 40,2 s mit 3.
Voraussetzungen:
- ffmpeg, Node 22+ und Google Chrome oder Chromium (
CHROME_PATH). - Ein Python mit numpy und scipy (
PROMO_PY). - Für die Erzählerstimme: VoxCPM2 (
VOX_PY, siehescripts/voices.py). Ohne diese hat das Promo keinen Erzähler, oder du kannst eigene Aufnahmen inbuild/vox/<id>.wavablegen.
Arbeitsablauf
1. Sammle, was das Promo braucht
-
3–5 Arbeiten: fertige Videos der Marke, in beliebiger Länge. Ein Hochformat-Video wird auf einem Smartphone abgespielt, ein Querformat auf einer Karte. Achte auf:
- Einen guten Sound-Moment in jeder Arbeit, z. B. ein Satzanfang oder eine Pointe: 4 s davon werden im Spotlight abgespielt. Gib die Startzeit als
soundan, oder lasse sie weg, dann wird der Beginn einer ruhigen Lücke nahe 35 % des Videos verwendet. - Setze
"mute": truefür eine Arbeit, deren Sound nicht abgespielt werden soll.
- Einen guten Sound-Moment in jeder Arbeit, z. B. ein Satzanfang oder eine Pointe: 4 s davon werden im Spotlight abgespielt. Gib die Startzeit als
-
Die Logo-Animation mit Transparenz. Die beste Quelle ist
/generate-logomit dem Liquid-Stil:generate-logo/scripts/animate.sh logo.png --styles liquid --proresDies ergibt
<name>-5s-liquid-alpha.movplus seine-sfx.wav. Ein transparentes-alpha.webmoder ein transparentes PNG funktioniert ebenfalls. -
Markenfakten:
- Der Name, aufgeteilt in zwei Farbteile (
["KumNit", " Studio"]). - Die Farben: zwei Gradienten für den Namen, ein Akzent, ein zweiter Akzent und ein warmer Akzent. Lies sie aus dem Logo.
- Die Website.
- Was die Marke macht: die vier Chips.
- Der Name, aufgeteilt in zwei Farbteile (
-
Sprache:
"lang": "en"oder"km". Für Khmer schreibe jeden Text und jede Erzählerzeile in natürlichem Khmer. Kantumruy Pro und Koulen sind enthalten.
2. Schreibe das Projekt
Erstelle einen Ordner für das Projekt und kopiere examples/kumnit-showreel.json als promo.json hinein, bearbeite es dann. Jeder Schlüssel ist in references/config.md beschrieben. Halte die Texte kurz: Titel mit ein bis drei Wörtern, Zeilen mit bis zu sechs Wörtern. Lange Zeilen werden verkleinert, um Platz zu finden, lesen sich aber schlechter.
Schreibe die Erzählerstimme in voice.lines als einen kurzen Satz pro Moment:
nextsollte auf dem Wort enden, das groß gezeigt wird. Zum Beispiel: „Deine Geschichte könnte next sein.“rushbenötigt drei durch Kommas getrennte Phrasen, eine pro Rausch-Wort („Wir schreiben sie, vertonen sie und animieren jeden Frame.“).
3. Vorschau (ca. 30 s)
<skill>/scripts/promo.sh <project>/promo.json --preview
Dies schneidet die Assets zu, plant die Zeitabläufe und rendert 12 Standbilder nach out/<name>-preview.png. Lies sie und überprüfe:
- Die Karten zeigen die richtigen Momente.
- Kein Titel ist gequetscht.
- Das Logo ist gut eingerahmt (sein Markenzeichen sollte etwa 60 % seines Kastens füllen).
- Die Spotlights wechseln die Seiten.
Um ein Bild zu korrigieren, ändere den sound-Start dieser Arbeit. Lösche dann assets/clips/p<k>, assets/bites/p<k>.wav und assets/manifest.json und führe die Vorschau erneut aus.
4. Rendern (beim ersten Mal ca. 10 Minuten)
<skill>/scripts/promo.sh <project>/promo.json # im Hintergrund ausführen
Die Phasen laufen in dieser Reihenfolge ab: Assets, Voices, Plan, Music, Mix, Render, Encode.
- Voices: Der erste Lauf lädt das Modell (ca. 2 min), dann dauert es 10–60 s pro Zeile. Bereits vorhandene Zeilen werden behalten. Lösche also eine
build/vox/<id>.wav, um sie neu zu erstellen. - Rendering: ca. 4 min mit 2 Chrome-Prozessen.
- Fortsetzung:
--from mix(oderrender, oderencode) startet ab dieser Phase erneut.
Ausgabe: out/<name>-1080p60.mp4 und out/<name>-contact.png (ein Frame pro Sekunde).
5. Überprüfung vor der Übergabe
- Lies das Kontaktblatt.
ffprobesollte die erwartete Länge anzeigen (51,5 s mit 5 Arbeiten).- Der Mix ist auf -14 LUFS normalisiert.
- Du kannst das Ergebnis nicht hören, also teile dem Benutzer mit, was du überprüft hast (Zeitabläufe, Pegel, Frames) und bitte ihn, zuzuhören. Achte am meisten auf den Erzähler über dem eigenen Sound jeder Arbeit.
Anpassung
- Soundeffekte: setze
sfxDirauf einen Ordner mit den eigenen Soundeffekten des Benutzers; die Dateinamen inscripts/audio.py(SFX) werden zuerst probiert. Fehlende werden synthetisiert, sodass der Skill auch ohne Bibliothek funktioniert. - Zeitabläufe: Diese werden anhand der Erzählerstimme in
scripts/plan.pygemessen. Der Sound jeder Arbeit beginnt nach ihrer Erzählerzeile und endet vor dem nächsten Spotlight. Um die Regeln zu ändern, bearbeiteplan.py, nicht die Szene. - Aussehen: Farben stammen aus
brand, alle Bewegungen sind inscripts/scene.mjs, und die Musik ist inscripts/music.py, dessen Takt-Layout oben dokumentiert ist.