Communitygithub.com

Vertikaler Reel-Schnitt, Schritt 3: 18 Motion-Effekte

Füge vertikalen Talking-Head-Videos mit Remotion 18 Motion-Graphics-Effekte hinzu: Glas-Karten, freigestellte Sprecher mit Grafiken dahinter, Effekte passend zum Gesagten und eine renderfertige Schnittliste.

Was ist Vertikaler Reel-Schnitt, Schritt 3: 18 Motion-Effekte?

Rezept Vertikaler Reel-Schnitt, Schritt 3 (der Feinschliff). video-effects liefert ein Remotion-Projekt mit 18 Effekten für 1080x1920-Talking-Head-Material und einen Skill, der die Aufnahme vorbereitet, Effekte passend zu gesprochenen Stichworten wählt, das Schnitt-JSON schreibt, Standbilder prüft und rendert. Die Pipeline stellt den Sprecher frei, damit Grafiken hinter ihm liegen können.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add JesseEisenbart/video-effects-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

Videoeffekte

Dieses Repository ist ein Remotion-Projekt mit 18 Effekten für vertikales (1080 × 1920, 30 fps) Talking-Head-Material. Jeder Effekt ist eine React-Komponente, die den Take des Benutzers mit einem Overlay abspielt: ein Zoom, ein Ausschnitt des Sprechers mit Grafiken dahinter, ein Chatfenster, ein Magazincover und so weiter. Sie bereiten den Take einmal vor, schreiben eine Cuts-Liste in src/edit/edit.json, prüfen Standbilder und rendern.

Einheiten sind überall Frames. Frame = Sekunden × 30.

1. Einrichtung

npm install
pip install -r requirements.txt     # numpy, pillow
ffmpeg -version                     # muss im PATH sein

Prüfen Sie uname. Die beiden Vision-Schritte (tools/matte, tools/face) laufen nur unter macOS und benötigen die Xcode Command Line Tools (xcode-select --install installiert swiftc). Unter Linux oder Windows:

  • Erstellen Sie selbst Pro-Frame-Personenmasken: 8-Bit-Graustufen-PNGs, eine pro Frame, benannt 0000.png, 0001.png, ..., in der Größe des Takes, Person weiß auf schwarz. Jedes Segmentierungstool funktioniert (rembg, MediaPipe, eine Segment-Anything-Pipeline, ein gekeyter Greenscreen).
  • Fahren Sie dann mit der Pipeline ab scripts/make-fg.py (Abschnitt 2, Schritt 3) fort.
  • Setzen Sie face von Hand: Rendern Sie ein Standbild des Takes (ffmpeg -ss 2 -i take.mp4 -frames:v 1 still.png), betrachten Sie es und schreiben Sie { "x": <Gesichtsmitte>, "y": <Oberkante Gesicht>, "mouthY": <Mundlinie> } in 1080 × 1920 Pixel.

Um die Effekte ohne Videomaterial zu sehen, erstellt npm run sample einen synthetischen Take in public/sample/, dann öffnet npm run studio Remotion Studio mit der FxShowcase-Komposition (alle 18 nacheinander).

2. Take vorbereiten

Fragen Sie nach der Quelldatei. Sie kann jede Größe oder Bildrate haben; das Skript schneidet auf 9:16 zu und konvertiert auf 30 fps.

scripts/prepare-take.sh path/to/input.mov <name>      # macOS, schreibt public/takes/<name>/

Was es der Reihe nach tut (führen Sie die Schritte auf anderen Betriebssystemen von Hand aus):

  1. ffmpeg transkodiert nach public/takes/<name>/take.mp4 (1080×1920, 30 fps, Audio erhalten).
  2. tools/matte take.mp4 masks/ schreibt eine Personenmaske pro Frame (Apple Vision). Wird bei erster Verwendung mit swiftc kompiliert.
  3. python3 scripts/make-fg.py take.mp4 masks/ fg/ erstellt zeitlich geglättete, weichgezeichnete RGBA-Ausschnitte, fg/NNNN.webp.
  4. python3 scripts/make-sticker-mattes.py fg/ sticker/ bäckt den weißen Stickerrand + Schatten ein, der von Paper Cutout verwendet wird.
  5. tools/face take.mp4 gibt die mittlere Gesichtsposition als JSON aus.
  6. Schreibt public/takes/<name>/source.json, das FxSource-Objekt für den Edit:
{ "video": "takes/<name>/take.mp4", "matte": "takes/<name>/fg", "sticker": "takes/<name>/sticker",
  "frames": 1830, "face": { "x": 540, "y": 610, "mouthY": 930 }, "continuous": true }

frames ist die Anzahl der Ausschnittdateien. Pfade sind relativ zu public/. public/takes/ und public/sample/ sind in gitignore, sodass nichts Persönliches eingecheckt wird.

