Video corto de historia animada 3D estilo caricatura (three.js + Remotion)
Los comandos se ejecutan desde la raíz del proyecto, en Bash (no PowerShell). references/ y templates/ son relativos a esta habilidad; SK = .claude/skills/cartoon-3d-short.
Los videos terminados en src/videos/ nunca se editan. No los leas para aprender el código: references/API.md es el mapa.
references/STYLE_BIBLE.md y references/reports/ son material de estudio de otro canal. Nunca copies los scripts, personajes o tomas de ese canal, ni lo nombres en una narración o descripción.
Reglas
- Sin subtítulos ni etiquetas. Solo inglés. Un tono de voz constante. Los chistes son hechos reales investigados.
- Cada toma oculta el horizonte detrás de edificios, árboles con arbustos de 2-3 m en los huecos del tronco, o una colina lejana. Llena solo lo que la cámara ve. Los escenarios son ricos: multitudes, adornos, texturas, banderas.
- La exportación final es 1080x1920 a 30 fps, nunca
--scale. - Mezcla: voz, efectos de sonido CC0 gratuitos unos 6 dB por debajo, pistas musicales por escena (nunca una pista continua) con reducción de volumen bajo la voz, toda la mezcla a -15 LUFS.
- Aprobación permanente para efectos de sonido y modelos 3D gratuitos sin derechos de autor: verifica la licencia en la página del archivo, omite atribución / no comercial / compartir igual, regístralo en
_sfx/LICENSES.md, indica qué descargaste y su tamaño. Pregunta antes de inicios de sesión, pagos, otras descargas, o ejecutar un paquete que no esté instalado. - Lista de verificación de fotogramas fijos (
references/QA.md): agente Opus-medium en el primer conjunto completo y una vez más antes del render, tus propias revisiones intermedias, luego el usuario aprueba los fotogramas. Ninguna puntuación absoluta es un bloqueo. - Las correcciones re-renderizan solo las partes modificadas (
--redo), nunca el video completo. - Guarda después de cada paso. Dos pausas para el usuario: aprobación del guion y aprobación de los fotogramas finales antes del render final. De lo contrario, trabaja hasta la entrega sin preguntar.
Canalización
- Tema y datos. Una historia real sorprendente con causa y efecto visual y físico, más una analogía cotidiana. Los datos con fuentes van al principio de
src/videos/<nombre>/SCRIPT.md. - Guion. La duración sigue a la historia. Conteo de palabras = segundos x palabras/s, medido a partir de una muestra de una oración de la voz elegida (sin muestra: asume 3 y verifica después de la toma). Ritmo: gancho (dato absurdo, una línea), ambientación (año, lugar, orgullo), acción (3-4 ritmos crecientes), chasquido, tono muerto ("Por suerte... / Por desgracia..."), explicación (una idea, analogía cotidiana), consecuencia, giro de llamada. Nunca describas lo que el espectador ya ve. Solo diseño:
templates/SCRIPT_example.md. Detente aquí hasta que el usuario apruebe el guion. - Voz. El usuario genera la toma en
_voiceover/<nombre>/voice_raw.wav. Luegopython scripts/voice_trim.py _voiceover/<nombre>/voice_raw.wav _voiceover/<nombre>/voice.wavypython scripts/words_whisper.py _voiceover/<nombre>/voice.wav _voiceover/<nombre>/words.json. Todo está sincronizado conwords.json: nunca lo leas, imprímelo comopalabra@fotogramay corrige palabras incorrectas con un script corto. Actúa según la línea depausas mantenidas(references/GOTCHAS.md"Voz"). - Carpeta de video. Copia los cuatro archivos de
templates/starter/ensrc/videos/<nombre>/, renombraShort.tsxa<Nombre>.tsxyStarterShort/STARTER_FRAMESdentro de él, registra la composición ensrc/Root.tsx. Contienen solo datos de la historia más una demostración de 2 tomas marcadaEXAMPLE; el motor está ensrc/shared/. Leereferences/API.mdantes de editar. Sisrc/shared/oscripts/falta o no tiene un archivo, cópialo desdetemplates/shared/otemplates/scripts/. - Barrido de accesorios. Para cada ritmo, busca en
public/kenney/INDEX.txty tabula las selecciones ensrc/videos/<nombre>/PROPS.md. Accesorio faltante: descarga un paquete CC0 gratuito (references/GOTCHAS.md) enpublic/kenney/<paquete>/, agrégalo aINDEX.txt, añade<paquete>/<modelo>aKENNEYenworld.ts. - Plan de tomas en
story.ts:TOTAL= redondear(segundos de voz x 30), luegoSHOTS,XFADE,FLASH_AT,CAMS,KICKS,DOF_V2. Las reacciones visuales caen 0-3 fotogramas antes de su palabra. Cada plano fijo se mueve lentamente. Cada movimiento en bucle recibe un tiempo de cambio explícito. - Construye las tomas reemplazando las partes
EXAMPLE. La apariencia de la casa está integrada en el motor (references/LOOK.md); nunca editessrc/shared/para un video.- Mundo (
world.ts): escenarios, accesorios, materiales, accesorios en movimiento enpose(). El cielo, las luces, el pueblo, el puerto, el sol y la eliminación de la línea de visión provienen del motor. Pasakeep = trueaprop()para accesorios principales. - Personajes (
cast.ts): vestimentas y un casostage()por puesta en escena. Las tarjetas, contornos, parpadeos y sombras provienen del motor. - Composición (
<Nombre>.tsx): solo nombre ypoolShots. La cadena de postprocesado (tinta, desenfoque de lente, floración, mapa de tonos, gradación) está en el motor.
- Mundo (
- Verificación de fotogramas fijos, antes de cualquier render largo (
references/QA.md): fotograma fijo de mitad de cada toma, verificaciones con script, verificación del agente, corrección y autoverificación, segunda verificación del agente, corrección y autoverificación. Detente aquí hasta que el usuario apruebe los fotogramas fijos. - Preparación de sonido (
references/SOUND.md): eventos SFX en_sfx/<nombre>_events.json, pistas musicales en_sfx/<nombre>_music_cues.json. - Render final (
references/RENDER.md):REMOTION_TMP=C:/remotion-tmp node scripts/render_chunks.mjs <Comp> out/<nombre>/video.mp4 <TOTAL>. - Mezcla y QA. Ensambla la música (
music_cues.py, verreferences/SOUND.md), luegopython SK/templates/audio/build_mix.py _voiceover/<nombre>/voice.wav out/<nombre>/video.mp4 out/<nombre> _sfx/<nombre>_events.json [_sfx/<nombre>_music.wav]escribevideo_final.mp4. Luegopython scripts/bridge_shots.py src/videos/<nombre>/story.ts out/<nombre>/shots.jsonypython scripts/short_qa.py out/<nombre>/video_final.mp4 out/<nombre>/qa out/<nombre>/shots.json --voice _voiceover/<nombre>/voice.wav, que debe salir con código 0. Corrige conrender_chunks.mjs ... --redo A-B,C-D, luego mezcla y QA de nuevo. Notas del usuario sobre el video final:references/QA.md"Revisión del usuario". - Entrega. Envía
video_final.mp4(más de 30 MB: una vista previa más pequeña más la ruta), elimina las carpetas del paquete de este video enC:/remotion-tmp, actualiza la memoria.
Archivos de referencia
| Archivo | Leer cuando |
|---|---|
references/QA.md | verificación de fotogramas, indicación de lista de verificación, short_qa |
references/SOUND.md | bibliotecas de SFX, pistas musicales, mezcla |
references/RENDER.md | configuración de render, bucle de parches, reanudación |
references/API.md | antes de editar los archivos de inicio: qué va dónde, firmas de funciones |
references/GOTCHAS.md | voz, accesorios y escenarios, trampas de encuadre, este PC |
references/LOOK.md | valores de apariencia de la casa, reglas de cámara y personajes |
references/LOOK_MATCH.md | solo para la apariencia de referencia original o una pasada de coincidencia de apariencia |
references/house/GRADER_PROMPT.md | comparación por pares A/B, solo al cambiar la apariencia |
Cambiar la habilidad en sí (documentos, inicio, motor, scripts): lee MAINTAINING.md primero.