Communitygithub.com

Masterclass-Rendering

Rendert Master-Class-Lektionsskripte in erklärende, handgezeichnete Diagrammvideos (MP4, 1080p, eingebrannte Untertitel, lokale Kokoro-Stimme) sowie Obsidian-Lektionsnotizen und eine Kurs-MOC. Begleiter des master-class-Skills; verwenden, nachdem Skripte in <source>/scripts/ existieren oder um einen bestehenden Kurs neu zu rendern/zu korrigieren.

Was ist Masterclass-Rendering?

Dieser Skill ist Teil des Master-Class-Workflows. Er nimmt Lektionsskripte, die vom Schwester-Skill master-class erstellt wurden, und wandelt sie in professionelle, handgezeichnete Diagrammvideos um – komplett lokal, ohne Cloud-Abhängigkeit. Du schreibst eine Szenenbeschreibung im D2-Format (Text-Diagramme), und ein einziger Befehl generiert daraus ein MP4-Video, eine Obsidian-Lektionsnotiz und eine Course-MOC-Datei. Der Skill läuft vollständig auf deinem Rechner: D2 erstellt die Diagramme im Sketch-Stil, Kokoro-82M spricht den Text, das Timing wird aus der echten Audiodauer berechnet, Chromium nimmt jede visuelle Änderung als Frame auf und ffmpeg kodiert alles zu einem fertigen Video. Es werden keine Daten an Dritte gesendet – die einzigen verbrauchten Tokens sind die Szenendateien. Der Skill ist ideal für Entwickler, Lehrer und Content-Ersteller, die qualitativ hochwertige Erklärvideos ohne teure Tools oder Online-Dienste produzieren möchten.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Masterclass-Rendering?

Eingabe: <source>/scripts/NN - Titel.script.md (geschrieben von master-class). Du schreibst: <source>/scenes/NN.scenes.md (D2-Text, keine Koordinaten, keine Zeitangaben). Ein Befehl erzeugt: <videos>/NN - Titel.mp4 + <notizen>/NN - Titel.md + <notizen>/<MOC>.md.

Alles läuft lokal: D2 layoutet Diagramme (Sketch-Stil), Kokoro-82M spricht, das Timing kommt von der echten Audio, Chromium nimmt einen Frame pro visueller Änderung auf, ffmpeg kodiert. Nichts wird an Dritte gesendet. Die einzigen verbrauchten Tokens sind die Szenendateien (~1× die Skriptgröße).

0 · Einrichtung (einmal pro Rechner; erneutes Ausführen ist sicher)

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

Installiert d2, ffmpeg, uv (Homebrew), ein venv in scripts/.venv mit kokoro-onnx, soundfile und playwright (Chromium) sowie das Kokoro-Modell in ~/.cache/kokoro (~350 MB). Wenn scripts/.venv/bin/python existiert, ist die Einrichtung abgeschlossen.

1 · Szenen schreiben

Lies zuerst references/scenes-guide.md und die genehmigten Beispiele: 01, 05, 08. Jedes ist mit seinem Skript in ~/.copilot/skills/master-class/examples/ gepaart, sodass du genau sehen kannst, wie jeder Bildschirm zu einem Diagramm wurde. Dieser Schritt funktioniert gut mit einem kleinen/schnellen Modell: Bearbeite eine Lektion nach der anderen und lass den Validator dir sagen, wann es richtig ist. Für jedes Skript dann ein ## Beat N + ein ```d2-Block pro Beat, der die Bildschirm-Beschreibung des Beats übersetzt:

  • # @at "Phrase" (3–7 Wörter wörtlich aus der Erzählung dieses Beats übernommen) zeigt das Folgende an, wenn der Erzähler es sagt. Das endgültige Layout wird einmal berechnet, sodass nichts springt; neue Teile leuchten kurz auf.
  • # @continue erweitert das Diagramm des vorherigen Beats.
  • Klassen: model, code, tool, data, person, bad, good, note (Haftnotiz mit der Schlussfolgerung; diese werden zu den Schlüsselideen der Lektionsnotiz), muted, wrong.
  • Der Leitfaden listet die D2-Fallen auf (\$, kein @at innerhalb von {}-Blöcken, |||md-Tabellen, Stiländerungen animieren nicht).

Validiere jede Lektion während der Arbeit (muss ok: ausgeben und kein warning:):

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

Viele Lektionen → auf parallele Sub-Agenten aufteilen (≈4 Lektionen pro Agent) mit dem Leitfaden und den Beispielen.

2 · Kurs erstellen

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" \
  --notizen  "<lab>/Master class" \
  --moc    "<Lab-Name> · Master class" \
  --kurs "<Label, das oben links im Video angezeigt wird>" \
  --tags   "kurs/<kurs-tag>,abschnitt/labs,thema/<x>,typ/lektion" \
  --intro  "Ein Absatz für die MOC: woraus der Kurs besteht ([[Quellnotiz-Links]]) und seine Absicht." \
  --voice am_michael --lang en-us
  • Sprache/Stimme: Englisch --voice am_michael --lang en-us (Alternativen am_puck, bm_george --lang en-gb); Spanisch --voice em_alex --lang es (weiblich: ef_dora).
  • --only 03,07 baut ausgewählte Lektionen neu (Notizen werden immer für alle neu generiert). --notes-only generiert Notizen ohne Video.
  • ~15 s pro Lektion nachdem die Stimme gecached ist (erste Synthese ≈ 1 min pro Lektion). Ausgaben werden in einem temporären Ordner kodiert und kopiert, da das direkte Schreiben in OneDrive-synchronisierte Ordner zu Timeouts führt.
  • Stimme --tags mit den Tags ab, die von den Quellnotizen verwendet werden.

3 · Vor dem Bericht überprüfen

  • Der Bau hat für jede Lektion ok: ausgegeben und kein !! … @at-Phrase(n) nicht gefunden.
  • Extrahiere 2 Frames aus einem oder zwei MP4s und sieh sie dir an (verwende jedes Mal einen neuen Dateinamen; Bildbetrachter cachen): ffmpeg -v error -ss 120 -i "<mp4>" -frames:v 1 -vf scale=1280:-1 /tmp/mc_controlle_<n>.png Überprüfe: Das Diagramm ist lesbar (kein kleiner Streifen), die Untertitel stimmen, der richtige Beat wird angezeigt.
  • Diagramm zu klein? Der Renderer versucht bereits automatisch die andere Layout-Richtung; wenn immer noch klein, teile das Diagramm des Beats auf oder lasse @continue weg und fasse frühere Schritte in einer muted-Box zusammen.
  • Öffne die MOC-Notiz und eine Lektionsnotiz: Video-Einbettung ![[NN - Titel.mp4]], Ziel, Schlüsselideen, Selbsttest (Frage + eingeklappte Antwort), eingeklapptes Transkript, vorherige/nächste Links.

Was jede Lektionsnotiz enthält (generiert, null Tokens)

Frontmatter (Tags, Lektion, Dauer, Kurs-Link) · eingebettetes MP4 · Ziel · Missverständnis · Schlüsselideen (von note-Haftnotizen) · Selbsttest (vom Retrieval-Pause-Beat) · eingeklapptes Transkript · ← vorherige · Kursindex · nächste →.

Dateien

scripts/: build_course.py (Einstiegspunkt) · render.py (Skript + Szenen → intermediäres HTML mit Audio und Timeline) · export_mp4.py (HTML → MP4) · make_notes.py (Notizen + MOC) · player.html (intermediate Vorlage; auch ein brauchbarer Offline-Player) · prelude.d2 (Klassen, Schriftgrößen) · setup.sh. Caches: scripts/.cache/ (Sprachclips, Diagramme; sicher zu löschen).

Verwandte Skills