Communitygithub.com

igoharaujo/remotion-sun-video

Pipeline completo para vídeos 3D con PiP (talking-head) usando Remotion + Three.js + Whisper + Freesound. Crea fondos dinámicos temáticos, kinetic typography, HUDs contextuales y mezcla profesional (-14 LUFS). Úsalo cuando el usuario pida "video 3D", "video con PiP", "video estilo TikTok cinematográfico" o "video de mi guion".

¿Qué es remotion-sun-video?

Esta skill implementa un pipeline completo para generar videos 3D cinematográficos al estilo TikTok, combinando Remotion con Three.js para fondos 3D dinámicos y parallax, Whisper para sincronización palabra a palabra, y Freesound para efectos de sonido profesionales. El video incluye un recuadro con la cara del narrador (PiP) en la esquina inferior derecha, legendas cinéticas sin fondos rectangulares, HUDs contextuales creativos y una mezcla final a -14 LUFS con pico máximo de -1 dBTP. Es ideal para transformar cualquier guion en un video visualmente impactante y temático, con animaciones contextuales que traducen cada frase en elementos visuales únicos, como odómetros, velocímetros HUD o partículas flotantes.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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

Cuándo usar

  • "haz un video 3D con mi video hablando en la esquina"
  • "video estilo TikTok cinematográfico sobre [tema]"
  • "video con fondo 3D y leyendas animadas"
  • "video con [mi audio/mi video] diciendo X"

Filosofía (REGLAS DE ORO)

El video debe ser CREATIVO y CONTEXTUAL al tema. No basta con 3D genérico. Cada frase del guion debe inspirar un elemento visual único que traduzca el concepto. Ejemplo:

  • Frase "8 minutos y 20 segundos" → odómetro digital que gira hasta 8:20
  • Frase "300.000 km/s" → velocímetro HUD de ciencia ficción con aguja
  • Frase "un avión daría 3 vueltas" → avión orbitando la Tierra con estela
  • Frase "la luz viaja del Sol a la Tierra" → fotón con lens flare viajando

El usuario exige este nivel de creatividad contextual. NUNCA hagas solo texto estático con fade-in.

