Communitygithub.com

iwyusdaz/chalkreel

Verwandelt ein messbares Lernziel in ein kurzes, codegezeichnetes Erklärvideo mit Erzählung, wortgenauen Untertiteln, Transkript, Audiobeschreibungsnotizen, nachvollziehbaren Quellenangaben und Qualitätskontrolle anhand der Mayer'schen Multimedia-Prinzipien. Vier menschliche Genehmigungsschleusen. Keine generativen Videomodelle, kein Stockmaterial.

Was ist chalkreel?

Chalkreel ist ein KI-Agenten-Skill, der aus einem messbaren Lernziel ein barrierefreies Erklärvideo erstellt – ohne generative Videomodelle oder Stockmaterial. Stattdessen werden alle Bilder in Code (Remotion, SVG, CSS) gezeichnet, sodass jede Szene versionier- und überprüfbar ist. Der Workflow durchläuft vier menschliche Genehmigungsschleusen: Ziel + Beat-Map, Erzählskript, visueller Stil und endgültiger Schnitt. Der Skill legt großen Wert auf Barrierefreiheit: Wortgetreue Untertitel, Transkript und Audiobeschreibungsnotizen sind von Anfang an integriert. Jede in der Erzählung gemachte Behauptung wird durch eine Quellenangabe nachvollziehbar gemacht. Das Tool eignet sich besonders für Instruktionsdesigner, E-Learning-Entwickler und Pädagogen, die ein lehrreiches Video auf Basis eines messbaren Ziels und nicht eines Themas erstellen möchten. Es unterstützt standardmäßig lokales TTS (kokoro-82m) und erzwingt eine strenge Qualitätskontrolle nach den Mayer'schen Multimedia-Prinzipien.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iwyusdaz/chalkreel/tree/main/skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

chalkreel – Ziel rein, barrierefreies Erklärvideo raus

