Communitygithub.com

GuilhermeGongora/VideoEditor

Crée une vidéo éducative verticale (Shorts/TikTok/Reels) dans le style 3D épuré de la chaîne Scientia, complète et prête à publier — recherche le sujet, écrit le script, génère la narration, monte les scènes 3D avec Remotion + Three.js, génère 2 miniatures, rend et révise.

Qu'est-ce que VideoEditor ?

Cette compétence permet à un agent d'IA (comme Claude ou Codex) de produire automatiquement une vidéo explicative verticale complète, dans le style distinctif de la chaîne YouTube Scientia. Elle est conçue pour des sujets éducatifs ou d'actualité. L'agent commence par rechercher le sujet en ligne, puis rédige un script structuré (environ 7 scènes, 60 secondes, avec un crochet fort sous forme de question). Ensuite, il génère la narration vocale (via edge-tts ou Kokoro), crée les scènes 3D avec Remotion et Three.js (en s'inspirant d'une référence de qualité approuvée, la vidéo sur le paiement par approche), produit deux miniatures, rend la vidéo finale au format MP4, et génère la légende de publication avec les sources et hashtags. Le résultat est livré directement à l'utilisateur, avec la possibilité de copier le tout sur Google Drive. La compétence suit des règles strictes de style (pas de musique de fond, phrases courtes, pas d'appel à l'action, pas de personnages centraux) et s'appuie sur des fichiers de référence locaux (`references/`) pour les hooks, le style visuel et les métaphores de données. Elle fonctionne sur le poste de l'utilisateur, nécessitant Node.js, npm et un environnement de développement configuré pour Remotion.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GuilhermeGongora/VideoEditor/tree/HEAD/.claude/skills/novo-explicativo

Demander à votre IA préférée

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

Documentation

Vidéo explicative 3D

Livraison complète, sans que l'utilisateur ait à demander : out/<slug>.mp4 (se termine avec la fermeture de la marque) + thumbs/<slug>-1.png et -2.png + out/<slug>-legende.txt (légende de la publication avec sources et hashtags). Sur le PC de l'utilisateur, la commande npm run expliquer copie aussi tout dans Google Drive (G:\Mon Drive\Scientia\Posts\<date> · <slug> · <titre>\ : video.mp4, thumb-1/2.png, legende.txt, sources.txt). Si "Je n'ai pas trouvé le Drive" apparaît, montrez à l'utilisateur les commandes de montage que le script imprime. L'utilisateur ne fait que taper le sujet ; ne vous arrêtez pas en cours de route pour demander ce que vous pouvez décider seul.

