Communitygithub.com

igoharaujo/remotion-sun-video

Vollständige Pipeline für 3D-Videos mit PiP (Talking-Head) unter Verwendung von Remotion + Three.js + Whisper + Freesound. Erstellt dynamische thematische Hintergründe, Kinetic Typography, kontextbezogene HUDs und professionelle Audiomischung (-14 LUFS). Verwende dies, wenn der Benutzer nach „3D-Video“, „PiP-Video“, „TikTok-kinematografisches Video“ oder „Video zu meinem Skript“ fragt.

Was ist remotion-sun-video?

Diese KI-Agenten-Fähigkeit erstellt einen vollständigen, produktionsreifen Video-Pipeline, der 3D-Animationen (Three.js), Picture-in-Picture (PiP) eines Sprechers und kontextabhängige Kinetic Typography zu TikTok-optimierten Kinovideos (1080×1920, 60fps) kombiniert. Sie eignet sich besonders für Entwickler, die mit Claude Code, Cursor oder Codex arbeiten; der Agent orchestriert dabei Node.js, Remotion, FFmpeg, Whisper-cpp und die Freesound-API. Der Workflow beginnt mit der Transkription des Skripts mithilfe von Whisper, erstellt dann ein dynamisches 3D-Hintergrundbild (z. B. Parallax-Weltraum, schwebende Code-Matrix oder organische Partikel) und überlagert es mit Wort-für-Wort-Kinetic-Typography ohne störende Text-Hintergründe. Der Agent holt obligatorisch Sound-Effekte (SFX) über die Freesound-API ab und mischt alles auf -14 LUFS mit einer Spitzenbegrenzung von -1 dBTP. Zu den besonderen Merkmalen gehören kreative kontextuelle Elemente wie HUD-Tachometer, Odometern oder umlaufende Planeten, die auf bestimmte Szenen im Skript zugeschnitten sind. Der Agent beachtet auch die Sicherheitszonen von TikTok, liefert ein Kontaktblatt zur visuellen Überprüfung und generiert ein Vorschaubild. Wenn die macOS-Sandbox den Dateizugriff blockiert, erstellt der Agent ein Fallback-Skript, das der Benutzer manuell ausführt. Kontextuelle Kreativität ist zwingend erforderlich – jede Skriptzeile muss ein einzigartiges visuelles Element inspirieren.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/igoharaujo/remotion-sun-video/tree/HEAD/.claude/skills/motion-video-3d

In Ihrer bevorzugten KI fragen

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

Dokumentation

Skill: Motion Video 3D (Remotion + Three.js + PiP)

Wann verwenden

  • „Mach ein 3D-Video mit meinem sprechenden Video in der Ecke“
  • „TikTok-kinematografisches Video zu [Thema]“
  • „Video mit 3D-Hintergrund und animierten Untertiteln“
  • „Video mit [meinem Audio/meinem Video], in dem X gesagt wird“

Philosophie (GOLDENE REGEL)

Das Video muss KREATIV und KONTEXTBEZOGEN zum Thema sein. Es reicht nicht, generisches 3D zu haben. Jeder Satz des Skripts muss ein einzigartiges visuelles Element inspirieren, das das Konzept übersetzt. Beispiel:

  • Satz „8 Minuten und 20 Sekunden“ → digitaler Kilometerzähler, der bis 8:20 läuft
  • Satz „300.000 km/s“ → HUD-Tacho aus der Science-Fiction mit Zeiger
  • Satz „ein Flugzeug würde 3 Runden drehen“ → Flugzeug, das die Erde umkreist, mit Spur
  • Satz „Licht reist von der Sonne zur Erde“ → Photon mit Lens Flare, das reist

Der Benutzer erwartet dieses Maß an kontextueller Kreativität. NIEMALS nur statischen Text mit Fade-In machen.

