Communitygithub.com

film-lyrique-desi

Créez un vidéoclip lyrique 16:9 dessiné à la main, maximaliste indien — animation stop-motion d'un personnage, cadre orné persistant, paroles cinétiques en Devanagari et roman synchronisées avec les mots, et un moment œil à chaque refrain. Les paroles sont extraites automatiquement de l'audio de l'utilisateur ; le personnage est construit avec le MCP Atlabs via Nano Banana 2.1, GPT Image 2.5 Sunburst ou Seedream 5.

Qu'est-ce que film-lyrique-desi ?

Cette compétence transforme un fichier audio de chanson en un film lyrique 16:9 entièrement animé dans un style dessiné à la main et maximaliste indien. Elle est conçue pour les agents AI comme Claude Code, Cursor ou Codex, et automatise la réalisation d'un vidéoclip lyrique avec un personnage animé en stop-motion, des paroles cinétiques en Devanagari et roman synchronisées mot par mot, et un « moment œil » à chaque refrain. La compétence extrait automatiquement les paroles de l'audio de l'utilisateur via Whisper, puis utilise le MCP Atlabs pour générer et éditer le personnage avec des modèles comme Nano Banana 2.1, GPT Image 2.5 Sunburst ou Seedream 5, assurant une cohérence parfaite entre expressions, tenues et palettes de couleurs. Si le MCP Atlabs n'est pas connecté, la compétence s'arrête et guide l'utilisateur pas à pas pour le connecter. Le projet utilise un moteur basé sur Remotion et génère trois fichiers JSON (paroles, personnage, plan de film), puis rend la vidéo finale en 1920×1080 à 24ips. Toutes les étapes, de la transcription à la planification des plans, sont automatisées par des scripts Python et shell inclus.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Chinmaya123-cyber/desi-lyric-film/tree/main/skills/desi-lyric-film

Demander à votre IA préférée

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

Documentation

Film lyrique desi

Transformez une chanson (un fichier audio de l'utilisateur) en un film lyrique 16:9 dans un style dessiné à la main et cohérent : un personnage illustré porte l'émotion de chaque ligne, chaque refrain est un moment œil, les paroles sont ecrites mot par mot en Devanagari avec la ligne romane en dessous, chaque coupe tombe sur une syllabe chantée, et l'ensemble bouge comme du stop-motion (dessins en deux poses, lignes d'encre bouillonnantes, découpages en papier).

template/ est un projet Remotion complet et testé avec un moteur piloté par les données. Vous ne codez jamais un film à la main : vous produisez trois fichiers JSON et le moteur les rend.

fichierce qu'il contientfabriqué par
src/lyrics.jsonune entrée par phrase chantée : {t0, t1, dev[], rom[], times[]}tools/transcribe_lyrics.py → tools/build_lyrics.py
src/character.jsonensembles d'expressions + ancres des yeux, plans rapprochés des yeux, fiches de looks, vrilleMCP Atlabs + tools/register_frames.py, eye_anchor.py, cu_plates.py, make_cards.py
src/film.jsonla liste des plans (type, début, emplacement des paroles, fond, transition, options)tools/plan_shots.py, puis vous l'affinez par le sens

Lisez les références à chaque étape : references/atlabs-mcp.md · references/character.md · references/lyrics-and-timing.md · references/shot-design.md · references/style-guide.md (palette, typographie, spécifications de mouvement exactes) · references/render-deliver.md.

0. Règle absolue — le MCP Atlabs doit être connecté en premier

Tous les éléments artistiques du personnage (design de base, expressions, gros plans des yeux, tenues/couleurs) sont générés via le MCP Atlabs. Il n'y a pas de solution de repli : s'il n'est pas connecté, arrêtez-vous et ne faites rien d'autre jusqu'à ce qu'il le soit.

Vérifiez : recherchez avec ToolSearch atlabs generate_image get_result start_upload get_account (les outils sont nommés mcp__atlabs__… ou mcp__<id>__… et sont souvent différés), puis appelez get_account — il renvoie le solde de crédits.

Si les outils sont manquants ou que get_account échoue, répondez avec exactement ces étapes et attendez :

