Communitygithub.com

jjietay/kaleidoscope

Erstelle ein erklärendes Lernvideo (MP4) zu einem Konzept im weichen 3D-Ton-Look mit einem stillen Maskottchen, dessen Skript vor der Sprachausgabe von einem Agenten geprüft wird.

Was ist kaleidoscope?

Diese Fähigkeit erstellt ein professionelles, erklärendes Lernvideo (MP4) zu einem vom Benutzer gewünschten Konzept, wie z.B. Eigenvektoren, I2C oder Aufmerksamkeitsmechanismen. Der Skill nutzt den Kontext des aktuellen Gesprächs und Projekts, um maßgeschneiderte Inhalte zu liefern. Der visuelle Stil ist ein einheitlicher, weicher 3D-Ton-Look (Clay-Stil) mit einem stillen Maskottchen, das die Handlungen ausführt, während ein Voice-Over die Erklärung liefert. Mathematische Diagramme werden mit Manim auf dunklem Hintergrund erstellt, um komplexe Konzepte besser darzustellen. Vor der Generierung der Sprachausgabe prüft ein separater Skript-Agent das erstellte Skript auf Richtigkeit und Pacing. Die Fähigkeit arbeitet mit dem lokalen Engine-Verzeichnis `~/.claude/skills/kaleidoscope/engine/` und verwendet das Kommandozeilentool `node make.mjs`. Sie unterstützt verschiedene Prüfpunkte, um dem Benutzer Kontrolle zu geben, und folgt strengen Regeln für Überlappungen, Untertitel, Soundeffekte und Musik. Die Fähigkeit ersetzt keine Kreativität, sondern automatisiert die technische und visuelle Umsetzung eines pädagogisch fundierten Erklärvideos.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jjietay/kaleidoscope/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Erklärvideo

Du erstellst ein Video, das dem Benutzer hilft, ein Konzept zu lernen. Du hast einen großen Vorteil gegenüber einem frischen Tool: Du kennst dieses Gespräch und dieses Projekt. Nutze dieses Wissen.

Die Engine befindet sich in ~/.claude/skills/kaleidoscope/engine/. In dieser Datei bedeutet make:

node ~/.claude/skills/kaleidoscope/engine/make.mjs <command> <project-dir>

Schritt 0: Zuerst fragen (jedes Mal, wenn der Skill startet)

Egal, ob der Benutzer /kaleidoscope eingegeben oder verbal um ein Video gebeten hat, fragst du zuerst die unten stehenden Fragen mit AskUserQuestion, mit anklickbaren Optionen. Lasse jede Frage weg, die die Nachricht des Benutzers oder dieses Gespräch bereits beantwortet (z.B. „als Wochenschau“ beantwortet den Look und „mit Lo-Fi-Musik“ beantwortet die Musik). Setze die empfohlene Option an die erste Stelle und markiere sie mit „(Empfohlen)". Stelle alle vier Fragen in einem Aufruf (das Tool akzeptiert maximal 4). Wenn das Thema selbst unklar ist und keine Frage übersprungen wird, frage zuerst nach dem Thema, in einem eigenen Aufruf.

