Cinematic Music Video Director (Kinematografischer Musikvideoregisseur)
Eine Produktionsfähigkeit zur Erstellung eines ansehbaren Kurzfilms, dessen Rückgrat ein Song ist – nicht eine Lyric-Vorlage, keine Diashow, kein Haufen zusammenhangloser generativer Clips. Jeder Frame wird durch Code gezeichnet und ist aus einer ganzzahligen Framenummer reproduzierbar.
Die Fähigkeit ist bewusst musik- und evidenzorientiert:
- den Song messen, bevor Bilder vorgestellt werden;
- eine These und eine Regie-Partitur schreiben, bevor ein einziger Shot geschrieben wird;
- einen frame-genauen Schnitt festlegen, bevor gerendert wird;
- den Look und die Bewegung in einem 10–20 s Pilotfilm beweisen;
- in fortsetzbaren Shot-Einheiten rendern;
- die tatsächlich ausgelieferte Datei verifizieren.
Harte Regel: Niemals einen Zeitstempel, ein BPM, eine Lyric-Zeile, ein Render-Ergebnis oder einen QC-Durchlauf erfinden. Wenn ein Nachweis fehlt, markieren Sie das Element als
unverifiedund vermerken Sie dies in den Lieferhinweisen.
Wann verwenden
Verwenden, wenn der Benutzer nach einem Musikvideo, einem animierten Kurzfilm mit Musik, einer Titelsequenz oder einer Aufgabe wie "Mach meinen Song zu einem Film" fragt und die lokale Code-Rendering akzeptabel ist. Die Standardausgabe ist 9:16, 1080×1920, 24 fps, H.264 + AAC, mit einer optionalen Sidecar-Untertiteldatei.
Verwenden Sie diese Fähigkeit nicht zum Herunterladen urheberrechtlich geschützter Audios, zum Klonen des Abbilds eines lebenden Künstlers oder zum Nachbau eines bestehenden Musikvideos Shot für Shot. Fragen Sie den Benutzer nach Audio, das er verwenden darf.
Voraussetzungen (prüfen, nicht annehmen)
- Node 20+, ffmpeg/ffprobe, Google Chrome oder Chromium.
- Python 3.10–3.13 mit
numpy scipy soundfile librosa(matplotlib optional, Pillow für Blätter). puppeteer-core,p5,p5.brushimnode_modulesdes Projekts.- Genügend Festplattenspeicher für Frames: 1080×1920 JPEG q94 ≈ 0,2–0,5 MB/Frame; ein 4-minütiger Film ≈ 1–3 GB.
- Für chinesische Lyrics eine LRC/SRT vom Benutzer oder ein lokales Whisper-Modell; niemals die Zeitsteuerung einer zufälligen Lyric-Seite scrapen und als verifiziert ausgeben.
Führen Sie scripts/doctor.sh (oder die entsprechenden Befehle in references/render-recovery.md) aus und notieren Sie das Ergebnis. Wenn eine Voraussetzung fehlt, beheben Sie sie oder melden Sie den Block.
Der Produktionszyklus
0. Aufnahme und Rechte
Sammeln Sie: Audio-Pfad, Lyric-Text und eventuelle Timing-Datei, Seitenverhältnis/Auflösung/fps, Abgabetermin, Sprache und den Nutzungskontext. Kopieren Sie das Audio schreibgeschützt in assets/; überschreiben Sie niemals das Original. Geben Sie die Rechteannahme in README.md an (z. B. "vom Benutzer bereitgestelltes Audio, nur für private Nutzung").
1. Musik-Master (Tor M)
python scripts/analyze_music.py assets/song.m4a \
--out analysis --lrc assets/song.lrc --sections analysis/sections.json \
--asr analysis/asr/whisper.json --fps 24
Erzeugt analysis/audiomap.json, lyrics.json, lyrics.srt, analysis.md, analysis.png. Die Karte enthält Dauer, ein phasenangepasstes Tempo-Raster, Beats/Downbeats, Energie/Spektrum-Kurven, mögliche Höhepunkte (Climax-Fenster), Abschnittsspannen und zeilenweise Lyric-Zeitsteuerung mit Herkunft.
Akzeptanz:
- Dauer und Abtastrate stimmen mit der gelieferten Datei überein;
- Tempo-Kohärenz wird gemeldet; wenn < 0,6, durch Hören/Spektrogramm prüfen und eine Tempo-Karte in Betracht ziehen;
- jede Lyric-Zeile hat eine Timing-Quelle (
lrc_line,srt_line,cross_checked,untimed); - Lautstärke wird nicht ohne strukturelle Gegenprüfung als emotionaler Höhepunkt behandelt.
Wenn der Benutzer keine Lyric-Timing liefert, führen Sie scripts/align_lyrics.py mit einem lokalen ASR-Transkript aus und überprüfen Sie es. Halten Sie Phrasenzeit (Takt-/Phrasenmarkierung, verwendet für Schnitte) getrennt von Stimmeinsatz (verwendet für Untertitel). Verschieben Sie niemals stillschweigend das gesamte Lied, um einen Schnitt sauber aussehen zu lassen.
2. Drei Konzepte, dann eines (Tor D1)
Schreiben Sie storyboard/concepts.md mit drei wirklich unterschiedlichen Filmen. Bewerten Sie jeden nach Lyric-/Musik-Passung, erzählerischer Vollständigkeit, emotionaler Wirkung, visueller Originalität, Code-Umsetzbarkeit und Langform-Anschaulichkeit. Wählen Sie eines aus und schreiben Sie den Grund. Beginnen Sie erst mit Shot-Code, wenn dies existiert.
Schreiben Sie dann storyboard/director_score.json:
These, Antithese, emotionale Kurve, visuelle Kapitel (Welt/Palette/Raum/Kamera/Grammatik), Kontrastkarte, Motive und Auszahlungen, Wünsche/Bedürfnisse/Bögen der Figuren, Shot-Rollen und Übergaben, Klang-Bild-Karte.
Ein Shot, der nicht seine Rolle, eingehende Übergabe und ausgehende Übergabe nennen kann, ist nicht bereit.
3. Visuelle Sprache und Tests (Tor D2)
Schreiben Sie style-guide.md und eine Figuren-/Kunst-Bibel, bevor Sie animieren. Definieren Sie:
Farbpalette mit Hex-Werten und einem Farb-Skript; Objektiv-/Kompositionsgrammatik für 9:16; Linien- und Texturregeln; Figurenproportionen, Silhouetten, Garderoben-Kontinuität und Ausdrucksspektrum; Beleuchtung; Übergangsvokabular; die genauen Dinge, die der Film nicht tun wird (z. B. "keine schwebenden Partikel ohne erzählerischen Grund").
Rendern Sie 1–3 Stil-Frames und ein Figurenblatt. Beurteilen Sie diese in voller Auflösung, nicht als Vorschaubilder. Wenn der Look schwach ist, ändern Sie die Sprache jetzt – nicht nach 40 Shots.
4. Framegenaue Bearbeitung (Tor E)
Schreiben Sie storyboard/timeline.json mit fps, total_frames, shots[] und für jeden Shot:
id, start_frame, end_frame, section, lyric_refs, size, composition, environment, action, expression, camera, transition_in/out, emotion, function, implementation, complexity. Shots müssen lückenlos sein und das gesamte Audio abdecken.
python scripts/validate_timeline.py \
--timeline storyboard/timeline.json --audiomap analysis/audiomap.json \
--out analysis/timeline_validation.md
Der Validator ist ein hartes Tor: keine Lücken, keine Überlappungen, letzter Frame ≥ ceil(Dauer×fps), jede Lyric-Zeile berücksichtigt, kein Schnitt ohne schriftlichen Grund absurd weit von einem Beat/Lyric/Abschnitt entfernt.
5. Pilot (Tor P)
Rendern Sie 10–20 s mit mindestens: einer totalen Einstellung, einer Halbnahaufnahme einer Figur, einer Nahaufnahme, einer schnellen Aktion oder einem Einschlag und einem Übergang. Erstellen Sie ein Kontaktblatt und einen ansichtsfähigen Clip mit der echten Audiospur. Prüfen Sie:
- Hält der Stil bei 100 %?
- Sind Figurenproportionen, Kostüm und Licht kontinuierlich?
- Ist die Kamerabewegung motiviert oder driftet sie ohne Grund?
- Landen Schnitte auf musikalischen Ereignissen?
- Überlebt der Renderer 300+ Frames ohne Ausnahme?
- Wie hoch sind die gemessenen ms/Frame und die Festplattenkosten?
Beheben Sie den Pilot, bevor Sie den vollständigen Durchlauf starten. Notieren Sie die gemessene Leistung in LESSONS.md.
6. Vollständiger Render (Tor R)
Verwenden Sie einen deterministischen Seitenvertrag: window.renderAt(t) -> dataURL, kein Math.random, gesäumtes Rauschen, ganzzahlige Frame-Indizes. Rendern Sie Shot für Shot oder Frame für Frame mit atomaren Schreibvorgängen; führen Sie ein Manifest der abgeschlossenen Einheiten und Hashes, sodass ein geänderter Shot nur sich selbst ungültig macht.
node scripts/render.mjs --project . --start 0 --end 232.6 --out renders/frames
Bevorzugen Sie Shot-Einheiten und einen --force/--shot-Pfad gegenüber "alles löschen und von vorne beginnen". Rendern Sie denselben genehmigten Shot nicht zweimal. Lassen Sie niemals einen fehlgeschlagenen Frame als vollständig durchgehen: Ein Frame muss existieren, nicht Null sein und sich dekodieren lassen.
7. Montage (Tor A)
ffmpeg -y -framerate 24 -i renders/frames/f_%06d.jpg -i assets/song.m4a \
-c:v libx264 -preset slow -crf 16 -pix_fmt yuv420p -profile:v high -level 4.2 \
-c:a aac -b:a 256k -ar 44100 -shortest -movflags +faststart output/final.mp4
Das Master-Audio ist unveränderlich. Nehmen Sie keine Fade-, Zeit- oder Neucodierung des Songs vor, um ihn an das Bild anzupassen. Der letzte Shot muss den Audio-Ausklang abdecken; kein schwarzer Nachlauf, kein abgeschnittener Schlussakkord.
8. Qualitätskontrolle (Tor Q)
Führen Sie beide aus und fügen Sie die Nachweise bei:
python scripts/qc_video.py output/final.mp4 --audio assets/song.m4a \
--expected-frames 5583 --timeline storyboard/timeline.json --out analysis/qc
Technisch: Dekodieren, Dauer vs. Audio (Toleranz ≤ 0,12 s), Stream-Anzahl, Auflösung, fps, pix_fmt, Frame-Anzahl, Blackdetect, Freezedetect, Abdeckung, fehlende/Platzhalter-Frames. Visuell: Kontaktblätter in voller Auflösung, Schlüssel-Frames pro Szene, aufeinanderfolgende Frame-Streifen an Schnitten, Stichproben zur A/V-Synchronisation, Kontinuitätsprüfung der Figuren, Titel-/Untertitel-Sicherheit.
Visuelle Qualitätskontrolle wird nicht automatisiert. Geben Sie genau an, welche Shots Sie bei welcher Auflösung angesehen haben und was Sie gefunden haben. Ein sauberer ffprobe ist kein visueller Durchlauf.
9. Lieferung
Versenden: Master MP4, Vorschau in niedriger Auflösung, storyboard.md, timeline.json, style-guide.md, qc-report.md, README.md, optional SRT und die reproduzierbare Quelle. Behalten Sie Audio und Lyrics lokal, es sei denn, der Benutzer hat die Rechte zur Veröffentlichung. Fügen Sie einen datierten Eintrag in LESSONS.md hinzu.
Datei-Kontrakt
project/
assets/ # song.m4a, lyrics.lrc/srt, vom Benutzer bereitgestellte Referenzen (nicht überschreiben)
analysis/ # audiomap.json, lyrics.json, sections.json, validation, QC
storyboard/ # concepts.md, director_score.json, timeline.json, storyboard.md
characters/ # Kunst-Bibel, Modellblätter
src/ # deterministischer Zeichencode: lib/, custom_shots.js, shots.js
studio.html # window.renderAt(t)-Vertrag
renders/ # frames/ (globale Sequenz), pilot/, manifests
previews/ # pilot.mp4, Kontaktblätter, Prüfbrett
output/ # finales MP4, Vorschau, SRT, storyboard.md, timeline.json, style-guide.md, QC
Unverhandelbare handwerkliche Regeln
- Der Song ist die Master-Zeitleiste. Das Bild wird nach der Musik geschnitten; Musik wird niemals nach dem Bild geschnitten.
- Ein Film, keine Playlist von Looks. Motive kehren zurück und verändern sich.
- Ein wiederholter Refrain darf visuell reimen; er darf nicht dieselbe Komposition unverändert wiederverwenden.
- Figuren brauchen Wunsch, Hindernis, Wahl, Konsequenz. Gesichter und Hände müssen spielen.
- Kamerabewegungen brauchen eine Motivation (Enthüllung, Druck, Entlastung), keinen standardmäßigen Ken-Burns-Effekt.
- Jeder Shot muss mindestens ein bewegtes Element enthalten, das zur erzählten Welt gehört.
- Verstecken Sie keine fehlende Geschichte hinter Partikeln, Geschwindigkeitsrampen oder übermäßigem Bloom.
- Wenn das ehrliche Ergebnis stilisiert und begrenzt ist, sagen Sie dies im QC-Bericht; nennen Sie es nicht fotorealistisch.
Fehler und Wiederherstellung
Der Renderer ist darauf ausgelegt, laut zu scheitern und kostengünstig fortzusetzen:
- atomare Frame-Schreibvorgänge (
*.tmp→ umbenennen), niemals ein halbes JPEG als erledigt zählen; - ein Pro-Shot-Manifest mit Quell-Hash, Start-/End-Frame und Status;
--shot/--start/--endwiederholt nur den betroffenen Bereich;- die letzte bekannte gute Codierung behalten; das Master niemals überschreiben, bis die Qualitätskontrolle bestanden ist.
Wenn der Browser oder die GPU ausfällt, wiederholen Sie die Einheit zweimal mit einer neuen Seite/einem neuen Profil. Wenn ein Frame dreimal fehlschlägt, stoppen Sie, isolieren Sie den Shot und melden Sie die Frame-Nummer und den Fehler. Füllen Sie nicht mit einem doppelten Frame oder einem Standbild.
Referenzindex
references/directing.md— Konzeptauswahl, Regie-Partitur, Dauer, Rhythmus, Enden.references/visual-language.md— 9:16-Komposition, Kameras, Farbe, Figur, Textur.references/audio-lyrics.md— Messung, Phasenanpassung des Tempos, Abschnitte, ehrliche Ausrichtung.references/render-recovery.md— deterministischer Vertrag, Manifeste, Codierung, Fortsetzung.references/qc.md— harte/weiche Tore, Kontaktblätter, was die Automatisierung nicht sieht.templates/— Regie-Partitur, Zeitachse, Shot-Karte, Styleguide, Projektkonfiguration.tests/— Parser-, Abdeckungs- und Validator-Tests; führen Siebash tests/run_tests.shaus.LESSONS.md— was in echten Produktionen schiefging und was es behoben hat.
Lizenzen und Danksagungen
Engine-Muster basieren auf der MIT-lizenzierten ClaudeAnimationBase (John Heibel) und
claude-music-video-skill (Sage Arbor). Die Workflow-Konzepte wurden von
musical-mv-storyboard studiert, das keine Lizenz hat; es wird kein Code oder Text davon kopiert.
Siehe THIRD_PARTY_LICENSES.md. p5 ist LGPL-2.1, p5.brush MIT, puppeteer-core Apache-2.0,
librosa ISC, ffmpeg GPL. Der Song und die Lyrics, die in einem Projekt verwendet werden, sind nicht Teil dieser Fähigkeit.