Cette compétence génère l'art du personnage avec le MCP Atlabs, elle doit donc d'abord être connectée (environ une minute) :

  1. Pas encore de compte Atlabs ? Inscrivez-vous sur https://app.atlabs.ai (la génération d'images utilise des crédits Atlabs ; un film complet en nécessite environ 25 à 40).
  2. Connectez-le :
    • Claude Code, installé comme ce plugin : Atlabs est intégré — tapez /mcp, choisissez atlabs, connectez-vous.
    • Claude Code (terminal) : exécutez claude mcp add --transport http atlabs https://mcp.atlabs.ai/mcp, puis /mcp → atlabs → connectez-vous.
    • Claude Desktop / claude.ai : Paramètres → Connecteurs → Ajouter un connecteur personnalisé → Nom Atlabs, URL https://mcp.atlabs.ai/mcp → Ajouter → Connecter → connectez-vous, puis activez-le pour cette conversation.
  3. Dites-moi quand c'est connecté et je commencerai.

1. Brief — demandez, ne supposez pas

Demandez avec AskUserQuestion (un tour, puis continuez sur des valeurs par défaut raisonnables) :

  1. La chanson : un fichier audio qu'ils possèdent (mp3/wav/m4a). Ne téléchargez jamais de musique vous-même.
  2. Quelle partie : « choisis le refrain pour moi » (par défaut, 30 à 60 s) ou leurs timestamps, ou un clip de référence pour correspondre (tools/locate.py trouve un clip dans la chanson).
  3. Le personnage — proposez :
    • « Utilise mes images de référence » — des photos d'eux-mêmes ou de quelqu'un qui a accepté, ou un art de personnage dont ils ont les droits. Ils peuvent en partager plusieurs (différentes tenues, arrière-plans colorés, expressions) ; chacune est utile. Ne stylisez pas une célébrité ou une personne réelle sans son consentement — proposez plutôt un personnage original.
    • « Créer un personnage original » — éventuellement à partir d'une image de référence de style et d'une brève description (look, ambiance de tenue).
  4. Mots d'ambiance (facultatif) : par ex. « desi baddie Gen-Z », « romantique doux », « festif », « chagrin d'amour ». Par défaut : desi moderne avec des accents indiens.

S'ils partagent des images dans le chat qui ne sont pas des fichiers sur le disque, demandez-leur de les enregistrer dans refs/cards/ (ou de donner les chemins) — les téléversements vers Atlabs ont besoin de fichiers.

2. Échafaudage

cp -R <dossier de la compétence>/template <projet> && cd <projet>
npm install
uv venv -q --python 3.12 .venv && uv pip install --python .venv/bin/python numpy scipy pillow faster-whisper
mkdir -p refs && cp <chanson> refs/song.mp3

(python3.12 -m venv .venv fonctionne aussi.) Exécutez chaque outil Python comme .venv/bin/python -I tools/<outil>.py … depuis la racine du projet. Le modèle est livré avec un personnage de démonstration, des accessoires et des données de démonstration, donc npx remotion studio src/index.ts fonctionne immédiatement.

3. Lire la chanson, choisir la partie, couper l'audio — references/lyrics-and-timing.md

.venv/bin/python -I tools/beatgrid.py refs/song.mp3 --bpm-min 60 --bpm-max 180      # tempo, phase de battement, barres de volume
.venv/bin/python -I tools/structure.py refs/song.mp3                                 # sections répétées = refrains
.venv/bin/python -I tools/vocal_onsets.py refs/song.mp3 --from 0 --to <dur> --json refs/onsets.json
tools/cut_audio.sh refs/song.mp3 <début> <fin>                                        # → public/audio/song_cut.wav