Voraussetzungen (vor Beginn prüfen)

  1. Node.js + npm installiert
  2. FFmpeg installiert (brew install ffmpeg)
  3. Whisper-cpp installiert (brew install whisper-cpp) — für die Wortsynchronisation
  4. FREESOUND_API_KEY in ~/.zshrc (API für SFX zwingend erforderlich)
  5. Sprechervideo/-audio in public/eu.mp4 oder public/audio/*.mp3

Wenn etwas fehlt, ANHALTEN und den Benutzer informieren.

1. Projektstruktur

~/Documents/[projektname]/ ├── public/ │ ├── eu.mp4 # Sprechervideo (falls PiP vorhanden) │ ├── audio/*.mp3 # reines Audio (falls kein Video vorhanden) │ ├── images/[thema]/ # heruntergeladene Bilder (mit credits.json) │ └── sfx/ # von Freesound heruntergeladene SFX ├── src/ │ ├── three/ # 3D-Szene (Three.js) │ ├── components/ # Untertitel, HUDs, Überlagerungen │ ├── timeline.json # ALLE Timings (Quelle der Wahrheit) │ └── Root.tsx ├── scripts/ │ ├── align-words.py # Whisper → Wort-Zeitstempel │ ├── gen-sfx.mjs # lokale Synthese (Pads, Drones) │ ├── fetch-freesound.mjs # OBLIGATORISCH: lädt SFX von der API herunter │ ├── finalize.sh # -14 LUFS + faststart │ └── contact-sheet.sh # Kontaktblatt mit sicheren Zonen ├── out/ │ ├── final_[thema].mp4 │ ├── thumbnail.png # Cover 1080×1920 │ └── contact_sheet.png └── timeline.json

2. Obligatorischer Workflow (in Reihenfolge)

Phase 0: Briefing

Mit dem Benutzer bestätigen:

  • Thema des Videos
  • Tatsächliche Dauer des Audios (niemals die Pointe abschneiden)
  • Farbpalette (Standard: tiefes Schwarz + Akzentfarbe passend zum Thema)
  • Stil des 3D-Hintergrunds (siehe Abschnitt 3)
  • PiP (falls Video vorhanden): Position unten rechts, x ≤ 940
  • Untertitel: kinetisch (siehe Abschnitt 5)

Phase 1: Setup + Whisper

  1. Remotion + @remotion/three + @react-three/fiber + three initialisieren/überprüfen
  2. scripts/align-words.py ausführen, um das Audio zu transkribieren
  3. timeline.json mit EXAKTEN Zeitangaben für jedes Wort erstellen
  4. ANHALTEN UND AUF GENEHMIGUNG WARTEN, bevor Szenen codiert werden

Phase 2: Thematischer 3D-Hintergrund (siehe Abschnitt 3)

Phase 3: PiP (falls vorhanden) + Untertitel + HUDs (siehe Abschnitte 4 und 5)

Phase 4: SFX über Freesound (siehe Abschnitt 6) — OBLIGATORISCH

Phase 5: Rendern + Mischen + Kontaktblatt + Vorschaubild

3. Dynamischer 3D-Hintergrund (KREATIVITÄT OBLIGATORISCH)

Regel: Der Hintergrund darf NICHT statisch sein. Er muss kontinuierliche Bewegung und schwebende Elemente aufweisen. Verwende das Thema, um den Stil zu bestimmen:

Thema3D-Hintergrund
Weltraum / Universum3 Sternschichten mit Parallaxe, dezenter Nebel, Planeten am Horizont
Programmierung / TechSchwebende Code-Matrix, „Bit“-Partikel, Drahtgitter-Schaltkreise, animiertes Gitter
iPhone / MinimalistischSchwebende Staubpartikel (langsam, unterschiedliche Größen), weiches volumetrisches Licht, Stranger-Things-Upside-Down-Stil
NaturSchwebende organische Blätter/Partikel, gefiltertes Sonnenlicht, Tiefe mit Parallaxe
Stadt / UrbanEntfernte Neonlichter, Regenpartikel, Skyline mit Parallaxe
Wissenschaft / LaborSchwebende Moleküle, Drahtgitter-Reagenzgläser, leuchtende Partikel

Immer enthalten:

  • Parallaxe (mindestens 3 Ebenen mit unterschiedlichen Geschwindigkeiten)
  • Kamerabewegung (dezenter Drift über das gesamte Video)
  • Volumetrische Beleuchtung (weiches Licht, nicht flach)
  • Nachbearbeitung (Bloom, dezente Vignette)
  • Farben passend zum Thema (keine generische Palette verwenden)

4. PiP (Talking-Head) — falls Video vorhanden

  • <OffthreadVideo> von Remotion verwenden
  • Exaktes Seitenverhältnis (Gesicht nicht verzerren)
  • Position: unten rechts, ABER Sicherheitszone beachten (x ≤ 940)
  • Stil: abgerundete Ecken 24px, weicher Schatten, dünner Rand
  • Niemals Farben, Hintergrund, Seitenverhältnis oder Audio des Originalvideos ändern
  • Skalieren nur in Payoff-Momenten (z. B. 1,12x)
  • Wenn nur Audio: einen „Audio Visualizer HUD“ hinzufügen, der mit der Stimme pulsiert, anstelle des PiP

5. Untertitel (KINETISCH + ohne „Rechteck“)

Animationsregeln:

  • Wort für Wort (nicht Satz für Satz) — jedes Wort im exakten Frame des Sprechens
  • Ease-Out mit Overshoot (~0,15s pro Wort)
  • Schlüsselwörter: weißer Blitz + Einfärben in Akzentfarbe + Glühen + kurzes Skalieren
  • Vorab angeordnete Zeilen (Wörter nicht „springen“ lassen)

⚠️ KRITISCHE REGEL: KEINE RECHTECKE

KEINE solide Hintergrundfarbe hinter dem Text verwenden. Für Lesbarkeit NUR verwenden:

  • text-shadow: 4px 4px 8px rgba(0,0,0,0.9)
  • filter: drop-shadow(0 2px 8px rgba(0,0,0,0.8))
  • Optional: radialer Gradient ≤ 15 % Deckkraft hinter einzelnen Wörtern
  • NIEMALS: <div style="background: rgba(0,0,0,0.7)"> um den Satz herum

Der Text sollte über dem Hintergrund schweben, nicht wie eine Karte aussehen.

Positionierung:

  • Horizontal zentriert
  • Y zwischen 1400-1550
  • Mindestgröße: 72px (auf dem Handy lesbar)

6. SFX über Freesound API (OBLIGATORISCH)

Der Benutzer verlangt, dass die Sounds über die Freesound API heruntergeladen werden. Verwende nicht nur lokale Synthese.

Ablauf:

  1. FREESOUND_API_KEY in ~/.zshrc überprüfen
  2. scripts/fetch-freesound.mjs erstellen/verwenden, um zu suchen und herunterzuladen
  3. Mindestkarte der SFX (an das Thema anpassen):
MomentTypQuery bei Freesound
Eröffnungsanfter digitaler Boot„soft digital boot“
Text-Impactskinematischer Hit„cinematic impact hit“
ZählerClock Tick„digital counter tick“
TachoTachogeräusch„engine whine pitch up“
Fliegendes ObjektJet Whoosh„jet flyby whoosh“
3D-Enthüllunganschwellender Anstieg„cinematic riser“
Ankunft / HöhepunktBoom + Chime„cinematic boom chime“
Finaler CTAsanftes Chime„soft notification chime“
  1. Zuerst nach CC0 filtern; Fallback CC-BY (in public/sfx/CREDITS.json vermerken)
  2. In public/sfx/ speichern
  3. Nur kontinuierliche Sounds (Space Pad, Drohne, langer Riser) LOKAL synthetisieren über scripts/gen-sfx.mjs

Mischung:

  • Sprache: NIEMALS bearbeiten (nur +Gain, um -14 LUFS zu erreichen, mit Limiter -1 dBTP)
  • SFX: Ducking -3dB (Whooshes), -8dB (Booms) — bedeutet, SFX unter der Sprache absenken, nicht die Sprache
  • Space Pad: -24dB kontinuierlich, Fade-In 1s, Fade-Out 2s
  • Endlautstärke: -14 LUFS, maximaler Peak -1 dBTP

7. TikTok-Sicherheitszonen (OBLIGATORISCH)

  • Leinwand: 1080×1920, 60fps
  • Sicherer Bereich: x ∈ [60, 1020], y ∈ [120, 1670]
  • Aktionsleiste (rechts): nicht in x > 960 eindringen
  • Obere Leiste: y < 120
  • Unten (Untertitel): y > 1670
  • PiP: niemals x > 940 überlappen
  • Immer mit Kontaktblatt und Überlagerung der Sicherheitszonen validieren

8. Abschließende Checkliste

  • Dauer = tatsächliche Audiodauer (Pointe nicht abschneiden)
  • Whisper hat Wort für Wort transkribiert und synchronisiert
  • Thematischer + dynamischer 3D-Hintergrund + Parallaxe
  • Untertitel in Kinetic Typography, OHNE rechteckigen Hintergrund
  • PiP respektiert Sicherheitszone (x ≤ 940) — falls vorhanden
  • Mindestens 5 kreative kontextuelle Elemente (HUDs, fliegende Objekte)
  • SFX von der Freesound API heruntergeladen (nicht nur Synthese)
  • Mischung -14 LUFS / -1 dBTP
  • Kontaktblatt mit Überlagerung der Sicherheitszonen
  • Vorschaubild generiert (out/thumbnail.png)
  • 3s-Hook validiert (3D-Element + Text + SFX + Kamera)
  • ffprobe validiert 1080×1920, 60fps, H.264 + AAC

9. Umgang mit macOS-Sperren (Sandbox)

Wenn Claude Code den Zugriff auf den Ordner aufgrund von „Operation not permitted“ verliert:

  1. Alle Dateien im Scratchpad vorbereiten
  2. Ein einzelnes Skript finish-v2.sh generieren, das installiert und rendert
  3. Der Benutzer führt es manuell im Terminal aus
  4. Claude Code liest dann die ffprobe-Ausgabe, die der Benutzer zurückkopiert

Immer manuellen Fallback am Ende einfügen.

10. Über Bildlizenzen (falls Download)

  • BEVORZUGEN von Wikimedia Commons (CC0/CC-BY/CC-BY-SA) — immer Lizenz prüfen
  • BEVORZUGEN von offiziellen Apple-/Unternehmensseiten (redaktionelle Fair Use)
  • VERMEIDEN von zufälligen Websites / Pinterest / Stock
  • credits.json speichern mit {filename, source_url, author, license}
  • LICENSE_CHECK.md vor dem Herunterladen erstellen und jede Lizenz prüfen
  • Wenn keine klare Lizenz vorhanden, prozedurale Alternative mit Three.js generieren

Zusammenfassung: Diese Fähigkeit verwandelt jedes Skript in ein TikTok-kinematografisches Video mit thematischem 3D, Kinetic Typography, kreativen HUDs, PiP (optional) und professionellem Sounddesign über Freesound. Kontextuelle Kreativität ist OBLIGATORISCH — jeder Satz des Skripts muss ein einzigartiges visuelles Element inspirieren.

Verwandte Skills