/fabrica-videos-reels — vom Drehbuch zum MP4
Skill der Fábrica de Vídeos Agêntica (siehe Skill fabrica-videos). Es ist der Weg "Drehbuch zuerst": Der Kunde genehmigt Drehbuch und Storyboard, bevor aufgenommen wird. Wenn er bereits ohne Drehbuch aufgenommen hat, verwende die Skill fabrica-videos-rapido.
Sprich Portugiesisch, in einfacher Sprache (wer das Video bestellt, programmiert fast nie). Zeige den Fortschritt mit gerenderten Vorschauen, nicht mit Code.
Bevor du Remotion-Code schreibst, lies CLAUDE.md (Regeln des Designsystems, wo jede Datei liegt und die Befehle) und, falls die offiziellen Remotion-Skills installiert sind, die remotion-best-practices.
Das vollständige und genehmigte Beispiel ist das Video Exemplo: roteiros/exemplo*.{md,json} + src/videos/Exemplo.tsx. Kopiere seine Struktur.
Alle Befehle laufen im Terminal, im Stammverzeichnis des Projekts. In den Tabellen unten ist TRABALHO der Ordner trabalho (außerhalb des Git).
0. Finde heraus, in welcher Phase sich das Video befindet
Wähle einen kurzen slug (z.B.: minha-ideia) und schau, was bereits existiert:
| Existiert… | Dann gehe zu |
|---|---|
| nichts | 1. Drehbuch |
roteiros/<slug>.md genehmigt, ohne -animacoes.md | 2. Storyboard |
Storyboard, ohne src/videos/<Nome>.tsx | 3. Bauen |
| fertige Komposition + neue Aufnahme (er sagt, wo er sie gespeichert hat) | 4. Aufnahme |
TRABALHO\out\<slug>-final.mp4 | 5. Lieferung |
Sage in einer Zeile, in welcher Phase du dich befindest, und fahre fort. Phasen 1 und 2 sind Gespräche: Vorschlagen, zuhören, verfeinern; gehe nur mit seiner Zustimmung weiter.
1. Drehbuch → roteiros/<slug>.md
- Erstelle das Drehbuch hier im Gespräch mit dem Kunden. Frage nach: Thema (oder Referenzlinks/-videos), Säule (eines der Markenthemen), Ziel-Länge (30–60 s ≈ 2,5 Wörter/s).
- Struktur wie
roteiros/exemplo.md: Blöcke mit geschätztem Beginn, Sprechtext, Karte; Wörterbuch der Analogien, wenn das Publikum Laien ist; zusammenhängender Text zum Aufnehmen; benötigte Screenshots; Fakten mit Links geprüft. - Stimme (an die Person anpassen; ihre Regeln bleiben bei der Marke): erste Person, kurze Sätze, konkrete Zahlen; Haken in den ersten 3 Sekunden; niemals "revolutionär"/"die Zukunft ist da"; schließt mit einer Frage + CTA. Alarm wird zu Frage, nicht zu Behauptung. Erfinde keine Nachricht.
2. Storyboard → roteiros/<slug>-animacoes.md + roteiros/<slug>.ancoras.json
- Pro Takt (visueller Wechsel alle 2–3 s): Zeit, Satz, was oben erscheint (Bereich 1080×960).
- Verwende Teile aus
src/pecas/wieder, bevor du neue erstellst:RedeNeural+Bisturi(das "Gehirn" der KI),GradeConexoes,LoopPensando,Lupa,ContadorBarra,TrocaPrints,TextoRiscado(Modiriscar/somar),OlhoRiscado,LinhaVersoes; HelferTituloCena,Halo,RotuloMono,apareceinutil.tsx. ancoras.json:{ "cena": "erste darin gesprochene Wörter" }in der Reihenfolge des Sprechens. Vermeide Eigennamen in den Ankern (Whisper macht Fehler: "Qwen"→"quen", "Claude"→"clou", "OpenAPI"→"OpenAI", und auch "Vercel", "MCP", "JSON"). Interne Takte einer Szene (z.B. der Moment des Durchstreichens) werden ebenfalls zu Ankern.
3. Bauen → src/videos/<Nome>.tsx
- Kopiere das Skelett von
Exemplo.tsx: Zod-Schema (Säule, Video, Bildausschnitt,mostrarGuia, Name, Position, Screenshots, Schluss,tempos),TelaDivididaaußen, eine<Sequence>+<Cena>(Fade von 6 Frames) pro Szene,Encerramentovon 2 s am Ende. Registriere insrc/videos/index.tsx, innerhalb von<Folder name="Videos">mitcalculateMetadata(Dauer =duracaoFala+ 2 s). - Jede Szene ist eine eigene Komponente, die
useCurrentFrame()aufruft (rufe niemals Hooks innerhalb von Funktionen eines Objekts/Arrays in der übergeordneten Komponente auf: Der Frame kommt falsch heraus). ImportiereuseCurrentFrame,useVideoConfigundSequenceaussrc\relogio.tsx, nicht ausremotion: Die Frames werden mit 30 pro Sekunde geschrieben und die Uhr kümmert sich um den Rest, wenn das Video mit 60 ausgegeben wird. - Neue Teile gehen nach
src/pecas/(generisch, mit Props), gemäß den Tokens vonsrc/animacoes/tema.ts. - Screenshots und Bilder des Teils (kleine Dateien): Speichere in
public\<slug>\dieses Ordners und führenpm run prepararaus. - Vorläufiger Sprechtext zum Testen vor der Aufnahme: Zeichne den zusammenhängenden Text in
roteiros/<slug>.fala.txt(UTF-8) auf und führenpm run fala -- <slug> roteiros\<slug>.fala.txt→TRABALHO\public\previa\fala-<slug>.mp4(Systemstimme, 1080×960) aus. Dannnpm run legendar+npm run batidas(Abschnitt 4), umsrc/videos/<slug>.tempos.jsonzu generieren, mit der Propvideo="previa/fala-<slug>.mp4". - Überprüfe:
npx tscund das Kontaktblatt mit aktiviertem Leitfaden:npm run folha -- <Id> src\videos\<slug>.tempos.json→TRABALHO\out\folha-<Id>.jpg(1 Frame vom Ende jeder Szene). Betrachte das Bild: Nichts in Rot (oben 270, unten 320, Seiten 96, Buttons rechts), nichts überlappend, Texte passend. - Rendere die Vorschau:
npm run renderizar -- <Id> "trabalho\out\previa-<slug>.mp4" previa(leicht, 540×960; sage, dass es eine Vorschau ist) und sende sie ihm.
4. Echte Aufnahme → Synchronisieren und Einrahmen
- Finde die neue Aufnahme (frage, wo er sie gespeichert hat). Kopiere das Original nach
TRABALHO\originais\(niemals verschieben oder ändern) und konvertiere:npm run converter -- "trabalho\originais\<datei>" <slug>→TRABALHO\public\gravacao-<slug>.mp4(hochkant, H.264, normale Farben, in der Auflösung und den Bildern pro Sekunde der Aufnahme: 4K bei 60 bleibt 4K bei 60, und das Endvideo wird auch so ausgegeben. HDR ist die Ausnahme: wird zu SDR, und der Konverter warnt. Mitate=12am Ende des Befehls werden nur die ersten 12 s konvertiert, für einen schnellen Test). Der Konverter prüft die Datei mitffprobeund, wenn es 4K HDR (aktuelles iPhone) ist, behandelt er HDR mitzscale+tonemap(sonst sind die Farben ausgewaschen). Bei der ersten HDR-Aufnahme jeder Sitzung extrahiere einen Frame aus der Konvertierten und zeige ihn ihm zum Vergleich mit dem Handy. npm run legendar -- "trabalho\public\gravacao-<slug>.mp4"(im Hintergrund, ~1–2 Min) →legendas/gravacao-<slug>.json. Wenn die Aufnahme lange Pausen, Fehler oder wiederholte Takes hat, bereinige sie vor dem Fortfahren (die Skillfabrica-videos-corte): Ab dann ist das Videogravacao-<slug>-limpa.mp4und die Transkription ist die des bereinigten Videos.npm run batidas -- legendas\gravacao-<slug>.json roteiros\<slug>.ancoras.json src\videos\<slug>.tempos.json "<video>". Wenn ein Anker fehlt, lies die Transkription und passe den Satz an. Wenn er die Bedeutung eines Satzes geändert hat, passe die Animation an (z.B.: "nicht nur von einer Person" →TextoRiscado modo="somar"anstatt durchzustreichen) und teile ihm das mit.duracaoFala≤ Dauer des Videos (sonst bleibt ein Augenblick ohne Bild darunter): Mit dem Video am Ende des obigen Befehls begrenztbatidasbereits automatisch; ohne ihn, korrigiere von Hand.- Bildausschnitt (das Gesicht muss zwischen dem Untertitelband, y 985–1125, und der unteren Zone, y 1600, bleiben): Teste den Ausschnitt an ~12 Momenten mit
ffmpeg -ss <t> -i <video> -frames:v 1 -vf "crop=1080:960:0:<offset>" "trabalho\out\enq-<t>.png"und betrachte jedes Bild.enquadramento="50% <offset/960*100>%"(für Quelle 1080×1920). Das ganze Gesicht im Bild das ganze Video über. Das Kinn darf die untere Zone berühren; der Mund niemals. Teste auch, wenn er sich der Kamera nähert, und verwende den größten Offset, bei dem der Kopf nie oben herausragt. - Überprüfe das Namensbanner: Wenn es das Gesicht bedeckt, bleibt es in der oberen Hälfte (das ist bereits der Standard von
TelaDividida). - Endgültiger Render im Hintergrund:
npm run renderizar -- <Id> "trabalho\out\<slug>-final.mp4"; überprüfe Dauer/Auflösung mitffprobeund sende das Video.- Die Qualität, die reinkommt, ist die, die rauskommt.
renderizarliest die Auflösung und die Bilder pro Sekunde der Aufnahme und das Finale wird darin ausgegeben: Aufnahme in 4K bei 60, Ausgabe in 2160×3840 bei 60. Verwende nicht direktnpx remotion renderfür das Finale: Es kommt immer in 1080×1920 bei 30 raus. - Nur mit Parameter reduzieren, und nur wenn er es im Skill-Aufruf anfordert (z.B.:
/fabrica-videos-reels <slug> 1080p):1080preduziert die Auflösung und30fpsreduziert die Bilder pro Sekunde (npm run renderizar -- <Id> "<ausgabe>.mp4" 1080p 30fps). Ohne Parameter nicht reduzieren. - HDR fällt nicht unter die Regel: Remotion zeichnet nur in normalen Farben. Wenn die Aufnahme in HDR kam, sage ihm, dass das Finale in SDR ausgegeben wird.
- Render in 4K bei 60 hat achtmal mehr Bild zu zeichnen als in 1080p bei 30. Warne vorher, dass es dauern wird.
- Die Qualität, die reinkommt, ist die, die rauskommt.
5. Lieferung
- Schließe mit der Skill
fabrica-videos-entregaab (technische Prüfung, Cover, Kontaktblatt undNOTAS.md). Die Punkte unten sind die, die für diesen Ablauf spezifisch sind. - Wenn er später Untertitel in einer Bearbeitungs-App hinzufügen möchte, erkläre, wo er die Untertitel platzieren soll: direkt unter der Trennlinie (in der Farbe der Säule) (grüner Bereich des Leitfadens), maximal 2 Zeilen. Wenn er bereits eingebrannte Untertitel im Video bevorzugt, siehe Skill
fabrica-videos-legendas(BestandteilLegendaQueimada, Positionfaixa). - Weise auf Namen hin, die die Transkription normalerweise falsch schreibt.
- Post-Beschreibung: Wenn er darum bittet, schreibe einen Vorschlag in
NOTAS.md(Aufhänger, 2–3 Sätze mit den genauen Zahlen, eine Frage + denselben gesprochenen CTA, Quelle, bis zu 3 Emojis, 4–6 Hashtags, ohne Übertreibungen, die die Studie nicht stützt). - Registrierung in
entregas\AAAA-MM-DD-<slug>\:NOTAS.md(ID der Komposition, verwendete Befehle, Pfad der Aufnahme und des Finales, Dauer, Bildausschnitt, was er an der Sprache geändert hat),capa.jpgund das Kontaktblatt. Das Endvideo bleibt inTRABALHO\out\. - Nach der Genehmigung entferne die Aufnahme aus
TRABALHO\public\und speichere sie intrabalho\arquivo\AAAA-MM-DD-<slug>\(Remotion kopiert das gesamtepublicbei jedem Render; ein voller Ordner macht alles langsam). Notiere den neuen Pfad inNOTAS.md. - Nie veröffentlichen, planen oder senden. Wer veröffentlicht, ist der Kunde.
Bereits gelöste Fallstricke (nicht wiederholen)
- Halo: Verwende
<Halo>(div mitfilter: blur), nichtbox-shadowauf transparentem Element (wird zu einer dunklen "Pille"). - Hervorhebung mehrerer Wörter:
*10 tarefas*muss als Abschnitt behandelt werden, nicht Wort für Wort (sieheTextoImpacto/Destaque). - Zentrierte Beschriftungen an Punkten (z.B.
v1) benötigen zusätzlichen Spielraum, um den Rand von 96 px nicht zu überschreiten. - PowerShell: Direktes JSON in
--props='{...}'verliert die Anführungszeichen. Speichere in einer Datei und verwende--props=datei.json. - Aufnahme oder Video innerhalb des Projekts landet im Repository: immer in
TRABALHO. - Der Port des Studios ist 3210.
Serien (mehrere Reels zum selben Thema)
- Ein Slug pro Episode (
<serie>-<n>-<thema>) und, wenn der Kunde darum bittet, eine Sitzung pro Episode. Parallele Sitzungen teilen sich denselben Ordner: Jede bearbeitet nur die Dateien ihres Slugs; insrc/videos/index.tsxlies vor dem Bearbeiten erneut und füge nur deine<Composition>hinzu; ändere keine gemeinsam genutzten Teile. - Fakten und Entscheidungen, die für alle gelten (eine Zahl, die sich geändert hat, der CTA, die Säule), müssen gleichzeitig an alle Sitzungen weitergegeben werden. Ohne das hat jedes Video eine andere Regel.
- Serien-Abschlussbild:
src/pecas/TelaFinalReels.tsxanstelle vonEncerramento, 4 s nach der Sprache (Dauer =duracaoFala+telaFinalSeg). Zwei leere 9:16-Bereiche (400×711), die er mit Reels in der Bearbeitungs-App abdeckt: einer für das nächste Kapitel (das letzte kehrt zum ersten zurück), einer für das Reel, das die Serie gestartet hat.
Töne (optional, nur wenn er darum bittet oder bereits genehmigt)
- Vier kurze Töne in einem Ton-Ordner innerhalb von
public(bringe deine eigenen mit, mit klarer Lizenz: Das Repository enthält keine Töne):abertura.mp3(Riser beim Aufhänger, Lautstärke ~0,35),tecla.mp3(bei jedem eingehenden Element, ~0,3),whoosh.mp3(beim Wendepunkt/Zoom, ~0,2),blip.mp3(wenn die Zahl oder die endgültige Antwort kommt, ~0,3). - Jeder Ton ist eine kurze
<Sequence>mit<Audio>von@remotion/media, gebunden an dieselben Zeiten der Szenen; Pfad und Lautstärke stehen in Props des Schemas (leerer String schaltet aus). - Nach dem Render messe die Spitze mit
ffmpeg -i <video> -af volumedetect -vn -f null -(muss unter 0 dB liegen und die Töne unter der Stimme). Du kannst nicht hören: Sage ihm, dass die Hörprüfung bei ihm liegt.
Aufnahme-Lektionen
- Wer ohne Drehbuch aufnimmt, spricht normalerweise Satz für Satz, mit langen Pausen, wärmt sich auf, bevor er beginnt, wiederholt den Satz, den er nicht mochte, und verlässt das Bild am Ende. Die Skill
fabrica-videos-cortelöst das alles. - Es ist üblich, dass die Person beim Aufnehmen die Sprache ändert. Lies die gesamte Transkription, bevor du den Ankern vertraust, und passe Bildschirm und Post-Untertitel an das tatsächlich Gesagte an.
- Wenn die Sprache kürzer ist als das Drehbuch, werden die Details und Zahlen, die daraus weggefallen sind, auf dem Bildschirm geschrieben.
- Beim Austausch einer Tatsache (z.B. einer aktualisierten Zahl) tausche sie überall aus: Sprache, Bildschirm, Titel, Post-Untertitel und Cover.