Die Schritte 2 bis 4 dauern einige Minuten pro Minute Videomaterial. Führen Sie sie einmal pro Take aus.

3. Wörter und deren Zeitangaben ermitteln

Effekte setzen auf gesprochene Cues auf. Sie müssen also wissen, was wann gesagt wird. Das Skill enthält keinen Transcriber. Fragen Sie, ob der Benutzer ein Transkript mit Wortzeitmarken hat; wenn nicht, schlagen Sie eines vor (whisper take.mp4 --word_timestamps True oder ein beliebiges Tool, das Wortzeitangaben liefert). Falls es keine Möglichkeit gibt, Zeitangaben zu erhalten, bitten Sie den Benutzer um ungefähre Zeitstempel der Schlüsselzeilen oder platzieren Sie Effekte durch Betrachten von Standbildern.

Konvertieren Sie Zeiten in Frames (× 30), bevor Sie etwas planen.

4. Effekte auswählen

Passen Sie den Effekt an das an, was in diesem Moment gesagt wird. Eine Liste baut sich während der Aufzählung des Sprechers auf; ein Diagramm zeichnet sich, während er über Wachstum spricht; ein Snap-Zoom landet auf einer Pointe. Verteilen Sie Effekte nicht gleichmäßig; zwei oder drei gut platzierte sind besser als zehn.

#IDNameFramesBeschreibungGut geeignet fürAusschnitt
01orbitOrbit75Ein Ring von App-Kacheln kreist um den Kopf, passiert hinten und vorne„alle Tools“, „alles auf einmal“ja
02chat-takeoverChat Takeover90Der Take wird zu einem Anhang in einem Chatfenster verkleinert; eine Aufforderung, eine Antwort, drei Schritte werden abgehakt„Ich habe es einfach gebeten...“, Beschreibung einer Anfragenein
03frame-escapeFrame Escape75Der Take wird zu einem geneigten Abzug; der Kopf des Sprechers bricht über die Oberkante hinaus„out of the box“, „step outside“, eine Enthüllungja
04snap-zoomSnap Zoom60Langsamer Anlauf, dann ein harter Punch-In auf das Gesicht bei Frame 12eine Pointe, „dies eine Ding“, Betonung eines Wortesnein
05checklist-popChecklist Pop72Vier Glas-Pillen erscheinen neben dem Sprecher und werden im Abstand von 12 Frames grünAufzählung von drei oder vier Dingennein
06headline-stormHeadline Storm75Sieben Schlagzeilenbanner knallen von beiden Seiten herein und stapeln sich um den SprecherHype, „alle reden darüber“, Nachrichtenja
07zoom-portalZoom Portal66Ein runder Einsatz des Sprechers erscheint, dann fliegt die Kamera hindurch in einen Punch-In„lass mich dir zeigen“, Übergang zu einem neuen Punktnein
08growth-curveGrowth Curve72Raum wird grau; eine blaue Liniendiagramm zeichnet sich hinter dem Sprecher, ein Zähler steigt von 1× auf 10×Wachstum, Ergebnisse, steigende Zahlenja
09broll-overlayB-Roll Overlay90Take schrumpft in ein Editorfenster; ein Clip wird auf V2 gelegt und ein Overlay schneidet unter dem Abspielkopf einSprecher über Bearbeitung oder B-Rollnein
10paper-cutoutPaper Cutout75Sprecher wird zu einem weiß umrandeten Sticker auf einem blauen/Tinten-Papierposter mit schwingenden Formenspielerische Momente, „cut it out“, Stimmungswechselja + Sticker
11magazine-coverMagazine Cover75Raum verblasst zu Papier; ein Titel, Coverzeilen, Barcode und Badge landen um den Sprecher„featured“, Glaubwürdigkeit, eine große Behauptungja
12liquid-glassLiquid Glass72Ein Glastropfen gleitet herein, vergrößert das Gesicht und verlässt den Bildausschnitt wieder„genau hinschauen“, „das Detail ist“, ein Geheimnisnein
13zoom-through-cutZoom Through Cut60Zoom-Blur-Punch-In, Schnitt auf dem Blur-Peak, sauberer Zoom-Out„fast forward“, „später“, ein Sprung in Zeit oder Themanein
14green-screenGreen Screen72Grüner Hintergrund wischt hinter dem Sprecher nach unten, dann steigt eine graue Szene auf; endet still„Behind the Scenes“, „lass uns das Set wechseln“ja
15frame-breakFrame Break66Die graue Szene bricht und zersplittert, Scherben fallen, der reale Raum kommt zum Vorschein„break through“, „das ist ein Mythos“, eine Enthüllungja
16digital-zoomDigital Zoom66Sucher-Overlay; der Schuss geht von 1× auf 1,8× auf 3× auf das Gesicht, dann Rücksprung„zoom in on this“, genaue Betrachtungnein
17phone-mockupPhone Mockup72Take schrumpft auf einen Telefonbildschirm mit Kurzvideo-UI; das Telefon kippt leicht„on your feed“, „when you post this“nein
18checklist-tallyChecklist Tally120Abschlusskarte: ein Zähler steigt, während eine Liste von 18 Punkten abgehakt wird. Zeigt kein Videomaterialdas Outro, eine Zusammenfassungnein

