vvai-pixel-mv · Pixel-Figuren-Takt-MV
Reihenfolge festgelegt: Storyline → Storyboard (Nutzer sieht, ändert, kann mehrfach hin und her) → Nutzer bestätigt → Ausgabe. Ohne bestätigtes Storyboard wird nicht gerendert.
Vollständiges Beispiel in assets/examples/: Storyline und story.json eines Songs, 7 Abschnitte, 3 Figuren, mit Desktop-Fenster.
Vorbereitung
PY: Python 3.10+ mit installierten Paketen librosa, faster-whisper, numpy, Pillow. Installation siehe INSTALL.md. Wenn in der CLAUDE.md oder im Gedächtnis des Nutzers ein Python-Pfad steht, wird dieser verwendet; falls nicht, zunächst prüfen, obpythondie genannten Pakete importieren kann, sonst den Nutzer fragen.MV:PY -X utf8 <dieses Skill>/scripts/pixel_mv.py.- Benötigt ffmpeg, Node. Rendering standardmäßig über
npx --yes [email protected]; zum Wechseln des CLI die UmgebungsvariableHF_CLIsetzen, mehrere Parameter mit|trennen.
Ablauf
- Material sammeln. Erforderlich: Audiodatei, zeitcodierte Lyrics (srt oder lrc) und Songtitel.
- Optional: Start/End-Sekunden, Look (base / neon / classic / retro), Intensität (dj / standard / soft), Figurenbilder.
- Auch die Geschichte erfragen: Hat der Nutzer eine Handlung im Kopf? Falls nein, in Schritt 3 einen Vorschlag machen.
- Fehlt eine Lyrikdatei, den Nutzer danach fragen – nicht per Transkription raten. Abschnitte, bei denen keine Stimme transkribiert wird, zunächst beim Nutzer erfragen, nicht als Intro behandeln. (In Folge 1 wurde die Strophe fälschlich als Intro eingestuft.)
- Projekt anlegen:
MV new <Projektverzeichnis> --audio <Audio> --lyrics <srt/lrc> --title <Songtitel> [--start Sekunden --end Sekunden] [--look base] [--character Bild].- Dieser Schritt schneidet das Audio, misst Beat- und Energie-Höhepunkte und aligniert die Lyrics wortgenau.
- Gleichzeitig wird ein erster Entwurf
story.jsonerstellt, der nur nach Schlüsselwörtern Szenen wechselt, sowie eine VorlageStoryline.md. - Das Projekt wird in das vom Nutzer angegebene Verzeichnis gelegt; falls der Nutzer ein festes Serienverzeichnis hat (in CLAUDE.md oder Gedächtnis), dorthin.
- Storyline schreiben. Nach der Methode des Geschichtenerzählens die
Storyline.mdausfüllen: Ein-Satz-Geschichte, Figuren, Motiv, Akte, Satz für Satz. Dem Nutzer zur Bestätigung vorlegen. - story.json schreiben. Die Storyline in story.json übersetzen.
- Felder siehe Format, verfügbare Aktionen, Lyrik-Modi und Übergänge siehe Interaktionskatalog.
- Am schnellsten geht es, sich an
assets/examples/bad-girl.story.jsonzu orientieren. - Nach dem Schreiben
MV check <Projekt>ausführen, bis keine Fehler mehr auftreten.
- Storyboard für den Nutzer erstellen.
MV board <Projekt> --framesausführen: Pro Abschnitt 1–3 Bilder einfangen,Storyboard.mderzeugen – mit Übersicht, abschnittsweisen Figuren, Handlungsaktionen, Textzeilen und Erscheinungsweise, Übergängen, Kameraeinstellungen, Taktschlägen.SendUserFileverwenden, um dem NutzerStoryboard.mdund die Kontaktabzüge im OrdnerStoryboard/Bilder/zu senden.- Dem Nutzer mitteilen, welche Stellen geändert werden können.
- Bis zur Zufriedenheit überarbeiten. Der Nutzer schlägt Änderungen vor – dann story.json bearbeiten und erneut
boardausführen.- Die Version wird automatisch um 1 erhöht, alte Versionen bleiben in
Storyboard/Verlauf/. - Mehrere Iterationen sind möglich; jedes Mal das neue Storyboard an den Nutzer senden.
- Die Version wird automatisch um 1 erhöht, alte Versionen bleiben in
- Nach Bestätigung ausgeben.
- Erst wenn der Nutzer explizit „Kann ausgegeben werden“ sagt,
MV approve <Projekt>ausführen, danachMV render <Projekt> --sample 12. - Vage Antworten („OK“, „Mach mal“) gelten nicht als Bestätigung.
renderprüft den Fingerabdruck der story.json; wurde nachapproveerneut geändert, wird die Ausgabe verweigert.- Bei Dateien über 30 MB wird zusätzlich eine
_Vorschau.mp4für Mobilgeräte erstellt.
- Erst wenn der Nutzer explizit „Kann ausgegeben werden“ sagt,
- Übergabe. Als 1 Bild/Sekunde-Kollage selbst ansehen: Geschichte verständlich, Szenen, Lyrics, Übergänge, Titel vorhanden, Dauer identisch mit Original-Audio, Tonspur vorhanden.
- Möchte der Nutzer nach der Ausgabe noch Änderungen, zurück zu Schritt 6: story.json bearbeiten → neues Storyboard → erneut bestätigen → erneut rendern.
Wichtige Regeln
- Geschichte vor Effekten. Jeder Satz benötigt mindestens eine Handlungsaktion oder eine Lyrik-Interaktion; Handlungsaktionen auf den Zeitpunkt des Schlüsselworts legen; Übergänge müssen einen erzählerischen Grund haben. Siehe Methode des Geschichtenerzählens.
- Szenenwechsel: Ohne erzählerische Vorgabe standardmäßig „Desktop im Vordergrund + Bildeinschübe“, siehe Storyboard-Regeln. Bei einer Geschichte nach Akten vorgehen; Abschnitte wie Erkenntnis oder Rückblick verwenden die Desktop-Fenster-Perspektive.
- Figuren:
- Standardmäßig Claude-Figur für „ich“.
- Andere Figuren per
castdeklarieren (girl, rival, friend, ghost). - Wenn der Nutzer ein Bild bereitstellt,
MV character <Projekt> <Bild>ausführen, um es in eine 16×16-Pixel-Figur umzuwandeln.
- Takt:
- Die Figur landet genau auf jedem Beat, beim Aufprall gestaucht, unter den Füßen breitet sich eine Wasserwelle aus.
- Jeder Beat erhält einen Kamera-Impact und Farbflash; starke Beats zusätzlich RGB-Separation.
- Vollbild-Weißblitz nur bei Übergängen und Drops, maximal 3× pro Sekunde.
- Schreckreaktionen maximal 2× im gesamten Video, nur bei echten Wendungen.
- Lyrik-Text:
- Erscheint nur im Bild und in den Projektdaten; in Chat-Antworten und Storyboard nur Satzzeichen verwenden.
- Das Urheberrecht an den Songtexten liegt beim Nutzer; vor Veröffentlichung einen Hinweis geben.
Befehlsübersicht
| Befehl | Zweck |
|---|---|
new | Projekt anlegen: analyze + align + draft + story |
story | Vorlage Storyline.md generieren (--force zum Neuaufbau) |
check | story.json auf korrekte Namen, Zeiten, Fenster (von der Engine bekannt) prüfen |
board [--frames] | Storyboard erstellen (Version N), Version speichern |
approve | Vom Nutzer bestätigte Version vermerken; erst danach gibt render frei |
render [--sample 12] [--name Dateiname] | Rendern; --force überspringt die Bestätigung, nur verwenden, wenn der Nutzer es explizit sagt |
sync | Nur story.json → assets/story.js synchronisieren (Debug; board und render synchronisieren automatisch) |
upgrade | Altes Projekt auf aktuelle Template-Engine umstellen, alte Dateien als .before-upgrade sichern |
character | Figurenbild → Pixel-Figur |
analyze / align / draft | Einzelschritte von new; zum separaten Wiederholen |
Anpassungen über die Vorlage hinaus
Die Template-Engine v2 deckt bereits Folgendes ab (siehe Interaktionskatalog):
- 27 Szenen, 16 Basisaktionen;
- 23 erzählerische Aktionen;
- 7 Lyrik-Modi, 6 Auftritte, 9 Abgänge;
- 7 Übergänge;
- Desktop-Fenster.
Reicht das nicht aus, im Projektverzeichnis assets/engine.js erweitern – nicht die Vorlage dieses Skills verändern. Siehe auch Techniken aus Folge 1. Möchte man neue Elemente in die Vorlage aufnehmen, vorher mit dem Nutzer abstimmen. Beim Aufnehmen müssen gleichzeitig geändert werden:
- Die Vorlage
engine.js; - Die Listen wie
BEAT_NAMESinpixel_mv.pysowie die chinesischen BezeichnungenZH_*für das Storyboard; interactions.md.
Szenenbibliothek
- Daten in
assets/scene-library/scenes.json. - Beim Hinzufügen einer Szene gleichzeitig zwei Stellen ändern: in
scenes.jsondie Schlüsselwörter und Interaktionen eintragen, in der Vorlageengine.jsimSCENES-Block die Zeichenmethode definieren.