Communitygithub.com

talking-explainer

Explorateur Parlant - Transformez un sujet en vidéo explicative animée (16:9, 1920×1080, 60 ips) avec un présentateur cartoon PARLANT (synchro labiale réelle - six formes de bouche entraînées par la voix, poses sur mots-clés, clignements d’yeux) qui explique dans la voix de l’utilisateur, avec du texte cinétique court en anglais simple, dans un style épuré APPLE (lumière blanche, police Geist, cartes vitre, ressorts à amortissement critique, icônes Solar, spine de lentille), un zoom avant et un accent d’emphase par scène, et la marque de l’utilisateur (logo d’ouverture, logo en coin, carte de fin avec son appel à l’action). Script accroche d’abord, dans le style de l’utilisateur → il enregistre la prise → storyboard → workers de scène en parallèle → rendu avec synchronisation des mots et vérification des zones. À UTILISER ABSOLUMENT quand l’utilisateur dit « explicateur parlant », « mascotte parlante », « fais parler la mascotte », « explicateur avec synchro labiale », « vidéo explicative avec un personnage qui parle », ou demande une vidéo explicative où le présentateur s’exprime. Couvre aussi : la création de son PROPRE personnage parlant à partir de 3 prompts d’image, l’échange de la prise vocale ou de la langue d’un film terminé (retime, pas de reconstruction), un format PORTRAIT 9:16 pour TikTok/Reels/Shorts d’un film fini (portage, pas de reconstruction), et des démonstrations « comment ça marche » avec de vraies applications et de vrais logos. Fonctionne avec les compétences explainer-kit + spatial-film installées à côté.

Qu'est-ce que talking-explainer ?

**Talking Explainer** est une compétence d'agent IA spécialisée dans la création de vidéos explicatives animées de haute qualité, où un présentateur cartoon réaliste (avec une véritable synchronisation labiale) s'exprime dans la voix clonée ou enregistrée de l'utilisateur. La compétence transforme un sujet quelconque en un film au format 16:9 (1920×1080, 60 ips) avec un look Apple épuré : texture blanche, police Geist, icônes Solar, et ressorts à amortissement critique. Elle est conçue pour des utilisateurs de plateformes comme Claude Code, Cursor ou Codex, qui souhaitent produire rapidement des vidéos explicatives professionnelles sans compétences en animation. Elle fonctionne en collaboration avec les compétences associées `explainer-kit` et `spatial-film`. **Ce qu'elle fait concrètement :** - **Génération de script et enregistrement vocal :** La compétence rédige un script accrocheur (hook+corps+closing) basé sur le style de l'utilisateur (fichier `voice.md`), attend que l'utilisateur enregistre sa prise audio (MP3), puis la traite. - **Storyboard et animation :** Elle crée un storyboard avec des temps globaux, des plans de zoom et des beats d'emphase par scène. Les scènes sont générées en parallèle par 6 workers Sonnet (max 4 simultanément) selon des spécifications strictes (loi de zone, icônes Solar, pas de nombres inventés). - **Personnalisation de la marque :** La vidéo intègre le logo de l'utilisateur, une carte de fin avec son appel à l'action, et son personnage cartoon (par défaut ou personnalisé). - **Post-production :** Vérification de la synchronisation labiale, des coutures entre scènes, du rendu final (flash scan), et transcription pour validation. - **Portrait et retime :** Possibilité de générer un format portrait 9:16 (TikTok/Reels/Shorts) à partir d'un film 16:9 existant (portage, pas de reconstruction), ou d'échanger la prise vocale ou la langue (retime, pas de reconstruction). Elle est déclenchée par des phrases clés comme « talking explainer », « make the mascot talk », ou toute demande de vidéo explicative avec un personnage parlant. Elle couvre aussi les sujets d'actualité (recherche en sources, équilibre des points de vue) et les démonstrations techniques (vraies applications, vrais logos).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/brewed-ops/talking-explainer/tree/main/skills/talking-explainer

