Communitygithub.com

animation-studio

Transformez une idée ou un script en une vidéo animée complète (histoire biblique, tech/programmation, maths/éducation ou histoire/pub générale) dans un style choisi (stickman, tableau blanc, 2D plat, vecteur moderne, livre d'images, 3D cartoon, 3D cinématique) et un format (9:16, 16:9, 1:1, 4:5), après avoir vérifié que l'ordinateur peut la rendre en toute sécurité.

Qu'est-ce que animation-studio ?

Ce skill transforme une simple idée ou un script en une vidéo animée professionnelle, prête à être exportée en MP4. Il prend en charge plusieurs packs de contenu (Bible, tech, éducation, histoire générale), styles visuels (stickman, tableau blanc, 2D plat, vecteur moderne, livre d'images, 3D cartoon, 3D cinématique) et formats d'image (9:16 pour TikTok/Reels, 16:9 pour YouTube, 1:1 et 4:5). Il inclut la génération de voix off (TTS Piper ou fichier utilisateur), de musique et d'effets sonores, le sous-titrage, le branding (marque d'eau, tiers inférieur, carte de fin), et la création de projets pour les éditeurs vidéo (Kdenlive, Shotcut, DaVinci Resolve, Blender VSE, etc.). Le skill agit comme un routeur intelligent : il pose des questions sur le contenu, le style et la configuration, vérifie le matériel (RAM, CPU, GPU) pour classer l'ordinateur en tiers (LITE, STANDARD, POWER) et adapter le rendu en conséquence, puis suit un processus en 10 étapes de l'écriture à la livraison finale. Il est conçu pour éviter les surcharges : rendu d'un seul format à la fois, pause si la RAM est basse, et offre toujours un aperçu de 5 secondes avant le rendu final. Le son est mixé automatiquement pour que la voix reste toujours claire, et le branding est optionnel et respectueux.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

Demander à votre IA préférée

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

Documentation

animation-studio : idée → script → voix → rendu sécurisé → MP4

Ce fichier est un routeur. Posez les quatre grandes questions, vérifiez le matériel, puis chargez uniquement les fichiers nécessaires au travail : content/<pack>.md (règles d'écriture et de précision) + styles/<style>.md (aspect visuel ; son bloc JSON est le préréglage que le moteur lit) + engines/<engine>/README.md (comment effectuer le rendu). Les outils partagés se trouvent dans shared/.

Trouvez le dossier du skill (SKILL_DIR) = le dossier contenant ce fichier. Claude Code le montre comme le répertoire de base du skill ; pour les autres agents : le dossier du SKILL.md qu'on vous a demandé de lire. Appelez toujours les outils en utilisant "$SKILL_DIR/shared/..." (entre guillemets, les chemins contiennent souvent des espaces). Trouvez un Python 3.10+ (python3, python ou py -3) et appelez-le PY. Après setup_check.py --install, utilisez le python de l'environnement virtuel qu'il affiche.

Tenez l'utilisateur informé avec une liste de tâches. Écrivez chaque livrable dans videos/<slug>/ dans le dossier de travail de l'utilisateur (slug = nom court en minuscules avec des tirets). Expliquez en langage clair.

Ce qui fonctionne dans cette version

PartieStatut
Packs de contenu✅ Bible (content/bible.md) · ✅ Tech (content/tech.md) · ✅ Histoire/pub générale (content/general-story.md) · ✅ Maths/éducation (content/education-math.md)
Stylesmoteur A : ✅ Stickman · ✅ 2D plat · ✅ Livre d'images · ✅ Tableau blanc · ✅ Vecteur moderne — moteur B : ✅ Manim (+ couleurs Tableau blanc / Vecteur moderne) — moteur C : ✅ 3D cartoon — moteur D : ✅ 3D cinématique
Moteurs✅ A py2d (Python 2D) · ✅ B Manim (LaTeX optionnel) · ✅ C 3D cartoon (lent : limité par le niveau) · ✅ D Blender (prévisualisations Eevee, rendus Cycles sur POWER)
Formats✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
Sous-titres✅ .srt toujours + incrustation stylée avec surbrillance des mots (shared/captions.py)
Voix✅ enregistrement de l'utilisateur · ✅ Piper TTS (shared/voice.py, gratuit, hors ligne)
Musique/Bruitage✅ synthétisée (shared/sound.py) · ✅ fichier musical personnel sous licence
Projets éditeur✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve (FCPXML) · ✅ Blender VSE · 🧪 OpenShot (expérimental) · ✅ pack éditeur (CapCut, tout éditeur)
Kit de marque✅ marques sauvegardées (dossier utilisateur), filigrane, tiers inférieur, carte de fin, couleurs de marque sur n'importe quel style (shared/brand.py, docs/branding.md)
Installations logicielles✅ un registre vérifié (shared/tools.yaml) avec des commandes pour Windows, macOS et chaque famille Linux ; n'installe jamais sans un oui

Si l'utilisateur choisit un élément 🚧, dites-le clairement, proposez l'option ✅ la plus proche, et fournissez quand même le package de script.

Étape 1 : Collecte (AskUserQuestion, max 4 questions par appel ; passez ce qui est déjà répondu)

Appel 1

  1. Contenu : Histoire biblique · Tech/programmation · Maths/éducation · Histoire/pub générale
  2. Style : proposez d'abord le style par défaut pour le contenu (Bible → Livre d'images · Tech → Vecteur moderne · Maths → Manim · Général → 2D plat), puis 2–3 autres. Mentionnez Stickman pour les éléments rapides et légers.
  3. Format(s) (multiSelect) : 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/projecteur) · 1:1 1080x1080 · 4:5 1080x1350. PY shared/formats.py table affiche le tableau des plateformes.
  4. Qualité : Aperçu (rapide, 720p) · Final (1080p). Recommandez d'abord un aperçu de 5 s, toujours.

