Communitygithub.com

sagearbor/claude-music-video-skill

Erstellen Sie ein vollständiges Musikvideo zu einem Song, das vollständig aus Code besteht (p5.js im headless Chrome: ein handgemalter p5.brush-Cartoon oder crisp Vektorbewegungsdesign via --style, ffmpeg für Audio), ohne KI-Bild-/Videogenerierung und ohne API-Kosten über den Claude-Plan hinaus. Textgesteuertes Storyboard, phasenangepasstes Beat-Raster, Karaoke-Untertitel, ein 30-Sekunden-Pilot-Gate, dann parallel von Unteragenten erstellte Kapitel.

Was ist claude-music-video-skill?

Diese Skill wandelt einen Audiosong in ein vollständig animiertes Musikvideo um, das ausschließlich programmatisch mit p5.js (insbesondere p5.brush für Gemälde-Stile) und ffmpeg erstellt wird – ohne jegliche generative KI für Bilder oder Videos. Sie unterstützt mehrere visuelle Stile: handgemalten Aquarell-Cartoon, redaktionelles Vektordesign mit präzisen Linien, Keynote-ähnliche Leuchteffekte, geometrische Schweizer-Gitter-Layouts und hybride Kombinationen und bietet Optionen für lyrische Typografie (kinetisch, Balken, nur Haken). Der Workflow umfasst Song-Analyse (Tempo, Drops, Abschnitte), textgesteuertes Storyboard, optionale Charakter-Design-Phase, einen 30-Sekunden-Pilotclip und dann parallele Kapitelerstellung mit Unteragenten, wodurch die Gesamterstellungszeit von 1,5–2 Stunden (mit Stopps) auf 45–60 Minuten (mit dem Flag --auto) reduziert wird. Sie ist plattformübergreifend für Claude, Cursor, Codex und andere KI-Agenten konzipiert, erfordert Node 20+, Google Chrome, ffmpeg und uv und arbeitet vollständig im Rahmen des Claude-Plans ohne externe API-Ausgaben. Die Skill betont Code-basierte Animation gegenüber traditionellen KI-Videomodellen, da berechnete Frames flackerfrei, modellkonstant und perfekt beat-synchron sind.

Funktioniert mit✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add sagearbor/claude-music-video-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

music-video

Unterbefehle (zuerst prüfen)

AufrufAktion
/music-video help, /music-video ohne Song oder „Wie verwende ich das?“Drucken Sie den Hilfe-Block unten wörtlich, prüfen Sie dann die Voraussetzungen (node -v, ffmpeg -version, uv --version, Chrome vorhanden) und melden Sie jede als ✅/❌ mit dem Installationsbefehl. Stopp; starten Sie kein Video.
/music-video lessonsDrucken Sie LESSONS.md (den neuesten Eintrag vollständig, ältere Einträge nur als Überschriften).
/music-video <song-Datei> [lyrics.srt] [flags] [notizen]Analysieren Sie die Flags unten, sagen Sie in einer Zeile, welche Gates aktiv sind und welche Wahlmöglichkeiten bereits festgelegt sind, und führen Sie dann die Pipeline aus.

Hilfe

/music-video: Verwandle einen Song in ein beat-synchronisiertes Musikvideo, das vollständig in Code gezeichnet wird,
             vom handgemalten Cartoon bis zum klaren Marketing-Stil-Bewegungsdesign.

VERWENDUNG
  /music-video ~/Downloads/song.mp3                     Suno-Dateien mit eingebetteten Texten benötigen nichts weiter
  /music-video ~/Downloads/song.mp3 lyrics.srt          andere Songs: geben Sie zeitgesteuerte Texte (.srt)
  /music-video song.mp3 "noir stil, katzen detektiv"    optionale kreative Richtung
  /music-video song.mp3 --auto --style=editorial --human=~/me.jpg --dir=~/musicVideos
                                                        vollautomatisch: jede Wahl durch Flags gesetzt
  /music-video help | lessons

