Communitygithub.com

Stickman Story Reels

Transformez un pitch en une courte vidéo verticale animée (1080×1920) prête pour Instagram Reels, TikTok et YouTube Shorts, avec voix off, sous-titres synchronisés, effets sonores et un vote interactif en fin de vidéo.

Qu'est-ce que Stickman Story Reels ?

Cette compétence permet de générer automatiquement des vidéos verticales animées de type stickman à partir d'un simple pitch narratif. Le pipeline est entièrement déterministe et ne nécessite aucun modèle d'image ni aucune image de stock — les dessins sont produits par du code SVG, la voix est assurée par l'API ElevenLabs (ou en mode brouillon sans voix), et les effets sonores sont synthétisés. La sortie est un fichier MP4 1080×1920, prêt pour les réseaux sociaux, accompagné d'une couverture, d'une légende et d'un commentaire épinglé. L'outil est conçu pour la viralité : scripts optimisés pour le temps de visionnage, accroche en 3 secondes, vote à deux options qui incite au commentaire et au retour pour la partie suivante. Il supporte les séries, les bibles narratives, et le suivi des votes pour créer un feuilleton interactif complet.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/QuantumCoderSys/stickman-story-reels/tree/main

Demander à votre IA préférée

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

Documentation

Que fait Stickman Story Reels ?

Transformez un pitch en une vidéo verticale finie de 60 à 90 secondes : un script conçu pour le temps de visionnage, des plans stickman dessinés en code, une voix off avec sous-titres synchronisés, des effets sonores, et un vote à deux options qui pousse les gens à commenter et à revenir pour la Partie 2. Construit à partir du workflow des histoires interactives PlotVote (@plotvote).

Le pipeline est déterministe : vous écrivez episode.json (script, timing, animations) et scenes.js (dessins), et scripts/reel.py fait le reste (voix → son → assemblage → vérification → rendu). Pas de modèles d'image, pas d'images de stock, pas d'outils payants à part la voix.

Configuration (une fois par machine)