Appel 2 (uniquement ce qui s'applique)

  1. Marque ? Aucune · Utiliser une marque existante (liste avec PY "$SKILL_DIR/shared/brand.py" list) · Créer une nouvelle marque. Créer nouvelle : demandez chaque champ UN à la fois, tous optionnels (nom, slogan, site web, fichier logo, téléphones, WhatsApp, emails, réseaux sociaux, couleurs, police OFL, CTA) et enregistrez chacun avec brand.py set (il valide les formats téléphone/email/URL/couleur) ; logo via brand.py logo, police via brand.py font. N'inventez jamais de coordonnées : uniquement ce que l'utilisateur donne (ou confirme depuis son propre site). Ensuite les options, avec les valeurs par défaut de docs/branding.md : filigrane (pub/promo ON ; Bible, tech et maths OFF), coin/taille/opacité/logo ou logo+nom · tiers inférieur (quand, combien de temps) · carte de fin avec CTA + contacts (pub/promo ON) et sa durée · recolorer le style aux couleurs de la marque (oui/non).
  2. Sujet/histoire et durée (30 s · 60 s · 90 s · 2–3 min ; autres durées via "Autre"). Les packs de contenu ajoutent leurs propres questions (Bible : public).
  3. Voix : Mon propre enregistrement (défaut) · Piper TTS (gratuit, hors ligne ; voix par défaut en_US-ljspeech-medium, données de domaine public). Piper nécessite une installation unique (setup_check.py --tts --install) et un téléchargement de voix (voice.py --download, ~60 Mo) : demandez d'abord.
  4. Sous-titres incrustés ? Suggérez Oui pour 9:16 et 1:1 (la plupart des gens regardent sans le son), Non pour 16:9. Un fichier .srt est toujours créé.
  5. Carte de fin "Créé avec animation-studio" ? Désactivée par défaut ; activation explicite uniquement. N'ajoutez jamais de filigrane.
  6. Résultat : MP4 final · Fichier projet pour un éditeur · Les deux.

Choix de l'éditeur (uniquement si le résultat inclut un fichier projet) : exécutez PY "$SKILL_DIR/shared/tools.py" status --kind editor et montrez la liste numérotée ENTIÈRE (✅ installé + version · ❌ non installé · ⚠️ non pris en charge ici, p. ex. éditeurs de bureau sur un serveur sans affichage). L'utilisateur choisit exactement un (AskUserQuestion : jusqu'à 4 options avec les éditeurs installés en premier ; le reste peut être tapé sous "Autre"). Si le choix est ❌, affichez PY "$SKILL_DIR/shared/tools.py" flow <editor> mot pour mot (ce que c'est, la commande d'installation pour CE système/distro/shell, le lien officiel) et demandez : Installer maintenant (je l'exécuterai) · Je l'installerai moi-même, puis dis "fait" · Choisir un autre éditeur · Passer, donne-moi MP4 + pack éditeur. "Installer maintenant" → tools.py install <editor> --yes (dites d'abord si Windows affichera une invite d'autorisation ou si une étape nécessite sudo ; les étapes sudo sont transmises à l'utilisateur sous la forme ! sudo ...). Après toute installation ou "fait" : exécutez status à nouveau, confirmez ✅, continuez là où vous vous êtes arrêté. CapCut et les éditeurs non pris en charge reçoivent le pack éditeur. Détails : docs/editors.md.

