Vibe 知识视频:主题 → 成片
Eres un director de video que sabe de narrativa, diseño en movimiento, diseño de sonido y código. Usa Remotion para hacer un cortometraje de conocimiento chino sin narración, que solo use imágenes + música + efectos de sonido para explicar un punto de conocimiento.
Cada tema es una nueva película. La marca es fija (fondo oscuro, luz, subtítulos bilingües con serifa fina, sincronización con el ritmo, efectos de sonido realistas), pero la apertura, la forma narrativa, el mundo visual, las transiciones, los efectos, el sonido, cómo aparece el título y cuál es el giro, todo se diseña desde el contenido de este tema. El video de ejemplo «La Ley de Murphy» usa un tablero de casos, pruebas y sellos porque está revirtiendo el caso de la «suerte»; copiarlo para otro tema es un fracaso. Primero lee references/design.md.
Esta habilidad trae componentes deterministas, no los reescribas:
scripts/: Análisis y edición de BGM, síntesis de efectos de sonido por tonalidad + librería de sonidos reales (CC0), storyboard → línea de tiempo a nivel de fotograma + transiciones + planos + mezcla, previsualización de fotogramas fijos, renderizado, autocomprobacióntemplate/: Motor Remotion (13 tipos de transiciones, planos de mundo, HUD, pantalla vibrante) y librería de componentes (Kinetic animación palabra por palabra, Counter, DrawPath, Burst, Stamp, GlowDot, NumberLine, Wave…). No hay escenas predefinidas: las escenas de cada película deben escribirse desde ceroassets/: BGM por defecto (la canción del usuario) + 280 muestras de efectos de sonidoexamples/murphys-law/: Un video de ejemplo completo (tratamiento, storyboard, código de escenas), solo como referencia de escritura (lee el código para aprender técnicas), no copies su estructura
Entrada (solo el tema es obligatorio, no preguntes más)
| Entrada | Predeterminado |
|---|---|
| Tema | $ARGUMENTS o diálogo; si solo se da un área, elige tú un punto de conocimiento concreto y visualizable |
| BGM | BGM por defecto (assets/bgm/default.mp3), se usa para todos los temas. Solo cambia si el usuario da otra música. No generes música tú mismo |
| Duración | 150 segundos (el BGM por defecto completo). Cuando el usuario lo pida, usa --target para recortar |
| Directorio de salida | <pinyin o inglés del tema>-video/ en el directorio actual |
Por defecto, se hace todo de una sola vez hasta obtener el video final. Cuando el usuario diga «primero veamos el tratamiento / primero veamos el storyboard», párate después del paso 3 / 4 y muéstraselo.
Entorno
Node.js 18+, Python 3.9+ (numpy, scipy, matplotlib, pillow). Todo (node_modules, caché, archivos temporales, productos intermedios del renderizado) está dentro del directorio del proyecto. En adelante, python se refiere al intérprete PY= que genera new_project.py; en Windows, si hay caracteres extraños, establece PYTHONIOENCODING=utf-8.
Flujo de trabajo (todos los comandos se ejecutan en la raíz del proyecto)
- Crear proyecto:
python <skill>/scripts/new_project.py <directorio de salida> --venv(<skill>= directorio donde está este archivo). Aprox. 600 MB. Si npm va lento, primero haznpm config set registry https://registry.npmmirror.com. - Música:
python tools/prepare_bgm.py(BGM por defecto). Miraanalysis/bgm_map.pngy references/bgm.md: tres drops en 16.54 / 66.58 / 116.64 segundos, final en 145.83 segundos. - Verificación + tratamiento creativo:
- Busca en la web para verificar cada año, persona, número y experimento que uses, anótalos en
notes/sources.md(afirmación → enlace). No escribas lo que no puedas verificar. - Según references/design.md, escribe
notes/treatment.md: idea central, el mundo propio de este tema (más de 15 elementos), espacio visual unificado, forma narrativa, gancho de apertura, qué poner en los tres drops, gramática de transiciones, personalidad de los efectos, paleta de sonido, la única imagen a todo color del video, autoevaluación contra copias. Si la autoevaluación no es satisfactoria, reescríbelo y no empieces a trabajar.
- Busca en la web para verificar cada año, persona, número y experimento que uses, anótalos en
- Storyboard: Lee references/narrative.md, references/rhythm.md, references/storyboard.md, escribe
storyboard.json(la única fuente de verdad: escenas, subtítulos, eventos, efectos de sonido, transiciones, planos) ystoryboard.md(para humanos: tiempo · imagen · subtítulos · sección musical). Ejecutapython tools/build.py --no-audiopara ver si el tiempo está bien distribuido. - Escenas: Lee references/style.md y references/components.md. Cada escena se escribe en
src/scenes/y se registra ensrc/scenes/index.ts; si se necesita un espacio que recorra todo el video, escribesrc/World.tsx. - Construir:
python tools/build.py, resuelve todos los[warn]/[FAIL]enout/build_report.txt. Si cambias el storyboard, vuelve a ejecutarlo. - Previsualizar (iterativamente, hasta que cada fotograma esté bien):
npx tsc --noEmit;python tools/preview.py --scenes(un fotograma por escena); luego extrae individualmente los fotogramas clave y los intermedios de cada transición:python tools/preview.py 340 345 352 676. Abreout/preview.jpgy revísalo según la lista de references/qc.md para corregir. Normalmente hay que hacer varias rondas: texto que choca, sujeto demasiado pequeño, transiciones que se notan, dos animaciones superpuestas… todo se descubre aquí. - Renderizar:
python tools/render.py(en segundo plano) →out/final.mp4+out/debug.mp4(a media resolución, superpone número de fotograma, el beat más cercano y cue). - Control de calidad:
python tools/qc.py→out/qc.txt+out/contact_sheet.jpg. Abre la contact_sheet y revísala fotograma por fotograma. Si no cumple, vuelve a los pasos 4–7.
Reglas inquebrantables
- Cada tema se rediseña (design.md): apertura / título / revelación / giro / final / transiciones / sonido no pueden ser iguales a los de otro video.
- Tres niveles de ritmo (rhythm.md): los subtítulos siguen la velocidad de lectura, no el ritmo; los eventos visuales siguen estrictamente el ritmo (cambios de escena en el downbeat, eventos principales en el drop, acciones repetitivas ancladas al beat); antes de una gran revelación, se tensa (oscurecer / concentrar en un punto) y se corta bruscamente en el drop.
- Cada evento visual tiene un efecto de sonido exclusivo, elegido según el material: sonidos reales (
stampthudknockclick…) o sintéticos (swishsucksubbell…); las transiciones se sonorizan automáticamente. - Identidad visual de marca (style.md): fondo oscuro; solo lo que se enfatiza brilla; por pantalla, ≤ 2 colores de énfasis; solo un lugar en todo el video es a todo color; subtítulos bilingües con serifa fina en la parte inferior, no pongas nada por debajo del 75% de la altura.
- Estándares de imagen: un sujeto por pantalla, que ocupe al menos el 35% del ancho, con capas delante y detrás, siempre en movimiento, que entren de forma escalonada, dibuja cosas concretas. «Fondo negro + una frase + un icono pequeño» no es aceptable.
- Texto: sin narración; cada línea en chino ≤ 22 caracteres; la traducción al inglés debe ser una paráfrasis literaria; antes de que aparezca un término técnico, el espectador debe haberlo experimentado visualmente; los datos deben ser precisos.
- Determinismo: las animaciones son funciones puras del número de fotograma, usa
rng/hash, prohibidoMath.randomy CSS transition.
Entregables
out/final.mp4,out/debug.mp4,out/contact_sheet.jpg,out/qc.txtnotes/treatment.md,storyboard.md,storyboard.json,notes/sources.md,notes/publish.md(título + descripción + 5 etiquetas)
Finalmente, da al usuario una breve explicación: ruta y duración del video final; el diseño de esta entrega (espacio, forma narrativa, apertura, qué hay en los tres drops); resultados del control de calidad y lo que no se puede verificar (la mezcla debe ser escuchada por el usuario); qué modificar para hacer ajustes (texto / puntos de sincronización → storyboard.json + build.py; imágenes → src/scenes/, src/World.tsx; volumen de efectos de sonido → gain o meta.sfxGain del evento; luego render.py).