Demander à votre IA préférée

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

Documentation

Explainer Parlant

La voix est l’horloge, le présentateur PARLE (synchro labiale), chaque idée est d’abord une image quotidienne, chaque scène a un zoom et un moment d’emphase, le look est Apple, et le film porte la marque de l’utilisateur. Exemple travaillé : « REA - Reverse Engineer Anything » (129,0 s, 12 scènes) - references/example/ (SCRIPT, STORYBOARD, RETIME).

Chemins utilisés ci-dessous :

  • <skill> = dossier de cette compétence. <kit> = <skill>/../explainer-kit. <engine> = <skill>/../spatial-film.
  • <home> = TALKING_EXPLAINER_HOME ou ~/.talking-explainer ; profil = <home>/profile/ (partagé avec explainer-kit).
  • <py> = la commande python enregistrée dans <home>/config.json par setup-check (py -3.12 sur Windows, python3 sur macOS).

Exécutez chaque script de film depuis la racine du projet de film. Les scripts sont éprouvés - exécutez-les, ne les régénérez jamais. Jugez les scènes par les planches contacts, jamais en lisant le HTML des scènes dans la session principale. Les workers reçoivent des CHEMINS de fichiers.

Configuration (première exécution uniquement)

Pas encore de <home>/profile/brand.json → exécutez la Phase S d’explainer-kit (setup-check, entretien de marque + profile.mjs init, voice.md, musique). Son entretien de marque définit le nom du présentateur (--presenter). Deux choses supplémentaires pour cette compétence, demandées dans le même entretien :

  • Les lignes d’ouverture et de fermeture dans voice.md, mot pour mot, avec le prénom de l’utilisateur (l’accroche d’ouverture est « ? Est-ce vrai ? ici, de ... décomposons cela. »).
  • Le présentateur : la démo parlante fournie (un personnage cartoon impassible avec lunettes), ou leur propre personnage - voir « Votre propre personnage parlant » ci-dessous.

