Was macht stanglivideo?
Ein Film, der aussieht, als hätte das Produkt ihn gemacht, sich im Takt bewegt und richtig klingt: Jeder Sound auf seinem Frame, jedes Wort auf dem Bildschirm lang genug zum Lesen, nichts außerhalb des Bildes. Aus Code mit Remotion erstellt, bleibt er editierbar.
Pfade unten beziehen sich auf den Ordner dieser Fähigkeit, sofern sie nicht mit einem Filmprojektpfad beginnen. $PY ist das Python, das der Doktor ausgibt (das .venv der Fähigkeit).
Jeder Durchlauf beginnt hier
-
Doktor. Erster Durchlauf (kein
.venvoder keinetaste.mdin diesem Ordner):node scripts/doctor.mjs --setup. Es erstellt.venv, installiertrequirements.txtund erstellttaste.mdaustaste.example.md. Spätere Durchläufe:node scripts/doctor.mjs. Es prüft Node 18+, Python 3.10+ mit numpy und scipy, ein vollständiges ffmpeg und die Begleitfähigkeit. Wenn Node selbst fehlt, kann der Doktor nicht laufen: Sag es und gib die Installationszeile unten. -
Sage dem Benutzer klar, was fehlt. Für jedes FEHLER: eine kurze Zeile, was fehlt, warum die Fähigkeit es braucht, und der genaue Befehl, um es auf seinem System zu installieren. Dann warte, bis er sagt, dass es erledigt ist, und führe den Doktor erneut aus.
Fehlt Warum Windows Mac Node 18+ baut und rendert den Film winget install --id OpenJS.NodeJS.LTS -ebrew install nodePython 3.10 bis 3.13 bewertet den Sound und führt die Prüfungen durch winget install --id Python.Python.3.12 -ebrew install [email protected]ffmpeg (vollständiger Build) Analyse, Kodierung, Lautstärkeprüfungen winget install --id Gyan.FFmpeg -ebrew install ffmpegBegleitfähigkeit Remotion-API-Regeln npx skills add remotion-dev/skillsgleich Nach der Installation von Node, Python oder ffmpeg muss der Benutzer ein neues Terminal öffnen, damit sie im PATH sind, und dann erneut
node scripts/doctor.mjs --setupausführen.GEMINI_API_KEYist optional: Erwähne es nur, wenn tatsächlich ein generiertes Bild oder ein Loop gewünscht wird. -
Begleitfähigkeit (erforderlich).
remotion-best-practices, offizielle Fähigkeiten von Remotion. Nicht hier gebündelt. Verwende sie für Fragen zur Remotion-API (Medien, Schriftarten, Untertitel, Rendereinstellungen). -
Geschmack. Lese
references/base-rules.mdundtaste.md(erstelle sie austaste.example.md, falls sie noch fehlt). Dies sind die ständigen Regeln des Benutzers; bei Konflikten gewinnttaste.md.
Unverhandelbar
- Das Design des Produkts gewinnt. Farben, Schriftart, Komponenten, Logo, Stimme und Behauptungen stammen vom Produkt. Übertrage niemals den Geschmack eines anderen Produkts, einschließlich allem in dieser Fähigkeit, das ihrem Design widerspricht.
- Jeder Frame ist eine reine Funktion der Zeit. Keine CSS-Übergänge oder Keyframes, keine Timer, kein
Date.now(), keinMath.random(gesäterrand), kein zwischen Frames übertragener Zustand. - Eine einzige Timing-Quelle.
src/films/<film>/cues.jsonjedes Films enthält alle Cue-Zeiten. Das TSX des Films importiert es und die Bewertung liest es (sound/cues.py). Keines von beiden enthält jemals eine Literalzeit. - Messen, nie raten. Beats aus dem Audio, Positionen aus dem Debug-Overlay, Farben aus dekodierten Pixeln.
- Ehrliche Behauptungen. Zeige nur, was das Produkt tut. Die Verbotsliste wird vom Benutzer genehmigt, bevor der Text geschrieben wird.
- Vorher fragen, bevor du irgendetwas committest, pushst oder veröffentlichst, und vor jedem kostenpflichtigen API-Aufruf.
- Keine Geviert- oder Halbgeviertstriche in Texten, Dateien oder Nachrichten.
Workflow und Genehmigungstore
Jeder STOPP ist ein hartes Tor: Fragen (AskUserQuestion), warten und die Antwort im BRAND.md des Projekts aufzeichnen.
- Aufnahme (erforderlich). Frage nach 2 bis 5 Videos, die dem Benutzer gefallen, jeweils eine Zeile, was ihnen gefällt, einschließlich des Sounds. Führe
node scripts/intake/intake.mjs <Projekt>/intake <Videos...>aus und lese jedes Blatt. Siehe references/intake.md. - Entdeckung. Lerne das Produkt kennen: Regeldateien, Tokens (hell und dunkel), Komponenten, Logo, Landingpage, echte Screens und Texte, Behauptungen. Siehe references/discovery.md.
- Interview. Das Briefing und die Zutaten. Siehe references/interview.md. Dann:
- STOPP: hell oder dunkel. Pro Film, wenn es mehrere gibt; ein Set mischt beide, wenn das Produkt beide Themes hat.
- STOPP: verbotene Behauptungen. Zeige, was die Filme behaupten werden, und die Liste dessen, was sie niemals sagen dürfen (aus dem Code, der Website und dem Benutzer). Warte auf die Genehmigung beider Listen.
- Marken-Kit. Fülle
templates/BRAND.mdin das Projekt. Jede Regel zitiert ihre Quelle. - Musik. Durchsuchen und Kandidaten messen. STOPP: Musikauswahl. Siehe references/music.md.
- Geschichte. Fülle
templates/film-prompt.md; schreibe den Beat-Plan alscues.json. Siehe references/story.md und references/ingredients.md. - Projekt.
node scripts/new-project.mjs <Verz>,npm install. Ein Kit insrc/kit/; ein Ordner pro Film. Siehe references/engine.md. - Storyboard. Baue die Szenen, rendere 5 bis 8 Standbilder pro Film (im Projekt:
node scripts/stills.mjs), kachel sie. STOPP: Storyboard-Genehmigung vor jedem vollständigen Render. Siehe references/review.md. - Render. Im Projekt:
node scripts/render.mjs <Composition> out/<film>.mp4(Sicherheit eingebaut). Kontaktbogen, Aussehen, Beheben. - Bewertung. Im Projekt:
sound/scores/<film>.pyauscues.json;$PY sound/render.py <Film>. Siehe references/sound-rules.md. - Tor (obligatorisch). Im Projekt:
$PY scripts/gate.py <Film>. Nichts gilt als fertig, bis es bestanden ist. Siehe references/render.md. - Auslieferung. Pfade, Längen, Lautstärke, Spitzenwert, Testergebnis, was geändert wurde. Behalte jede Version.
Das Sync-Tor
- Whooshes werden platziert an ihrem Peak auf dem schnellsten Frame der Bewegung (
align="peak";kit/speed.tsfindet den schnellsten Frame einer Kamerabewegung; einE.out-Eingang ist am schnellsten an seinem Anfang, einE.exit-Verlassen an seinem Ende). - Pops landen auf dem Frame, auf dem das Element landet. Chings auf dem Frame, an dem die endgültige Zahl erscheint.
- Risers enden auf dem Schlag (
align="end"). - Jeder Sound trägt ein Label, das sein On-Screen-Ereignis benennt.
- Nach jedem Mix:
sound/check.py(kein Sound vor seiner Bildänderung),scripts/final-check.py(-14 LUFS innerhalb von 1 LU, wahrer Spitzenwert -2 dBFS oder niedriger, Lautstärkebereich 4 LU oder mehr, keine Stille, Bild identisch mit dem stummen Render, gleiche Längen) undscripts/verify.py, alle ausgeführt vonscripts/gate.py. Eine Flagge wird korrigiert, indem der Sound (oder der Cue) verschoben wird, niemals indem er ausgenommen wird, ohne sein Blatt anzusehen.
Geschmacksgedächtnis
references/base-rules.mdwird mit der Fähigkeit ausgeliefert: Korrekturen aus echten Filmen, als allgemeine Regeln.taste.md(in .gitignore, austaste.example.md) gehört dieser Maschine. Jede neue Korrektur, die der Benutzer gibt, wird dort als allgemeine Regel eingetragen, bevor du den Film reparierst, formuliert, so dass sie das Problem in jedem Film verhindert hätte. Lies sie zu Beginn jedes Durchlaufs.- Eine Regel, die für mehrere Filme gilt, kann per Pull-Request zu dieser Fähigkeit in
base-rules.mdaufgenommen werden, niemals durch eine stille Bearbeitung.
Sicherheit (in die Skripte eingebaut)
templates/project/scripts/safety.mjs, verwendet von jedem Bundle und Render: Freier Speicher wird zuerst geprüft (mindestens 10 GB), maximal zwei Render laufen gleichzeitig, temporäre Bundles werden nach jedem Job gelöscht und veraltete davor. Rendere mit Gleichzeitigkeit 1 auf einem Rechner mit wenig Speicher. Stoppe nur Prozesse, die du gestartet hast.
Optionale Modi
- Generierte Medien. Nur für das, was Code nicht zeichnen kann: echte Fotos, fotografische Texturen, Ausschnitte und gefilmte Hintergründe (Seide, Flüssigkeit, Licht), wenn der Benutzer einen echten gefilmten Look möchte.
scripts/gemini/image.mjsnimmt Referenzbilder, damit die Ausgaben zu einem gewählten Look passen, plus Seitenverhältnis, Größe, Größenänderung und Chroma-Key;scripts/gemini/video.mjserstellt Veo-Clips aus einem farblich angepassten ersten Frame (oder nativen Loops). Schlüssel vonGEMINI_API_KEYnur in der Umgebung; jeder Aufruf druckt seine Kosten und läuft nur nach einem Ja des Benutzers. Siehe references/gemini.md. - Medienwerkzeuge (kostenlos, jeder Clip).
scripts/media/loop.pyverwandelt einen Clip in einen nahtlosen Hintergrund-Loop (Nahtsuche, exakte Überblendung, Interpolation auf die Bildrate des Films, Loop plus Standbild plus Standbildsequenz plus Grenzblatt);LoopBackgroundim Kit platziert es unter der Bewegungsebene aus dercues.jsondes Films.scripts/media/clip.pyprüft, kodiert neu in das Projektformat, beschneidet Kanten und extrahiert Standbilder oder ein Blatt.scripts/media/imgpost.pykeyt und ändert die Größe von Bildern. - Aktualisierung. Wenn der Benutzer fragt: Untersuche prompt-motion.com, skillry.dev und das awesome-opus5-5-videos-Repo auf neue Einträge und schlage Referenzaktualisierungen per PR vor. Siehe references/refresh.md.
Qualitätsuntergrenze (immer)
- Nur die eigenen Oberflächen, Farben, Ränder und Schattierungen des Produkts. Keine erfundenen Paneele oder Farbtönungen.
- Lesbar in der Auslieferungsgröße. Weniger Wörter schlagen kleinere Wörter. Zeilen, die Leute lesen müssen, erscheinen mit etwa 0,2 s pro Wort und halten 2 s oder länger.
- Jede Karte und das Abschlusszeichen vollständig innerhalb des Rahmens für jeden Frame jeder Bewegung.
- Halte jede Einstellung 5 bis 6 s mit einem langsamen Push; wenn es sich hektisch anfühlt, schneide einen Bildschirm, anstatt zu beschleunigen.
- Text wird niemals von einem Cursor oder Chip verdeckt, kreuzt niemals anderen Text, zentriert sich niemals neu, während er aufgebaut wird.
- Auf jedem Beat passiert etwas; Szenengrenzen landen auf Takten; der letzte Frame eines Loops ist gleich seinem ersten.
- In einem Set teilen keine zwei Filme eine Struktur; alles, was nebeneinander gehalten wird, ist exakt zentriert.
- Keine Effekte, die die Sprache des Produkts nicht verwendet: Glühen, Partikel, Klickringe, federnde Verlangsamung, Shader.
Wissen
- references/method.md: Wie starke Code-Filme gebaut werden, Engines, Handwerksregeln.
- references/prompt-lessons.md: Wie die besten Prompts geschrieben werden.
- references/sound-rules.md: Gemessene Soundregeln und die Sync-Fix-Regeln.
- references/pitfalls.md: Festplatten-, Speicher-, Render-, Code- und Sound-Fehler und -Behebungen.
- references/reference-videos.md: Referenzvideos und was jedes lehrt.
- references/base-rules.md: Der ausgelieferte Geschmack.
Fallen, die echte Zeit kosten
- Remotion-Standbilder leiten keine Konsolenprotokolle weiter: Drucke Messungen in den Frame (
kit/debug.tsx). npx remotion stillbündelt bei jedem Aufruf neu: Verwendescripts/stills.mjs(ein Bundle, viele Frames).- Remotions gebündeltes ffmpeg hat kein
tmix,selectodertile: Verwende das System-ffmpeg, das der Doktor geprüft hat. - Farbbereich: Dekodiere Frame 0 jeder Auslieferung und überprüfe es (
verify.py --bg); ein mit begrenztem Bereich gelesener Master als voller Bereich hebt dunkle Hintergründe auf Grau an. interpolateColorskanncolor-mix()nicht parsen: Hex für alles, was animiert wird.- Asynchrone Bildkomponenten können in einem Frame leer rendern: Verwende Remotion
<Img>. - Ein aus der Zeit berechneter Index ist -1 kurz vor seinem Abschnitt: Begrenze ihn (
safeIndex). will-changeauf alles, was die Kamera skaliert, macht seinen Text unscharf.- Eine Wort-Enthüllungsmaske schneidet die letzten Buchstaben ohne Polsterung ab: Verwende
kit/components.tsxWordReveal. - Videodekodierung innerhalb von Rendern ist unzuverlässig: Konvertiere Loops in Bildsequenzen.