Communitygithub.com

Création de vidéos d'étude à partir de cours

Transforme les supports de cours d'un étudiant (transcriptions, diapositives, notes, exercices) en vidéos d'étude animées et narrées, avec graphiques, exemples, quiz, sous-titres et effets sonores, intégrant optionnellement des scènes 3D Blender. Chaque nombre dans la vidéo provient strictement des supports de cours, vérifié par un contrôle automatisé.

Qu'est-ce que Création de vidéos d'étude à partir de cours ?

Cette compétence permet de générer des vidéos d'étude à partir des supports de cours d'un étudiant (transcriptions de cours magistraux, diapositives, notes, séries de problèmes). L'exigence fondamentale est que chaque nombre, exemple ou affirmation soit tiré directement des supports fournis, sans invention. La vidéo intègre narration, animation, quizz, sous-titres, et peut inclure des scènes 3D Blender et un mascotte. Un outil de vérification automatique (`check_sources.py`) s'assure que tous les nombres utilisés dans la vidéo (narration, texte à l'écran, options de quiz, étiquettes 3D) existent dans les sources originales, détectant les erreurs ou inventions. Les dérivations numériques doivent être explicitement déclarées. Cette compétence est conçue pour des agents IA comme Claude Code ou Cursor, en environnement Python, avec des dépendances comme ffmpeg, Playwright, et en option Blender 4.2+ ou OpenAI Whisper. L'utilisateur fournit le dossier de cours, rédige un script JSON structuré, puis exécute les étapes de vérification, construction et rendu.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/aleksanderstevens191-sudo/course-video-skill/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

Vidéo de cours

Vous transformez les supports de cours de l'étudiant en vidéos d'étude. Une règle distingue cette compétence :

Chaque nombre, exemple et affirmation provient des supports de cours de l'étudiant. Rien n'est inventé. Les étudiants utilisent ces vidéos pour réviser des examens notés par leur professeur. Un exemple "plus joli" avec des nombres inventés, une formule avec une notation différente, ou un fait extérieur au cours est un bug, même s'il est correct en économie/physique, etc.

0. Prérequis (vérifier une fois)

python3 -m pip install -r requirements.txt && python3 -m playwright install chromium
ffmpeg -version | head -1          # brew install ffmpeg  /  apt install ffmpeg

Optionnel : Blender 4.2+ pour les scènes 3D et le présentateur mascotte (BLENDER=/chemin/vers/blender s'il n'est pas dans le PATH), pdftotext (poppler) ou pip install pypdf pour lire les diapositives PDF, openai-whisper pour transcrire les enregistrements, XAI_API_KEY pour la voix Grok (sinon, la voix neuronale gratuite Microsoft est utilisée).

1. Collecter les sources

Créez un dossier <cours>/sources/ et placez-y uniquement les supports de cours : transcriptions de cours (.txt/.srt/.vtt), diapositives (.pdf ou texte exporté), notes de l'étudiant, séries de problèmes, examens blancs.

  • Enregistrement sans transcription → whisper lecon.mp4 --model base --output_format txt --output_dir sources/
  • .docx → textutil -convert txt fichier.docx (macOS) ou pandoc fichier.docx -t plain -o fichier.txt
  • Demandez à l'étudiant quels cours/sujets la vidéo doit couvrir. N'ajoutez pas de matière d'autres semaines sauf si demandé.

Lisez l'intégralité des sources avant d'écrire quoi que ce soit. Notez la notation exacte du professeur, les termes, les exemples travaillés et les nombres.

2. Écrire le script (JSON de contenu)

Écrivez <cours>/<nom>.json en suivant engine/SCHEMA.md (types visuels, mots-clés, format des quiz, limites de disposition). examples/lemonade/ est un petit exemple complet.

Règles :

  • Exemples : utilisez les exemples travaillés du cours avec les nombres du cours. Si le cours utilise "prix 4 €, 3 unités", la vidéo utilise "prix 4 €, 3 unités", pas "prix 10 €, 5 unités".
  • Quiz : tirez-les des problèmes pratiques du cours, des questions de vote ou des exemples travaillés. Si vous écrivez une nouvelle question, construisez-la uniquement à partir des nombres des sources, et indiquez-le dans l'étiquette du quiz ("Pratique", pas "Question d'examen").
  • Nombres dérivés (un total que vous avez calculé, une différence) sont acceptables, mais déclarez chacun dans le tableau "derived" de niveau supérieur avec le calcul, en utilisant uniquement les nombres sources : "derived" : {"16" : "4 * 4", "-6" : "120 - 126"}.
  • Petits comptes qui ne sont pas des données ("Trois choses à retenir", "Étape 2") vont dans "allow" : ["3"]. 0 et 1 sont toujours autorisés.
  • Notation et termes : utilisez ceux du professeur (si le cours écrit "RM = CM", ne passez pas à "∂R/∂q").
  • Si un fait nécessaire à la vidéo n'est pas dans les sources, arrêtez-vous et demandez le support à l'étudiant, ou laissez-le de côté. Ne comblez jamais le vide à partir de connaissances générales.
  • La narration (say) est écrite pour l'oreille : des mots, pas des symboles ("4 fois 4 font 16 euros").

3. Vérifier chaque nombre par rapport aux sources (obligatoire, avant la construction)

python3 tools/check_sources.py <cours>/<nom>.json <cours>/sources --report <cours>/<nom>.sources.md

Il extrait chaque nombre de la narration, du texte à l'écran, des options de quiz et des étiquettes de scène 3D, et trouve chacun dans les sources (chiffres ou mots épelés, ex. "cent vingt"). Les nombres dérivés sont recalculés et leurs opérandes vérifiés. Il doit se terminer avec le code 0 avant de construire. Pour chaque problème, il signale :

  • le nombre est une faute de frappe ou une invention → corrigez le script pour utiliser le nombre de la source ;
  • c'est un vrai calcul → ajoutez-le à "derived" ;
  • il est dans les sources sous une forme que le vérificateur n'a pas trouvée (ex. dans une image) → demandez à l'étudiant de confirmer, puis ajoutez-le à "derived" ou "allow" avec une note dans votre réponse.

Lisez ensuite la section Preuves du rapport vous-même, en vérifiant ponctuellement que chaque nombre est utilisé dans le même sens que dans la source (le vérificateur fait correspondre les valeurs, pas le sens : "40 €" le prix vs. "40 unités" la quantité).

4. Construire et rendre

cd engine
python3 build.py ../<cours>/<nom>.json              # voix, timing, sous-titres, musique (TTS=xai XAI_API_KEY=... pour Grok)
python3 lint.py build/<video-id>/spec.json            # visuels qui arrivent en retard
python3 qa.py <video-id>                              # captures de chaque beat + feuilles de contact : REGARDEZ-les
OUT=../out python3 render.py <video-id> --workers 6   # rendu full 1080p -> ../out/<video-id>.mp4 + .srt

Regardez les feuilles de contact de QA avant de rendre : texte qui se chevauche, écrans vides, mauvais nombres à l'écran.

5. Optionnel : scènes 3D, mascotte, effets sonores

Un beat avec "v" : {"type" : "clip", "scene" : "<nom>"} joue une scène Blender à partir de engine/blender/scene_defs/<nom>.py (voir le docstring dans engine/blender/scenelib.py ; market.py et safe.py sont des exemples complets, écrits pour un cours d'économie, donc leurs étiquettes portent les nombres de ce cours. Modifiez les étiquettes pour correspondre à vos sources). Les étiquettes de scène sont également vérifiées par check_sources.py.

cd engine
python3 blend.py prep <video-id>                         # timeline mascotte + entrées par scène
python3 blender/stills.py <scene> --dry                  # détecter les erreurs rapidement, puis sans --dry pour les captures
python3 blend.py clips <video-id>                        # rendre les scènes 3D (lent : minutes par scène)
python3 blend.py mascot <video-id> && python3 blend.py pack <video-id>
python3 sfx.py mix <video-id>                            # effets sonores sous la narration
OUT=../out python3 blend.py comp <video-id>              # -> ../out/<video-id>-3d.mp4
OUT=../out python3 blend.py site <id1>,<id2> --title "Mon cours" --out ../out/site   # une page web avec chapitres

Le rendu est lent et gourmand en espace disque (plusieurs Go d'images par vidéo pendant son exécution). Vérifiez d'abord l'espace libre, rendez une scène à la fois sur les ordinateurs portables et gardez la machine éveillée.

6. Remise

Informez l'étudiant : où se trouve la vidéo, sa durée, quels cours elle couvre, et le résultat de la vérification des sources (nombres vérifiés, dérivés ou permis). Si quelque chose dans les sources était ambigu, dites ce que vous avez supposé. Rappelez-lui que la vidéo est une aide à l'étude construite à partir de ses supports, pas un remplacement du cours, et que les supports de cours peuvent ne pas être les siens à publier : vérifiez avant de poster une vidéo publiquement.

Skills associés