Was macht Chronicle · Ink (Ink Scroll)?
Du (der Agent, der dies liest) bist die gesamte Filmcrew. Der Skill stellt dir eine gestufte CLI, eine Fakten-Engine, ein codesynthetisiertes Serienthema mit einer exakten Taktkarte, ein prozedurales SFX-Kit, ein Tusche-Zeichenkit und einen HyperFrames-Renderer zur Verfügung. Du schreibst die Behauptungen, die Einstellungsliste mit einzeiligen Bildunterschriften, den Szenencode und die Überprüfungen. Nichts ruft ein Bild, eine Stimme, Musik, Vision oder ein LLM-Modell auf; die einzigen Kosten sind deine eigenen Token.
Harte Regel: Text-LLM plus Tools nur. Das gesamte Schreiben, Recherchieren, Faktenprüfen, Szenenschreiben und Überprüfen wird von dem Text-LLM durchgeführt, das diesen Skill ausführt (z. B. MiniMax M3.1 Flash über SandBase oder jedes andere Agent-Modell). Du darfst Tools aufrufen: Websuche und -abruf, die SandBase-Daten-APIs, die untenstehenden Befehle, FFmpeg. Du darfst niemals ein multimodales Generierungsmodell aufrufen: kein Bild-, Video-, TTS/Sprach-, Musik- oder Vision-Modell und keine KI-generierten Bild- oder Audiodateien. Jeder Frame wird von dem von dir geschriebenen Szenencode gezeichnet, jeder Ton wird von der Engine synthetisiert. Kontaktbögen werden als Zahlen und von dir selbst gerenderte Frames überprüft, nicht von einem Vision-Modell. Ein Film, der ein multimodales Modell verwendet hat, ist kein Chronicle-Ink-Film.
Opt-in-Ausnahmen: Musik und Erzählung. Nur wenn der Benutzer explizit darum bittet, darf das Thema durch eine Audiodatei in
music/ersetzt werden, die vonmusic/track.jsonbeschrieben wird: entweder eine offen lizenzierte Aufnahme (Public Domain, CC0, CC BY 3.0/4.0; niemals NC, ND oder SA) oder eine instrumentale, die von einem SandBase-Musikmodell generiert wurde (z. B.minimax/music/2.6mitis_instrumental: true, nur über diesandbase-CLI oder -API). Die Bilder, Bildunterschriften, SFX und alle anderen Regeln bleiben wie oben; die Endkarte nennt dann den Titel und sagt nicht mehr, dass die Musik durch Code erstellt wurde. Siehereferences/music-track.md. Ebenso kann ein Voice-Over hinzugefügt werden: ein Clip pro Bildunterschrift von einem SandBase-Sprachmodell, das genau die Bildunterschrift sagt (voice/voice.json, siehereferences/voice.md).
Stilpakete
brief.style (oder new-project.mjs --style) wählt den Look; die Engine, Fakten und Prüfungen sind dieselben.
| Stil | Aussehen | Paket | Verwendung für |
|---|---|---|---|
ink (Standard) | Chinesische Tuscherolle, LXGW WenKai, „Ink Theme“ | assets/style-pack.json | Personen, Sehenswürdigkeiten, Tiere |
roman | Pergament-Atlas, Cinzel, weiches D-Dorian-Thema | assets/styles/roman/ | Städte, klassische Themen |
model | Weißes Stadtmodell in dunklem Studio, Geschichte als Licht projiziert, Globus-Flug-in, Fotokarten, „Atlas Theme“ | assets/styles/model/ | Lebensgeschichten von Städten: lies style-model.md |
Die Methode ist das öffentliche „Vibe-Wissensshowcase“-Rezept: Lege die Spezifikation fest → Schneide auf den Takt → Gib jedem Schlüsselaktion einen Sound → Rendere Segment für Segment und korrigiere jedes, bevor du fortfährst.
Spezifikation (Standard)
| Länge | seconds 120, 150 (Standard) oder 180; alle 25–35 s neu einhaken; 4–6 / 5–7 / 6–8 Wissenspunkte |
| Format | 16:9 1920×1080 bei 30 fps (Standard), 9:16 1080×1920 optional |
| Sprache | brief.lang = beliebiges BCP-47-Tag (Standard en; zh-CN erster Klasse). Ein Skript bedient viele Sprachen |
| Erzählung | keine Stimme: eine kurze Bildunterschrift pro Einstellung, die zeigt, was das Bild zeigt, gebunden an verifizierte Behauptungen, hervorgehobene Schlüsselwörter |
| Musik | das Serienthema des Stils (Ink: „Ink Theme“, D-Gong-Pentatonik, Guqin-/Xiao-ähnliche Stimmen), immer 88 BPM mit Abschnitten Intro · Verse · Build · Drop · Breakdown · Build2 · Drop2 · Outro; optional music/track.json (music-track.md) |
| Lautstärke | −14 LUFS integriert, ≤ −1,5 dBTP (Two-Pass-Loudnorm) |
| Labels | „AI-generated“-Badge 0–3 s, Endkarte mit dem AIGC-Hinweis, AIGC-Metadaten in der MP4 |
Erfordert Node 22+, FFmpeg/ffprobe und Chrome (HyperFrames 0.8.30 läuft über npx; Rendering verwendet immer den CPU-Pfad, sodass die Canvas-Ausgabe überall identisch ist). Führe node scripts/chronicle.mjs doctor aus.
Stadtfilme (Thema city, Struktur life)
Für den Anwendungsfall „Jede Stadt hat eine Lebensgeschichte“: Eine Stadt auf Wikidata (Koordinaten + Bevölkerung) wird als city gesperrt und verwendet die Lebensstruktur: Geburt (Fluss, Gründung, Name) → Wachstum (das bebaute Gebiet breitet sich auf der Karte aus) → erste Höhe → Narben (Plünderung, Feuer, Pest, Krieg) → Wiedergeburt → heute (gleiche Karte, damals und heute) → Echo (optional die eigene Zeile des Autors „ich und diese Stadt“). Lies narrative-city.md.
Die Karte ist echte Geografie, kein Modellbild:
- Schreibe
geo/places.jsonim Projekt (Zentrum und Orte nach Wikidata-QID, historische Gebiete als ungefähre Radien) und führenode <skill>/scripts/geo.mjs --project <p>aus. Es liest Koordinaten von Wikidata und Flüsse, Wasser, Küste, Schienen und heutige Hauptstraßen von OpenStreetMap (schlüssellose öffentliche Lesevorgänge) ingeo/basemap.json. - Ink-Stil: Kopiere
assets/style/exemplars/city-map.jsinscenes/und steuere jede Karteneinstellung über ihre Parameter (Ansicht, Gebiete, Orte, Straßen, Jahresstempel, Narbe). Szenen lesen die Daten alss.geound zeichnen sie mits.kit.cityMap(); jeder Frame trägt dann „© OpenStreetMap contributors (ODbL)“. | - Historische Ausdehnungen sind Näherungswerte:
cityMapkennzeichnet sie immer mit „AI 示意 / AI illustration“. Jahresstempel und Kartenbeschriftungen dürfen nur Daten und Namen anzeigen, die in den Behauptungen oder einer Tier-1-Quelle enthalten sind. - Model-Stil: Füge einen
chronology-Block (Kamera, Epochen, Ausdehnungen, Mauern, Ereignisse, Sehenswürdigkeiten) zugeo/places.jsonhinzu, rufe Sehenswürdigkeitsfotos mitnode <skill>/scripts/photos.mjs --project <p>ab und verwende die einzelnecity-3d-Szene (echte Gebäude und Höhen in WebGL, ein durchgehender Kamerapfad). Siehe style-model.md und das Schritt-für-Schritt-city-film-recipe.md (wie die Proben aus Rom, New York und Barcelona erstellt wurden).
Seiten, die diese Maschine nicht erreichen kann (Wikipedia ist oft blockiert): Rufe sie mit deinem eigenen Tool ab und speichere den Text als sources/<n>-<name>.txt im Projekt (source: <url> in der ersten Zeile). Jedes spätere all liest diesen Ordner; Dateinamen halten die Quellen-IDs stabil.
Schnellstart
node <skill>/scripts/new-project.mjs --out /abs/films/su-shi --topic "苏轼" --film-lang en
node <skill>/scripts/chronicle.mjs all --project /abs/films/su-shi
all führt aus: Recherche → Fakten → Skript → Zeitplan → Musik → Szenen → Rendern → Prüfen → Bericht und stoppt, wenn immer du etwas schreiben musst (status: awaiting_…). Lies AGENT_TASK.md im Projekt, schreibe die angeforderte Datei, führe all erneut aus. Projekte müssen außerhalb des Skill-Ordners liegen.
Crew-Rollen
| Rolle | Du tust | Befehl | Liest | Schreibt |
|---|---|---|---|---|
| Regisseur | Besitzt die Spezifikation, führt die Segment-Schleife aus, entscheidet, wann ein Segment fertig ist | all, render --segment | brief.json, Kontaktbögen | work/review.json |
| Forscher | Sucht ohne Einschränkungen (deine eigenen Suchwerkzeuge); gibt die nützlichen Seiten weiter | research --add-source <url> / --source-file <file> | Wikidata (QID-Sperre), Wikipedia, Tier-1-Seiten | work/research/ |
| Faktenprüfer | Extrahiert atomare Behauptungen mit wörtlichen Auszügen; beantwortet die Implikation für jede Bildunterschrift | facts, script | Quellenausschnitte, entail.request.json | work/facts/claims.agent.json, work/script/entail.agent.json |
| Drehbuchautor | Schreibt die Einstellungsliste auf die Abschnitte des Themas | script | script.request.json (Plan, Behauptungen, Regeln) | script.json |
| Kunst | Schreibt Szenencode mit dem Tusche-Kit; überprüft Frames selbst | scenes | Zeitplan, references/style-pack.md, Beispiele | scenes/<name>.js |
| Komponist | Nichts zu komponieren: das Thema ist festgelegt; du wählst SFX-Stufen pro Aktion | music | brief.seconds | work/music/theme.wav, beatmap.json |
| Editor | Rendert Segmente und den endgültigen Film | render | Szenen, Thema, SFX-Hinweise | out/segments/, out/film.mp4 |
| QA | Führt die Prüfungen durch, liest das Verbindungsblatt, korrigiert oder wiederholt | check, report | Film, Zeitplan, Taktkarte, Überprüfung | work/check.json, out/report.* |
| Karten-Animator | Schreibt geo/places.json, führt den Geo-Befehl aus, steuert city-map-Einstellungen | node scripts/geo.mjs | Wikidata P625, OpenStreetMap | geo/basemap.json |
Felder der Einstellungsliste (script.json, Schema chronicle-script/2)
bars (1–4 ganze Takte eines Abschnitts, also jeder Schnitt auf einem Downbeat) · size (weit / mittel / nah / Detail) · camera (halten, hereinzoomen, herauszoomen, nach links schwenken, nach rechts schwenken, heben, parallax) · transition (Schnitt, Tuscheverlauf, Scroll-Pan, Siegelstempel) · scene + params · description · motion · sfx ({ beat, kind, tier, dur_beats }) · kind + claims (+ hedge) · caption.<lang>.text + em (Schlüsselwörter) · kp · rehook. Vollständige Form und Regeln: work/script/script.request.json und pipeline.md.
Fakten zuerst
researchsperrt das Thema auf eine Wikidata-QID, liest Wikipedia und Tier-1-Seiten (CBDB, Britannica, UNESCO, GBIF, Museen) direkt mit schlüssellosen öffentlichen Lesevorgängen. Suche überall, wo du möchtest, aber eine Tatsache gelangt nur in den Film, nachdemfactssie abgeglichen hat: mindestens 2 unabhängige Herausgeber stimmen überein, mindestens einer Tier 1 →verified; eine Quelle →single-source(nur abgesicherte Bildunterschriften, ≤ 2, niemals in Intro oder Drops); Konflikte →disputed(„ein Bericht“). Klatschseiten sind Hinweise, niemals Beweise.- Wenn diese Maschine eine Seite nicht erreichen kann, lies sie mit deinem eigenen Abrufwerkzeug und speichere den Text wörtlich in einer Datei, deren erste Zeile
source: <url>ist; übergebe sie mit--source-file. - Jede Bildunterschrift, Karte, Titel- und Endkartenzeile bindet Anspruchs-IDs; Zahlen, Daten und Namen in einer Zeile müssen in ihren Ansprüchen enthalten sein; Zitate benötigen einen verifizierten Zitatanpruch. Dann beantwortest du die Implikation ehrlich nur aus den Anspruchstexten. Siehe factcheck.md.
Geschichte auf das Thema
Der Plan (work/script/plan.json) gibt die Abschnitte des Themas in Takten (150 s: Intro 4 · Verse 12 · Build 4 · Drop 8 · Breakdown 8 · Build2 4 · Drop2 8 · Outro 7; 120/180 s wiederholen oder kürzen Abschnitte an Taktgrenzen), die Re-Hook-Takte und den Wissenspunktbereich. Ordne die Geschichte den Abschnitten zu: Haken im Intro, Ursprünge im Verse, die Wende im Build, der erste Höhepunkt auf dem Drop, Kosten im Breakdown, Spannung in Build2, der entscheidende Moment auf Drop2, ein Echo im Outro. Verschiedene Themen haben unterschiedliches Tempo: narrative-person.md, narrative-landmark.md, narrative-animal.md.
Bildunterschriften: CJK ≤ 16 Zeichen pro Zeile, andere Schriften ≤ 9 Wörter / 42 Zeichen pro Zeile, ≤ 2 Zeilen, niemals innerhalb einer Zahl oder eines Datums unterbrochen, RTL von rechts nach links angeordnet. Eine Bildunterschrift muss in ihrer Einstellung lesbar sein (CJK 7 Zeichen/s, andere 3,3 Wörter/s). Die Glyphenprüfung schlägt mit glyph_missing fehl, anstatt Tofu zu rendern.
Szenen (das Risiko Nr. 1 für die Qualität)
Schreibe scenes/<name>.js pro Szenenname: scene('<name>', function (g, s) { … }), zeichne einen vollständigen Frame für die Zeit s.t mit Canvas 2D und s.kit (Papier, Pinselstriche, Waschungen, Tuscheverlauf, Berge, Wasser, Boot, Pavillon, Schriftrolle, Bambus, Mond, Tintenstein, Pinsel, Siegel, Pflaume, Gänse, verschleierte Silhouette, Text-Enthüllung, Kartenroute, Zeitleiste, Count-up, 2.5D layer() Parallaxe, Komposition frame()). Beginne mit assets/style/exemplars/. Regeln, durchgesetzt durch einen statischen Scan und zur Laufzeit: deterministisch in s.t (s.kit.rng(seed), niemals Math.random/Datum/Timer), kein Netzwerk, kein DOM oder Speicher. Timing jeder Schlüsselaktion auf ihrem Hinweis (s.cue('seal', 0)), damit der SFX auf dem Frame landet, auf dem sie passiert. Zeichne niemals ein realistisches Gesicht. Tun / Nicht tun Liste: style-pack.md.
Regie-Schleife (Segment für Segment)
node <skill>/scripts/chronicle.mjs scenes --project <p> # Scan + Projekt
node <skill>/scripts/chronicle.mjs render --project <p> --segment s1 # Öffnung ~11 s zuerst
# Betrachte out/segments/s1/sheet.jpg und keyframes/*.jpg gegen die Tun/Nicht tun-Liste, korrigiere, wiederhole
node <skill>/scripts/chronicle.mjs render --project <p> --segment s2 # dann s3, s4, s5
node <skill>/scripts/chronicle.mjs all --project <p> # Endgültiger deterministischer Voll-Render + Prüfung + Bericht
Segmente: s1 Intro · s2 Verse · s3 Build + Drop · s4 Breakdown + Build2 · s5 Drop2 + Outro (oder --segment <start>-<end>). Maximal 3 Überprüfungsrunden pro Segment; zeichne jede Runde in work/review.json auf:
{ "schema": "chronicle-review/1", "segments": [{ "id": "s1", "rounds": [{ "sheet": "out/segments/s1/sheet.jpg",
"findings": ["Titel überschneidet den Mond"], "fixes": ["Mond nach rechts verschoben"], "open_blocking": [] }] }] }
check schlägt bei visual_review fehl, wenn ein Segment keine Runde hat oder immer noch blockierende Befunde hat. Für unbeaufsichtigte Läufe rendert all den gesamten Film direkt; die Überprüfungsanforderung wird trotzdem im Bericht angezeigt.
Ausgabe
out/film.mp4, out/captions.vtt, out/sheet.jpg, out/joins.jpg, out/report.json, out/report.en.html, out/report.zh-CN.html (zweisprachig, unabhängig von der Filmsprache). check misst LUFS und True Peak, Schnitte und Abschnitte auf Downbeats und jeden SFX-Einsatz innerhalb eines Frames seiner Aktion; es kann nicht beurteilen, ob der Mix gut klingt – sage, dass immer noch eine Person zuhören muss.
Grenzen
- Keine Porträts lebender Personen; Karten zeigen niemals nationale oder provinzielle Grenzen; das AIGC-Feldschema von GB 45438 bleibt
verified: false, bis es gegen den Standardtext überprüft wurde (compliance.md). - Drei Stilpakete, jeweils ein Thema (oder ein Opt-in-Track). Jahreskarten: unterlasse
count(ein Jahr, das von 0 hochzählt, liest sich wie ein falsches Datum). - Stadtkarten zeigen keine nationalen oder provinziellen Grenzen; die OpenStreetMap-Ebenen werden auf die Stadt beschnitten.
- Faktenlexika (Zahlen, Daten, Absicherungen) existieren für Englisch und Chinesisch; andere Bildunterschriftssprachen verwenden die englischen Regeln.
- Referenz: pipeline.md, music.md, sources-allowlist.md, third-party-notices.md.