Communitygithub.com

Music Video

Construisez un clip vidéo à partir d'une chanson existante et de ses paroles, soit en animation p5.js/p5.brush, soit en assemblant des images et des clips locaux. Utilisez cette compétence lorsque l'utilisateur mentionne un clip vidéo, un MV, un lyric video, un visualiseur, un storyboard, 音乐视频, 歌词动画 ou MV合成. Ne l'utilisez pas pour composer la chanson, générer des effets sonores ou appeler une API de génération d'images ou de vidéos.

Qu'est-ce que Music Video ?

Cette compétence transforme une chanson finie en clip vidéo à 24 images par seconde. La chanson est l'audio maître et les intervalles des scènes la couvrent exactement une fois. Elle prend en charge deux modes : `code` pour animer la chanson en JavaScript avec p5.js et p5.brush, et `hybrid` pour assembler des images et des clips locaux sans appeler d'API de génération. Les analyses locales (beat, onset, basses fréquences, loudness) déterminent les points de coupe et les indices d'animation. Le résultat est un fichier `final.mp4` avec la chanson originale comme seule bande sonore, accompagné de la documentation du projet (brief créatif, storyboard, tâches, progression). La compétence fonctionne sur Python 3.9+ avec `ffmpeg`/`ffprobe`, et nécessite Node.js, Git et Google Chrome en mode `code`. Les assets ne sont jamais téléchargés et aucune API externe n'est appelée pour la génération de contenu.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NoizAI/skills/tree/HEAD/skills/music-video

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

music-video

Transformez une chanson finie en clip vidéo à 24 images par seconde. La chanson est l'audio maître. Les intervalles des scènes la couvrent exactement une fois.

Déclencheurs

  • music video / MV / lyric video / visualizer / storyboard
  • 音乐视频 / MV合成 / 歌词动画 / 歌曲动画

Capacités

  • code : initialiser un projet p5.js et p5.brush épinglé, puis animer la chanson en JavaScript.
  • hybrid : inspecter les images de personnages, les scènes fixes et les clips vidéo locaux, puis les assembler. Aucune API de génération d'images ou de vidéos n'est appelée.
  • Analyse locale du beat, des onsets, des basses fréquences et de la loudness pour les points de coupe et les indices d'animation.
  • Assemblage image par image avec la chanson originale comme seule bande sonore.

Entrées

Obligatoire :

  • song : audio local (.mp3, .wav, .m4a, .flac, .ogg, .aac)
  • brief : l'idée visuelle, le public cible et toute référence nécessaire
  • mode : code ou hybrid

Optionnel :

  • lyrics : texte ou .srt. Requis avant le storyboard lorsque le timing vocal compte.
  • assets : répertoire d'images et de clips pour hybrid
  • aspect : 16:9 (par défaut), 9:16, 1:1 ou 4:3

Si l'utilisateur souhaite d'abord créer une chanson, utilisez text-to-music, puis revenez ici avec le fichier choisi.

Sorties

  • <project>/output/final.mp4
  • docs/CREATIVE_BRIEF.md, docs/STORYBOARD.md, docs/TASKS.md et docs/PROGRESS.md
  • audio/analysis.json, et docs/inspect.json lorsque les assets existent

Workflow

Exécutez python3 skills/music-video/scripts/mv.py depuis la racine du dépôt. Si cette compétence est installée ailleurs, utilisez le scripts/mv.py à côté de ce fichier. Créez le projet en dehors du répertoire de la compétence.

  1. Choisissez code lorsque la vidéo est dessinée en JavaScript. Choisissez hybrid lorsque l'utilisateur fournit des images ou des clips. Demandez une fois lorsque ni l'un ni l'autre n'est clair.
  2. Initialisez un projet isolé :
python3 skills/music-video/scripts/mv.py init \
  --project ./mv-project --song ./song.mp3 --lyrics ./lyrics.txt --mode code

python3 skills/music-video/scripts/mv.py init \
  --project ./mv-project --song ./song.mp3 --lyrics ./lyrics.srt \
  --assets ./clips --mode hybrid --aspect 16:9
  1. Analysez la chanson. Traitez les changements de tempo comme approximatifs et confirmez les limites des sections à partir de l'audio :
