Communitygithub.com

hsnrique/film-director

Regie für kinematografische Filme, die als Code erstellt werden (Remotion und React): Launch-Filme, Release-Recaps, Markenfilme, Produkt-Erklärvideos, Trailer, Reels. Es bringt den Geschmack (Ton zuerst, eine durchgehende Partitur, zurückhaltende Bewegung, ein Untertitel nach dem anderen), die Arbeitsreihenfolge und die Einzelbild-Verifikation gegen jede Bewegungsreferenz mit und steuert zwei verankerte Engines, die den Bau und die Messung übernehmen.

Was ist film-director?

Dieses Skill verwandelt einen KI-Agenten in einen echten Filmregisseur für codebasierte Videos mit Remotion und React. Es legt eine strenge, filmische Arbeitsweise fest: vom Konzept und einer einzigen Satz-Beschreibung über die schrittweise Entwicklung bis zur finalen Auslieferung mit Qualitätskontrolle. Der Regisseur nutzt zwei spezialisierte Engines – extreme-motion-design für den gesamten Produktions-Workflow (inklusive Brand-Extraktion, Skript, Partitur, Layout-Prüfung, Rendering und QA) und reanimate für die Einzelbild-Überprüfung gegen eine beliebige Bewegungsreferenz. Das Skill definiert alles, vom Schreiben einer durchgehenden Partitur (über `compose.py`) und der Verwendung von Untertiteln bis hin zu spezifischen Hausregeln (z. B. -16 LUFS, keine übertriebenen Soundeffekte, keine Schlusszeile auf der Endkarte). Es ist für macOS/Linux mit Node 18+, git und ffmpeg optimiert und unterstützt optionale, kostenpflichtige Dienste wie ElevenLabs. Entwickler nutzen es, um professionelle, kinoreife Videos zu erstellen, die sich von amateurhaften oder KI-generierten Produktionen abheben.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hsnrique/film-director/tree/HEAD/skills/film-director

In Ihrer bevorzugten KI fragen

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

Dokumentation

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

  1. 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.
  2. Öffne die Übergabe. Kopiere <skill>/assets/HANDOFF.md in 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.
  3. Stelle die Sprachfrage. Führe python3 <emd>/scripts/voice.py aus und frage, was es ausgibt (keine Stimme, ElevenLabs, lokal). Empfehle aus references/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.
  4. Marke nur aus echten Quellen. uv run <emd>/scripts/brand.py auf 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.
  5. Projekt. Kopiere <emd>/assets/template/ in den Filmordner, benenne gitignore in .gitignore um, kopiere brand.json in public/, dann:
    npm install && node <skill>/scripts/pin-deps.mjs . && npm install
    
    pin-deps.mjs verwandelt jede Versionsrange in die exakt installierte Version, damit der Film nächsten Monat auf die gleiche Weise neu gebaut wird.
  6. Regie. Lese <emd>/references/design.md, direction.md und doctrine.md, dann references/taste.md hier. 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 in direction.json.
  7. Ton vor Bild. Folge references/sound.md. Komponiere standardmäßig selbst die Partitur: schreibe score.json (Akkorde, Dynamik, Abschnitte, Melodie) gegen die Kapiteltabelle und rendere sie mit uv 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 mit uv run <skill>/scripts/listen.py public/audio/music.wav --moments <turns> und korrigiere, was die Zahlen zeigen, bevor der Benutzer hört. Dann uv 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.
  8. 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 aus direction.json.
  9. Änderungen live leiten. Halte vom ersten Einzelbild an npx remotion studio offen und führe jede Änderung, die der Benutzer verlangt, durch references/revisions.md: lokalisiere sie, benenne den Regler, zeige Vorher und Nachher, dokumentiere sie.
  10. 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 mit uv run <emd>/scripts/reference.py analyze analysiert (Struktur und Rhythmus, niemals seine Einzelbilder, Assets, Text oder Ton).
  11. 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.
  12. 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 von references/taste.md. Wer die Szene geschrieben hat, genehmigt sie nicht.
  13. Mischen, Rendern, Ausliefern, Gate. Wende die Haus-Override (siehe unten) auf public/timeline.json an, führe dann Schritt 12 von <emd>/SKILL.md aus (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.
  14. 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

EinstellungEngine-StandardHauswertWarum
Integrierte Lautstärke-14 LUFS-16 LUFS, True Peak -1 dBTPFilme werden mit Absicht angesehen, nicht vorbeigescrollt; -16 hält den dynamischen Bogen
Musik unter Sprachefeste -10 dB DuckBett 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 sindSprache sitzt klar oben auf, ohne dass das Bett pumpt
MusikquelleIncompetech, Openverse, generiertfü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 FallbackEine auf das Bild geschriebene Partitur schlägt einen zusammengestückelten Bibliotheksschnitt
Synthetisierte Einschlägeerlaubtstaple sie nie; höchstens ein gestalteter Treffer pro AktGestapelte Synthe-Einschläge wirken wie amateurhafte Ausbrüche
QA-LautstärkezielProfil-Standard (-14 für youtube)übergib --lufs -16 an qa.pyStimmt mit der Haus-Abmischung überein; ohne es scheitert das Gate bei einem korrekten Film
QA „langer statischer Abschnitt“WARN nach 1,5 serwartet bei langsamen, besinnlichen Filmen: es misst die Änderung von Einzelbild zu Einzelbild, also erscheint eine langsame Bewegung als Stillstand; überprüfe stattdessen die StandbilderTempo ist eine Geschmacksentscheidung, kein Defekt
Ton bei jedem Schnittein Whoosh bei jedem Szenenwechselkeins: "cut": {"sfx": null} in roteiro.jsonEin Whoosh pro Schnitt ist der Klang einer Vorlage
Schlusszeilefreikein gesprochener Slogan auf der Endkarte; nur MusikEin Slogan nach dem Bezahlimage bricht die Stimmung
Gedankenstrichefreiniemals einen Em-Dash in Untertiteln, Titeln, Übergabe oder Credits schreibenHausstil

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.

Verwandte Skills