FLAGS (Standard: Stopp am Storyboard UND am Pilot für Ihre Zustimmung)
  --skip=storyboard        Warte nicht auf das Storyboard; warte trotzdem auf den Pilot
  --skip=pilot             Warte auf das Storyboard; warte nicht auf den Pilot
  --skip=all  (oder --auto)  keine Stopps: Song rein, fertiges MP4 raus, vollständig agentisch
  --design                 MEHR Planung: fügt eine Design-Phase hinzu (Charakter-Modellbögen,
                           Palette-Swatches, ein Stil-Frame pro Kapitel)
                           und stoppt, damit Sie das Aussehen vor jeder Animation iterieren können.
                           Kombinieren: --design --skip=pilot

WAHLMÖGLICHKEITEN (nicht gesetzte werden in einem kurzen Interview gefragt; unter --auto nehmen sie den Standard)
  --style=painted|editorial|keynote|geometric|hybrid
                           painted   = handgemalter Aquarell-Cartoon (der ursprüngliche Look)
                           editorial = warmes Papier, präzise dünne Linien, Serifenschrift, ruhig
                           keynote   = fast schwarz, leuchtende Verläufe, Lichtstrahlen, Partikel
                           geometric = Schweizer Raster, Farbblöcke, parametrische Kurven, fette serifenlose Schrift
                           hybrid    = editorial-Strophen, keynote-Refrains
                           ask (Standard) = rendere einen Stand pro Stil und lass dich wählen
                           auto Standard: editorial
  --lyrics=kinetic|bar|hooks|off   kinetischer Typ / Untertitelbalken / nur Hook-Zeilen / aus
                           (Standard: kinetic für Vektor-Stile, bar für painted)
  --density=bold|every-line|abstract
                           bold (Standard) = ein starkes Bild pro 2–4 Zeilen, zusätzliche Gags als
                           Hintergrund-Ostereier; every-line = ein Gag pro Textzeile
  --human=FOTO|pip         wer spielt „dich“: Karikatur aus einem Foto, oder der Standard-Pip
  --dir=ÜBERGEORDNET       wo Song-Ordner hingehen (Standard ~/PROJECTS); ÜBERGEORDNET/_shared/
                           behält wiederverwendbare Dinge (Ihr Foto, Ihren Charakter) über Videos hinweg
  --interview / --no-interview   erzwinge oder überspringe das Einführungsinterview (G0)

  Übersprungene Gates sind keine übersprungene Arbeit: das Artefakt wird trotzdem erstellt und selbst überprüft,
  und die getroffenen Entscheidungen werden in DECISIONS.md aufgelistet, damit Sie sie später lesen können.

WAS PASSIERT (ca. 1,5–2 h mit Stopps; ca. 45–60 min mit --auto)
  1. Analysiert den Song: Tempo, Drops, Abschnitte, Text-Timing
  1b. Interview: Stil-Stände + alle nicht gesetzten Wahlmöglichkeiten, STOPPT      (außer bei --auto / alle gesetzt)
  2. Schreibt STORYBOARD.md und STOPPT für Ihre Zustimmung        (außer bei --skip)
  2b. Mit --design: Modellbögen + Stil-Frames, STOPPT zum Iterieren
  3. Erstellt einen 30 s Pilotclip und STOPPT, damit Sie ihn sehen können   (außer bei --skip)
  4. Erstellt den Rest parallel (Unteragenten), prüft jede Szenenänderung
  5. Rendert out/<song>_full.mp4 (1080p, H.264 + AAC), bereit für YouTube

BENÖTIGT   Node 20+, Google Chrome, ffmpeg, uv  (Mac: brew install node ffmpeg uv)
KOSTEN    keine API-Ausgaben; verwendet Ihren Claude-Plan (ein voller Song ist ein beträchtlicher Teil der Nutzung)
AUSGABE   ein Projektordner (Standard ~/PROJECTS/<song>-video/ oder --dir), außerhalb jedes Repos
NACH     "add today's lessons to the music-video skill" macht das nächste Video besser