python3 skills/music-video/scripts/mv.py analyze --project ./mv-project
  1. Obtenez le timing des paroles. Si l'utilisateur ne l'a pas fourni, utilisez speech-to-text uniquement si NOIZ_API_KEY ou ~/.config/noiz/api_key existe déjà. N'imprimez jamais la clé. Si aucune des deux n'existe, demandez les paroles ou les timestamps et ne téléchargez pas la chanson.
  2. Lisez references/opus-5.5-prompt.md et suivez-le. Rédigez le brief créatif et le storyboard avant le code de la scène ou l'assemblage. Revoyez l'ouverture et le pic principal avant de construire les autres chapitres.
  3. En mode code, lisez <project>/animation/ANIMATION_GUIDE.md avant de dessiner. Définissez PROJECT.bpm et PROJECT.offset à partir de audio/analysis.json. Le modèle de toile épinglé est 1920×1080 ; modifiez studio.html et la fenêtre du rendu avant d'utiliser un autre format. Vérifiez le mouvement avec le rendu du modèle :
node render.mjs --sheet=1,2,3 --out=../output/sheets/pilot.jpg
node render.mjs --strip=START:END --out=../output/sheets/pilot-motion.jpg
node render.mjs --clip --range=START:END --out=../output/pilots/opening.mp4

Exécutez ces commandes dans <project>/animation. Passez --chrome ou définissez CHROME_PATH lorsque Chrome n'est pas dans un emplacement standard. Un planche contact ne fait que vérifier la disposition. Un --strip, ou la lecture de l'ouverture, du pic et de la fin, est la revue de mouvement. 7. En mode hybrid, inspectez les médias locaux et arrêtez-vous si un clip requis est manquant. Ne générez pas de remplacement.

python3 skills/music-video/scripts/mv.py inspect --project ./mv-project
  1. Écrivez timeline.json en utilisant references/timeline.schema.json. Les intervalles sont inclusifs à start_frame et exclusifs à end_frame.
  2. Assemblez et sondez le résultat :
python3 skills/music-video/scripts/mv.py assemble --project ./mv-project

Timeline

{
  "fps": 24,
  "width": 1920,
  "height": 1080,
  "audio": "audio/source.mp3",
  "scenes": [
    {
      "id": "opening",
      "start_frame": 0,
      "end_frame": 240,
      "source": "output/pilots/opening.mp4",
      "source_start": 0,
      "fit": "cover",
      "transition": "fade",
      "fade_frames": 6
    }
  ],
  "overlays": []
}

fade reste à l'intérieur de sa propre scène. Ne chevauchez pas les scènes pour créer un crossfade.

Achèvement

Terminez uniquement lorsque chaque élément est vrai :

  • [0, ceil(duration × 24)) est couvert exactement une fois, sans trou ni chevauchement.
  • final.mp4 a un flux vidéo et la chanson originale complète.
  • L'ouverture, le pic principal et la fin ont été revus en mouvement.
  • La dernière histoire lue a le temps de se poser.
  • docs/PROGRESS.md n'a aucun blocage ouvert.

Sécurité

init --mode code clone JohnHeibel/ClaudeAnimationBase au commit 0ac8bf2b31942376cb6b8c4074715595d512acd2 dans le projet. Ce modèle est sous licence MIT. L'analyse, l'inspection, le rendu et l'assemblage restent locaux. Le mode hybride ne télécharge pas de médias et n'appelle aucun service de génération d'images, de vidéos ou de musique.

Prérequis

  • ffmpeg et ffprobe
  • Python 3.9+
  • analyze : uv pip install 'numpy>=2,<3'
  • Mode code : git, Node.js et Google Chrome
  • Mode hybrid : assets locaux uniquement

Limitations

  • Cette compétence ne compose pas de musique, ne génère pas d'effets sonores et ne crée pas d'images ou de vidéos via une API.
  • La grille de beat suppose un tempo globalement stable.
  • Les remplissages aquarelle en mode code peuvent prendre plusieurs secondes par image sans GPU dédié. Demandez au rendu d'éviter ces remplissages sur les graphiques intégrés.
  • L'assemblage rejette un clip plus court que sa scène au lieu de le figer ou de le retimer.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés