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.# @continueerweitert 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@atinnerhalb 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(Alternativenam_puck,bm_george --lang en-gb); Spanisch--voice em_alex --lang es(weiblich:ef_dora). --only 03,07baut ausgewählte Lektionen neu (Notizen werden immer für alle neu generiert).--notes-onlygeneriert 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
--tagsmit 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
@continueweg und fasse frühere Schritte in einermuted-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).