Video de Locución con Infografía
Ubicación y Estructura de Entrega (Arquitectura v1.11)
- La raíz del repositorio de entrega debe contener
AGENTS.md(cómo usar esta plantilla); este skill está fijo en.agents/skills/remotion-infographic-video/. tests/está en la raíz del repositorio (junto a.agents/), pertenece a la puerta de desarrollo/CI, no es parte del runtime del skill y no se copia al «instalar solo el skill»..envsolo está en el directorio de este skill, no en la raíz del repositorio.
Preparación Antes de Usar (Copiar y Usar)
- Copiar:
- Uso completo del repositorio: Clona/copia la raíz del repositorio de entrega y ábrelo (incluye
AGENTS.mdraíz ytests/). - Instalar solo el skill: Copia
.agents/skills/remotion-infographic-video/a la misma ruta en el proyecto destino (incluyescripts/y sulib/). - El paquete del skill no necesita instalación con
pip/npm;scripts/solo usa la biblioteca estándar de Python. Una vez configurado.env, se pueden ejecutar los pasos 0–5.
- Uso completo del repositorio: Clona/copia la raíz del repositorio de entrega y ábrelo (incluye
- Configurar
.env: En el directorio de este skill ejecutacp .env.example .env, edita.envy completa:- Obligatorio:
DOUBAO_TTS_API_KEY=(escribe la clave después del signo igual, sin comillas) - Opcional:
DOUBAO_SPEAKER=(el tono de voz predeterminado se encuentra en VOICE) .envestá ignorado por.gitignore, no pegues la clave en el chat y no cambies a otro motor de locución.
- Obligatorio:
- Requisitos del Entorno (instalar manualmente, los scripts no lo hacen): Node 18+, Python 3, ffmpeg, ffprobe, conexión a internet.
- Comenzar la Creación: Cuando el usuario diga «comenzar a crear» o una intención equivalente:
- Primero ejecuta
python3 scripts/check_env.py(se puede usar--skill-dir <ruta absoluta de este skill>; por defecto es el directorio actual). - Código de salida 3: Indica que se debe completar
DOUBAO_TTS_API_KEYen.agents/skills/remotion-infographic-video/.env(o en la ruta absoluta de este skill.env). Espera a que el usuario responda «listo» y vuelve a ejecutar; antes de eso no se hace locución ni se crea el proyecto. - Si pasa: Si el mensaje ya contiene un tema, ve directamente a los pasos fijos; de lo contrario, solo pregunta una vez por el tema (se puede indicar «vertical»; por defecto horizontal 1920×1080, vertical 1080×1440, reglas en LAYOUT). El nombre de la plataforma no afecta el tamaño del lienzo.
- Primero ejecuta
Reglas Estrictas
- La clave se lee solo del
.enven el directorio de este skill (en el repositorio de entrega es.agents/skills/remotion-infographic-video/.env) deDOUBAO_TTS_API_KEY; no permitas que el usuario pegue la clave en el chat, no cambies de motor de locución, no muestres la clave en ninguna salida. - No publicar, no subir: solo producir el video final, la portada y los archivos de texto.
- Los números deben tener fuente; los números en pantalla llevan una marca de fuente; los íconos ilustrativos deben indicar «ilustrativo».
- La última línea de stdout de cada script es un resumen JSON; manejar según el código de salida: 3 falta clave (indica completar
.env, detener), 4 error de autenticación (detener), 5 corregir artefacto anterior, 6 solo re-ejecutar ítems fallidos, 7 entrar en modo de reparación.
Pasos Fijos
- Verificación previa:
python3 scripts/check_env.py. Código de salida 3: sigue la indicación anterior para completar.envy vuelve a ejecutar. - Definir tema: Determinar topic, slug, tamaño del lienzo, escribir
<slug>/job.json(si no se indica tamaño, por defecto horizontal); cuando el usuario nombre una plataforma, escribirplatforms, de lo contrario usar las plataformas predeterminadas según PUBLISH. - Redactar guion: Escribir
script.md(## Sxx Nombre de sección+- [01] Texto {context: … | rate: 0 | pause: 300}) ysources.md(bloque json al final). Ejecutarpython3 scripts/validate.py sources <slug>/script.md <slug>/sources.md; los números sin fuente deben eliminarse o añadir fuente. - Locución: Si hay disponible una herramienta MCP de locución (tts_synthesize) con la misma entrada y salida, usarla; de lo contrario ejecutar
python3 scripts/tts_doubao.py <slug>/script.md --out-dir <slug>/voice; ambos producen un timeline.json que se valida con el mismo Schema (assets/schemas/):python3 scripts/validate.py timeline <slug>/voice/timeline.json. Las oraciones fallidas se re-ejecutan con--only. - Storyboard: Escribir
storyboard.json(cada oración debe estar cubierta por al menos un plano, las transiciones de sección y las entradas de plano toman valores de enumeración). Ejecutarpython3 scripts/validate.py storyboard <slug>/storyboard.json --timeline <slug>/voice/timeline.json. - Assets: Usar
python3 scripts/fetch_asset.pyconaddpara registrar cada asset,prunepara eliminar assets no utilizados; no usar assets sin autorización clara. - Crear proyecto:
python3 scripts/scaffold_project.py --job <slug>/job.json --out <slug>/projectgenera el proyecto. Escribir las escenas de cada sección según los ejemplos (assets/example/). Luego ejecutarpython3 scripts/build_timeline.py --timeline <slug>/voice/timeline.json --storyboard <slug>/storyboard.json --subtitles <slug>/voice/subtitles.json --manifest <slug>/assets-manifest.json --project <slug>/project. Dentro del proyecto ejecutarnpm ci. - Auto-verificación:
bash scripts/check_project.sh <slug>; si falla, leercheck/report.json, reparar y re-ejecutar, máximo 3 veces. Si sigue fallando, detener e informar. - Renderizado:
bash scripts/render.sh <slug>produce el video final (<slug>/out/video.mp4) y la portada (<slug>/publish/cover_<W>x<H>.png), con verificación automática. - Textos de publicación y entrega: Según PUBLISH, para cada plataforma destino escribir un conjunto de
publish/<plataforma>/title.txt,description.txt. Las etiquetas se escriben por plataforma enpublish/<plataforma>/tags.txt(una por línea). Ejecutarpython3 scripts/validate.py publish <slug>,python3 scripts/validate.py deliverable <slug>,python3 scripts/validate.py leak <slug>. Luego usarpython3 scripts/fetch_asset.py credits-diff --manifest <slug>/assets-manifest.json --slug-dir <slug>para verificar atribuciones.
Resumen de Reglas de Estilo
- Los valores de color, tamaño de fuente y efectos de movimiento solo provienen de
assets/tokens.json, el color de fondo base es #070A0F; el código de escena no debe escribir valores de color (STYLE). - Entrada unificada con resorte. 5 tipos de transiciones de sección, 3 tipos de entrada de plano, usando los valores de enumeración del storyboard (MOTION).
- Solo se usan los 15 componentes del registro; los que no estén en la lista se escriben nuevos dentro del proyecto usando tokens +
useLayout()(COMPONENTS). - Solo cuatro capas: background / scene / hud / subtitle, sin pantalla de créditos final; la duración del video = duración de la locución.
- Lo aleatorio solo se genera con
random(seed), prohibido Math.random. - El diseño se deriva del ancho y alto del lienzo; solo
src/layout/presets.tsensrc/puede contener dimensiones del lienzo (LAYOUT). - Formato del guion según SCRIPT, parámetros de locución según VOICE, autorización y atribución de assets según ASSETS.
Prohibiciones
- No publicar ni subir a ninguna plataforma.
- No filtrar claves: no mostrar, no escribir en artefactos, no permitir que el usuario pegue claves en el chat, no cambiar a otro motor de locución.
- No usar assets sin autorización clara; atribuciones, descripciones y títulos no deben contener enlaces.
- No inventar datos: los números sin fuente no entran en el guion ni aparecen en pantalla.
- No hacer preguntas al usuario entre la definición del tema y la entrega, ni solicitar ningún asset.
Entrega
Devolver de una sola vez el contenido de deliverable.json: ruta del video final y duración, tamaño del lienzo, portada, títulos y descripciones por plataforma, etiquetas, atribuciones de assets, directorio de salida y notas.