Das fertige Beispiel ist das zoo2-Video („Please Select Your Ending", 4:30): etwa 100 Einstellungen, erstellt in etwa 1 h 40 min Wandzeit. examples/zoo2/ enthält sein Storyboard, jede Kapiteldatei und die Entstehungsgeschichte mit Zeitstrahl, Tokens und Kosten. Lesen Sie LESSONS.md vor dem Start: es ist das Verbesserungsprotokoll und überschreibt alles hier, was ihm widerspricht.

Warum Code, nicht Generierung

Bildmodelle (Deforum, SDXL-Turbo img2img usw.) raten jedes Bild neu, was zu Flimmern, schmelzenden Gesichtern und schlechten Händen führt. Versuch 1 von zoo2 machte das über Nacht und wurde abgelehnt. Code-gezeichnete Frames sind reine Funktionen der Songzeit: glatt, modellkonstant und genau auf dem Beat. Cloud-Videomodelle (Kling, Seedance, Veo) sind die andere Route, mit etwa 70–300 $ pro Song.

Flags und Gates

Analysieren Sie Flags aus den Argumenten und aus einfachen Worten: „keine Stopps", „vollständig autonom", „mach es einfach" bedeuten --skip=all; „überspringe die Storyboard-Zustimmung" bedeutet --skip=storyboard; „lass mich zuerst die Charaktere sehen", „plane mehr aus" bedeuten --design. Werte kombinieren mit Kommas (--skip=storyboard,design). Unbekanntes Flag: sagen Sie es und stoppen.

GateStandardWenn übersprungen
G0 InterviewSTOPP, wenn eine der folgenden Wahlmöglichkeiten nicht gesetzt istUnter --auto/--no-interview nehmen nicht gesetzte Wahlmöglichkeiten ihre Standardeinstellungen und werden in DECISIONS.md protokolliert.
G1 StoryboardSTOPPSchreiben Sie es, führen Sie einen Selbstkritik-Durchlauf gegen das Textblatt durch (eine Idee pro Zeile? Jeder Refrain ein Höhepunkt? Motiv kehrt am Ende zurück?), dann fortfahren.
G2 Design (nur mit --design)STOPP, iterieren bis genehmigt--skip=design behält die Phase bei, führt aber Selbstkritik an den Bögen durch, anstatt zu warten.
G3 PilotSTOPPBauen Sie den Pilot trotzdem (er erstellt die gemeinsamen SETS, die die Kapitel benötigen). Führen Sie zwei Kontaktbogen-Review-Durchläufe durch und beheben Sie die üblichen Erstlauf-Fehler, bevor Sie fortfahren.

Wahlmöglichkeiten (--style, --lyrics, --density, --human, --dir; Tabelle in Hilfe). Einfache Worte zählen auch: „sauber", „geschäftlich", „Marketing", „nicht kindisch", „knackig" bedeuten einen Vektor-Stil (fragen welchen, oder editorial unter --auto); „wie das Zoo-Video", „handgemalt" bedeuten painted. Notieren Sie die endgültigen Entscheidungen oben in STORYBOARD.md und in src/config.js als PROJECT.style, PROJECT.lyrics, damit Unteragenten sie erben.

Ein Gate wird nur übersprungen, wenn der Benutzer es gesagt hat; im Zweifel anhalten. Ein STOPP ist echt: beenden Sie den Zug und warten Sie. Hängen Sie für jedes übersprungene Gate an DIR/DECISIONS.md an: das Gate, was entschieden wurde, die Alternativen, die Sie abgewogen haben, und die Pfade der Bilder, die Sie geprüft haben. Verlinken Sie DECISIONS.md im Abschlussbericht, damit der Benutzer es prüfen kann. Überspringen Sie niemals die abschließende ffprobe-Prüfung und die Text/Bild-Stichprobenprüfung in Schritt 8: diese sind Verifizierung, nicht Genehmigung.

Pipeline (in dieser Reihenfolge ausführen; die STOPPs sind echt, es sei denn, ein Flag hat sie übersprungen)

  1. Projekt. Erstellen Sie den Projektordner außerhalb jedes Repos: ÜBERGEORDNET/<song-slug>/ wobei ÜBERGEORDNET --dir ist (Standard ~/PROJECTS), und verschieben Sie den Song in sein assets/. Legen Sie ein Referenzfoto (--human) in ÜBERGEORDNET/_shared/ ab. bash ~/.claude/skills/music-video/scripts/setup_project.sh ÜBERGEORDNET/<song-slug> Dies klont ClaudeAnimationBase auf UPSTREAM_PIN, fügt src/cast.js (Pip, Requisiten, Karaoke) hinzu und verdrahtet das Karaoke. Es benötigt Node 20+, Chrome, ffmpeg, uv und git.
  2. Analysieren. uv run ~/.claude/skills/music-video/scripts/analyze_song.py SONG --project DIR [--srt LYRICS.srt] Dies schreibt src/config.js (phasen-angepasstes BPM und Offset), src/lyrics.js und analysis.json. Vertrauen Sie niemals librosas BPM. Verwenden Sie den angepassten Wert. Prüfen Sie energy_drops gegen die [Chorus]-Abschnittsanfänge. Suno-Exporte betten eine SRT-Spur mit [Section]-Tags ein; für andere Songs holen Sie zuerst das Timing (fragen Sie den Benutzer oder richten Sie mit Whisper aus). Das angepasste BPM kann beim doppelten gefühlten Tempo herauskommen (niedrige Kohärenz, eine Textzeile = zwei „Takten"): notieren Sie das gefühlte Tempo im Storyboard und verwenden Sie bt(2k) für gefühlte Beats. 2b. Interview (G0). Überspringen Sie es nur, wenn jede Wahlmöglichkeit gesetzt ist oder --auto/--no-interview gegeben wurde. Sonst:
    • Stil zuerst, als Bilder. Wenn --style nicht gesetzt ist, rendern Sie die Vergleichsstills: node design/style_tests.mjs (vom Setup kopiert) zeichnet den GLEICHEN Textmoment in editorial, keynote, geometric und hybrid (--line1/--line2/--stamp setzen die Wörter), in out/design/style_test_*.jpg und style_tests_all.jpg. Senden Sie sie, plus einen gemalten Frame aus dem zoo2-Beispiel, wenn der Benutzer es noch nicht gesehen hat. Leute können keinen Stil aus Worten auswählen.
    • Fragen Sie dann die restlichen nicht gesetzten Wahlmöglichkeiten in einer AskUserQuestion-Runde (lyrics, density, human), plus die songspezifischen Aufrufe, die ein Storyboard nicht allein treffen kann: wie wörtlich reale Marken oder Produkte gezeigt werden sollen, und wie sensible Textzeilen (Gewalt, Skandal, reale Ereignisse) gezeigt werden sollen.
    • Wiederverwenden vor Neuzeichnen: wenn ÜBERGEORDNET/_shared/cast/ bereits einen Charakter für diese Person hat (z.B. <name>.js + <name>_body.js, in einem früheren Video genehmigt), kopieren Sie diese Dateien in src/vec/, fügen Sie ihre <script>-Tags nach vec.js hinzu und verwenden Sie sie wie sie sind (Ausdrucks- und Posensteuerung enthalten). Nur neu zeichnen, wenn der Benutzer Änderungen wünscht. Nachdem eine neue Person genehmigt wurde, kopieren Sie ihre Dateien in ÜBERGEORDNET/_shared/cast/ (mit einer Zeile in _shared/README.md), damit das nächste Video sie wiederverwendet.
    • Bei einem neuen --human-Foto schauen Sie es sich an und schreiben Sie die Karikaturmerkmale in STORYBOARD.md (Kopfform, Haare oder keine, Gesichtsbehaarung, Brauen, Augen, übliche Kleidung). Zeichnen Sie nach den Merkmalen; niemals das Foto in das Video einzeichnen oder einfügen. G0 — STOPP nach dem Senden der Stills und Fragen. Kombinieren Sie die Antworten in die Wahlmöglichkeiten, dann fortfahren.
  3. Lesen Sie DIR/ANIMATION_GUIDE.md (die Regeln des Kits), LESSONS.md und ein Beispielkapitel (examples/zoo2/scenes/c01_pilot.js), bevor Sie etwas schreiben. Für einen Vektor-Stil (alles außer painted) gelten die Engine-Abschnitte des Leitfadens weiterhin (Zeitstrahl, shots(), Kamera, Easing, Beat, Review-Schleife), aber seine Look-Regeln sind umgekehrt: siehe Vektor-Stile unten.
  4. Storyboard. Schreiben Sie DIR/STORYBOARD.md (Format: examples/zoo2/STORYBOARD.md) mit der Logline, Besetzung, Palettenbogen, Motiv, einer Kapiteltabelle für den gesamten Song und dem Pilot Einstellung für Einstellung mit getimten „Lesungen". Die Bilddichte folgt --density (bold: ein starkes Bild pro 2–4 Zeilen, der Rest als Hintergrund-Ostereier; every-line: eines pro Zeile, von Charakteren gespielt). G1 — STOPP: Zeigen Sie es dem Benutzer und warten Sie auf Genehmigung (mit --skip=storyboard/all: Selbstkritik, in DECISIONS.md protokollieren, fortfahren). 4b. Design (nur mit --design). Vor jeder Animation die Optik als Standbilder in out/design/ festlegen:
    • cast_<name>.jpg Modellbogen pro Charakter: Vorder-, Dreiviertel- und Seitenansicht, 4 Ausdrücke (neutral, Freude, Angst, Entschlossenheit), 3 Aktionsposen aus dem Storyboard und eine Höhenaufstellung der gesamten Besetzung;
    • palette.jpg: Swatch-Streifen pro Kapitel, die den Palettenbogen über den Song zeigen;
    • style_<kapitel>.jpg: ein fertiger Keyframe pro Kapitel zum Heldenmoment des Storyboards, Texte an. Zeichnen Sie sie mit einem Wegwerf-scenes/design.js (ein nur-Blatt-Kapitel außerhalb des Songzeitbereichs) und node render.mjs --sheet=...; der Charaktercode geht in src/cast.js-Ergänzungen, die die Kapitel wiederverwenden werden, also genehmigte Designs direkt ins Video übernommen werden. G2 — STOPP: Zeigen Sie die Bögen; notieren Sie sich Änderungen („größere Augen", „wärmere Refrain-Palette"), rendern Sie erneut, wiederholen Sie, bis der Benutzer genehmigt. Aktualisieren Sie dann STORYBOARD.md entsprechend.
  5. Pilot. Wählen Sie etwa 30 s, die eine Abschnittsgrenze in einen Refrain überqueren. Bauen Sie es als eine Kapiteldatei mit gemeinsamen Sets, die auf window.SETS exportiert werden (siehe Ende von c01_pilot.js). Prüfen Sie es mit node render.mjs --sheet=... --out=out/check/x.jpg und --strip=a:b, und schauen Sie sich die Bilder an. Die üblichen Erstlauf-Fehler: Charaktere zu klein (Kamera auf 1,3–1,5× hereinzoomen), Hintergrundformen nicht breit genug für Schwünge, Requisiten unter der Karaoke-Leiste versteckt. Für einen Vektor-Stil bauen Sie auf src/scenes/sets.js auf (das Setup kopiert ein funktionierendes: Raum, Fenster, Flur, Scrollen, Emotionsblending; passen Sie es an). Rendern Sie node render.mjs --clip --range=a:b --out=out/pilot.mp4. G3 — STOPP: Der Benutzer schaut es an und genehmigt oder gibt Änderungen (mit --skip=pilot/all: zwei Review-Durchläufe, in DECISIONS.md protokollieren, fortfahren).
  6. Kapitel parallel. Fügen Sie zuerst Stub-Dateien und ihre <script>-Tags in studio.html für jedes Kapitel hinzu (ein Agent darf niemals eine gemeinsame Datei bearbeiten). Starten Sie dann einen Unteragenten pro Kapitel (Fork-Typ, damit er diesen Kontext erbt). Geben Sie jedem seinen Zeitbereich, seine Textzeilen, seine Kapitelzusammenfassung aus dem Storyboard, „NUR IHRE DATEI", die gemeinsamen SETS und Globals sowie den Naht-Vertrag:
    • zwischen den Kapiteln ein Übergang mit den GLEICHEN Farben auf beiden Seiten (painted: brushWipe, out p<.5 in den letzten 0,3 s, in .5+lt/.6; vector: V.wipe, siehe CHAPTER_BRIEF.md

Verwandte Skills