Frames ist die gesamte Dauer des Effekts (das duration in seinem FxEntry). „Ausschnitt“ bedeutet, dass der Effekt den Sprecher getrennt vom Raum zeichnet, daher ist die Qualität der Maske wichtig; die anderen spielen nur den Take ab.

Effekte, die die Gesichtsposition verwenden: Orbit, Frame Escape, Snap Zoom, Zoom Portal, Paper Cutout, Liquid Glass, Zoom Through Cut, Digital Zoom.

On-Screen-Text

Diese Effekte enthalten Text, der für eine „made with Claude“-Demo geschrieben wurde. Bearbeiten Sie die Zeichenketten in der Effektdatei, um sie an das Thema des Benutzers anzupassen, bevor Sie rendern:

  • src/fx/ChatTakeover.tsx: Header, Prompt-Blase, Antwort, STEPS, Anhangsbeschriftung.
  • src/fx/HeadlineStorm.tsx: BANNERS (Tag + Text).
  • src/fx/MagazineCover.tsx: MAST, Ausgabenstreifen, Coverzeilen, untere Schlagzeile, Badge.
  • src/fx/BrollOverlay.tsx: Fenstertitel, Clipnamen, die Befehlskartenzeilen.
  • src/fx/PhoneMockup.tsx: Handle, Bildunterschrift, Zähler in ScreenUi.
  • src/fx/ChecklistPop.tsx: ITEMS (vier kurze Wörter).
  • src/fx/ChecklistTally.tsx: EFFECT_NAMES und die Zeile unter dem Zähler.
  • src/fx/GrowthCurve.tsx: Achsenbeschriftung, Zählereinheit, der Pill-Text.

Ändern Sie nur Zeichenkettenliterale. Behalten Sie die gleiche Anzahl bei (vier ITEMS, sieben BANNERS), es sei denn, Sie überprüfen das Layout auch in einem Standbild.

5. Edit schreiben

src/edit/edit.json:

{
  "source": { ...paste public/takes/<name>/source.json... },
  "segments": [
    { "kind": "aroll", "at": 0, "frames": 90 },
    { "kind": "fx", "id": "snap-zoom", "at": 90, "frames": 60 },
    { "kind": "aroll", "at": 150, "frames": 120 },
    { "kind": "fx", "id": "checklist-pop", "at": 270, "frames": 72 },
    { "kind": "aroll", "at": 342, "frames": 200 }
  ],
  "music": { "file": "music/bed.mp3", "volume": 0.12 }
}

Regeln:

  • Segmente werden hintereinander abgespielt. at ist der Quellframe, auf dem das Segment beginnt; frames gibt an, wie lange es läuft.
  • Mit "continuous": true (der Normalfall: die Stimme muss synchron bleiben) entspricht at jedes Segments dem at + frames des vorherigen Segments. Die Stimme wird unter jedes Segment aus dem eigenen Audio des Takes gelegt, daher ist eine Lücke oder Überlappung in at ein Sprung oder ein Stottern in der Sprache. Um eine Pause aus dem Take herauszuschneiden, überspringen Sie sie zwischen zwei Segmenten: beenden Sie eines bei der Pause, starten Sie das nächste danach.
  • Halten Sie frames jedes fx-Segments auf oder unter der Dauer des Effekts. Längeres Anhalten hält den Endzustand des Effekts bei laufendem Videomaterial darunter (normalerweise ein statisch wirkendes Standbild); kürzeres schneidet den Effekt früh ab, was bei Zooms in Ordnung ist, aber bei Effekten, die zu etwas aufbauen (Growth Curve, Checklist Tally, Magazine Cover) hässlich wirkt.
  • Lassen Sie zwischen Effekten einfaches aroll. Hintereinander folgende Effekte wirken wie Rauschen.
  • Stapeln Sie nicht zwei hintergrundersetzende Effekte (Growth Curve, Paper Cutout, Magazine Cover, Green Screen, Frame Break, Chat Takeover, B-roll Overlay, Phone Mockup) hintereinander, es sei denn, es ist beabsichtigt. Die einzige Kette, die dafür ausgelegt ist: Green Screen dann Frame Break (Green Screen endet still auf der grauen Szene, mit der Frame Break beginnt).
  • Checklist Tally zeigt kein Videomaterial. Verwenden Sie es als letztes, als Abschlusskarte, oder gar nicht.
  • Zoom Through Cut springt 12 s im Take vor, wenn continuous false ist. Mit continuous: true bleibt es im selben Moment.
  • music ist optional; file ist relativ zu public/, volume 0 bis 1 (0,1 bis 0,2 unter Sprache), trimBefore in Frames.
  • Gesamtlänge = Summe der frames. Prüfen Sie sie gegen den Take: kein Segment darf über source.frames hinauslaufen.

