Communitygithub.com

carlos-carvajal-slalom/master-class-render

Génère des vidéos de diagrammes dessinés à la main (MP4, 1080p, légendes incrustées, voix locale Kokoro) à partir de scripts de leçons master-class, ainsi que les notes Obsidian et un plan de cours.

Qu'est-ce que master-class-render ?

Ce skill transforme les scripts de la skill `master-class` en vidéos pédagogiques complètes, réalisées localement sans aucun service externe. Il prend en entrée un fichier `.script.md` et produit automatiquement un fichier de scènes (D2), une vidéo MP4 (1080p, voix synthétisée avec Kokoro-82M, légendes synchronisées), des notes de cours Obsidian (incluant objectif, idées clés, auto-évaluation, transcription) et un plan de cours (MOC). Tout est exécuté en local : D2 pour les diagrammes (style sketch), Kokoro-82M pour le narratif, Chromium pour le rendu des frames, et ffmpeg pour l'encodage final. Aucune donnée n'est envoyée à des tiers. Les seuls tokens consommés sont ceux des fichiers de scènes, qui font environ 1× la taille du script. Le skill est conçu pour Cursor, Claude Code et autres agents utilisant des skills Copilot ; il nécessite une configuration initiale unique (via un script shell) et valide chaque étape avant de produire le résultat final.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/carlos-carvajal-slalom/master-class-skills/tree/HEAD/master-class-render

Demander à votre IA préférée

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

Documentation

Master class render

Entrée : <source>/scripts/NN - Titre.script.md (écrit par master-class). Vous écrivez : <source>/scenes/NN.scenes.md (texte D2, sans coordonnées, sans minutage). Une seule commande produit : <videos>/NN - Titre.mp4 + <notes>/NN - Titre.md + <notes>/<MOC>.md.

Tout s'exécute en local : D2 met en page les diagrammes (style sketch), Kokoro-82M parle, le timing provient de l'audio réel, Chromium capture une image par changement visuel, ffmpeg encode. Rien n'est envoyé à des tiers. Les seuls tokens dépensés sont les fichiers de scènes (~1× la taille du script).

0 · Configuration (une fois par machine ; relancer est sûr)

bash ~/.copilot/skills/master-class-render/scripts/setup.sh

Installe d2, ffmpeg, uv (Homebrew), un venv dans scripts/.venv avec kokoro-onnx, soundfile et playwright (Chromium), et le modèle Kokoro dans ~/.cache/kokoro (~350 Mo). Si scripts/.venv/bin/python existe, la configuration est terminée.

1 · Écrire les scènes

Lisez d'abord references/scenes-guide.md et les exemples approuvés : 01, 05, 08. Chacun est associé à son script dans ~/.copilot/skills/master-class/examples/, pour que vous puissiez voir exactement comment chaque Écran est devenu un diagramme. Cette étape fonctionne bien avec un modèle petit/rapide : travaillez une leçon à la fois et laissez le validateur vous dire quand c'est correct. Ensuite, pour chaque script, un ## Beat N + un bloc ````d2` par beat, en traduisant la description de l'Écran du beat :

  • # @at "phrase" (3–7 mots copiés textuellement de la narration de ce beat) révèle ce qui suit lorsque le narrateur le dit. La disposition finale est calculée une fois, donc rien ne saute ; les nouvelles pièces brillent brièvement.
  • # @continue étend le diagramme du beat précédent.
  • Classes : model, code, tool, data, person, bad, good, note (post-it avec la conclusion ; deviennent les Idées clés de la note de leçon), muted, wrong.
  • Le guide répertorie les pièges D2 (\$, pas de @at dans les blocs {}, tables |||md, les changements de style ne s'animent pas).

Validez chaque leçon au fur et à mesure (doit afficher ok: et aucun warning:) :

cd ~/.copilot/skills/master-class-render/scripts && export PATH=/opt/homebrew/bin:$PATH
.venv/bin/python render.py "<source>/scripts/NN - Titre.script.md" "<source>/scenes/NN.scenes.md" /tmp/check.html

Plusieurs leçons → répartissez entre sous-agents parallèles (≈4 leçons chacun) avec le guide et l'exemple.

2 · Construire le cours

cd ~/.copilot/skills/master-class-render/scripts && export PATH=/opt/homebrew/bin:$PATH
.venv/bin/python build_course.py \
  --source "<lab>/_attachments/master-class/source" \
  --videos "<lab>/_attachments/master-class" \
  --notes  "<lab>/Master class" \
  --moc    "<Nom du Lab> · Master class" \
  --course "<label affiché en haut à gauche dans la vidéo>" \
  --tags   "course/<tag-cours>,section/labs,topic/<x>,type/lesson" \
  --intro  "Un paragraphe pour le MOC : de quoi est constitué le cours ([[liens vers les notes source]]) et son intention." \
  --voice am_michael --lang en-us
  • Langue/voix : Anglais --voice am_michael --lang en-us (alternatives am_puck, bm_george --lang en-gb) ; Espagnol --voice em_alex --lang es (féminin : ef_dora).
  • --only 03,07 reconstruit les leçons sélectionnées (les notes sont toujours regénérées pour toutes). --notes-only regénère les notes sans vidéo.
  • ~15 s par leçon après la mise en cache de la voix (première synthèse ≈ 1 min par leçon). Les sorties sont encodées dans un dossier temporaire puis copiées, car écrire directement dans des dossiers synchronisés OneDrive provoque des timeouts.
  • Adaptez --tags aux tags utilisés par les notes source.

3 · Vérifier avant de rapporter

  • La construction a affiché ok: pour chaque leçon et aucun !! … @at phrase(s) not found.
  • Extrayez 2 images d'une ou deux MP4 et examinez-les (utilisez un nouveau nom de fichier à chaque fois ; les visionneuses d'images mettent en cache) : ffmpeg -v error -ss 120 -i "<mp4>" -frames:v 1 -vf scale=1280:-1 /tmp/mc_check_<n>.png Vérifiez : le diagramme est lisible (pas une fine bande), la légende correspond, le bon beat est affiché.
  • Diagramme trop petit ? Le moteur de rendu essaie déjà automatiquement l'autre direction de mise en page ; si toujours trop petit, divisez le diagramme du beat ou abandonnez @continue et résumez les étapes précédentes dans une boîte muted.
  • Ouvrez la note MOC et une note de leçon : embed vidéo ![[NN - Titre.mp4]], Objectif, Idées clés, Vérifiez-vous (question + réponse pliée), Transcription pliée, liens précédent/suivant.

Ce que contient chaque note de leçon (généré, zéro token)

Frontmatter (tags, leçon, durée, lien cours) · MP4 embarquée · Objectif · idée reçue · Idées clés (des post-it note) · Vérifiez-vous (du beat Retrieval pause) · transcription pliée · ← précédent · Index du cours · suivant →.

Fichiers

scripts/ : build_course.py (point d'entrée) · render.py (script + scènes → HTML intermédiaire avec audio et timeline) · export_mp4.py (HTML → MP4) · make_notes.py (notes + MOC) · player.html (modèle intermédiaire ; aussi un lecteur hors ligne utilisable) · prelude.d2 (classes, tailles de police) · setup.sh. Caches : scripts/.cache/ (clips vocaux, diagrammes ; peut être supprimé).

Skills associés