Sie produzieren ein lernorientiertes Erklärvideo. Im Gegensatz zu engagement-optimierten KI-Erklärern geht ein Lernvideo von einem messbaren Ziel aus, verwaltet die kognitive Belastung bewusst (Mayer's Multimedia-Prinzipien) und liefert Barrierefreiheitsartefakte – Untertitel, Transkript, Audiobeschreibungsnotizen – als erstklassige Ergebnisse, nicht als nachträgliche Einfälle. Jede faktische Behauptung in der Erzählung führt auf eine Quelle zurück.

Alles, was ein Zuschauer hört, muss auch sichtbar oder lesbar sein. Alles, was einem Lernenden gesagt wird, muss nachvollziehbar sein. Ohne menschliche Freigabe wird nichts ausgeliefert.

Harte Regeln

  1. Keine generativen Videomodelle. Kein Stockmaterial. Keine Bildgeneratoren für Szeneninhalte. Bilder werden in Code gezeichnet (Remotion-Komponenten, SVG, CSS). So bleibt jedes Bild überprüfbar, diffbar und reproduzierbar.
  2. Vier menschliche Schleusen. Fahren Sie niemals ohne explizite Freigabe über eine Schleuse fort, die im Projektprotokoll festgehalten ist: SCHLEUSE 1 Ziel + Beat-Map, SCHLEUSE 2 Erzählskript, SCHLEUSE 3 Visueller Stil, SCHLEUSE 4 Endgültiger Schnitt.
  3. Alles Synthetische kennzeichnen. Konstruierte Beispieldaten, simulierte Zeitangaben und KI-Review-Ergebnisse werden in der Datei selbst als solche gekennzeichnet. Präsentieren Sie niemals ein trockenes Artefakt als echtes gerendertes/TTS-Ergebnis.
  4. Behauptungen vor Skript. Recherchenotizen mit belegten Behauptungen existieren, bevor die Erzählung geschrieben wird, und keine Zahl gelangt ohne eine Zeile im Hauptbuch in das Skript.
  5. Lokale TTS bevorzugt. Standardstimme ist kokoro-82m (lokal, kostenlos). Eigene TTS werden unterstützt; rufen Sie niemals eine Cloud-TTS ohne den konfigurierten Schlüssel des Benutzers auf. Keine lokalen Modelle außer der vom Benutzer gewählten TTS.

Eingaben

ziel:        ein messbarer Satz (ABCD – die Zielschleuse erzwingt dies)
zielgruppe:  wer lernt und welches Vorwissen vorausgesetzt wird
laenge:      Zieldauer (Standard 60–120 s)
sprache:     Erzählsprache (Standard en)

Themen ablehnen. „Ein Video über Photosynthese“ ist keine Eingabe; führen Sie scripts/objective-gate.mjs aus und iterieren Sie mit dem Benutzer, bis es besteht.

Workflow

ziel + zielgruppe + vorwissen + laenge + sprache
  |
  +-- 1. ZIELSCHLEUSE    objective-gate.mjs; Thema -> ABCD-Ziel;
  |                        für den Lernenden sichtbare Rahmung „Sie werden in
  |                        der Lage sein...“;
  |                        Beat-Map segmentiert nach Mayer's Segmentierung
  |                        (10-30 s Beats)
  |                        << SCHLEUSE 1: Benutzer genehmigt Ziel + Beat-Map
  +-- 2. RECHERCHE        Behauptungen extrahieren, Quellen finden,
  |                        Behauptungshauptbuch schreiben
  |                        (anmeldung-001-ähnliche IDs; Quellen mit
  |                        Titel/Verlag/Jahr; vage Formulierungen gegenüber
  |                        erfundenen Statistiken bevorzugt)
  +-- 3. ERZÄHLUNG        Skript pro Segmentbudget; Humanizer-Lint-Prüfung
  |                        (scripts/lint-narration.mjs muss mit Code 0
  |                        beenden); Leselevel-Prüfung vs. Zielgruppe
  |                        << SCHLEUSE 2: Benutzer genehmigt Skript
  +-- 4. STIL-BAKE-OFF    Den GLEICHEN Beat in 2-3 Hintergrund-/Themenvarianten
  |                        mit der Vorlage rendern; Benutzer wählt nach
  |                        Augenmaß
  |                        << SCHLEUSE 3: Benutzer wählt einen Stil
  +-- 5. BAUEN            Eine Remotion-Segmentkomponente pro Beat (template/);
  |                        TTS mit Wortzeitstempeln (Standard kokoro-82m,
  |                        BYO okay); Timing-JSON erstellen
  |                        {segments[].words[{w,start,end}]}
  +-- 6. BARRIEREFREIHEIT  make-srt.mjs (wortgenaue SRT),
  |                        make-transcript.mjs (Transkript-HTML),
  |                        Audiobeschreibungsnotizen pro Segment, danach MUSS
  |                        a11y-lint.mjs bestehen
  +-- 7. QUALITÄTSKONTROLLE  Gerenderte Bilder + Skript nach den unten
  |                        stehenden Kriterien bewerten; qc-report.md mit
  |                        Methodenkennzeichnung schreiben
  |                        << SCHLEUSE 4: Benutzer prüft endgültigen Schnitt
  +-- liefern: video.mp4 + .srt + transcript.html +
                instructor-notes.md
      + Behauptungshauptbuch + vollständige Papierspur (Ziel, Recherche,
      Erzählung, Storyboard, Timing, QC-Bericht)

Segmentbudgets

  • 10–30 s pro Segment (Mayer's Segmentierung; harte Obergrenze 30 s ohne Benutzerüberschreibung).
  • ~145 Wörter pro 60 s Erzählung; eine Idee pro Segment.
  • Text auf dem Bildschirm: nur Bezeichnungen und kurze Sätze (2–7 Wörter), niemals die Erzählung wörtlich wiedergeben (Redundanzprinzip).
  • Jedes Segment definiert: Erzählung, eine Szenenart, Text auf dem Bildschirm, Audiobeschreibungsnotiz, Behauptungs-IDs.

TTS-Standardeinstellungen

  • Standard: kokoro-82m, lokal. Stimme: af_heart (oder Benutzerwahl). Geschwindigkeit 1.0.
  • Wortgenaue Zeitstempel vom TTS/Ausrichter in das Timing-JSON übernehmen. Wenn der TTS sie nicht ausgeben kann, mit einem erzwungenen Ausrichter ausrichten; niemals Zeitangaben raten – eine geratene Ausrichtung führt zu driftenden Untertiteln, und die Round-Trip-Prüfung wird falschen Text, aber keine drifteten Zeiten erkennen.
  • BYO TTS: jede Engine, die wortgenaue Zeitstempel zurückgibt; Engine und Stimme im Projektprotokoll dokumentieren.

Skripte (alle eigenständig, node >=18, keine Abhängigkeiten)

SkriptZweckBeenden mit Code 0 bedeutet
scripts/objective-gate.mjs "<ziel>"Überprüft ABCD-Zieldas Ziel ist messbar
scripts/lint-narration.mjs <skript.txt>KI-Schreib-Erkennungsprüfung (vor TTS ausführen)Skript klingt menschlich genug zum Aufnehmen
scripts/make-srt.mjs <timing.json> --out x.srtWortgenaue SRT aus Timing-JSONSRT geschrieben
scripts/make-transcript.mjs --timing <timing.json> --storyboard <sb.json> --out t.htmlBarrierefreie TranskriptseiteHTML geschrieben
scripts/a11y-lint.mjs <storyboard.json>„Keine Information nur im Audio“ + Artefaktprüfungjede Erzähltatsache ist auf dem Bildschirm oder im Transkript/AD-Notizen

Negative Beispiele befinden sich in examples/ (bad-narration.txt, bad-storyboard.json) – überprüfen Sie immer eine frische Einrichtung, indem Sie die Lints darauf ausführen und bestätigen, dass sie FEHLSCHLAGEN.

Dateiformate

timing.json – Wortgenaue Zeitstempel (aus TTS-Ausrichtung):

{ "video": { "titel": "...", "fps": 30 },
  "segments": [ { "id": "seg-01", "text": "...", "start": 0.0,
    "words": [ { "w": "Schließen", "start": 0.1, "end": 0.34 } ] } ] }

storyboard.json – Ein Objekt pro Segment:

{ "video": { "titel": "...", "fps": 30, "width": 1920, "height": 1080,
    "srtEmitted": true, "transcriptEmitted": true, "claimsLedger": "pfad" },
  "segments": [ { "id": "seg-01", "titel": "Aufhänger", "sceneKind": "aussage",
    "startSec": 0, "durationSec": 18.2, "narration": "...",
    "visual": { "backdrop": "tafel", "description": "...",
                "onScreenText": [ "Erinnern schlägt erneutes Lesen" ] },
    "audioDescriptionNote": "...", "claims": [] } ] }

sceneKind wird auf eine Vorlagenkomponente abgebildet: aussage, definition, zeitleiste, zyklus, liste, untertitel. Neue Arten in der Vorlage hinzufügen, nicht als einmalige Komponenten innerhalb eines Projekts.

Qualitätskontrollkriterienpaket (gerenderte Ausgabe dagegen BEWERTEN, schriftlich)

Ein QC-Agent „schaut“ sich das Video nicht an und gibt keine Meinung ab. Er bewertet jedes Kriterium mit bestanden/nicht bestanden und einem zitierten Beleg. Bildschirmüberprüfungen benötigen gerenderte Bilder; Skriptüberprüfungen laufen auf den Artefakten. Schreiben Sie das Ergebnis in qc-report.md und kennzeichnen Sie die Überprüfungsmethode (z. B. „Agent-Heuristik-Review“).

Skriptebene (jedes Mal ausführen)

  1. Zielausrichtung – jedes Segment bringt das genehmigte Ziel voran; alles, was dies nicht tut, wird gestrichen (Kohärenzprinzip auf Ziele angewendet).
  2. Nachvollziehbarkeit von Behauptungen – jede Zahl, jedes Datum oder jede namentliche Feststellung in der Erzählung hat eine Zeile im Behauptungshauptbuch mit einer Quelle. Nicht bestanden bei jeder verwaisten Tatsache.
  3. Erzähl-Lint – lint-narration.mjs endet mit Code 0.
  4. Leselevel – Sätze haben durchschnittlich unter ~17 Wörter; kein unerklärter Fachbegriff; konkrete Verben statt Abstraktionen.
  5. Barrierefreiheitspaket – a11y-lint.mjs endet mit Code 0; SRT und Transkript existieren; AD-Notiz für jedes Segment vorhanden.

Bildebene (auf gerenderten Bildern oder Screenshots pro Segment ausführen)

  1. Signalisierung – der Schlüsselbegriff/die Schlüsselzahl des Moments wird visuell hervorgehoben (Tafelunterstreichung, Farbe, Pfeil) genau während er/sie erzählt wird.
  2. Kohärenz – nichts Dekoratives auf dem Bildschirm; jedes Element entspricht einer erzählten Idee; keine Hintergrundmusik, es sei denn, der Benutzer hat darum gebeten.
  3. Redundanz – Text auf dem Bildschirm dupliziert nicht die Erzählung wörtlich; es sind Bezeichnungen und kurze Sätze.
  4. Räumliche Kontiguität – Bezeichnungen befinden sich neben dem Ding, das sie beschreiben; keine Legenden-zu-Diagramm-Schnitzeljagden innerhalb eines Bildes.
  5. Zeitliche Kontiguität – Die Einblendung eines Elements ist mit seiner Erzählzeile synchronisiert (gegen timing.json prüfen), nicht davor oder danach.
  6. Lesbarkeit – Kreidelinien kontrastieren mit dem Hintergrund (mindestens 4,5:1 für Textäquivalente auf dem Bildschirm); nichts bei 1920x1080 oder 1280x720 abgeschnitten.
  7. Bewegungsbudget – Animationen beruhigen sich innerhalb von 1,2 s; nichts bewegt sich während eines Satzes, der eine andere Idee einführt.

Jeweils BESTANDEN/NICHT BESTANDEN mit Beleg bewerten. Jedes NICHT BESTANDEN bei 1–5 blockiert SCHLEUSE 4. Jedes NICHT BESTANDEN bei 6–12 erfordert eine Korrektur und ein erneutes Rendern dieses Segments oder eine explizite Benutzerakzeptanz.

Stilstandards (SCHLEUSE 3 Bake-Off)

  • Hintergrund: tafel (tiefes Schiefergrün, dezente Textur, weiche Vignette). Alternativen für den Bake-Off: papier (warmer Cremeweiß, Tintenlinien), nacht (nahezu schwarz, einzelne Akzentfarbe).
  • Palette: Kreideweiß primär, ein Akzent (Bernstein #FFC66D) für Hervorhebungen. Nur hervorheben, was die Signalisierung erfordert.
  • Schriftart: groß (mind. 64 px bei 1080p), hoher Kontrast; Untertitel unten mittig mit durchscheinender Platte, max. 2 Zeilen / 42 Zeichen pro Zeile.
  • Respektieren Sie den Zuschauer: kein Blinken (> 3 Blitze/s verboten), Bewegungen beruhigen sich schnell, Fortschrittsbalken zeigt die Kapitelposition an.

Papierspur (alles committen)

01-ziel.md (+ Schleusenausgabe)     05-timing.json
02-recherchenotizen.md               06-untertitel.srt
03-erzaehlung.md                     07-behauptungshauptbuch.md
04-storyboard.json                   08-qc-bericht.md

Die Papierspur ist genauso das Produkt wie das Video: Sie macht den Workflow für einen anderen Instruktionsdesigner überprüfbar.

Ehrliche Grenzen (diese im Projektprotokoll nennen)

  • Agenten-QC ist eine heuristische Überprüfung durch ein Modell, keine Expertenbegutachtung.
  • Keine Behauptung, dass ein Ergebnis „instruktionsvalidiert“ ist – das erfordert Lernertests, die dieser Skill nicht durchführt.
  • Wortgenaue Untertitel sind nur so gut wie die TTS-Ausrichtung; stichprobenartig 10 Hinweise vor SCHLEUSE 4 gegen das Audio prüfen.
  • Stimmenlizenzierung: kokoro-82m-Stimmen haben ihre eigenen Nutzungsbedingungen; vor kommerzieller Verbreitung prüfen.

Namensnennung

Methodenebenen-Inspiration, kein kopierter Code: anything2explainer (PolyForm Noncommercial – nur Methode, siehe ATTRIBUTION.md dieses Repos), das gemusterte Genehmigungsfluss-Muster von vox-director (MIT) und das Konzept der KI-Schreib-Erkennungs-Checkliste von blader/humanizer und Wikipedias „Anzeichen von KI-Schreiben“ (der Lint dieses Repos ist eine unabhängige Implementierung).

Verwandte Skills