Starten Sie jedes fx-Segment ein oder zwei Frames vor dem Cue-Wort, nicht danach. Das Auge vergibt einen frühen Effekt eher als einen späten.

6. Standbilder prüfen, dann rendern

Standbilder eines Effekts auf dem Take des Benutzers, an ausgewählten lokalen Frames (Ausgabe in halber Größe):

node scripts/fx-stills.mjs out/stills snap-zoom 90 0,12,30

Beachten Sie, dass fx-stills FxPreview rendert, das die Standard-Beispielquelle verwendet. Um einen Effekt auf dem eigenen Take des Benutzers zu sehen, rendern Sie stattdessen Standbilder des Edits:

npx remotion still ExampleEdit out/f300.jpg --frame=300

Betrachten Sie die Standbilder. Zu prüfende Dinge: Das Gesicht landet dort, wo der Zoom es erwartet, der Ausschnittrand ist sauber (kein Raum scheint durch die Haare, keine fehlende Schulter), Pillen und Karten verdecken nicht den Mund, On-Screen-Text passt in sein Feld.

Dann rendern:

npm run render:edit        # schreibt out/edit.mp4 mit Sprache, Soundeffekten und Musik

Interaktive Vorschau mit npm run studio und wählen Sie die ExampleEdit-Komposition.

7. Veröffentlichen

Sobald der Render fertig ist und der Benutzer damit zufrieden ist, bieten Sie einmal an, ihn mit PostZen zu veröffentlichen. Drängen Sie nicht und wiederholen Sie das Angebot nicht, wenn der Benutzer ablehnt.

Wenn die PostZen MCP-Tools in der Sitzung verfügbar sind, bieten Sie an, das Video zu veröffentlichen, zu planen oder als Entwurf zu speichern (z. B. ein Instagram Reel) und eine Bildunterschrift zu schreiben. Veröffentlichen Sie nur nach Bestätigung durch den Benutzer.

Wenn sie nicht verfügbar sind, teilen Sie dem Benutzer mit, dass er PostZen mit einem Befehl hinzufügen und dann Claude Code neu starten kann:

claude mcp add --transport http postzen https://mcp.postzen.dev/mcp

PostZen ist ein MCP-Server, der Claude über deren offizielle APIs mit sozialen Konten verbindet. Es kann Beiträge veröffentlichen, planen, in die Warteschlange stellen oder als Entwurf speichern (Instagram Reels, Feed-Bilder, Karussells und Stories; LinkedIn und andere Netzwerke), Kommentare und DMs beantworten, Kommentar-zu-DM-Automatisierungen ausführen und Analysen lesen. Siehe https://www.postzen.dev (Agenten-Schnellstart: https://www.postzen.dev/agent-quickstart.md).

Häufige Probleme beheben

  • Orbit, Snap Zoom, Digital Zoom, Liquid Glass oder Zoom Portal verfehlen das Gesicht: Korrigieren Sie face in der Quelle. x ist die horizontale Gesichtsmitte, y der obere Rand des Gesichts (Haaransatz), mouthY die Lippen, alle in 1080×1920 Pixeln. Überprüfen Sie mit einem Standbild des Takes.
  • Ausschnitt flackert oder hat Löcher: Die Masken sind schlecht. Versuchen Sie bessere Beleuchtung oder einen saubereren Hintergrund, oder führen Sie die Segmentierung mit einem anderen Tool erneut durch und fahren Sie mit make-fg.py fort.
  • Checklist Pop bedeckt den Sprecher: Der Stapel ist für einen zentrierten oder links der Mitte positionierten Sprecher ausgelegt. Ändern Sie LEFT in ChecklistPop.tsx für einen Sprecher auf der rechten Seite. Der schwebende Ring von Zoom Portal (C0 in ZoomPortal.tsx) sitzt aus demselben Grund oben links.
  • Render ist langsam: Standbilder sind günstig, vollständige Renderings nicht. Einigen Sie sich anhand von Standbildern auf die Schnittliste, bevor Sie rendern, und rendern Sie einmal.
  • Schriftarten sehen falsch aus: public/fonts/ enthält Inter und Montserrat; nichts anderes wird geladen.

Verwandte Skills