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.
| Frage | Kopfzeile | Optionen (erste = Standard) |
|---|---|---|
| Welchen Look soll das Video verwenden? | Look | Clay 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? | Zuschauer | Prü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üfpunkt | Ein 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? | Musik | Ruhig (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 checkWARNT, 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 bakemisst jede Verbindung inmodels.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 lookgibt einen Fehler für eine Formel, die stillsteht, und für einen „kürzt"-Satz ohne Kürzen auf dem Bildschirm. Siehestyles/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.mdund 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.mdauf. 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.
checkWARNT bei überlappenden Texten, undreviewschreibt jede gemessene Überlappung inoverlaps.md. Gedrängtheit liegt im Ermessen des Benutzers, also suche danach in den Bildern in voller Größe. Der ID-Durchlauf hilft:make lookfü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 vormake 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;
verifymeldet einen Cue, der gegen die Regel verstößt. Ändere nichtSUB_MAXinmake.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:- Bearbeiten. Wenn du
script.mdgeändert hast, führemake voiceaus. Wenn das Video Manim-Teile enthält und dumanim_scenes.pyoder die Stimme geändert hast, führemake manimaus:make lookzeichnet die Manim-Bilder, es erstellt sie nicht. make look <verz>: Es misst jede geänderte Szene in jedem Bild und zeichnet ihre Nahbilder und ihre beweglichen Teile. Lies sie alle. Dannmake look <verz> --ok <ziffern>.make buildstoppt ohne dies.make build <verz>. Es stoppt bei jeder Kollision.- Lese jeden Streifen in
build/review/moving.md. Dannmake look <verz> --moving-ok <ziffern>. 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.
- Bearbeiten. Wenn du
- 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.mdund zuengine/test/selftest.mjshinzu und bestätige, dass der Test darauf fehlschlägt. Korrigiere dann das Video. Korrigiere nicht nur das Video. Führemake selftestnach 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.
| Thema | Was | Automatisch? |
|---|---|---|
| Stimme | Chatterbox 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ägt | ja |
| Pausen | jeder Punkt genau 0,6 s, jedes Komma höchstens 0,3 s, festgelegt durch die Zeichensetzung des Skripts | ja; voice WARNT, wenn eine Pause nicht platziert werden konnte |
| Schlechte Aufnahmen | ein Teil, dessen Wörter vom Skript abweichen (Whisper-Prüfung) wird mit einem neuen Seed wiederholt, bis zu 3 Mal; der beste Take wird behalten | ja; WARNT, wenn immer noch falsch |
| Schnelle Stellen | ein 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 schnell | ja; 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 rutscht | ja |
| Schreiben | zusammenhä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, Kokoro | du, siehe reference/script.md |
| Musik | hö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 Tracks | ja; du wählst den Track, siehe SOUND.md |
| Soundeffekte | das 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 alte | du fügst s.sfx an den Cues hinzu; die Engine mischt sie |
| Audio | 48 kHz Stereo | ja; verify prüft es |
| Untertitel | weich, nie eingebrannt; der mpv des Benutzers zeigt sie klein an (sub-scale=0,7) | ja |
| Eine Untertitelzeile | eine Zeile pro Cue, höchstens 42 Zeichen, keine zwei Cues gleichzeitig. Der Benutzer sah zwei Zeilen in Video 1 des ROS 2-Sets | ja; verify meldet einen Cue, der es bricht |
| Keine Überlappungen | kein Text oder keine Grafik bedeckt eine andere | check WARNT für Texte, overlaps.md und deine Bild-Checkliste für den Rest |
| Look | ein 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, Aufbaufiguren | make 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" |
| Mathe | die 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 Leinwand | make check WARNT bei einer Formel allein; der Rest liegt bei dir, siehe reference/script.md und styles/math-manim.md |
| Quiz | keins im Storyboard | du |
| Ansehen | mpv <verz>/out/<slug>.mp4 | fü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]