RÉFÉRENCE DE QUALITÉ (décision de l'utilisateur, 16/10/2026) : la vidéo sur le paiement par approche. videos/approche/script.json + src/explicatif/videos/Approche.tsx. Lisez les DEUX avant de commencer et copiez la recette de references/reference.md. Les vidéos faites dans le "standard Ludificando" (fond gris avec étagères, flou, nombreux personnages, 80–90 s) ont été REJETÉES — n'y revenez pas. Ensuite lisez references/crochets.md (avant le script) et references/style.md + references/bibliotheque.md (avant les scènes). references/ludificando.md est juste une source d'idées, pas une règle.

1. Rechercher (obligatoire)

  • Tout ce qui est actuel (loi, nombre, fonction, délai) provient d'une recherche web faite MAINTENANT, dans 2+ sources fiables (Agência Brasil, Sénat/Chambre des députés, IBGE, g1, Folha…). Rien de mémoire.
  • Notez les sources dans sources du script. Si les sources divergent, utilisez la plus officielle et mentionnez-le.
  • Séparez ce qui est un fait de ce qui est une projection/opinion ("le Dieese calcule…", "la CNI dit…").

2. Script → videos/<slug>/script.json

Recette de l'approche : ~60 s, 7 scènes, 18–30 mots par scène (~170–190 mots au total), UNE idée par scène, explication en séquence logique (chaque scène amène la suivante : "C'est pourquoi…", "Alors…", "Si quelqu'un…"). puce = nom court du chapitre en MAJUSCULES ("L'ÉNERGIE", "TOUT PROCHE", "ET SI ON COPIE?").

  • Crochet = nombre fort + question ("Trois achats sur quatre… Mais comment une carte sans batterie peut-elle payer quoi que ce soit ?"). Dernière scène = l'information pratique que la personne retient (ex. : le plafond sans code).
  • "Les deux côtés" et "attention/arnaque" n'entrent que si le sujet L'EXIGE (véritable polémique, véritable arnaque) — ils ne sont pas obligatoires.
  • 1ère phrase = le crochet, TOUJOURS une question (règle de l'utilisateur) à laquelle la personne veut voir répondre, avec le fait fort à l'intérieur ou juste après. Ex. : "Comment une carte sans batterie peut-elle payer ?". Pas de "bonjour".
  • Phrases courtes, comme si vous parliez à un ami. Écrivez les nombres en chiffres ("75 votes").
  • prononciation pour ce que la voix pourrait mal lire (sigles, "6x1", décimales "26,8").
  • Dernière scène : FERMETURE — l'information pratique finale / la réponse à la question du crochet. Interdit (règle de l'utilisateur) : demander un commentaire, un like, "sauvegarde", "suis", "commente X et je t'envoie…" — ni dans la parole ni à l'écran. Les sources ne figurent que dans la description de la publication. Après la dernière parole vient seulement la fermeture de la marque (automatique).
  • Phrases de 6–14 mots, dites calmement (la narration est phrase par phrase, avec une pause à chaque virgule et point).
  • appel n'existe PLUS dans le script : la fermeture ne montre que la marque.
  • sons : le défaut fait un impact sur la 1ère image, swoosh/whoosh aux changements de scène, "pop" sur la carte de nombre, "tick" sur les annotations/pilules et une montée entrant dans la fermeture. Pas de musique de fond (la référence n'en a pas ; n'activez "musique": "sfx/bed-scientia.mp3" que si l'utilisateur le demande). Écrivez 2–3 accents sur les mots-clés (avec modération) : "sons": {"accents": [{"mot": "75", "scene": "approuve", "son": "sfx/ding.wav", "volume": 0.5}, {"mot": "eteint", "scene": "allume", "son": "sfx/boom.wav", "volume": 0.5}, {"mot": "horloge", "scene": "maintenant", "son": "sfx/riser.wav", "pic": 1.49, "volume": 0.35}]}. Sons prêts dans public/sfx/ : boom (choc), ding (nombre/révélation), pop (claquement), riser (suspense, utilisez pic), whoosh/swoosh. Le mot est celui écrit dans parole (pas celui de prononciation). Vous pouvez remplacer n'importe quel son par celui de la bibliothèque de l'utilisateur (public/soundeffects/catalog.md) — musique, transition (liste alterne), apparaitre, donnee, ouverture, fin ; null désactive.
  • composition = nom du composant (ex. : Echelle6x1).
  • marque = "SCIENTIA · <sujet court>" (la chaîne s'appelle Scientia).
  • voix = { "principale": "masculine", "alterner": "non" } — N'insérez PAS de vitesse dans le script (elle vient du voix.json, aujourd'hui 1.08).
  • publication = légende Instagram/TikTok (devient out/<slug>-legende.txt) : { "crochet": "<fait fort + question> 📌", "points": [3 phrases courtes, sans point final, avec chiffres], "sources": ["Agência Senado", "IBGE", …seulement les noms], "hashtags": ["sujet", "theme", …jusqu'à 5, sans #] } (#scientia s'ajoute seule). Même ton que la vidéo : ce qui change pour la personne, sans opinion. Un emoji au maximum.
  • miniature = couverture de la vidéo (voir étape 6) : { "titres": [2 options], "scene": "<id de la scène de fond>", "image": <image de la scène>, "baisser": 330, "zoom": 1.45 }.

3. Narration

npm run narrer -- <slug> → public/explicatif/<slug>/narration.wav + temps.json (temps de chaque mot, venant de la voix elle-même). Voix neuronale edge-tts (internet) ; sans internet, repli sur la voix locale Kokoro. LA VOIX DE LA CHAÎNE se trouve dans voix.json (moteur, voix choisies par l'utilisateur, vitesse). Ne choisissez ou ne changez jamais les voix, le moteur ou les ID de votre propre chef — c'est une préférence de l'utilisateur. Dans le script, le champ voix ne définit que :

  • "principale": "masculine" — toujours. La voix approuvée de la chaîne est Antonio (Microsoft), celle des vidéos 6x1 et approche. La voix féminine Thalita Multilingual ressemblait à du portugais du Portugal (vidéo de l'urne) et a été retirée. N'utilisez jamais de voix "Multilingual". N'utilisez la féminine que si l'utilisateur le demande.
  • "alterner": "scenes" — les scènes alternent entre les deux voix (duo). Par défaut : "non".
  • Si l'utilisateur se plaint de la voix : montrez npm run voix (Microsoft) / npm run voix -- eleven et npm run voix -- utiliser <id> feminine|masculine.
  • Écrivez la parole pour l'OREILLE — c'est ce qui change le plus l'intonation de la voix synthétique :
    • phrases courtes (6–14 mots), virgules où l'on respire, pas de parenthèses ni de sigles sans prononciation ;
    • question rhétorique toutes les 2–3 scènes ("Et qui a déjà payé ?") — la voix monte sur "?" et gagne en vie ;
    • contraste et retournement : "Seulement…", "Mais attention :", "Et il y a plus :";
    • nombre important seul à la fin de la phrase ("Ce fut 75 votes contre 1.") ou répété ("Onze jours !") ;
    • évitez les longues phrases pleines de virgules et les listes de 4+ éléments (la voix devient monotone).
  • La narration par défaut est celle de la référence : phrase par phrase, pause de 0,12 s à la virgule et 0,32 s au point, 0,45 s entre les scènes, Antonio à 1.08. NE passez pas à "style": "continu" sans que l'utilisateur le demande.
  • Pour tester la voix locale plus expressive (Chatterbox sur le GPU de l'utilisateur) : npm run voix -- comparer <slug>.

4. Scènes → src/explicatif/videos/<Nom>.tsx

  • Copiez la structure de Echelle6x1.tsx : un composant par scène, SCENES_<NOM> et, à la fin du fichier, export const VIDEO = { id: "<Nom>", script: script as Script, scenes: SCENES_<NOM> }; (avec import script from "../../../videos/<slug>/script.json"). La vidéo s'enregistre toute seule : NE modifiez PAS Compositions.tsx (le modifier provoque un conflit lors du git pull).
  • Une fois la vidéo terminée, sauvegardez sur GitHub : git add videos/<slug> src/explicatif/videos/<Nom>.tsx + commit + push (ainsi le prochain git pull de l'utilisateur ne bloque pas).
  • Objet-héros (comme le terminal de paiement + carte) : UN ou deux objets du sujet, bien réalisés et GRANDS, qui apparaissent dans presque toutes les scènes ; chaque scène montre une partie/un état d'eux (champ qui s'allume, code à l'écran, clé qui sort). Personnage seulement comme second rôle (0–1 par scène, jamais au centre).
  • Le kit (three/Kit.tsx, ui/Kit.tsx) est optionnel : utilisez une pièce seulement quand la scène le demande (ex. : Hemicycle lors d'un vote). Ne remplissez pas la scène de pilules/règles.
  • Pour chaque scène, choisissez UNE métaphore visuelle de la donnée (voir references/style.md) : votes → chaises qui s'allument ; heures → cubes qui disparaissent ; personnes → personnages (1 personnage = X) ; argent → pièces/fiche de paie ; délai → plaques sur une ligne de temps ; règle/loi → papier + checklist.
  • Synchronisez avec la parole : w("mot") renvoie l'image à laquelle le mot est prononcé. Le visuel change SUR le mot (ex. : le numéro de la carte change quand la voix dit le numéro).
  • Caméra : cam(pos, look) interpolant la position initiale → finale pendant la scène (ease(f, 0, dur)).
  • Décor : le Stage vient déjà en mode sombre (fond noir, poussière) — identique à la référence. N'utilisez PAS decor="studio" ni finition (flou/bloom) sans que l'utilisateur le demande.
  • Caméra : distance 6–8 de l'objet, regardant vers y ≈ 1 ; rapprochement lent de 10–15 % dans la scène (comme dans Approche.tsx).
  • Cadrage : l'objet principal occupe 40–70% de la largeur. Jamais de cadre vide, d'objet minuscule (ligne fine) ou de bloc qui prend tout l'écran sans référence. Mettez toujours à l'échelle avec une référence humaine (personnage à côté) ou un objet connu.
  • Montez les objets du sujet avec des formes simples (livre = boîtes fines, coffre = boîte + cylindre, téléphone = boîte arrondie avec écran sombre, balance = cylindres) — le contexte concret accroche plus que des blocs abstraits.
  • Contenu dans la bande centrale de l'écran (y ≈ 450–1250 px). Haut = marque/puce/carte ; 1300+ = légende et boutons de TikTok. Rien d'important sur le bord droit (icônes de l'app).
  • Notez les sources des nombres dans Callout (sub="SOURCE : …").

5. Vérifier les images

npm run images -- <slug> → out/images/<slug>/grille.jpg (une image de la fin de chaque scène). REGARDEZ la grille. Vérifiez : rien coupé ou derrière la légende ; texte lisible ; objet principal assez grand ; rien superposé à la carte/puce ; le visuel correspond à la phrase. Ajustez la caméra/l'échelle et répétez.

6. Miniature (couverture)

Écrivez 2 titres dans miniature.titres (lignes avec \n, accent entre astérisques) :

  • 3 lignes, au maximum ~16 caractères par ligne ; la dernière ligne est la question/curiosité en évidence.
  • Un avec le fait/le nombre fort ("75 votes contre 1."), un autre avec la question que la personne se pose ("Quand ça change ?").
  • Véridique : rien de promettant ce que la vidéo ne montre pas.
  • Fond : la plus belle scène/lisible (scene + image sur laquelle elle est déjà montée). npm run miniature -- <slug> → thumbs/<slug>-1.png, -2.png. REGARDEZ les deux avant de livrer.

7. Rendre et livrer

npm run expliquer -- <slug> → out/<slug>.mp4 + miniatures (rendu 3D sans GPU : ~6–10 min par minute de vidéo dans Codespace). Regardez 3–4 images du mp4 final, vérifiez la fin de l'audio, et livrez avec les sources. Montrez à l'utilisateur : la vidéo, les 2 miniatures (dites laquelle vous posteriez et pourquoi) et collez la légende du out/<slug>-legende.txt prête à copier. Demandez son avis et notez ce qu'il en pense dans notes-du-editeur.md (section "Explicatifs").

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills associés