Prerrequisitos (verificar antes de comenzar)

  1. Node.js + npm instalados
  2. FFmpeg instalado (brew install ffmpeg)
  3. Whisper-cpp instalado (brew install whisper-cpp) — para sincronizar palabras
  4. FREESOUND_API_KEY en ~/.zshrc (API de SFX obligatoria)
  5. Video/audio del narrador en public/eu.mp4 o public/audio/*.mp3

Si falta alguno, DETENTE y avisa al usuario.

1. Estructura del Proyecto

~/Documents/[nombre-del-proyecto]/ ├── public/ │ ├── eu.mp4 # video del narrador (si hay PiP) │ ├── audio/*.mp3 # audio puro (si no hay video) │ ├── images/[tema]/ # imágenes descargadas (con credits.json) │ └── sfx/ # SFX descargados de Freesound ├── src/ │ ├── three/ # escena 3D (Three.js) │ ├── components/ # Leyendas, HUDs, overlays │ ├── timeline.json # TODOS los timings (fuente de la verdad) │ └── Root.tsx ├── scripts/ │ ├── align-words.py # Whisper → timestamps de palabras │ ├── gen-sfx.mjs # síntesis local (pads, drones) │ ├── fetch-freesound.mjs # OBLIGATORIO: descarga SFX de la API │ ├── finalize.sh # -14 LUFS + faststart │ └── contact-sheet.sh # contact sheet con zonas seguras ├── out/ │ ├── final_[tema].mp4 │ ├── thumbnail.png # portada 1080x1920 │ └── contact_sheet.png └── timeline.json

2. Flujo de Trabajo Obligatorio (en orden)

Fase 0: Briefing

Confirmar con el usuario:

  • Tema del video
  • Duración real del audio (nunca cortar el remate)
  • Paleta (por defecto: negro profundo + color de acento coherente con el tema)
  • Estilo del fondo 3D (ver sección 3)
  • PiP (si hay video): posición inferior derecha, x ≤ 940
  • Leyendas: cinéticas (ver sección 5)

Fase 1: Setup + Whisper

  1. Inicializar/verificar Remotion + @remotion/three + @react-three/fiber + three
  2. Ejecutar scripts/align-words.py para transcribir el audio
  3. Crear timeline.json con timings EXACTOS de cada palabra
  4. DETENERSE Y ESPERAR APROBACIÓN antes de programar escenas

Fase 2: Fondo 3D temático (ver sección 3)

Fase 3: PiP (si hay) + Leyendas + HUDs (ver secciones 4 y 5)

Fase 4: SFX vía Freesound (ver sección 6) — OBLIGATORIO

Fase 5: Render + Mezcla + Contact Sheet + Thumbnail

3. Fondo 3D Dinámico (CREATIVIDAD OBLIGATORIA)

Regla: el fondo NO puede ser estático. Debe tener movimiento continuo y elementos flotantes. Usa el tema para decidir el estilo:

TemaFondo 3D
Espacio / Universo3 capas de estrellas con parallax, nebulosa sutil, planetas en el horizonte
Programación / TechMatriz de código flotante, partículas de "bits", circuitos en wireframe, grid animado
iPhone / MinimalistaPartículas de polvo flotantes (lentas, tamaños variados), luz volumétrica suave, estilo Stranger Things upside down
NaturalezaHojas/partículas orgánicas flotando, luz de sol filtrada, profundidad con parallax
Ciudad / UrbanoLuces de neón distantes, partículas de lluvia, skyline con parallax
Ciencia / LaboratorioMoléculas flotando, tubos de ensayo en wireframe, partículas brillantes

Siempre incluir:

  • Parallax (mínimo 3 capas con velocidades diferentes)
  • Movimiento de cámara (drift sutil a lo largo de todo el video)
  • Iluminación volumétrica (luz suave, no plana)
  • Post-procesamiento (bloom, viñeta sutil)
  • Colores coherentes con el tema (no usar paleta genérica)

4. PiP (Talking-head) — si hay video

  • Usar <OffthreadVideo> de Remotion
  • Aspect ratio exacto (no distorsionar el rostro)
  • Posición: inferior derecha, PERO respetando zona segura (x ≤ 940)
  • Estilo: esquinas redondeadas 24px, sombra suave, borde fino
  • Nunca alterar colores, fondo, aspect ratio ni audio del video original
  • Scale up solo en momentos de payoff (ej: 1.12x)
  • Si es solo audio: añadir un "Audio Visualizer HUD" pulsando con la voz en lugar del PiP

5. Leyendas (KINÉTICAS + sin "rectángulo")

Reglas de animación:

  • Palabra por palabra (no frase por frase) — cada palabra en el frame exacto del habla
  • Ease-out con overshoot (~0.15s por palabra)
  • Palabras clave: flash blanco + settle en color de acento + glow + scale up breve
  • Líneas pre-maquetadas (no dejar que las palabras "salten" de línea)

⚠️ REGLA CRÍTICA: SIN RECTÁNGULOS

NO usar background-color sólido detrás del texto. Para legibilidad, usar SOLO:

  • text-shadow: 4px 4px 8px rgba(0,0,0,0.9)
  • filter: drop-shadow(0 2px 8px rgba(0,0,0,0.8))
  • Opcional: gradient radial ≤ 15% de opacidad detrás de palabras aisladas
  • NUNCA: <div style="background: rgba(0,0,0,0.7)"> alrededor de la frase

El texto debe flotar sobre el fondo, no parecer una tarjeta.

Posicionamiento:

  • Centro horizontal
  • Y entre 1400-1550
  • Tamaño mínimo: 72px (legible en celular)

6. SFX vía Freesound API (OBLIGATORIO)

El usuario EXIGE que los sonidos se descarguen de la Freesound API. No uses solo síntesis local.

Flujo:

  1. Verificar FREESOUND_API_KEY en ~/.zshrc
  2. Crear/usar scripts/fetch-freesound.mjs para buscar y descargar
  3. Mapa mínimo de SFX (adaptar al tema):
MomentoTipoQuery en Freesound
Aperturaboot digital suave"soft digital boot"
Impactos de textohit cinematográfico"cinematic impact hit"
Contadortick de reloj"digital counter tick"
Velocímetrogemido de velocímetro"engine whine pitch up"
Objeto voladorwhoosh de jet"jet flyby whoosh"
Revelación 3Driser creciente"cinematic riser"
Llegada / clímaxboom + campana"cinematic boom chime"
CTA finalcampana suave"soft notification chime"
  1. Filtrar por CC0 primero; fallback CC-BY (anotar en public/sfx/CREDITS.json)
  2. Guardar en public/sfx/
  3. Sintetizar LOCALMENTE solo lo continuo (space pad, drone, riser largo) vía scripts/gen-sfx.mjs

Mezcla:

  • Voz: NUNCA procesar (solo +ganancia para alcanzar -14 LUFS, con limiter -1 dBTP)
  • SFX: ducking -3dB (whooshes), -8dB (booms) — significa bajar el SFX bajo la voz, no la voz
  • Space pad: -24dB continuo, fade-in 1s, fade-out 2s
  • Loudness final: -14 LUFS, pico máximo -1 dBTP

7. Zonas Seguras de TikTok (OBLIGATORIO)

  • Canvas: 1080×1920, 60fps
  • Área segura: x ∈ [60, 1020], y ∈ [120, 1670]
  • Barra de acción (derecha): no invadir x > 960
  • Barra superior: y < 120
  • Inferior (caption): y > 1670
  • PiP: nunca superponer x > 940
  • Siempre validar con contact sheet con overlay de las zonas seguras

8. Checklist Final

  • Duración = duración real del audio (no cortar el remate)
  • Whisper transcribió y sincronizó palabra por palabra
  • Fondo 3D temático + dinámico + parallax
  • Leyendas en kinetic typography, SIN fondo rectangular
  • PiP respeta zona segura (x ≤ 940) — si hay
  • Al menos 5 elementos creativos contextuales (HUDs, objetos voladores)
  • SFX descargados de la Freesound API (no solo síntesis)
  • Mezcla -14 LUFS / -1 dBTP
  • Contact sheet con overlay de zonas seguras
  • Thumbnail generado (out/thumbnail.png)
  • Hook de 3s validado (elemento 3D + texto + SFX + cámara)
  • ffprobe valida 1080x1920, 60fps, H.264 + AAC

9. Manejo de trabas de macOS (Sandbox)

Si Claude Code pierde acceso a la carpeta por "Operation not permitted":

  1. Preparar todos los archivos en scratchpad
  2. Generar script único finish-v2.sh que instala y renderiza
  3. El usuario lo ejecuta manualmente en el terminal
  4. Claude Code luego lee el ffprobe output que el usuario pega de vuelta

Siempre incluir fallback manual al final.

10. Sobre licencias de imágenes (si hay descarga)

  • PREFERIR Wikimedia Commons (CC0/CC-BY/CC-BY-SA) — siempre verificar licencia
  • PREFERIR Apple/empresas oficiales (fair use editorial)
  • EVITAR sitios aleatorios / Pinterest / stock
  • Guardar credits.json con {filename, source_url, author, license}
  • Crear LICENSE_CHECK.md antes de descargar, auditando cada una
  • Si no tiene licencia clara, generar alternativa procedimental con Three.js

Resumen: esta skill transforma cualquier guion en video TikTok cinematográfico con 3D temático, kinetic typography, HUDs creativos, PiP (opcional) y diseño de sonido profesional vía Freesound. La creatividad contextual es OBLIGATORIA — cada frase del guion debe inspirar un elemento visual único.

Skills relacionados