vvai-pixel-mv · MV pixel au tempo
Ordre fixe : Scénario → Storyboard (l'utilisateur regarde, modifie, peut faire plusieurs allers-retours) → Validation utilisateur → Rendu. Aucun rendu sans un storyboard validé par l'utilisateur.
Un exemple complet se trouve dans assets/examples/ : scénario et story.json d'une chanson, 7 segments, 3 personnages, avec fenêtre de bureau.
Préparation
PY: Python 3.10 ou supérieur avec librosa, faster-whisper, numpy, Pillow installés (voir INSTALL.md). Si le CLAUDE.md ou la mémoire de l'utilisateur mentionne un chemin Python, utiliser celui-ci. Sinon, vérifier d'abord quepythonpeut importer ces paquets, demander à l'utilisateur en cas d'échec.MV:PY -X utf8 <chemin_skill>/scripts/pixel_mv.py.- Nécessite ffmpeg et Node. Le rendu utilise par défaut
npx --yes [email protected]; pour changer de CLI, définir la variable d'environnementHF_CLI(séparer les paramètres par|).
Déroulement
- Collecte du matériel. Obligatoire : audio, paroles synchronisées (srt ou lrc) et titre de la chanson.
- Optionnel : secondes de début/fin, palette de couleurs (base / neon / classic / retro), intensité (dj / standard / soft), images des personnages.
- Demander également l'histoire : l'utilisateur a-t-il déjà une intrigue en tête ? Sinon, proposer des idées à l'étape 3.
- Si aucun fichier de paroles n'est fourni, le demander à l'utilisateur. Ne pas utiliser la transcription automatique. Si des parties ne sont pas vocales, demander d'abord à l'utilisateur (ne pas les traiter comme une intro).
- Création du projet :
MV new <dossier_projet> --audio <audio> --lyrics <srt/lrc> --title <titre> [--start secondes --end secondes] [--look base] [--character image].- Cette étape découpe l'audio, détecte le tempo et les pics d'énergie, aligne les paroles mot à mot.
- Génère également une première ébauche
story.jsonavec changements de scène basés sur des mots-clés, ainsi qu'un modèlestoryline.md. - Le projet est placé dans le dossier spécifié par l'utilisateur ; s'il a un dossier de série fixe (mentionné dans CLAUDE.md ou sa mémoire), l'y placer.
- Rédaction du scénario. Remplir
storyline.mdselon la méthode de narration : histoire en une phrase, personnages, thème, actes, vers par vers. Soumettre à l'utilisateur pour validation. - Rédaction de story.json. Traduire le scénario en story.json.
- Voir le format pour les champs, les actions disponibles, les types de paroles, les transitions dans le répertoire des interactions.
- Le plus rapide est de s'inspirer de
assets/examples/bad-girl.story.json. - Après l'écriture, exécuter
MV check <projet>jusqu'à ce qu'il n'y ait plus d'erreurs.
- Génération du storyboard pour l'utilisateur.
- Exécuter
MV board <projet> --frames: capture 1 à 3 images par segment, génèrestoryboard.mdavec un aperçu général, puis par segment : personnages, actions narratives, paroles (numéros de vers et mode d'apparition), transitions, cadrage, points de synchronisation. - Envoyer
storyboard.mdet les planches contact du dossierstoryboard/images/à l'utilisateur via SendUserFile. - Indiquer à l'utilisateur ce qui peut être modifié.
- Exécuter
- Modifications jusqu'à satisfaction. L'utilisateur demande des changements ; modifier story.json, puis réexécuter
board.- Le numéro de version augmente automatiquement, l'ancienne version est conservée dans
storyboard/history/. - Possibilité de faire plusieurs allers-retours, en envoyant à chaque fois le nouveau storyboard à l'utilisateur.
- Le numéro de version augmente automatiquement, l'ancienne version est conservée dans
- Validation et rendu.
- Uniquement si l'utilisateur dit explicitement « peux-tu lancer le rendu ? », exécuter
MV approve <projet>, puisMV render <projet> --sample 12. - Les réponses vagues (« d'accord » « fais comme tu veux ») ne sont pas considérées comme une validation.
rendervérifie l'empreinte de story.json ; si le fichier a été modifié après validation, le rendu est refusé.- Si le fichier dépasse 30 Mo, générer en plus une version
_apercu.mp4pour mobile.
- Uniquement si l'utilisateur dit explicitement « peux-tu lancer le rendu ? », exécuter
- Livraison. Vérifier soi-même en assemblant une image par seconde : l'histoire est compréhensible, les scènes, paroles, transitions et titre sont présents, la durée correspond à l'audio original et la piste sonore est là.
- Si l'utilisateur souhaite encore des modifications après le rendu, revenir à l'étape 6 : modifier story.json → nouveau storyboard → nouvelle validation → nouveau rendu.
Règles essentielles
- L'histoire prime sur les effets. Chaque vers doit comporter au moins une action narrative ou une interaction avec les paroles ; les actions narratives doivent correspondre temporellement aux mots-clés ; les transitions doivent avoir une raison narrative. Voir la méthode de narration.
- Changement de scène : en l'absence d'exigence narrative, par défaut « bureau principal + insertion d'images symboliques », voir les règles de storyboard. Avec une histoire, suivre les actes ; les parties de prise de conscience ou de rétrospective utilisent le point de vue fenêtre de bureau.
- Personnages :
- Par défaut, le petit personnage Claude représente « moi ».
- Les autres personnages sont déclarés via
cast(girl, rival, friend, ghost). - Si l'utilisateur fournit une image, exécuter
MV character <projet> <image>pour la convertir en personnage 16×16 pixels.
- Sync tempo :
- Le personnage atterrit exactement sur chaque temps fort, s'écrase au sol, avec une ondulation qui se propage sous ses pieds.
- Chaque temps fort provoque un impact de caméra et un flash de couleur ; les temps forts supplémentaires ajoutent une séparation RVB.
- Les flashs blancs pleine écran sont réservés aux transitions et aux drops, maximum 3 par seconde.
- Réaction de surprise : maximum 2 par vidéo, réservée aux vrais retournements.
- Paroles :
- Apparaissent uniquement dans les images et les fichiers du projet ; dans les réponses de chat et le storyboard, n'écrire que le numéro de vers.
- Les droits d'auteur de la chanson sont de la responsabilité de l'utilisateur ; lui rappeler avant publication.
Liste des commandes
| Commande | Rôle |
|---|---|
new | Créer un projet : analyse + alignement + ébauche + scénario |
story | Générer le modèle storyline.md (--force pour recréer) |
check | Vérifier que les noms, temps et fenêtres dans story.json sont reconnus par le moteur |
board [--frames] | Générer le storyboard (version N), sauvegarder l'historique |
approve | Enregistrer la version validée par l'utilisateur ; nécessaire avant render |
render [--sample 12] [--name nom_fichier] | Lancer le rendu ; --force ignore la validation, à utiliser uniquement si l'utilisateur le demande explicitement |
sync | Synchroniser story.json vers assets/story.js (pour débogage ; board et render le font automatiquement) |
upgrade | Mettre à jour un ancien projet vers le moteur de template actuel, les anciens fichiers sont sauvegardés avec .before-upgrade |
character | Image → personnage pixel |
analyze / align / draft | Étapes individuelles de new, à utiliser pour relancer une étape spécifique |
Personnalisation au-delà du template
Le moteur de template v2 couvre déjà ce qui suit (voir le répertoire des interactions) :
- 27 scènes, 16 actions de base ;
- 23 actions narratives ;
- 7 types d'interaction avec les paroles, 6 entrées, 9 sorties ;
- 7 transitions ;
- Fenêtre de bureau.
Si ce n'est pas suffisant, ajouter des éléments dans assets/engine.js du projet (ne pas modifier le template du skill). Se référer aux techniques de l'épisode 1. Pour intégrer une nouvelle séquence dans le template, d'abord demander l'accord de l'utilisateur. Ensuite, modifier simultanément :
- Le template
engine.js; - Les listes
BEAT_NAMESetc. danspixel_mv.py, ainsi que les noms chinoisZH_*pour le storyboard ; interactions.md.
Bibliothèque de scènes
- Les données sont dans
assets/scene-library/scenes.json. - Pour ajouter une scène, modifier à deux endroits : enregistrer les mots-clés et interactions dans
scenes.json, et la méthode de dessin dans le tableauSCENESdu templateengine.js.