Communitygithub.com

Moosphan/cinematic-shortfilm

Especificaciones completas y flujo de trabajo para cortometrajes científicos de estilo cinematográfico (70–300 segundos): guión/narración (voz masculina Qwen3-TTS VoiceDesign), sistema visual Remotion + Canvas de partículas/SVG, música generada por código, mezcla externa y entrega en 4K, verificación de datos y paquete de publicación. Cárgalo para crear obras como *Breve historia de la humanidad: Autorretrato del cosmos* o *Hacia abajo: DESCENT*, o para reutilizar sus normas.

¿Qué es cinematic-shortfilm?

Esta skill, diseñada para agentes de IA como Claude Code, Cursor o Codex, proporciona un estándar de producción completo y un flujo de trabajo para crear cortometrajes científicos de alta calidad estética y cinematográfica (70–300 segundos). Está basada en la experiencia real de dos proyectos: *Breve historia de la humanidad: Autorretrato del cosmos* (4K, 4'58", 14 escenas) y *Hacia abajo: DESCENT* (2K, 1'30", perfil vertical). La regla principal es «primero el sonido, luego la imagen»: la duración de la narración (generada con Qwen3-TTS VoiceDesign, voz masculina documental) determina la duración en fotogramas de cada escena. El sistema visual utiliza Remotion con partículas Canvas 2D y SVG para elementos como criaturas marinas, terreno y una interfaz HUD. La banda sonora se sintetiza íntegramente con código (numpy), priorizando la sutileza sobre el volumen. El flujo de trabajo es estrictamente secuencial: guión → narración → post-procesamiento de audio → línea de tiempo → música → renderizado silencioso → mezcla final con ffmpeg. La skill especifica reglas inquebrantables (como verificar hechos, un solo mensaje por escena, legibilidad del texto), un sistema de color para diferentes «mundos» (espacio/tiempo vs. océano/profundidad), tipos de transiciones, y una lista detallada de errores comunes y sus soluciones. Es una guía completa para replicar el estilo y la calidad de estos cortometrajes sin tener que empezar desde cero.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Moosphan/hulk-skills/tree/HEAD/skills/cinematic-shortfilm

Preguntar en tu IA favorita

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

Documentación

Cortometraje Científico Cinematográfico · Norma de Producción Unificada v1

Fuente: Breve historia de la humanidad: Autorretrato del cosmos (4K / 4'58" / 14 escenas) y Hacia abajo: DESCENT (2K / 1'30" / perfil vertical de 90 segundos). Las especificaciones, el flujo de trabajo, el estilo y los errores cometidos de ambas obras están recogidos aquí. Para una nueva obra, lee primero las secciones 0 y 1, luego la sección relacionada con el proyecto actual.


0. Reglas de Hierro (infringir cualquiera obliga a rehacer)

  1. Primero el sonido, luego la imagen. Genera la narración frase por frase → mide su duración → deduce los fotogramas de cada escena a partir de esa duración. Nunca montes la imagen antes de tener el audio.
  2. La narración y los datos deben coincidir: los números, unidades y órdenes de magnitud que aparecen en la obra deben verificarse uno a uno contra la tabla de hechos; si la narración dice 98, la imagen no puede mostrar 90. Un error de unidad (p. ej., atmósferas ↔ t/m²) es diez veces más grave que un error de color.
  3. Un plano, una idea: cada escena permite solo un tema principal + un máximo de 3 lecturas numéricas; la información adicional debe ir en la narración.
  4. El texto siempre debe ser legible: cualquier texto debe tener un fondo o un oscurecimiento debajo; los nombres de capa ≥ 30 px, las lecturas ≥ 13 px; la opacidad del texto pequeño no debe ser inferior a 0.6.
  5. No se permiten cortes bruscos: las transiciones entre escenas deben ser fundidos encadenados, respiros de negro o movimiento continuo; una misma obra solo puede usar un lenguaje de transición.
  6. Renderizado silencioso: todos los <Audio> en Remotion deben desactivarse con {false && ...}. El audio se incorpora externamente con ffmpeg (un WAV largo hará que el renderizado se atasque en el preprocesado de audio).
  7. Antes de renderizar, debe ejecutarse npx tsc --noEmit sin errores, de lo contrario se renderizarán muchos fotogramas defectuosos y habrá que repetir.
  8. Tres comprobaciones antes de entregar: verificación de la duración total, verificación del primer y último fotograma, y verificación de las transiciones clave fotograma a fotograma (3–6 fotogramas cada una).

1. Flujo de Trabajo Estándar (en orden, sin saltos)

script.json ──► Generación de VO ──► Post-procesado de VO ──► Tabla de duraciones ──► Línea de tiempo
                                   │
                                   └──► Música (numpy) ──► Mezcla ──► master.m4a
Imagen (Remotion) ──► Renderizado silencioso ──► ffmpeg mux ──► Entrega

1.1 Guión

  • Cada obra tiene un archivo: script.json, con los campos id / act / text / caption.
  • Narración en chino ≈ 4.2 caracteres/segundo; una obra de 60 segundos ≈ 200–230 caracteres, 90 segundos ≈ 300–340 caracteres.
  • Los números deben escribirse con su lectura china (p. ej., «三千六百八十八»), de lo contrario el TTS los leerá mal; en la imagen se usarán números arábigos.

1.2 Narración (Qwen3-TTS VoiceDesign, voz masculina documental)

INSTRUCT = ("A deep, calm, authoritative male documentary narrator. Slow, deliberate, cinematic. "
            "Low register, warm, intimate, restrained emotion, close-mic. Consistent, even pacing. Mandarin Chinese.")
generate_audio(text=..., model=model, lang_code="zh", instruct=INSTRUCT,
               temperature=0.65, top_p=0.9, repetition_penalty=1.05,
               output_path="vo_raw", file_prefix=id)
  • Modelo mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-bf16, semilla fija mx.random.seed(11).
  • Tras cada generación, verifica la duración inmediatamente con ffprobe: si alguna pista supera los 30 segundos o presenta repeticiones completas, el TTS se ha degradado; bórrala y regenérala (cambia la semilla o aumenta repetition_penalty a 1.12).
  • Revisión con ASR: pasa mlx_whisper para verificar números y caracteres poco comunes (p. ej., hidrógeno→qīng, silicio→guī, hierro→tǐ).

1.3 Post-procesado de Audio (cadena unificada, no se permiten diferencias entre pistas)

highpass=f=70,
asetrate=24000*0.912341, aresample=48000, atempo=1.096081, atempo=1.055,
equalizer=f=190:t=q:w=1.0:g=1.4, equalizer=f=3300:t=q:w=1.4:g=-1.8, equalizer=f=7200:t=q:w=1.8:g=-1.0,
acompressor=threshold=0.14:ratio=2.2:attack=10:release=200,
loudnorm=I=-20:TP=-3:LRA=7

Luego, recorta el silencio inicial y final según la envolvente de energía de 20 ms, comprime las pausas superiores a 0.34 s a 0.34 s, y aplica fundidos de entrada/salida de 12 ms / 50 ms.

1.4 Línea de Tiempo

  • frames = round(seconds * 24); el desfase de la narración = inicio de la escena + lead (generalmente 18–24 fotogramas).
  • Cada escena: lead + vo + tail, con tail de 16–90 fotogramas (suficiente para el cierre).
  • Genera timeline.ts (generado automáticamente, no lo modifiques a mano), con los campos { id, from, dur, voAt, voDur }.

1.5 Música (sintetizada puramente con código, numpy)

  • Debe tener estructura, no debe ser un relleno continuo: escribe «eventos» basados en el código de tiempo, no una única pista de fondo.
  • Armonía: cambia cada 12–18 segundos, con fundidos cruzados en las transiciones; el bajo solo debe mantener tonos sostenidos por encima de 55 Hz.
  • Sin zumbidos graves: el público lo describirá como «ruido sordo» o «demasiado molesto». Corta las frecuencias bajas por debajo de 85–100 Hz; usa ondas sinusoidales puras para los tonos largos, sin armónicos de octava.
  • Prioriza la sutileza: el nivel de la música debe estar aproximadamente −20 a −27 dB por debajo de la narración; cuando aparezca la narración, reduce la música un 40–70 % (sidechain ducking).
  • Volumen final de la mezcla: documental −18 a −24 LUFS (no −14, que es para música pop en streaming).
  • El «diseño de sonido» didáctico (chapoteos al entrar al agua, sónar, chirridos metálicos) solo se añade si el cliente lo solicita explícitamente; ha sido rechazado una vez, por defecto no se usa.

1.6 Imagen (Remotion)

Ver sección 2.

1.7 Renderizado y Mezcla

npx tsc --noEmit
npx remotion render Film4K out/silent.mp4 --codec=h264 --crf=18 --concurrency=7
ffmpeg -i out/silent.mp4 -i public/audio/master.m4a \
  -map 0:v -map 1:a -c:v copy -c:a aac -b:a 320k -shortest -movflags +faststart out/final.mp4
  • 4K = diseño 1920×1080 + transform: scale(2); 2K = scale(2560/1920). Escribe solo un diseño.
  • Reparaciones locales: renderiza solo el intervalo de fotogramas modificado → ffmpeg trim/concat para unir tres segmentos → -c:v copy solo para cambiar la pista de audio; si hay que cambiar la imagen, recodifica los tres segmentos y únelos (aproximadamente 5–10 minutos).

2. Sistema Visual

2.1 Lienzo

  • Lienzo 1920×1080, 24 fps; fondo de AbsoluteFill casi negro (#01050A / #010407), nunca negro puro #000.
  • Estructura de tres capas: degradado de fondo → luz volumétrica / partículas → capa de información (texto, escala de profundidad, lecturas).
  • Cierre unificado: Vignette + Grain estático (0.04, obligatorio animate={false}; el granulado dinámico hará que las líneas finas parpadeen).

2.2 Fuentes

  • Títulos / versos: Songti SC (serif), interletraje 0.4–0.6 em, tamaño grande (90–250 px).
  • Datos / lecturas: SF Mono, 8–14 px, interletraje 0.16–0.36 em.
  • Explicaciones: PingFang SC, 14–19 px, opacidad 0.55–0.7.

2.3 Paleta de Colores (el «color del mundo» de cada obra)

Tipo de obraSuperior brillanteMedioInferiorColor de énfasis
Espacio / TiempoFondo #050506Crema #F3E7D0—Ámbar #E8B06A
Océano / ProfundidadSuperficie #1E7C93#07232E#01050ACian #4FE0C0

Regla: una misma obra usa solo un color de énfasis; las excepciones como bioluminiscencia / fuentes hidrotermales permiten un máximo de dos, y cada uno debe estar vinculado a una magnitud física específica.

2.4 Motor de Partículas (Canvas 2D)

  • Aleatoriedad determinista (hash), el mismo fotograma siempre da el mismo resultado; tipos de nube: ball / filament / disk / globe-surface / sphere-shell / figure / city / helix / neuron / glyph / single / text / timeline.
  • Dos pasadas de dibujo: primero, radio grande y baja opacidad para el resplandor; luego, radio pequeño y alta opacidad para el núcleo; globalCompositeOperation = 'lighter'.
  • El límite de la nube de puntos debe estar fuera del cuadro: makeCloud('text', n) crea una caja de 3×1.2, y al proyectarse aparecerán bordes rectangulares (el error más señalado por el público). Usa expand(cloud, kx, ky, kz) para escalarlo 2.4–3.2 veces.

2.5 Criaturas y Terreno (SVG)

  • Siempre en vista lateral, con la cabeza hacia la dirección del movimiento; al menos 4 detalles anatómicos visibles (ojos, aletas, línea de la boca, pliegues de la garganta, percebes, etc.), de lo contrario parecerá una textura pegada.
  • Silueta con luz de borde (opacidad 0.2–0.35); no uses feTurbulence superpuesto al cuerpo (se volverá granítico).
  • Terreno: polilíneas con múltiples segmentos + líneas de estratos + escombros + sedimentos, sin triángulos; las montañas no deben tener una línea base (se convertirán en un gráfico).
  • Las apariciones de criaturas deben estar vinculadas a la «profundidad / tiempo»; no más de tres tipos diferentes al mismo tiempo.

2.6 Capa de Información (HUD)

  • Placa identificativa de capa: fondo degradado oscuro (0.72→0) + barra vertical izquierda de 2 px del color de énfasis + texto chino blanco puro de 30–35 px.
  • Lecturas: 2–3 grupos por capa, LABEL de 8.5 px / VALUE de 13–14.5 px.
  • Escala graduada: líneas de graduación + valor actual en negrita; el valor actual debe calcularse en tiempo real, no debe estar fijo (si está fijo, entrará en conflicto con el puntero).
  • Todos los números deben llevar unidad; las unidades deben separarse con un espacio (1,093 atm).

2.7 Transiciones

  • Primera opción: movimiento continuo (plano secuencia): la profundidad / el tiempo son magnitudes continuas, y el contenido entra y sale del cuadro con ellas.
  • Segunda opción: fundido encadenado corto (4–6 fotogramas, solo el nuevo plano aparece con fundido, el antiguo permanece opaco y es cubierto) — el brillo no se desploma y el HUD no superpone texto.
  • Prohibidas: barrido diagonal de luz, disolución cruzada larga, empuje vertical (dejará bordes oscuros), corte brusco tras negro (a menos que tenga una motivación física como «entrar al agua»).

3. Hechos y Datos

  • Crea un archivo facts.md: por cada dato, Número / Unidad / Rango de fuente / Cómo se escribe en la obra.
  • Los tres errores más comunes: ① Conversión de unidades (1 atm ≈ 10.3 t/m² ≈ 1.03 kgf/cm²); ② Confundir «promedio» con «extremo» (promedio 3,688 m vs. máximo 10,935 m); ③ Simplificaciones engañosas (90 vs. 98 elementos).
  • Toda la obra debe usar una única versión de precisión; la narración y la imagen deben tener la misma fuente.

4. Lista de Entregables

deliverables/
   NombreObra-4K-ConNarración.mp4           # Versión principal
   NombreObra-4K-SoloMúsica.mp4             # Si es necesario
   Póster-4K.png / VistaPrevia-4K.png       # Composición de fotogramas clave
   Portada/                                  # 1920 PNG + 4K PNG + 1146×717 JPG
   DeclaraciónDelDirector.md                # Estructura, sonido, registro de cambios
   TextoPublicación-Bilibili.md              # Título / Descripción / Etiquetas / Comentario fijado / Sugerencias de portada
   TablaDeHechos.md

El paquete de publicación debe incluir: declaración de generación por IA, división del trabajo (qué hizo el modelo, qué hizo la persona), y una versión de «números fáciles de confundir» como comentario fijado.


5. Registro de Errores (ordenados por frecuencia de aparición)

FenómenoCausa RaízSolución
Renderizado atascado en preprocesado de audioWAV largo + <Audio>Renderizado silencioso, mux externo
Texto borroso sobre partículasSin fondo + opacidad 0.4–0.5Añadir fondo, texto blanco puro, aumentar tamaño
Aparecen rectángulos regulares (lo que más preguntan los espectadores)Bordes de la caja de la nube de puntos entran en el cuadroexpand() para escalar 2.4–3.2×
Parpadeo de líneas finas / montañasGranulado dinámicoGrain animate={false}
Ballena / pez «nadando al revés»Cabeza y cola dibujadas al revés, ojo en la colaReconstruir en vista lateral: cabeza en +x
Montañas parecen gráficosRuta usa L ... Z con línea base horizontalHundir el borde inferior fuera del cuadro
Transición interrumpe la miradaBarrido de luz / disolución largaFundido encadenado corto o movimiento continuo
Música «retumba»Bajos continuos de 27–80 HzFiltro paso alto 85–100 Hz, eliminar sub-drone
Desincronización audio-imagenEl ritmo de la imagen no corresponde con el contenido de la narraciónReordenar la curva de profundidad/tiempo según el contenido de la narración
Una pista TTS de 600 sDegradación del modelo en bucleEliminar y regenerar, repetition_penalty 1.12
Rehacer 4K demasiado lentoRenderizar toda la obraRenderizar solo el intervalo de fotogramas modificado + concat

6. Ubicación de las Dos Obras de Referencia

  • Breve historia de la humanidad: Autorretrato del cosmos: ~/dsh-video-remotion/film/src/scenes/*, 14 escenas, 4K, 4'58".
  • Hacia abajo: DESCENT: ~/dsh-video-remotion/film/src/ocean/*, 6 capas, 2K, 1'30"; narración y música en ~/dsh-video-remotion/ocean/.
  • Ambas comparten src/engine/particles.tsx (partículas), src/engine/atmos.tsx (Vignette/Grain), src/theme.ts (fuentes / paleta / easing).

Skills relacionados