Reel Studio — cómo se hace un video
El proceso es el mismo para todos los estilos. El aspecto y sonido de un video provienen de su estilo; para quién es, su formato, la voz y de dónde pueden venir las imágenes provienen de la configuración del estudio. La habilidad genérica animated-video contiene el método más amplio (lluvia de ideas, tablero, prueba sin sonido, revisión); donde difiera, esta habilidad y la del estilo tienen prioridad. Pide con una recomendación para que "sí" sea una respuesta completa. Idear ideas y guardarlas en el tablero del proyecto es responsabilidad de la habilidad content-ideas, antes de que comience este proceso.
El espacio de trabajo
projects/<id>/— un proyecto: un canal para el que el creador hace videos (el selector de proyectos del estudio; el prompt indica cuál está abierto). Suconfig/contiene su configuración (Ajustes):profile.json,voice.jsonyaccount.json(su Instagram, Mi cuenta);account/lo que se descargó de esa cuenta. No toques la carpeta de otro proyecto a menos que se te pida.projects/<id>/videos/<slug>/— un video: un proyecto de Remotion copiado de la plantilla de su estilo.title.txt(su nombre en el estudio),style.txt(un id de estilo),audio/vo.txt(la narración, exactamente como va a la voz),audio/beats.json(la estructura del guion),src/format.json(tamaño, fps, sonoridad),CREDITS.md,caption.md,out/(renderizados, tableros; no versionado).formats/<id>/format.json— un formato: el tipo de video (toda la animación sobre una voz generada o sobre la voz grabada del creador; el creador hablando a cámara con animaciones…), qué hay en pantalla y cómo se edita. Un video nombra su formato enformat.txt(ninguno: el predeterminado, animado).skillapunta a sus propias instrucciones,overlaya archivos que agrega sobre la plantilla del estilo;"footage": truesignifica que el video comienza desde su grabación enfootage/("voiceOnly": true: solo se usa su sonido — audios).styles/<id>/style.json— un estilo: paleta y lo que significa cada color, fuentes, apariencia, movimiento, imágenes, qué evitar.skillapunta a sus propias instrucciones,templateal proyecto de Remotion que los nuevos videos copian.config/(en la raíz) — configuración compartida por todos los proyectos:images.json(fuentes de imágenes),social.json(scraper).tools/— scripts compartidos.LESSONS.md— lecciones de videos anteriores.projects/<id>/inspiration/<account>/— reels de otras cuentas estudiados en la página Inspiración del proyecto:account.json(analysis.text: qué funciona para esa cuenta) y por reelreel.json(métricas, descripción),transcript.json,analysis.json(gancho, estructura, visuales, CTA, qué tomar),hook.jpg(primeros 3 s) ysheet_NN.jpg(1 fotograma/s). Úsalos para ángulos y ganchos cuando se te pida; adáptalos al perfil del creador, nunca copies un guion.
La configuración proviene del estudio
Reel Studio pone el perfil (idioma, plataforma, audiencia, duración, reglas de descripción), el formato del video, la voz y las fuentes de imágenes en tu prompt en cada turno. Tienen prioridad sobre esta habilidad y la del estilo. Nunca uses un id de voz o configuración, un tamaño, una frecuencia de fotogramas o un objetivo de sonoridad fijos.
Las claves de API viven en el .env del espacio de trabajo (configuradas en Ajustes, junto a lo que cada una es: Voz, Extracción de datos). Las herramientas las leen; nunca imprimas una clave ni la pidas en el chat — si falta una, pide al creador que la agregue en Ajustes.
Python: las herramientas que solo usan la biblioteca estándar se ejecutan con python3 (python en Windows): tts.py, el_words.py, standin_words.py, commons.py, openverse.py, pexels.py, pixabay.py, unsplash.py, generate_image.py. Las herramientas que necesitan paquetes se ejecutan con el venv del espacio de trabajo, ../../../../.venv/bin/python (Windows: ../../../../.venv/Scripts/python.exe): cutout.py, audio/mix.py y sheet.py (snap.sh lo usa, o ffmpeg cuando no hay venv). Los estilos que hacen recortes necesitan el venv (Ajustes → Requisitos lo instala). Las rutas a continuación son desde la carpeta del video.
Antes de empezar
Lee el formato del video: formats/<id de format.txt>/format.json y, si tiene una, su habilidad — dice cómo se hace este tipo de video y tiene prioridad sobre los pasos siguientes donde difieran (por ejemplo, con su grabación no hay guion que escribir ni voz que generar: la edición proporciona ambos). Lee el estilo del video: styles/<id de style.txt>/style.json y, si tiene una, su habilidad. El formato nunca decide colores, tipografía o bordes: eso es del estilo. Lee LESSONS.md (la parte general y la del estilo). Un estilo sin habilidad ni plantilla se construye sobre la plantilla del estilo predeterminado (template/), con el aspecto cambiado a su style.json; dilo cuando empieces.
Pasos
- Nuevo video — el estudio lo crea desde el primer mensaje (carpeta, título, estilo, formato, tamaño). Desde un terminal o la conversación general:
scripts/new-video.sh <slug> [style] [format]. - Guion — con la habilidad
video-script(gancho, desarrollo de la respuesta, ritmo, lista de verificación), comenzando desde las notas de la idea si proviene del tablero. Plataforma, idioma, audiencia y duración del perfil; palabras ≈ el ritmo medido de la voz × los segundos objetivo. Objetivo: alcance, a menos que se indique lo contrario. Escribe los números con letra enaudio/vo.txt("mil cuarenta y dos") y conviértelos de vuelta a dígitos ensrc/captions.tsDISPLAY. Obtén aprobación. Escribeaudio/vo.txtyaudio/beats.json. - Imágenes — haz una lluvia de ideas de una imagen por beat con un agente nuevo (animated-video → encontrar las imágenes). Prefiere un motivo físico recurrente que represente el sistema a lo largo del video (un archivador de fichas = el servidor, cajones = registros). Las imágenes mantienen abierta la pregunta del guion: el primer fotograma la plantea, y ninguna imagen o título en pantalla muestra la respuesta antes de que la narración llegue allí. Obtén la aprobación del concepto.
- Voz —
python3 ../../../../tools/tts.py audio/vo.txt audio/vo.mp3, luegoffmpeg -y -i audio/vo.mp3 -ar 48000 public/vo.wavypython3 ../../../../tools/el_words.py audio/vo.alignment.json public/vo.wav(→src/words.json,src/vo_env.json). Antes de que exista la voz:python3 ../../../../tools/standin_words.py audio/vo.txt src/words.json(temporizado al ritmo de la voz; llámalo un marcador de posición). Haz una muestra corta primero cuando algo sobre la voz cambie. Usa el audio tal como se devuelve (no recortes pausas a menos que se te pida). Cada generación cuesta caracteres: no regeneres sin una razón. - Imágenes — busca libremente en la web usando las herramientas de búsqueda y navegación disponibles; cualquier sitio puede ser una fuente. El prompt lista integraciones API opcionales, no una lista blanca ni un orden obligatorio. Usa esas API solo cuando estén habilitadas y configuradas; la búsqueda web libre no necesita configuración de fuentes. Las descargas van a
assets/src/(no versionado); registra cada imagen enCREDITS.md(título, autor, licencia cuando se conozca, enlace original; nunca inventes una licencia). Cuando el stock no sirva, pide una foto de teléfono del gesto exacto (fondo simple, buena luz). Cómo se tratan las imágenes es responsabilidad del estilo. - Construcción — actúa en
src/lib.tsACTS(corte ~0.08 s antes de la primera palabra de cada acto), subtítulos como unidades de sentido ensrc/captions.ts(verificados palabra por palabra contra la transcripción), una escena por acto ensrc/film/scenes.tsx. Cada tiempo proviene de una cue (cue('frase'),at('frase')), por lo que una nueva voz re-temporiza el video. Tamaños y fotogramas desrc/lib.ts(W,H,FPS,f()), nunca números literales. Los componentes son del estilo. - Tablero —
./snap.sh out/board <sec> …renderiza fotogramas fijos ysheet.png. Muestra un fotograma clave por beat; obtén aprobación. Pasa los tiempos literalmente (en zsh una lista separada por espacios en una variable no se divide). - Sonido — la hoja de cues en
audio/mix.py, con tiempos de las mismas cues que usan las escenas;../../../../.venv/bin/python audio/mix.py→public/mix.wav; estableceaudio: trueensrc/Root.tsx. Qué sonidos: los del estilo. Di al entregar qué sonidos son sintéticos. - Prueba sin sonido — antes del primer corte completo:
ffmpeg -i out/<name>.mp4 -vf "fps=2,scale=270:-1,tile=8x5" out/mute/sheet_%02d.pngy da solo esas hojas a un agente nuevo (ignora subtítulos; vuelve a contar; lista confusiones y rupturas). Corrige, vuelve a revisar fotogramas fijos. - Renderizado — en macOS y Linux, primero elimina los renderizadores huérfanos:
ps -A -o pid=,ppid=,command= | awk '$2==1 && /chrome-headless-shell/ {print $1}' | xargs kill. LuegoCONCURRENCY=3 ./render.sh <name>→out/<name>.mp4, normalizado a la sonoridad del formato. Verifica duración, sonoridad, primer y último fotograma. Escribecaption.mdcon las reglas de descripción del perfil y los créditos; su apertura plantea la pregunta del gancho en lugar de responderla. Si el video o la descripción pide a la gente comentar una palabra para recibir algo, escribeautomatizacion.json(Reel Studio → Instrucciones automatización) con lo que se pega en ManyChat o InstantDM, como cadenas:keyword(la palabra exacta),reply(la respuesta pública al comentario),dm(el mensaje directo) ylink. Cada uno se copia tal cual, así que no incluyas notas dentro; deja vacío lo que falte y nunca inventes un enlace. Reporta la ruta, problemas abiertos, verificaciones omitidas, qué es sintético o inventado, y los créditos.
Después de un video
Los proyectos, videos, preferencias, estilos personalizados y lecciones personales del cliente permanecen locales y son ignorados por el repositorio de la aplicación. No los confirmes ni los subas allí, incluso después de un renderizado; nunca fuerces la adición de datos ignorados. Un repositorio separado para contenido del cliente requiere la solicitud explícita del creador.
Agrega lo que costó una revisión a LESSONS.md, una línea cada uno con la razón, bajo la parte general o la del estilo.
Cuando lleguen los números del video publicado, léelos con video-script → Revisión. Pasar rápidamente de la idea a la publicación importa, porque muchos videos fracasarán y cada uno enseña algo, así que una nueva versión cambia lo mínimo posible: conserva lo que fue aprobado, cambia solo lo que se está probando (un nuevo gancho, un corte donde la gente se fue), y regenera la voz solo para la narración que cambió. No agregues pulido que nadie pidió.