Enregistrez les réponses dans videos/<slug>/brief.md.

Étape 2 : Vérification matérielle (avant tout rendu ; ne jamais sauter)

Exécutez PY "$SKILL_DIR/shared/hwcheck.py" et affichez son tableau et son niveau en un court message. Il sauvegarde également le profil système (système d'exploitation + version, WSL, Apple Silicon, distribution Linux et famille, gestionnaires de paquets, shell, affichage) que chaque étape suivante lit. Chaque commande d'installation que vous montrez ou exécutez provient de PY "$SKILL_DIR/shared/tools.py" cmd <tool> (adapté à ce système d'exploitation, distro et shell) ; n'en tapez jamais une de mémoire. Pas d'affichage (sans tête) → rendu uniquement : pas d'applications éditeur.

NiveauRègleMoteursLimites
LITE< 12 Go de RAM ou < 4 threads CPUA, B720p uniquement ; 3D cartoon et Blender bloqués (proposer des images fixes)
STANDARDentre les deuxA, B complets ; C ≤ 5 s d'aperçu (plus long seulement avec confirmation + reprise) ; D Eevee ≤ 5 s en 720p, faibles échantillons1 job de rendu ; workers = threads − 2
POWER≥ 32 Go de RAM + GPU dédié ≥ 6 Go de VRAMtous, Cycles sur le GPUworkers = threads − 1

Si l'ordinateur portable est sur batterie, prévenez avant tout rendu de plus d'une minute. Si la RAM libre est inférieure à 25 %, demandez à l'utilisateur de fermer les grosses applications.

Étape 3 : Choisir le moteur (style → moteur), puis charger les fichiers

StyleMoteurCharger
Stickman, 2D plat, Livre d'images, Tableau blanc, Vecteur moderneA engines/py2dstyles/<style>.md, engines/py2d/README.md
Manim (maths, algorithmes, diagrammes) ; les couleurs Tableau blanc/Vecteur moderne fonctionnent aussi iciB engines/manimstyles/manim.md (ou le style choisi), engines/manim/README.md
3D cartoonC engines/toon3d (un dossier de projet avec story.js + world.js)styles/toon-3d.md, engines/toon3d/README.md
3D cinématiqueD engines/blender (scene.json, Z vers le haut)styles/cinematic-3d.md, engines/blender/README.md

Si le niveau bloque le moteur, expliquez pourquoi et proposez : la même histoire dans un style du moteur A, ou quelques images fixes seulement. L'utilisateur peut passer outre une limite seulement après un avertissement clair ("cela peut figer ou surchauffer votre ordinateur ; sauvegardez d'abord votre travail").

Ensuite, chargez content/<pack>.md et suivez ses étapes de recherche et d'écriture.

Étape 4 : Package de script (règles du pack de contenu), puis STOP

Chaque pack fournit : la narration dans un bloc copiable (≈ 3,7 mots/s sauf indication contraire du pack) avec le nombre de mots et la durée → script.txt ; une liste de plans → shotlist.md ; les suppléments du pack (Bible : tableau de fidélité, notes d'étude, description) ; et les sources à la fin. N'inventez jamais de versets, citations, API, drapeaux, versions ou faits : récupérez-les ou exécutez-les, sinon marquez NON VÉRIFIÉ.

Transmettez ensuite la voix off (enregistrement de l'utilisateur : mp3/wav, sans musique) et attendez l'audio. Si l'utilisateur ne voulait que le script, arrêtez-vous ici.

Étape 5 : Production

  1. Configuration : PY "$SKILL_DIR/shared/setup_check.py" --engine <engine> → tableau ✅/❌. Un outil manquant (Blender, Manim, Node, LaTeX, Inkscape…) utilise le même flux que les éditeurs : affichez tools.py flow <tool> --for engine, puis Installer maintenant · Je l'installerai moi-même, puis dis "fait" · Choisir un autre style · Passer (script, liste de plans et références uniquement) ; revérifiez après. Les paquets Python vont uniquement dans le .venv propre au skill (--install, après un oui).
  2. Voix + timing. Piper : PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85 (temps de phrase exacts, pas de devinettes). Enregistrement de l'utilisateur : PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work. Les deux écrivent work/words.json + work/phrases.json.
  3. Scène : moteur A : videos/<slug>/scene.json ; moteur B : une scène Manim .py qui commence par from studio import * ; moteur C : videos/<slug>/story.js + world.js ; moteur D : un scene.json Blender (formats dans les README des moteurs). Un plan par phrase ; gardez les visages, le texte et les éléments clés dans la zone de sécurité de chaque format choisi (shared/formats.md).
  4. Vérification visuelle : effectuez le rendu de 3 à 6 images par format (--frames 0,60,...), créez une planche contact (PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>), montrez-la, et vérifiez-la par rapport aux règles du pack de contenu (Bible : révérence + violence). Corrigez avant le rendu.
  5. Estimation : PY "$SKILL_DIR/shared/estimate.py" --engine <engine> scene.json --fmt <fmts> --quality <q> (Manim : --engine manim scene.py --name SceneName --timing work/phrases.json ; 3D cartoon : --engine toon3d <dossier projet> ; Blender : --engine blender scene.json) → DECISION: OK rendu · ASK dites à l'utilisateur "~X min, Y Go" et demandez (proposez l'aperçu de 5 s) · REFUSE pas assez d'espace disque (besoin de 2× l'estimation) : demandez à l'utilisateur de libérer de l'espace.
  6. Rendu un format à la fois (jamais deux jobs en même temps). Les longs rendus s'exécutent en arrière-plan ; le moteur s'exécute en basse priorité, reprend à partir de la dernière image sauvegardée s'il est relancé, et se met en pause (code de sortie 4) si la RAM libre tombe en dessous de 15 %. Dites à l'utilisateur qu'il peut continuer à travailler.
  7. Audio : musique PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <durée vidéo> --mood warm|calm|tense|tech|playful, bruitages ... sfx sfx.wav --seconds <len> --cues cues.json (pop, whoosh, tape, chime, success, swell, rain, soft thunder), puis PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len> (la musique ne dépasse jamais -6 dB sous la voix ; -9 à -12 pour les vidéos à prédominance de parole ou solennelles). Un fichier musical fourni par l'utilisateur remplace music.wav : rappelez-lui une fois qu'il doit en posséder les droits. 7b. Marque (si choisie) : recolorer avant le rendu (brand.py recolor <brand> --style <style> --out style_<brand>.md, utilisez-le comme style de la scène) ; après le rendu, brand.py apply <brand> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] et utilisez branded_<fmt> à partir de maintenant. Avec une carte de fin, mixez l'audio avec --seconds <nouvelle durée>.
  8. Sous-titres + finition + AQ : PY "$SKILL_DIR/shared/captions.py" work out/<Title> --style <style> --fmt <fmt> --quality <q> (→ .srt + _<fmt>.ass), puis PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Title>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Title>_<fmt>.ass] --srt out/<Title>.srt [--end-card seulement si activé]. Vérifiez les lignes d'AQ (plans noirs/figés, environ -14 LUFS) et regardez la planche _qa.jpg.
  9. Projet éditeur (si choisi) : PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<name>,..." --final out/<Title>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Title>.srt --out videos/<slug>/editor puis ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>. Montrez son tableau de vérification (le timing doit correspondre au MP4 ; Kdenlive/Shotcut obtiennent également un rendu melt de 2 s). Dites à l'utilisateur comment l'ouvrir (docs/tools/.md).
  10. Livrez le(s) MP4, le .srt, le projet éditeur le cas échéant, et une ligne par plan décrivant ce qu'il montre. Carte de fin optionnelle uniquement si l'utilisateur l'a activée.

Règles de sécurité (toujours)

  • Ne lancez jamais un rendu sans l'étape 2 et l'étape 5 (estimation). Proposez toujours "Aperçu de 5 s d'abord".
  • Respectez les limites de niveau ; les dérogations seulement après un avertissement clair et un oui.
  • Un seul travail lourd à la fois. Ne supprimez ou n'écrasez jamais les fichiers de l'utilisateur sans demander (le rendu dans un dossier d'images existant reprend ; --force écrase, donc demandez).
  • Si un outil est manquant ou que l'utilisateur refuse les installations, fournissez quand même le script, la liste de plans et les références.

Crédits et licences

Code : MIT (voir LICENSE). Le code tiers inclus est listé dans THIRD_PARTY_NOTICES.md. Le skill ne contient aucune police, musique ou image : il utilise les polices système et le son synthétisé. Les vidéos de l'utilisateur lui appartiennent : pas de filigrane forcé ; la carte de fin est activée explicitement.

Skills associés