FrageKopfzeileOptionen (erste = Standard)
Welchen Look soll das Video verwenden?LookClay 3D: ein weicher Ton-Look, mit dem stillen Maskottchen, das die Arbeit macht · Klassisch 2D, gemischt: ein anderer 2D-Stil für jeden Teil · Klassisch 2D, ein Stil: der Benutzer nennt ihn (Wochenschau, Whiteboard, ...)
Für wen ist das Video und wie lang?ZuschauerPrüfungsvorbereitung, Standard: die Notation der Vorlesung, durchgerechnete Zahlen, Prüfungsfallen, 5 bis 6 Min. · Prüfungsvorbereitung, tief: das Gleiche, 8 bis 9 Min., jeder Schritt der Ableitung · Erstlerner, kurz: Intuition zuerst, weniger Symbole, 2 bis 4 Min. · (Andere: der Benutzer nennt einen Zuschauer und eine Länge, z.B. „Expertenauffrischung, kurz")
Wann soll ich mit dir Rücksprache halten?PrüfpunktEin Schuss: mit dem fertigen Video zurückkommen · Nach dem Storyboard: den Plan zeigen und auf Genehmigung warten · Nach dem ersten Look: die ersten Bilder zeigen und warten
Welche Musik?MusikRuhig (current): weiches Pad, kein Beat · Lo-Fi (lofi): leichter Beat, mehr Energie · Keine

Setze eine empfohlene Option an die erste Stelle, wenn das Gespräch eine Nahelegt (eine Prüfung nächste Woche: Prüfungsvorbereitung, tief). Wenn die Nachricht nur eine Hälfte der Zuschauerfrage beantwortet (z.B. „für meine Prüfung"), behalte die Frage bei und biete nur die Optionen an, die mit dieser Hälfte übereinstimmen. Die Zuschauer sind Prüfungsvorbereitung, Erstlerner und Expertenauffrischung (schnell und dicht); die Längen sind kurz (2 bis 4 Min.), Standard (5 bis 6 Min.) und tief (8 bis 9 Min.). Schreibe die Antworten in Schritt 4 in video.json: "_look" (clay oder classic), "_brief": { "viewer": ..., "length": ..., "checkpoint": ..., "style": ... } und "_render": { "music": "current" | "lofi" | false }. Jeder spätere Schritt und ein Wiederaufbau lesen sie von dort und fragen nicht noch einmal. Wenn der Benutzer die Fragen abweist, verwende die erste Option jeder Frage.

Ein Schuss, es sei denn, der Benutzer hat einen Prüfpunkt gewählt

Nach Schritt 0 führe jeden Schritt unten ohne Unterbrechung aus und komme nur mit dem fertigen, geprüften Video zurück. Frage nicht „Soll ich fortfahren?", zeige keine Entwürfe, warte nicht zwischen den Schritten. Jede Überprüfung unten liegt bei dir, sie durchzuführen und darauf zu reagieren. Die einzigen Stopps sind die vom Benutzer gewählten Prüfpunkte: „Nach dem Storyboard" stoppt nach Schritt 7 (zeige das Storyboard und das Urteil des Skript-Agenten, dann warte), und „Nach dem ersten Look" stoppt beim ersten make look von Schritt 9 (zeige seine Bilder, dann warte).

Der vom Benutzer gewünschte Look (vor Schritt 6 lesen)

Ton für Dinge, die handeln, Manim für Plots, und das Maskottchen ist in jedem Video. Lies styles/clay.md. Der Benutzer hat den Ton-Look gegenüber der alten Stilmischung für Konsistenz in allen Videos gewählt. Die 2D-Stile sind ein Opt-in-Klassik-Look; siehe den Abschnitt unten.

  • Zwinge keinen Plot in Ton (der Benutzer hat darum gebeten). Wenn ein 2D-Manim-Bild dem Zuschauer mehr hilft zu verstehen als Ton (eine Kurve, eine Verteilung, eine Kontur, eine Projektion oder andere Geometrie in einer Ebene), mache diesen Teil zu einem Manim-Teil, auf Manims dunklem Hintergrund (styles/math-manim.md). Baue niemals ein Tonmodell, das eine mathematische Kurve kopiert: Der Benutzer hat diese entfernen lassen. Objekte, die handeln, und die physische Arbeit des Maskottchens bleiben in Ton. Ein Video kann von einem Tonteil zu einem Manim-Teil und zurück wechseln, mit derselben Farbe für dasselbe Ding.

  • Ein Look, viele Teile. Das Video ist in Teile von etwa 15 bis 40 s unterteilt (Aufhänger, jede Idee, dein Fall, Schluss). Jeder Teil hat seinen eigenen einfarbigen Hintergrund, seine eigene Kamera und Umgebung. Nebeneinander teilen sich zwei Teile nie einen Hintergrund.

  • Das Maskottchen macht die Arbeit. Es ist still, ohne Lippen-Sync, und der Erzähler ist ein Voice-Over. Es geht, zieht, schiebt, trägt und schaltet Dinge mit seinen eigenen Händen aus, sodass eine Kraft im Skript etwas ist, das der Zuschauer es tun sieht. Der Benutzer hat darum gebeten, nach einem Video, in dem es nur stand und zusah. Es bleibt standardmäßig ausdruckslos, und make check WARNT, wenn es an einer Stelle stehen bleibt.

  • Dinge müssen verbunden sein. Eine Feder erreicht ihre Wand, ein Stift berührt seine Karte, eine Hand berührt das, was sie hält. Der Benutzer fand eine Feder, die nach bestandenen Checks ihre Wand verfehlte. make bake misst jede Verbindung in models.js (JOINS), also füge dort neue Verbindungen hinzu und achte auf Kontakt in den Standbildern.

  • Nur unsere eigenen Modelle. Verwende das Kit in styles/library/clay. Lade niemals ein Modell herunter. Wenn ein Video ein neues Objekt benötigt, füge es dem Kit im selben Look hinzu.

  • Jeder Teil ist eine durchgehende Einstellung. Innerhalb eines Teils gibt es keine Schnitte und keine neuen Folien: Objekte treffen ein, bewegen sich und verbinden sich, während die Stimme spricht, und die Kamera bewegt sich langsam. Ein Teil endet in dem Zustand, von dem der nächste Teil ausgeht, oder mit einem Überblendung im Hintergrund des nächsten Teils.

  • Das Bild erklärt; Text benennt nur. Text bleibt flach und scharf, in HTML über dem 3D. Pro Bild: ein Kicker (kleine Großbuchstaben, der Teil und eine Quelle), ein Titel von höchstens 8 Wörtern, ein paar Etiketten von 1 bis 4 Wörtern mit dünnen Führungslinien und höchstens einer Bildunterschriftenzeile unten. Nie eine Spalte von Sätzen, nie eine Aufzählungsliste, nie eine Legende, was die Farben bedeuten. Höchstens etwa 15 Wörter auf dem Bildschirm.

  • Formeln spielen die Stimme nach (der Benutzer hat darum gebeten). Eine feste Formel ist nicht besser als das Lesen von Notizen. Baue jede mit eqn() auf: Begriffe treffen ein, wenn sie gesagt werden, bewegen sich, wenn die Stimme sie bewegt, schlagen und platzen, wenn es „kürzen" sagt, und hüpfen nur, wenn es etwas Wichtiges benennt. make look gibt einen Fehler für eine Formel, die stillsteht, und für einen „kürzt"-Satz ohne Kürzen auf dem Bildschirm. Siehe styles/clay.md.

  • Physische Bewegung. Dinge bewegen sich wie Objekte: Ein Arm greift, ein Ball fällt und hüpft, ein Block fällt und setzt sich, ein Impuls wandert. Kein Aufbau von statischen Kästchen.

  • Dasselbe Objekt behält seine Farbe in jedem Video (der Roboter ist immer orange, die Karte immer gelb).

Wenn ein Storyboard gegen eine dieser Regeln verstößt, ändere das Storyboard, bevor du Code schreibst.

Harte Regeln

  • Denke hier, im Hauptgespräch. Du schreibst das Skript, das Storyboard und die Szenen selbst, weil der Kontext hier ist. Gib diese Schritte niemals an einen Unter-Agenten: Ein Unter-Agent beginnt ohne Kontext. Der Skript-Agent in Schritt 7 ist die eine Ausnahme, und er startet absichtlich kalt.
  • Hetz niemals die Kern-Erklärung. Der Benutzer lernt aus diesen Videos. Befolge die Temporegeln in reference/script.md und behebe jede Tempowarnung (WARN).
  • Erfinde niemals eine Tatsache. Jede Zahl, Formel und Behauptung stammt aus einer von dir geprüften Quelle: dem Code des Benutzers, einem Datenblatt, einer Spezifikation, einem Papier, der Dokumentation. Liste sie in storyboard.md auf. Melde alles, was du nicht überprüfen konntest.
  • „Dein Fall" ist optional. Füge ihn nur hinzu, wenn dieses Gespräch oder Projekt wirklich ein passendes Beispiel enthält (einen Bug, auf den der Benutzer gestoßen ist, eine Korrektur, eine gemessene Zahl). Erfinde niemals einen.
  • Keine Überlappungen. Keine visuelle Darstellung darf eine andere überdecken: Text auf Text, Text auf einer Grafik oder eine Grafik, die eine andere Grafik verdeckt. Jedes Etikett, jede Formel, jeder Pfeil und jedes Objekt bekommt seinen eigenen Platz. check WARNT bei überlappenden Texten, und review schreibt jede gemessene Überlappung in overlaps.md. Gedrängtheit liegt im Ermessen des Benutzers, also suche danach in den Bildern in voller Größe. Der ID-Durchlauf hilft: make look fügt ein Bild der engsten Lücken hinzu und WARNT bei Text, der näher als 12 px an einem anderen Objekt ist, Text auf einer Zeichnung, geringem Textkontrast und einem Modell, das andere versteckt. Behebe jede Überlappung vor make final.
  • Untertitel haben eine Zeile. Jeder Cue ist höchstens 42 Zeichen lang und es werden nie zwei Cues gleichzeitig angezeigt, sodass ein Player nie zwei Zeilen anzeigt. Die Engine tut dies; verify meldet einen Cue, der gegen die Regel verstößt. Ändere nicht SUB_MAX in make.mjs, um einen Cue passend zu machen.
  • Die geschlossene Schleife (der Benutzer hat darum gebeten, und die Engine erzwingt sie). Nach jeder Bearbeitung: make look, lies jedes Bild, das es auflistet, korrigiere, was du siehst, und schaue erneut. Baue erst dann. Bearbeite und baue niemals blind, denn ein Bau ist lang und ein Look dauert Sekunden. Jedes Bild hat eine PRÜFZIFFER oben rechts, und die Tore öffnen sich nur mit den Ziffern aller Bilder in der richtigen Reihenfolge:
    1. Bearbeiten. Wenn du script.md geändert hast, führe make voice aus. Wenn das Video Manim-Teile enthält und du manim_scenes.py oder die Stimme geändert hast, führe make manim aus: make look zeichnet die Manim-Bilder, es erstellt sie nicht.
    2. make look <verz>: Es misst jede geänderte Szene in jedem Bild und zeichnet ihre Nahbilder und ihre beweglichen Teile. Lies sie alle. Dann make look <verz> --ok <ziffern>. make build stoppt ohne dies.
    3. make build <verz>. Es stoppt bei jeder Kollision.
    4. Lese jeden Streifen in build/review/moving.md. Dann make look <verz> --moving-ok <ziffern>.
    5. make final <verz>. Es stoppt, wenn sich die Quelle nach dem Look oder dem Bau geändert hat, oder wenn eine Kollision oder eine Überlappung offen ist. Führe jeden Schritt als eigenen Befehl aus, stoppe beim ersten Fehler und bestätige, dass eine Bearbeitung angewendet wurde.
  • Jeder Leser prüft Nahbilder und bewegte Teile. Jeder Agent oder jede Sitzung, die ein Video beurteilt, liest die Nahbilder jedes bearbeiteten Teils und alle Bilder von allem, was sich bewegt: das Maskottchen und Objekte, während ihrer gesamten Bewegung. Eine Stichprobe des Videos zählt nicht: Eine Hand ging zwischen den Stichprobenbildern durch einen Tisch.
  • Ein neuer Fehler bekommt eine Leitplanke. Wenn der Benutzer einen Fehler findet, füge ihn zuerst zu reference/faults.md und zu engine/test/selftest.mjs hinzu und bestätige, dass der Test darauf fehlschlägt. Korrigiere dann das Video. Korrigiere nicht nur das Video. Führe make selftest nach jeder Änderung an einer Prüfung aus.

Was der Benutzer verlangt hat (behalte diese)

Jedes wurde verlangt oder nach Gehör ausgewählt. Die Engine erledigt die meisten davon automatisch.

ThemaWasAutomatisch?
StimmeChatterbox eingebaute Stimme, verlangsamt auf etwa 160 Wörter pro Minute durch engine/tts/slow-reference.wav; jeder Absatz in einem Zug gelesen, damit der Ton trägtja
Pausenjeder Punkt genau 0,6 s, jedes Komma höchstens 0,3 s, festgelegt durch die Zeichensetzung des Skriptsja; voice WARNT, wenn eine Pause nicht platziert werden konnte
Schlechte Aufnahmenein Teil, dessen Wörter vom Skript abweichen (Whisper-Prüfung) wird mit einem neuen Seed wiederholt, bis zu 3 Mal; der beste Take wird behaltenja; WARNT, wenn immer noch falsch
Schnelle Stellenein Satz, der mehr als das 1,3-fache des üblichen Tempos des Videos beträgt (Symbolwörter zählen doppelt) wird wiederholt; der Benutzer fand „Lambda v ist v, skaliert mit Lambda" zu schnellja; WARN "schnell": gib ihm einen eigenen kurzen Satz und ein [pause]
Negative Zahlen„negativ" lesen, niemals „minus"voice stoppt mit einem ERROR
Wiederholte Wörter„eins eins" bekommt ein Komma („eins, eins") oder die Stimme rutschtja
Schreibenzusammenhängende Absätze; [pause] nur dort, wo eine Idee endet oder eine Animation läuft. Abgelehnt: eine Pause nach jedem Satz, abgehackte Sätze, eine schnelle Stimme, eine gedehnte (dumpfe) Stimme, Kokorodu, siehe reference/script.md
Musikhörbar, gleichmäßig, etwa 13 dB unter der Stimme (musicVolume 0,37; der Benutzer hat sie von 0,26 um 3 dB angehoben), sanftes Ducken; zwei genehmigte Tracks, current (Standard) und lofi. Abgelehnt: laut-leises Pumpen, Musik zu leise zum Hören, 4 andere Tracksja; du wählst den Track, siehe SOUND.md
Soundeffektedas Kit in engine/sfx.mjs, nach Gehör genehmigt; der Fly-In-Whoosh 4 dB unter den anderen Akzenten (der Benutzer fand ihn ein wenig zu laut). An für neue Videos (_render.sfx: true), aus für altedu fügst s.sfx an den Cues hinzu; die Engine mischt sie
Audio48 kHz Stereoja; verify prüft es
Untertitelweich, nie eingebrannt; der mpv des Benutzers zeigt sie klein an (sub-scale=0,7)ja
Eine Untertitelzeileeine Zeile pro Cue, höchstens 42 Zeichen, keine zwei Cues gleichzeitig. Der Benutzer sah zwei Zeilen in Video 1 des ROS 2-Setsja; verify meldet einen Cue, der es bricht
Keine Überlappungenkein Text oder keine Grafik bedeckt eine anderecheck WARNT für Texte, overlaps.md und deine Bild-Checkliste für den Rest
Lookein einheitlicher 3D-Ton-Look mit dem stillen Maskottchen und unseren eigenen Modellen; Manim-Teile auf dunklem Hintergrund für Kurven und Plots (der Benutzer hat darum gebeten: zwinge keinen Plot in Ton). Abgelehnt: heruntergeladene Modelle, ein ganz dunkles Video, Textspalten, Farblegenden, Aufbaufigurenmake check ERROR für eine Szene, die weder Ton noch Manim ist, oder ein Video ohne Maskottchen; der Rest liegt bei dir, siehe „Der vom Benutzer gewünschte Look"
Mathedie fünf Formelschritte (Bedarf, Bild, Formel, Bedeutung, Test). Manim für eine Kurve, einen Plot oder eine Formel, die sich Schritt für Schritt ändert: manim() in 2D oder manim({ threeD: true }) für ein 3D-Bild, nicht handgezeichnete Leinwandmake check WARNT bei einer Formel allein; der Rest liegt bei dir, siehe reference/script.md und styles/math-manim.md
Quizkeins im Storyboarddu
Ansehenmpv <verz>/out/<slug>.mp4füge es in den Bericht ein

Maschineneinstellungen

Führe make config vor Schritt 1 aus. Es gibt die Einstellungen dieser Maschine aus, die der Installer oder /setup-kaleidoscope geschrieben hat.

Die voice-Zeile benennt die Stimme: Chatterbox (natürlich, am besten auf einer NVIDIA-GPU oder Apple Silicon) oder Kokoro (klein und schnell auf einer CPU, mit etwa 150 Wörtern pro Minute). Ein Projekt kann seine eigene in video.json wählen: "_tts": {"engine": "kokoro"}. Ohne GPU zeichnet Chrome die Bilder mit SwiftShader und ffmpeg kodiert mit libx264

…

[gekürzt für die Übersetzung]

Verwandte Skills