Was macht Motion Reel?
Baue einen neuen Film in der eigenen Engine dieses Repos. Wechsle nicht zu Remotion oder HyperFrames, es sei denn, der Nutzer nennt sie explizit; der Rendering-Vertrag des Repos steht in CLAUDE.md und hat Vorrang vor dieser Datei.
Ein Film läuft in zwei Sitzungen, getrennt durch die einmalige Freigabe des Eigentümers für Shot-Liste und Board:
- Vorproduktion (diese Datei): Briefing, Geschichte, Assets, Voice-Over, Beat-Grid, Shot-Liste, Board.
- Build (
/motion-reel build <film>): Lies build.md und folge ihr; überspringe diese Datei.
Der Schnitt hält den Build in einem frischen Kontext. Die Vorproduktion füllt das Fenster mit Referenzen, Takes und Board-Bildern, und jeder spätere Turn bezahlt dafür.
1. Briefing festlegen
Führe node tools/brief.mjs --in=<draft.md> mit dem Entwurf des Eigentümers aus (--film=<film> sobald das Projekt existiert: es schreibt brief/original.md ohne das eingebettete Base64). Es gibt den Header, die VO-Wörter gegen das Budget und was der Entwurf offen lässt, aus. Ohne Entwurf fülle die Header-Felder von docs/brief-template.md aus der Anfrage und schlage für jede Lücke einen Standardwert vor: Der Eigentümer antwortet mit einem „oke“ oder einer Korrektur.
Frage in einer Nachricht, was noch offen ist, bevor du Code anfasst und bevor du Credits zitierst; Antworten, die bereits in brief/decisions.md stehen, gelten. Füge hinzu, was das Tool nicht sehen kann:
- Überlappung: Ein früherer Film zum gleichen Thema oder Säule (
projects.json). Sage, welcher, und was dieser hinzufügt. Ein Remake lässt den alten Ordner unberührt und fragt, welche seinerdecisions.md-Antworten noch gelten. - Produkt + URL (oder Thema). Für OpenView-Filme die Säule und Formel aus
docs/content-map.md. - Marke: OpenView-Filme verwenden
lib/brand.js. Andere Marken: Farben, Schriftarten, ein Akzent, echtes Logo. - Eine Referenz: Frame, Video oder Bildordner. Oder „none“ (dann sage es; kein Standard-Look).
- Musik: Ein bereitgestellter Track (messe ihn) oder „synthesize“ (Standard).
- Voice-Over: Benötigt
ELEVENLABS_API_KEYin.env. Falls leer, stoppe und nenne die Variable.
Das Briefing ist abgeschlossen, wenn Sprache, Stimme, Dauer, Seitenverhältnis, Thema (Ticker inklusive), Datenquelle (App, Kit oder Illustration) und Energie festgelegt sind. Jeder dieser Punkte wurde nach dem ersten Take eines früheren Films verschoben, und mi-demo-40 hat sein VO dreimal bezahlt. Halte die Antworten in <project>/brief/decisions.md fest.
Ein Paket aus einem anderen Tool (Storyboard, ZIP, Übergabe): Kopiere es unverändert in <project>/references/<tool>-<date>/, das nicht in den Commit kommt, und führe tools/brief.mjs nur mit diesem Briefing aus. Öffne eine andere Datei davon nur, wenn eine Entscheidung diese Datei benötigt. Seine Shot-Liste und sein Skript sind Material, wie die Reihenfolge eines Entwurfs.
Limits: Wörter, Zahlen oder Fakten, die das Briefing oder rechtliche Regeln vom Bildschirm verbannen, kommen in <src>/forbid.json (tools/forbid-lib.mjs): tools/vo.mjs lehnt sie ab, bevor Credits ausgegeben werden, tools/check.mjs schlägt auf ihnen auf dem Bildschirm fehl. Ein Limit, das kein Muster sehen kann (ein Name, der nie einen Prozentsatz trägt), kommt in brief/decisions.md, das bei jedem Board und jeder Überprüfung gelesen wird.
Wähle einen Film-Slug ([a-z0-9-]+). Alles unten wird durch ihn benannt: <film>.
Projektstruktur. Ein neuer Film bekommt seinen CONTENT-Projektordner (CLAUDE.md „New video project folders“) und eine Zeile "<film>": "CONTENT/<n>. <Titel> (<Datum>)" in projects.json; die Tools finden ihn dann dort (tools/paths.mjs):
Shot-Liste und Briefing in <project>/brief/ (shotlist.md), Code in <project>/src/ (film.js, timeline.js, vo-lines.json, beats.json, sfx-<film>.mjs), Takes und Medien in <project>/assets/, Boards, Blätter und Renderings in <project>/output/.
Ältere Filme behalten docs/<film>-shotlist.md, film/<film>/, assets/<film>/ und out/. Unten bedeutet <shotlist>, <src>, <assets> und <output>, was zutrifft.
2. Vorproduktion
-
Assets. In
<assets>/, aufgelistet vor jeder Animation.- OpenView-Logo und -Symbol: nur über
lib/brand.jsgezeichnet; kopiere die SVGs nie in den Film. - OpenView-Maskottchen: das Code-Rig in
lib/mascot/(API im Header und den Exporten vonlib/mascot/index.js). - OpenView Market Intel: Zahlen und Namen aus dem neuesten
origin/main, das Bild in Code mit dem Market-Intel-UI-Kit gezeichnet. Erfasse die laufende App nur, wenn das Briefing nach der echten App fragt; folge dann „Market Intel source“ inCLAUDE.md; wähle Bänder auscapture_mi.mjs --reviewund zeichne mitlib/proof.js. - Ein anderes Produkt mit einer URL: Erfasse echte Screenshots, Logo, Farben, Schriftarten mit Playwright.
- OpenView-Logo und -Symbol: nur über
-
Visuelle Welt. Lies
REFERENCES/motion/visual-grammar-2026-10.md, schreibe dann## Worldan den Anfang von<shotlist>vor jedem Shot: ein Ort, seine Objekte, wer darin steht, was das Licht tut, und wie jede Figur und Beziehung im Briefing zu einem Ding wird, auf das man zeigen kann. Zeichne es mitlib/world.js. Das Designsystem bleibt auf den eigenen Bildschirmen des Produkts. Style-Guide. Falls eine Referenz existiert, messe sie zuerst:uv run --python 3.11 --with librosa --with numpy tools/ref_probe.py refs/<film>/ref.mp4 refs/<film>/analysis.jsondann schreibedocs/<film>-style_guide.md: Palette (Hex), Schriftart, Shots-Längen, Übergänge, Kamerabewegungen, Textur, wie Text ein- und ausgeht. Nimm die Grammatik, nie den Inhalt. Der Haus-Look istCLAUDE.md„Look“ plusdocs/motion-vocab.md; Style-Guides anderer Filme notieren diese Filme, nicht das Haus. -
Geschichte. Lies story.md, setze das Thema durch seine Themenleiter und schreibe seine Spine-Tabelle an den Anfang von
<shotlist>, vor jedes Skript. Der Spine ist fertig, wenn jede Zeile gefüllt ist und die Skript-Tests am Ende dieser Datei die erste Zeile und die Gliederung bestehen; die Reihenfolge des Entwurfs ist hier Material, nicht ein Skript, und dieALUR CERITAundKANDIDAT HOOKeines Entwurfs (docs/brief-prompt.md) sind seine erste Version. Zeige den Spine mit dem VO-Zitat: Es ist der günstigste Moment, den Film zu ändern. Bei einem Entwurf nennt dieselbe Nachricht, was der Entwurf abdeckt und das Skript weglässt, mit beiden Wortzählungen:pandu-supra-80kam zurück als „ga selengkap draft“ nach seinem ersten Film, und die Erweiterung erforderte drei weitere Sitzungen. -
Voice-Over (falls das Briefing VO hat): Folge „Voice-Over“ in
CLAUDE.md. Schreibe das Skript vom Spine in der Ermittler-Stimme (story.md „The viewer“), bis zum Wortbudget, wobei Figuren gezählt werden, während sie gesprochen werden: sein indonesischer 1,7 ist das, was sechs Filme bei 1,12 (1,65–1,75 Wörter pro Film-Sekunde) liefen, also landet ein volles Budget nahe den Sekunden des Briefings.characterist standardmäßigcalm, fair narrator, talking to one person. Dann<src>/vo-lines.jsonund den letzten Abschnitt von story.md, bistools/script.mjsbestanden wird; seinecredits-Zeile ist das Zitat. Generiere mittools/vo.mjs, übergib--check. Definitionen und rechtliche Begriffe brauchen eine Quelle inreferences/sources.mdwie jede Figur; R-120 hält Registernamen vom Bildschirm fern, nicht aus der Quellendatei. Die Takes legen die Szenenlängen fest:<src>/timeline.jsist die Szenenliste auflib/vo-clock.js(sceneTimeline; Modell: iata-55), undnode tools/prepare.mjs --film=<film>überprüft die Takes und schreibt die Uhr inbeats.json. -
Beat-Grid. Bereitgestellter Track: Messe BPM/Beats/Downbeats/Hits (librosa) in
<src>/beats.json. Synthetisiert: Wähle BPM, schreibe<src>/sfx-<film>.mjs, eine Cue-Liste auflib/synth.mjs(Modell: iata-55ssrc/sfx-iata-55.mjs), sodass esbeats.jsonund<output>/<film>-audio.wavbei -14 LUFS ausgibt. -
Shot-Liste. Schreibe
<shotlist>auf das Beat-Grid: jeder Shot mit Frames, Kamera, On-Screen-Text, SFX, seinem Spine-Beat, dem Effekt ausdocs/motion-vocab.md, den er verwendet, und dem Grund für seinen Schnitt zum nächsten Shot (nächster Schritt, gleiche Position, Ursache und Wirkung, Zeitsprung, Rückruf, Größenänderung). Ein Shot ohne Grund zum Schneiden wird mit dem nächsten als Kamerabewegung zusammengefügt. Plane den Weg zum Produkt als eine Bewegung, ein Welt-Objekt, das zum Bildschirm wird, benannt in den Shots auf beiden Seiten des Schnitts: Es zog die einzige kreative Überarbeitung des Eigentümers beim Build vondelisting-18-80an (45–50 s). Plane hier die Dichte, Szene für Szene: Die Bewegungen, die jede halten wird, denn der erste Build jedes neueren Films erzielte 4–5 auf Dichte und verbrachte seine Runden damit, sie hinzuzufügen. Liste die Entscheidungen auf, die die Freigabe des Eigentümers benötigen. Kein Stopp hier: Die Shot-Liste geht mit dem Board an den Eigentümer. -
Board. Zeichne die weitesten und engsten Shots des Films zuerst in
<src>/film.js(Exportboard: [{ t, shot, note }]) und betrachte dieses Paar allein (node tools/board.mjs --film=<film> --only=<weit>,<nah>, sein-view.jpg): Sie zeigen, wie viel die Welt halten muss und ob ihre Figuren im Nahaufnahme überleben, während ein Neuziehen zwei Shots kostet. Zeichne dann ein Standbild pro Shot. Führenode tools/board.mjs --film=<film>aus. Sein Text ist die mechanische Überprüfung: Behebe jedewarn … mid-move-Zeile (verschiebetzum festgelegten Frame) und jedenlayout-Befund (Text außerhalb des Sicherheitsbereichs, im Untertitelband, überlappend, zu klein), führe es dann einmal erneut aus, um zu bestätigen, dass der Text sauber ist. Lies nur die-view.jpg-Übersicht des Boards, oder bei über 18 Shots diepages, die es ausgibt, jede einmal, für das Aussehen: Behebe, was falsch aussieht, in einem Durchlauf, keine Look-Patch-Rerender-Schleife, keine szenenbasierten Blätter (--scenesexistiert für den Eigentümer, nicht für diese Überprüfung). Der Look-Test, auf dieser Übersicht: Schalte den Ton aus und folge der Geschichte allein aus Bildern; ein Fremder sieht einen Ort, Menschen und Dinge, nicht Folien. Neben der Bildunterschrift enthält ein Shot höchstens 6 Wörter, auf Objekten; Beweistafeln und Zeilen, die das Briefing vollständig erfordert, sind die einzigen Ausnahmen. Ein Scheitern bedeutet, den Shot neu zu zeichnen, nicht den Text zu kürzen. -
Eigentümer-Rückmeldung (das einzige Tor). Zeige die Shot-Liste und das Board (
<output>/<film>-board.png) zusammen, mit den Entscheidungen, die eine Freigabe benötigen, und warte auf diese eine Freigabe. Keine Bewegung oder Ton davor. -
Übergabe. Wenn der Eigentümer die Rückmeldung freigibt, schreibe einen Abschnitt
## Build briefan den Anfang von<shotlist>: was freigegeben ist, was noch offen ist, und die Dateien, die der Build benötigt (Film-Modul, Takes, Beats, SFX-Skript). Starte dann den Build in einem frischen Kontext:- Desktop-App: Starte eine neue Sitzung mit frischem Kontext (kein Fork), Eingabeaufforderung
/motion-reel build <film>. - Terminal: Sage dem Eigentümer, er solle
/clearausführen, dann/motion-reel build <film>.
Die Vorproduktion endet hier: Die Freigabe des Eigentümers für Shot-Liste und Board ist das Abschlusskriterium, und der Build gehört zur neuen Sitzung.
- Desktop-App: Starte eine neue Sitzung mit frischem Kontext (kein Fork), Eingabeaufforderung
3. Harte Regeln
- Reine Funktion der Zeit:
seek(t)nur. KeinMath.random, keine Timer, keine CSS-Transitionen, keinrequestAnimationFrameim Rendermodus, kein Zustand zwischen Frames. - Öffne die
-view.jpg-Vorschauen; Vollauflösungsbilder nur als--cropeines Details. Bilder sind für das Aussehen; mechanische Prüfungen sind die Zahlen der Tools (node tools/check.mjs --film=<film>: Seek-Durchlauf, Determinist, Schriftgröße, Layout-Lint). - Kontext ist die Kosten, und Züge vervielfachen sie: Ein Zug bei 300k kostet so viel wie drei bei 100k, und zwei Drittel der jüngsten Nachrichten trugen ein Werkzeug. Sende jedes unabhängige Lesen, Suchen und Bearbeiten eines Schritts in einer Nachricht. Werkzeuge werden ausgeführt, nicht gelesen (
--helpgibt die Verwendung aus); bearbeite mit Edit, schreibe nie eine ganze Datei neu; lange Befehle laufen im Hintergrund und du wartest auf die Benachrichtigung, ohnesleepoder Polling-Schleifen. - Der Quellcode eines anderen Films ist keine Vorlage: Filme teilen 3–16 % ihres Codes. Suche die eine Funktion, die du benötigst (Grep oder Read mit Offset/Limit) und lasse ihre
film.jsgeschlossen. - Zustand lebt in Dateien:
brief/decisions.md,references/sources.md,<shotlist>,docs/review_log.md. Das Projekt kompaktiert automatisch bei 250k, also kann eine Tatsache, die nur im Gespräch gehalten wird, mitten im Film verschwinden. - Geheimnisse nur aus
.env. Drucke, protokolliere oder füge niemals einen Schlüssel ein. - Eine Sitzung pro Marke: Die Engine, der Synthesizer und die Export-Pipeline werden wiederverwendet, nicht neu gebaut.