Reels con reel-kit
Editas metraje real en el ordenador del usuario. Necesitas una herramienta que ejecute comandos de shell y lea archivos allí (por ejemplo, la extensión Desktop Commander en Claude Desktop, o Claude Code). Si no la tienes, indícalo y dirige al usuario a docs/guia-windows.md. No intentes hacer esto con archivos subidos en el sandbox del chat.
Configuración
- Encuentra la carpeta
reel-kit(pregunta al usuario una vez si no la encuentras). Ejecuta cada comando desde allí. - Primera vez:
npm installypip install numpy. Verifica queffmpeg -versionynode -vfuncionen. - Elige el archivo de estilo en la carpeta
styles/de esta skill que coincida con el tema (yoga.md,aikido.md). Si ninguno encaja, comienza desdeyoga.mdy acuerda las diferencias con el usuario. Pide al usuario los datos que muestra el reel (nombre, fechas, lugar, URL); nunca los inventes.
Flujo de trabajo
- Examina el metraje. Para cada video largo:
python tools/reel.py sheet <video> --every 10. Lee las imágenes de la hoja enout/sheets/para encontrar los buenos momentos. Afina (--every 2) en una parte prometedora antes de elegir tiempos exactos. - Elige clips. Escribe
out/<nombre>-clips.tsv, separado por tabuladores, un clip por línea:id<TAB>ruta de origen<TAB>inicio<TAB>fin(segundos o mm:ss). Sigue el archivo de estilo para la duración del clip y lo que debe contener cada clip. - Corta.
python tools/reel.py cut out/<nombre>-clips.tsv. Cada clip se convierte en vertical 1080x1920 enpublic/clips/; el metraje apaisado se recorta siguiendo el movimiento (--frame centerpara un recorte centrado fijo,--frame keeppara escalar sin seguimiento). Añade--gpusolo si el PC tiene una tarjeta NVIDIA. El comando imprime una línea JSON por clip con su duración exacta. - Describe el reel. Crea
reels/<nombre>.json(ver el formato abajo), pegando las líneas de clip del paso 3. - Renderiza.
python tools/reel.py render <nombre>escribeout/<nombre>.mp4con la sonoridad normalizada para redes sociales. - Verifica. Extrae 3-4 fotogramas (
ffmpeg -i out/<nombre>.mp4 -vf "fps=1/4,scale=360:-2,tile=4x1" -frames:v 1 out/<nombre>-check.jpg) y míralos antes de decirle al usuario que está listo. Informa al usuario de la ruta del archivo y la duración.
Cambios que el usuario solicite después ("quita la parte lenta", "sin música"): edita el TSV o el JSON y ejecuta solo los pasos posteriores. Conserva versiones anteriores usando un nuevo nombre (<nombre>-v2) para que el usuario pueda volver atrás.
reels/.json
{
"clips": [{ "file": "clips/a1.mp4", "seconds": 6.5 }],
"transition": "fade",
"fadeSeconds": 0.5,
"clipVolume": 0,
"music": { "file": "music/calm.mp3", "volume": 0.5 },
"accent": "#7FA88B",
"intro": [{ "kicker": "Yoga · Murcia", "title": "Clase abierta", "sub": "Sábado 10:00" }],
"outro": { "text": "Reserva tu plaza", "url": "example.com", "image": "poster.jpg", "seconds": 3.5 }
}
- Solo
clipses obligatorio. Las rutas son relativas apublic/; coloca la música enpublic/music/y las imágenes enpublic/. transition:"cut"(cortes directos, por defecto) o"fade".clipVolume: 1 conserva el sonido original, 0 lo silencia. La música se desvanece por sí sola al final.intro: tarjetas de texto, 2.5 s cada una, mostradas sobre los primeros clips.outro: pantalla de cierre con texto, URL y/o una imagen (póster, logotipo).- Usa solo música que el usuario proporcione o confirme que tiene los derechos.
Reglas
- El trabajo con video es pesado. Ejecuta un trabajo de ffmpeg o renderizado a la vez; las herramientas ya funcionan con baja prioridad.
- Usa
npm run studiosolo si el usuario quiere previsualizar y ajustar manualmente. - Para cambiar la apariencia en sí (fuentes, diseño), edita
src/Reel.tsx; la skill oficial de Remotion (npx skills add remotion-dev/skills) ayuda allí.