Choisissez la section vocale la plus répétée et la plus énergique (le refrain s'y trouve). Commencez sur un temps fort 2 à 4 temps avant la première voyelle, terminez sur une respiration avant la section suivante. Notez start — le temps vidéo = temps de la chanson − start.

4. Paroles — automatiques, à partir de l'audio de l'utilisateur

.venv/bin/python -I tools/transcribe_lyrics.py refs/song.mp3 --from <début> --to <fin> --lang hi --onsets refs/onsets.json
.venv/bin/python -I tools/build_lyrics.py --transcript refs/transcript.json --slice <début> <fin> --onsets refs/onsets.json
  • --lang hi renvoie du Devanagari, --lang en du hinglish romanisé ; build_lyrics.py écrit les deux écritures.
  • Si le transcripteur signale des passages chantés illisibles (chant très rapide, voix superposées), demandez une fois si l'utilisateur a les paroles en texte ou un tableau horodaté ; si oui : build_lyrics.py --table lyrics.txt … (ou --text). Sinon, continuez : ces phrases restent sans paroles et le planificateur leur donne des plans purement visuels.
  • Les paroles ne proviennent jamais que de l'audio de l'utilisateur via le transcripteur ou d'un texte fourni par l'utilisateur. Ne tapez jamais vous-même des paroles de chansons, ne comblez jamais les lacunes de mémoire, et ne renvoyez pas le texte des paroles dans le chat — signalez les comptes et les timings.

5. Le personnage — MCP Atlabs — references/character.md

Un dessin de base, tout le reste est une édition de cette base, donc le personnage ne dérive jamais. Modèles par défaut : Nano Banana 2.1 (nano_banana_2_1) pour la base à partir de la référence et chaque édition (meilleure cohérence) ; GPT Image 2.5 Sunburst (gpt_image_2_5_sunburst) lorsqu'une photo a besoin d'un passage de stylisation plus fort ; Seedream 5 Pro (seedream_5_pro) pour de nouveaux accessoires ou des plans de scène entière.

  1. Base : propre, haut du corps, fond crème uni, dans le style (références ou original).
  2. Expressions (éditions de la base) : front, half, closed, pain, relief, shy, dream, moved (+ la base comme neutral/side-eye). register_frames.py les place sur une seule toile ; eye_anchor.py --set main … trouve ses yeux.
  3. Deuxième look optionnel (par ex. une tenue plus sombre) avec front, half, closed, pain, relief, dream → utilisé pour les ambiances lourdes.
  4. Bande de gros plan des yeux + éditions half, closed, tears, glance, smoulder → cu_plates.py, puis eye_anchor.py --closeup.
  5. 4 à 6 fiches de looks : la même personne, différentes tenues modernes + fond de couleur unie de la palette + gribouillis, chacune avec une édition yeux fermés → make_cards.py.
  6. Une vrille en pied → keyout.py. Soumettez les générations indépendantes en parallèle ; contactez avec sheet.py et regardez avant de continuer. Informez l'utilisateur des modèles utilisés et des crédits dépensés.

6. Planifier le film — references/shot-design.md

.venv/bin/python -I tools/plan_shots.py --bpm <bpm> --beat0 <premier temps, s vidéo> --duration <s> --audio audio/song_cut.wav

Ensuite, lisez le sens de chaque ligne (à partir des fichiers, sans coller les paroles dans le chat) et affinez src/film.json :

  • chaque refrain est un moment œil (son gros plan avec un regard différent à chaque fois, ou un accessoire œil) ; jamais deux fois de suite identique
  • la douleur est sur son visage (fissures, sol assombri) et le soulagement arrive sur le mot guérisseur — jamais une blessure littérale
  • le toucher/la sensation est « ému » (fleurs, ondulations), pas une main sur le cœur littérale ; les lignes rapides sont des retours de fiches de looks
  • les arrière-plans changent à chaque plan (couleurs des looks), le cadre ne change jamais ; les transitions varient Gardez une histoire cohérente : elle est la protagoniste, ses yeux sont le motif.

7. Réviser, puis rendre — references/render-deliver.md

node tools/stills.mjs out/st 0.5 <images…> && .venv/bin/python -I tools/sheet.py out/st.jpg out/st/*.jpg
./tools/make_film.sh <nom>                     # → out/<nom>.mp4 (1920×1080, 24 ips)

Vérifiez les images fixes au premier mot de chaque phrase : paroles lisibles et dans le cadre, yeux ouverts sur les refrains, expressions correspondant à la ligne, pas de plan vide. Corrigez, re-rendez les images modifiées, puis rendez le film (~4 à 6 min). Copiez le résultat dans le dossier Téléchargements de l'utilisateur et envoyez-le. Mentionnez une fois : une chanson commerciale peut être rendue muette sur certaines plateformes ; c'est la responsabilité de l'utilisateur s'il a les droits de la publier.

Pièges (d'après des exécutions réelles)

  • feTurbulence traite les graines 0 et 1 comme le même motif — les graines d'ébullition/grain commencent à 1 (déjà corrigé dans kit.tsx) ; sinon l'ouverture reste immobile pendant 4 images puis saute.
  • Whisper manque les chants très rapides ; les attaques synchronisent toujours ces phrases — ne devinez jamais les mots.
  • Le shell headless intégré de Remotion peut planter sur macOS ; remotion.config.ts utilise Chrome installé. Gardez la concurrence à 6.
  • Les éditions enregistrées doivent provenir de la même image de base ; si une édition dérive (pose/cadrage différent), régénérez-la plutôt que de la forcer.
  • Le texte sur fonds sombres passe automatiquement aux lettres crème/pêche — choisissez les arrière-plans des plans par ambiance, pas par texte.

Skills associés