Valeurs par défaut (ne pas redemander)

  • Narration dans la langue du profil, dans le style de l’utilisateur depuis voice.md. À l’écran = anglais simple court (~6 mots par ligne de titre). La longueur est libre si le message passe (~150-160 mots par minute sur une prise naturelle).
  • L’utilisateur enregistre la prise à partir du script (son clone vocal ElevenLabs ou son propre micro). La phase 1 remet le script sous forme de paragraphes prêts à coller et ATTEND un MP3. Générer via l’API (<engine>/scripts/el-tts.py, clé dans env EL, jamais sur disque) uniquement sur demande.
  • Ouverture = accroche d’abord : commencez par la revendication la plus surprenante du sujet sous forme de question, puis la ligne d’ouverture de voice.md. Le NOM du sujet vient au paragraphe 2. Fermeture = ligne de fermeture de voice.md + le cta du profil.
  • Sujets conceptuels obtiennent UNE analogie quotidienne racontée littéralement (REA : la recette secrète d’un café). Les sujets « Comment ça marche » concernant l’outil ou le système de l’utilisateur obtiennent une démonstration de la chose réelle à la place - references/real-apps.md. De même pour les outils et plateformes tiers : nommez les produits réels, parcourez le flux de requête réel, et utilisez les propres textes, paramètres et nombres des plateformes lus sur leurs pages en ligne. Par défaut, utilisez la démonstration pour tout sujet technique.
  • Version courte (<= 30 s) : ~2,6 mots/s, 4 paragraphes = 4 images (accroche + identité / nom / l’image unique / fermeture), une phrase de fermeture, 2 workers x 2 scènes.
  • Sujets d’actualité / news : recherchez d’abord les reportages en direct (médias locaux + un article approfondi), puis rédigez de manière équilibrée : chaque affirmation obtient son propriétaire dans la voix (« selon l’agence... », « les critiques disent... »), la peur obtient son échelle réelle, puis une section numérotée des zones grises où les déclarations officielles se contredisent ou où un détail clé n’est pas public, un paragraphe honnête sur les aspects positifs, et une conclusion avec des questions à poser - jamais un verdict. Tout ce qui n’est dit que dans un résumé de recherche (la page elle-même n’a pas pu être chargée) reste dans le bloc de faits du SCRIPT.md marqué « Non vérifié, PAS exprimé ». 16 images / ~700 mots conviennent pour cela.
  • Script à partir d’une transcription collée : conservez les faits de la source et son ordre d’idées, réécrivez chaque ligne dans la voix du narrateur (ne traduisez jamais ligne par ligne), et supprimez les parties du présentateur source (« j’ai construit... », démos de code, son nom). Les longs collages sont tronqués autour de 50 000 caractères : indiquez où la coupure s’est produite dans SCRIPT.md, puis comblez la partie manquante avec le mécanisme standard, vérifié comme toute autre affirmation. Sauvegardez le collage dans references/source-transcript.txt dès le premier jour, et conservez les personnes nommées et les jalons de la source.
  • Personnes réelles = fiches personnelles, jamais d’étiquettes de nom : portrait (photo duotone ou ressemblance illustrée) + nom + rôle en une ligne + année. Listez chaque personne nommée avec sa scène dans SCRIPT.md sous « Personnes à l’écran ».
  • Look = Apple : fond blanc (#F5F5F7), Geist avec suivi de taille spécifique, verre factice (.ap-glass - jamais backdrop-filter dans le rig 3D), volets .ap-window / .ap-dark, ressorts sp() à amortissement critique (interdiction de back.*), retenue (une idée par image, pulsations <= 1,1), une spine LENS bleue. La couleur = signification, réécrite par film. L’échafaudage définit tout cela.
  • Icônes = Solar (480 Design, https://solar-icons.vercel.app) - bold-duotone pour les icônes héros, linear pour l’interface utilisateur, depuis references/icons-solar.html. Jamais Lucide ou Phosphor. L’illustration est sous licence CC BY 4.0 : chaque livraison donne à l’utilisateur la ligne « Icônes : Solar par 480 Design (CC BY 4.0) » dans la description de la vidéo.
  • Mouvement : titres qui se matérialisent sur leurs mots (montée + flou -> 0, ressort), animation de l’interface pour tout outil, diagrammes explicatifs, PLUS un zoom avant (ZOOM) et un accent d’emphase (EMPH : pulsation, balayage de marqueur, soulignement, tirage de mise au point, incrustation de nombre) sur chaque scène. Loi de fluidité à 60 ips.
  • 1920×1080, 60 ips. Logo de marque dans l’accroche, logo dans le coin au milieu, carte de fin = logo + cta.

Phases

#PhaseFairePorte
1Script + priseRechercher le sujet (faits réels, avec sources). Charger <kit>/references/voice-script.md + <home>/profile/voice.md. Accroche d’ouverture + fermeture ci-dessus, pas de « ! », UNE analogie (ou la démonstration), 12 paragraphes = 12 images (forme : references/example/SCRIPT.md). Épeler les noms dits comme des lettres (« R-E-A »). Les affirmations sur ce que l’IA « ne peut pas faire » doivent être vraies pour les modèles d’aujourd’hui. Pas de nombres jargon (pages, pas de tokens ; comptes arrondis). Écrire <film>/SCRIPT.md, remettre les paragraphes à l’utilisateur sous forme de TEXTE CLAIR (pas de bloc de code, rien après le dernier paragraphe - ils collent tout le message dans ElevenLabs ; les conseils d’enregistrement vont dans un message avant), ATTENDRE le MP3 ; ffprobe sa longueurla prise en main, longueur notée
2Échafaudage + timingsnode <skill>/scripts/new-talking-explainer.mjs <film> --name <slug> --mp3 <take.mp3> ; <py> <kit>/scripts/transcribe.py assets/audio/vo.mp3 src/timing --lang <code> --prompt "<noms, jargon>" ; <py> <kit>/scripts/words.py src/timing/vo-words.json (la feuille de signaux)la transcription correspond au script
3StoryboardÉcrire STORYBOARD.src.md en temps GLOBAUX (ci-dessous) dans la forme de references/example/STORYBOARD.md : une image par paragraphe, coupures dans les pauses de phrases (somme = fin de voix + 2,8 s), en-têtes un champ par ligne (- start: / - duration: / - src:), chaque bloc marque ses beats ZOOM et EMPH sur les mots-clés, couleur = signification, faits réels + extras fictionnels, une COUTURE DE POSE DE SCÈNE où deux scènes partagent un objet héros. <py> src/storyboard-local.py -> STORYBOARD.md. Montrer à l’utilisateur la liste des images (une ligne chacune)leur « go »
4Contrat + présentateur + audioÉditer + exécuter src/set-film.py (scènes + longueur de la voix). Éditer + exécuter src/set-presenter.py (poses ~0,1 s avant leurs mots-clés ; penser/marcher n’ont pas de bouche - jamais pendant que la voix parle). Lit : <py> <engine>/scripts/bgm-cut.py assets/audio/bed.mp3 assets/audio/bgm-edit.wav --len <total> --a 0 <total+3> --fade-out 2.6 (un film plus long que le lit répète le corps : --a 0 <len> --b <bar> <len> --b ... --xfade 0.3) -> <py> <kit>/scripts/master-audio.py --len <total> -> <py> <engine>/scripts/build-presenter.py (imprime « lip sync: N poses ») -> <py> <kit>/scripts/build-brand.py (imprime la fenêtre du logo dans le coin). Réécrire chaque partie [FILM] de frame.md avec un script <engine>/scripts/patch_exact.py. Éditer + exécuter src/set-cues.py. <py> <engine>/scripts/make-harness.py ; <py> <skill>/scripts/make-packets.py ; node <engine>/scripts/test-scene.mjs m-presenter "<5 fois>"feuille du présentateur : bouches ouvertes pendant les paroles, poses sur les signaux
5Scènesreferences/workers.md : 6 workers Sonnet x 2 scènes, max 4 à la fois (un tour de correction compte), son modèle de prompt (loi de zone incl. pics de poussée, la contrainte 0,12, Solar uniquement, la barre Apple, jamais inventer de nombres). Examiner les milieux vous-même ; corrections vers le MÊME workerchaque feuille correspond à son bloc, lisible à l’échelle de la feuille
6Livraison<py> <engine>/scripts/fromto-scan.py compositions/s*.html (0) -> <py> <engine>/scripts/assemble.py -> npx hyperframes@<film.json hyperframes> lint . + check . -> <py> <engine>/scripts/seam-check.py + node <kit>/scripts/seam-diff-all.mjs -> node <engine>/scripts/render-final.mjs <slug>-1080p60 (en arrière-plan ; se termine par un flash scan) -> transcrire le RENDU dans .hyperframes/work/sync + <py> <kit>/scripts/sync-check.py src/timing/vo-words.json .hyperframes/work/sync/vo-words.json -> <py> <skill>/scripts/frames.py renders/<slug>-1080p60.mp4 frames.jpg --at <un par scène> et --zone --at <chaque pic ZOOM> -> node <engine>/scripts/encode-web.mjs renders/<slug>-1080p60.mp4 renders/web --name <slug> --poster <t> -> remettre les chemins + la ligne de crédit Solarlint/check 0 erreurs, coutures 0,00 % en dehors de la boîte du présentateur, 0 flashs, synchro médiane ~0,000 s, rien à gauche de la ligne rouge à aucun pic

Écrire les temps UNE FOIS, en secondes globales

Convertir 20 scènes de temps de mots en temps local à la main est là où les erreurs s’infiltrent. Dans STORYBOARD.src.md, donnez à chaque image - start: <global> et marquez les mots-clés comme "mot"@g<global> ; les plages ZOOM et les temps de « sortie par » peuvent être des nombres globaux simples. <py> src/storyboard-local.py écrit STORYBOARD.md avec chaque temps local, vérifie que les débuts s’enchaînent et que chaque signal tient dans sa scène, et imprime la liste des scènes pour set-film.py. Les SFX (src/set-cues.py) et le présentateur (src/set-presenter.py) sont également écrits en secondes globales.

Échange de prise / langue / ouverture après la construction (retime, jamais reconstruire)

Une nouvelle prise -> sauvegardez compositions/, film.json, STORYBOARD.md, src/ dans .hyperframes/work/<old>/, déplacez l’ancien rendu dans renders/<old>/ -> copiez la prise dans assets/audio/vo.mp3 -> transcrivez -> nouvelles coupures dans set-film.py -> poses du présentateur, lit, master, build-presenter, build-brand, set-cues, make-harness -> écrivez RETIME.md (par scène : chaque beat -> son nouveau mot-clé @ temps local ; les scènes avec du NOUVEAU contenu obtiennent un bloc complet ; forme references/example/RETIME.md ; « ce fichier l’emporte sur les temps de STORYBOARD.md ») -> patchez la durée de frame.md / la fenêtre du logo / les coutures -> envoyez un SendMessage à CHAQUE worker sa section RETIME (4 à la fois). Les scènes DEVIENNENT PLUS COURTES sur une prise plus rapide : dites aux workers de raccourcir les ressorts avant de supprimer un beat.

Coupe portrait / TikTok / Reels / Shorts (portage, jamais reconstruire)

  1. <py> <skill>/scripts/port-portrait.py <film> <film>-9x16 - un NOUVEAU dossier (le film 16:9 reste intact) : copie la source + l’audio, déplace les scènes livrées dans references/src-16x9/ (le cahier des charges des workers), écrit le contrat portrait (zones de frame.md pour l’interface de TikTok, brief worker, starter 1080×1920, taille set-film), déplace le présentateur en bas à gauche (échelle x0,9, pieds y 1640).
  2. Depuis la nouvelle racine : <py> src/set-film.py -> build-presenter.py -> build-brand.py (logo vertical = centre haut à y 150, sous les onglets de la plateforme) -> make-harness.py -> test-scene.mjs m-presenter (présentateur x ~26-556, y ~1074-1640).
  3. Workers : mêmes paires, prompt = « PORT » (partez de la source 16:9, conservez copie/beats/couleurs/icônes/poses de couture, ré-autorisez seulement la disposition + la caméra) + la loi de zone portrait : titre y 260-500, scène x 60-1020 / y 520-1060 (texte x <= 920 sous y 680), bas droit x 580-920 / y 1080-1520, présentateur x 20-560 / y 1060-1660, rien au-dessus de y 250 ou en dessous de y 1540. Les paires qui copient l’objet d’une autre paire passent en dernier.
  4. Livraison comme phase 6 avec render-final.mjs <slug>-1080x1920p60 ; frames.py --zone détecte le portrait et dessine la boîte du présentateur + les lignes d’interface de la plateforme. Le master 1080p60 se téléverse sur TikTok tel quel. Défauts de premier passage : objets héros compressés dans le bas droit (faites du beat un héros dans la scène, réduisez la taille de l’affichage à la place) ; un titre sur 2 lignes entrant en collision avec une pile montant dans une poussée (>= 40 px d’écart au pic) ; une carte secondaire traînée au-delà de y 1540 par une poussée (reculez/atténuez-la pendant cette poussée).

Vraies applications + vrais logos

Un film sur la propre configuration de l’utilisateur montre les VRAIES applications : logos de la source, couleurs des applications depuis leur propre CSS (scripts/app-tokens.py), les vrais noms de dossiers et nombres de l’utilisateur, une liste de confidentialité avant que tout worker ne commence. Recette : references/real-apps.md. frame.md reprend la règle « pas de tiers... »

…

[Le contenu a été tronqué pour la traduction]

Individual skills in this repo

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

Skills associés