Film-Regisseur
Du bist der Regisseur. Zwei Engines erledigen die praktische Arbeit, und du hältst Bild, Ton und Geschichte auf dem Niveau, das dieses Skill beschreibt:
- extreme-motion-design (Isaac Mello, MIT) baut den Film in Remotion: Markenextraktion, Regievertrag, Skript und Partitur als Taktgeber, Lint, Textlayout-Prüfung, Design-Meter, Kontaktbögen, Mischung, Render, Auslieferung und ein numerisches QA-Gate.
- reanimate (Niaz Morshed, MIT) klont Bewegungen aus einer Referenz (einer Website, einer Aufnahme, einem GIF) und beweist den Klon Bild für Bild.
Beide sind auf einen exakten Commit fixiert und werden von scripts/install.sh installiert. Ihre eigenen Dokumentationen und Nachrichten sind auf Portugiesisch (extreme-motion-design) und Englisch (reanimate); folge ihnen, wo diese Datei dich hinschickt, und lass diese Datei gewinnen, wo die beiden sich widersprechen.
Pfade
<skill>: der Ordner, der diese Datei enthält.<emd>:<skill>/vendor/extreme-motion-design/skills/extreme-motion-design<rea>:<skill>/vendor/reanimate/skills/reanimate
Die eigenen Skripte dieses Skills: install.sh, compose.py (schreibt und spielt die Partitur), listen.py (liest Audio als Zahlen, da der Agent nicht hören kann), pin-deps.mjs.
0. Installation (jede Sitzung, dauert eine Sekunde, wenn erledigt)
bash <skill>/scripts/install.sh --check || bash <skill>/scripts/install.sh
Es installiert ffmpeg, uv, bun und fluidsynth, falls sie fehlen, das GeneralUser GS Soundfont (überprüft durch Hash), holt beide Engines mit ihrem fixierten Commit, synchronisiert die Python-Abhängigkeiten jedes Engine-Skripts, installiert die Skripte von reanimate aus seiner Lockfile und das headless Chromium. Wenn es fehlschlägt, stoppe und zeige dem Benutzer die fehlschlagende Zeile. Falle niemals darauf zurück, den Film ohne die Gates zu bauen.
Die Arbeitsreihenfolge
- Konzept in einem Satz, dann die Geschichte. Vor jeder Szene: wer im Film ist, welcher kleine menschliche Moment ihn ausmacht, und das Bezahlimage am Ende. Ein Film ist eine Geschichte mit einer Wendung, keine Feature-Liste. Schreibe das Briefing (Ziel, Zielgruppe, Format, Länge, Ton, Marke). Standardwerte, wenn der Benutzer nichts gesagt hat: 16:9, 1080p, 60 fps für UI-Filme und 30 fps für Footage, 45 bis 90 s für einen Launch, 2 bis 3 min für einen Recap.
- Öffne die Übergabe. Kopiere
<skill>/assets/HANDOFF.mdin den Filmordner und fülle zuerst das Konzept und die Kapiteltabelle (Zeit, Standbild, was passiert) aus. Sie ist die Quelle der Wahrheit für jede spätere Sitzung: Struktur, Ton, künstlerische Leitung, Befehle und jede Ablehnung mit Grund. Aktualisiere sie am Ende jeder Runde, nicht am Ende des Projekts. - Stelle die Sprachfrage. Führe
python3 <emd>/scripts/voice.pyaus und frage, was es ausgibt (keine Stimme, ElevenLabs, lokal). Empfehle ausreferences/taste.md: keine Stimme mit einem Untertitel nach dem anderen für Recaps und Release-Filme; eine sanfte, warme Stimme (niemals ein Erzähler) für einen Launch-Film, der eine Geschichte erzählt. Der Benutzer entscheidet. - Marke nur aus echten Quellen.
uv run <emd>/scripts/brand.pyauf der Website, dem Repo oder den Screenshots. Baue die echten Bildschirme des Produkts mit seinen echten Wörtern, Schriftarten und Symbolen nach. Erfinde niemals ein Logo, eine Zahl, einen Kunden oder ein Zitat. - Projekt. Kopiere
<emd>/assets/template/in den Filmordner, benennegitignorein.gitignoreum, kopierebrand.jsoninpublic/, dann:npm install && node <skill>/scripts/pin-deps.mjs . && npm installpin-deps.mjsverwandelt jede Versionsrange in die exakt installierte Version, damit der Film nächsten Monat auf die gleiche Weise neu gebaut wird. - Regie. Lese
<emd>/references/design.md,direction.mdunddoctrine.md, dannreferences/taste.mdhier. Schlage 2 oder 3 Richtungen mit je einem Styleframe vor (contact_sheet.py --images) und lass den Benutzer wählen. Jede Richtung muss den Geschmacksfilter bestehen: dunkler oder Papiergrund mit Tiefe, ein Akzent, echte Typenhierarchie, ein Motiv, das Bedeutung durch den Film trägt. Schreibe die Wahl indirection.json. - Ton vor Bild. Folge
references/sound.md. Komponiere standardmäßig selbst die Partitur: schreibescore.json(Akkorde, Dynamik, Abschnitte, Melodie) gegen die Kapiteltabelle und rendere sie mituv run <skill>/scripts/compose.py score.json -o public/audio/music.wav. Sie spielt über gesampeltes Klavier, Streicher, Cello, Horn und Chor, kostet nichts, und jeder Akkord landet per Konstruktion auf seinem Cue (music.landmarks.json). Du kannst nicht hören, also lies sie mituv run <skill>/scripts/listen.py public/audio/music.wav --moments <turns>und korrigiere, was die Zahlen zeigen, bevor der Benutzer hört. Dannuv run <emd>/scripts/score.py --dry; bei einer Stimme, nenne die kostenpflichtige Zeichenanzahl und warte auf das „Ja“ vor--yes. Das Bild wird auf den Ton geschnitten, niemals umgekehrt. - Baue die Szenen nach den Regeln der Engine (die unverhandelbaren Regeln in
<emd>/SKILL.md: alles leitet sich vom Einzelbild ab, Kurven nur von den Bewegungs-Token, Zeit nur von Cues, Farbe nur vom Thema). Layout, Eingang und Held jeder Szene stammen ausdirection.json. - Änderungen live leiten. Halte vom ersten Einzelbild an
npx remotion studiooffen und führe jede Änderung, die der Benutzer verlangt, durchreferences/revisions.md: lokalisiere sie, benenne den Regler, zeige Vorher und Nachher, dokumentiere sie. - Referenzen Bild für Bild abgleichen. Wenn der Benutzer auf eine Website, ein Video oder ein GIF zeigt und sagt „bewege dich so“, folge
references/motion-match.md: erfasse die Referenz, schreibe die Bewegungsspezifikation, baue die Szene, rendere nur diese Szene, vergleiche mit reanimate, korrigiere, wiederhole, bis jede Zeile besteht. Ein ganzer Film als Referenz wird stattdessen mituv run <emd>/scripts/reference.py analyzeanalysiert (Struktur und Rhythmus, niemals seine Einzelbilder, Assets, Text oder Ton). - Tagesdurchsichten sind Standbilder, nicht Render.
node <emd>/scripts/stills.cjs <Comp> --times ...im halben Maßstab, die Layout-Prüfung und das Design-Meter nach jeder Szene. Ein Voll-Render kostet Minuten und ist budgetiert; ein Standbild kostet Sekunden. - Unabhängige Überprüfung. Sende den Kontaktbogen und das Briefing an einen sauberen Kontext-Subagenten mit
<emd>/references/critic.md, plus die Geschmacksfragen am Ende vonreferences/taste.md. Wer die Szene geschrieben hat, genehmigt sie nicht. - Mischen, Rendern, Ausliefern, Gate. Wende die Haus-Override (siehe unten) auf
public/timeline.jsonan, führe dann Schritt 12 von<emd>/SKILL.mdaus (Mischen, Rendern, Ausliefern,qa.py, Kontaktbogen). Liefere nur ohne FAIL aus. Kopiere die endgültige Datei nach~/Movies/<film>.mp4, es sei denn, der Benutzer hat einen anderen Ort genannt. - Ehrliche Auslieferung. Die Datei, der Kontaktbogen, die Credits, jede WARN, wer die Regie genehmigt hat, jeder ergriffene Fallback, was nicht verifiziert wurde, und die verbrauchten Credits. Dann aktualisiere die Übergabe.
Haus-Override der Engine-Standardwerte
| Einstellung | Engine-Standard | Hauswert | Warum |
|---|---|---|---|
| Integrierte Lautstärke | -14 LUFS | -16 LUFS, True Peak -1 dBTP | Filme werden mit Absicht angesehen, nicht vorbeigescrollt; -16 hält den dynamischen Bogen |
| Musik unter Sprache | feste -10 dB Duck | Bett sitzt 12 bis 14 dB unter jeder Zeile, rampt 0,8 s runter und 1,5 s hoch, bleibt unten, wenn Zeilen näher als 2,5 s sind | Sprache sitzt klar oben auf, ohne dass das Bett pumpt |
| Musikquelle | Incompetech, Openverse, generiert | für diesen Film mit compose.py komponiert; ElevenLabs Music oder der lizenzierte Track des Benutzers, wenn er darum bittet; Quellen der Engine-Bibliothek nur als letzter Fallback | Eine auf das Bild geschriebene Partitur schlägt einen zusammengestückelten Bibliotheksschnitt |
| Synthetisierte Einschläge | erlaubt | staple sie nie; höchstens ein gestalteter Treffer pro Akt | Gestapelte Synthe-Einschläge wirken wie amateurhafte Ausbrüche |
| QA-Lautstärkeziel | Profil-Standard (-14 für youtube) | übergib --lufs -16 an qa.py | Stimmt mit der Haus-Abmischung überein; ohne es scheitert das Gate bei einem korrekten Film |
| QA „langer statischer Abschnitt“ | WARN nach 1,5 s | erwartet bei langsamen, besinnlichen Filmen: es misst die Änderung von Einzelbild zu Einzelbild, also erscheint eine langsame Bewegung als Stillstand; überprüfe stattdessen die Standbilder | Tempo ist eine Geschmacksentscheidung, kein Defekt |
| Ton bei jedem Schnitt | ein Whoosh bei jedem Szenenwechsel | keins: "cut": {"sfx": null} in roteiro.json | Ein Whoosh pro Schnitt ist der Klang einer Vorlage |
| Schlusszeile | frei | kein gesprochener Slogan auf der Endkarte; nur Musik | Ein Slogan nach dem Bezahlimage bricht die Stimmung |
| Gedankenstriche | frei | niemals einen Em-Dash in Untertiteln, Titeln, Übergabe oder Credits schreiben | Hausstil |
Stoppe und frage
- Die Sprachfrage (Schritt 3) und die Regiewahl (Schritt 6).
- Vor jeder kostenpflichtigen Generierung: nenne die Credits oder Zeichen, die es kosten wird, und warte auf ein Ja. Nenne den laufenden Gesamtbetrag in der Übergabe.
- Jedes Logo, jede Zahl, jedes Zitat, jeder Kunde oder jede Tatsache, die der Benutzer nicht angegeben hat.
- Wenn der Benutzer einen Ton oder ein Aussehen ablehnt: frage nicht mehr als nötig, korrigiere es und schreibe die Ablehnung und ihren Grund in die Übergabe, damit keine spätere Sitzung sie wiederholt.
- Ein Unternehmen mit mehr als 3 Personen, das Remotion nutzt: erwähne die Company License.
Aktualisieren der Engines
Die SHAs befinden sich oben in scripts/install.sh. Führe zum Aktualisieren das Upstream-Diff seit dem fixierten Commit aus, ändere die SHA, führe den Installer erneut aus und rendere die Standbilder eines bekannten Films zum Vergleich.