Vérifiez python3 --version (3.9+), ffmpeg -version et node --version (18+). Le premier rendu télécharge HyperFrames et un Chrome headless via npx ; c'est normal et cela prend une minute. Pour la voix, l'utilisateur place ELEVENLABS_API_KEY=... dans un fichier .env dans son dossier de projet (ou l'exporte). Ne jamais afficher la clé. Sans clé, tout fonctionne quand même en mode --draft (silencieux, minuté en temps réel).

Définissez cette fonction shell une fois par session de terminal (une fonction, pas une variable chaîne, pour qu'elle fonctionne à la fois dans zsh et bash). Les commandes ci-dessous l'utilisent :

reel() { python3 "<dossier de cette compétence>/scripts/reel.py" "$@"; }

Workflow

1. Comprendre la demande

  • "Réalise cette histoire" avec un pitch clair → écrivez un seul script solide et construisez-le.
  • "Donne-moi des options" ou "des idées de script" → proposez 3 options complètes (voir le playbook §10), laissez choisir, puis construisez.
  • "Suite" ou "X a gagné le vote" → continuez la série : ouvrez sur la conséquence, révélez le dernier indice, donnez une vraie réponse, escaladez, nouveau vote (playbook §9). Lisez la bible de la série si elle existe.
  • Script seulement (ou pas de shell disponible) → fournissez le tableau du script, plus episode.json et scenes.js s'ils veulent le rendre eux-mêmes.

2. Écrire le script

Lisez references/viral-script-playbook.md en premier, à chaque fois. Il contient les règles qui déterminent si les gens restent après 3 secondes. Lorsque vous inventez un pitch, une série ou une saison, lisez aussi references/story-engines.md.

Écrivez le script sous forme de tableau (# · voix · parlé · à l'écran), en visant environ 210 à 230 mots (environ 85 secondes au rythme standard). Exécutez la checklist pré-voix du playbook. Les points que les gens oublient le plus : l'image 1 doit bouger ; où, quand et qui avant 5 secondes ; chaque décision passe le test du collégien ; les personnages disent leurs propres révélations à la première personne ; le vote est deux actions physiques d'un mot avec un coût des deux côtés ; un indice chuchoté après le vote pointe vers quelque chose planté plus tôt.

Si l'utilisateur a demandé des options, ou pourrait vouloir approuver avant que des crédits soient dépensés, montrez le tableau du script et attendez. Sinon, continuez.

3. Créer le dossier de la vidéo

reel new reels/<slug>-partie1 --title "<Titre> — Partie 1"

Ceci crée episode.json et scenes.js à partir d'un petit starter fonctionnel. Remplacez les deux par votre histoire.

4. Dessiner les plans (scenes.js)

Lisez references/drawing-kit.md et ouvrez examples/sundown-part1/scenes.js comme bibliothèque de motifs (une créature penchée, une carte qui s'éloigne, un mur de règles révélé ligne par ligne, des créatures en stop-motion, une fenêtre évitée de justesse, une radio qui parle, une lampe torche dans les arbres, le choix divisé, une couverture).

Une fonction par plan de votre tableau de script. Chacune renvoie un SVG 1080×1920 construit à partir des helpers du kit (defs(), sky(), forest(), cabin(), room(), water(), stick(), kid(), creature(), phone(), radio(), chip(), ring(), splitChoice()…). Un décor que le kit n'a pas (un parc aquatique, un train, un désert) est normal : dessinez-le à partir de rects, de paths et des helpers, en suivant la section "Construire un nouveau décor" du kit de dessin. Donnez un id à tout ce qui doit bouger ou apparaître sur un mot. Gardez les visages hors de la bande des sous-titres (y 1180–1380) et des 140 px à droite. Ajoutez un mode pour la couverture (sujet placé sous le titre) et pour les encarts de carte de vote.

5. Câbler l'épisode (episode.json)

Lisez references/episode-format.md. Pour chaque scène : draw, lignes say, kenburns, et entrées animate qui tombent sur des mots parlés ("at": "faster"). Ensuite : les voix (avec fx et tag de sous-titre pour les autres personnages), les pastilles HUD avec une horloge, les sfx placés manuellement sur des mots, les indices bed, la scène de vote (deux options, encarts, la ligne d'indice), cover, et post (légende avec {vote_line}, commentaire épinglé, posts_at). Pour les voix, les sons et les sous-titres, voir references/sound-voice-posting.md.

6. Passe en brouillon (gratuit)

reel voice reels/<slug> --draft     # silencieux, minuté en temps réel
reel sound reels/<slug>
reel build reels/<slug>
reel check reels/<slug>
reel snap  reels/<slug> --at scenes  # deux images par plan (ou --at 0.5,12,30.5 secondes)

Regardez chaque image dans reels/<slug>/snaps/. Corrigez ce que les règles de lisibilité du kit de dessin signalent : des choses trop sombres pour être lues, des visages sous les sous-titres, des sujets trop petits, une révélation mal chronométrée. check doit dire "Check passed" (all s'arrête avant le rendu si ce n'est pas le cas). Ces avertissements sont attendus et normaux : "nested structure", "track too dense", "composition file too large", et les encarts "overflowing" leur recadrage.

7. Voix et rendu

reel all reels/<slug>               # voix (ElevenLabs) → son → assemblage → vérification → rendu
reel frames reels/<slug> --every 2  # planche contact de toute la vidéo, pour révision

Vérifiez la durée imprimée (60 à 90 secondes ; coupez la mise en place si elle dépasse). Regardez renders/review.png : le sujet est lisible, les sous-titres sont clairs, la chose nommée bouge sur son mot, et la carte de vote et l'encart d'indice apparaissent. Écoutez la ligne 1 ; si un mot pourrait être mal compris, changez le mot et refaites la voix (seules les lignes modifiées coûtent des crédits).

8. Livrer

Donnez à l'utilisateur renders/<slug>.mp4, renders/cover.png et POST.md (légende, commentaire épinglé, texte alternatif, heure de fermeture du vote). Pour une série, écrivez ou mettez à jour bible.md à côté du dossier de la vidéo : distribution, règles, canon, l'indice, et une ligne par option de vote pour comment la partie suivante commence (story-engines §4).

Commandes

CommandeCe qu'elle fait
reel new <dossier> --title "…"Crée un dossier de vidéo prêt à l'emploi
reel voice <dossier> [--draft]Voix + timings des mots → timing.json, assets/audio/narration.wav
reel sound <dossier>Synthétise 19 effets sonores + l'ambiance de fond
reel build <dossier>Compile index.html, cover/, POST.md
reel check <dossier>Vérification HyperFrames (lint, layout et gate de contraste ; échoue avec un code non nul)
reel snap <dossier> --at scenesImages PNG de la composition, deux par plan (ou --at 1,5.5,9 secondes)
reel render <dossier> [--draft]MP4 à −14 LUFS + cover.png + planche contact
reel all <dossier> [--draft]voix → son → assemblage → vérification → rendu (s'arrête si la vérification échoue)
reel frames <dossier> --every 2Planche de révision de l'ensemble du MP4 rendu

Dépannage

  • "mot" n'est pas dit ici : la référence temporelle utilise l'orthographe du sous-titre et est recherchée uniquement dans cette scène ; l'erreur affiche ce que dit la scène. Utilisez mot#1 pour la deuxième occurrence, sN:mot pour une autre scène, start+0.2 pour un décalage, ou 12.5s pour un temps absolu.
  • Voix non trouvée : utilisez un nom prédéfini (Liam, Brian, George, Daniel, Callum, Bill, Roger, Chris, Eric, Will, Harry, Charlie, River, Adam, Sarah, Matilda, Jessica, Alice, Lily, Laura, Bella) ou l'ID de la voix.
  • Crédits épuisés : les lignes déjà mises en voix sont mises en cache ; rechargez et relancez voice.
  • Plan blanc ou noir : une erreur JavaScript dans ce plan. check l'affiche ; testez la fonction en rebuildant après la correction.
  • Plus de 90 secondes : supprimez les lignes de mise en place et les adjectifs ; gardez l'accroche, le twist, le vote et l'indice.
  • Erreurs npx ou node : installez Node 18+ ; au premier lancement, laissez npx télécharger HyperFrames et Chrome.

Contenu de cette compétence

  • scripts/reel.py : l'interface CLI. scripts/synth.py : 19 effets sonores et l'ambiance (drone, vent, pulsation, bourdonnement, eau), tous synthétisés.
  • assets/kit.js : le kit de dessin. assets/runtime.js, assets/base.css : sous-titres, HUD et carte de vote.
  • references/ : viral-script-playbook.md (toujours), story-engines.md (pitchs, séries, bible), episode-format.md (le cahier des charges), drawing-kit.md (dessin), sound-voice-posting.md (voix, son, sous-titres, publication, sécurité).
  • examples/sundown-part1/ : une Partie 1 complète de 89 secondes (episode.json + scenes.js). examples/starter/ : le starter de 4 plans utilisé par new. examples/script-pitches.md : cinq scripts complets supplémentaires de Partie 1 (THE WHEEL, LAST CAR, LOW TIDE, 3:33, ROW ONE).

Skills associés