Communitygithub.com

kidsavagez/reel

Pipeline de guion a Reel terminado con dos compuertas humanas. Escribe el guion con señales de efectos, luego, después de que el usuario graba: selecciona las mejores tomas, corta silencios y relleno, añade efectos, subtítulos y texto en pantalla, renderiza una vista previa, toma notas, renderiza el final y escribe el pie de foto. Úsalo cuando el usuario escriba /reel, tenga una idea de video, deje metraje en bruto, diga "edita este video", "haz un reel", dé notas sobre una vista previa o comparta una edición de referencia para copiar el estilo.

¿Qué es reel?

Kidsavagez/reel es una habilidad de agente de IA diseñada para automatizar la creación de videos cortos estilo Reel desde un guion hasta el producto final. Está optimizada para plataformas como Instagram y YouTube Shorts. El pipeline consta de siete etapas numeradas (Estilo, Brief, Grabación, Alineación, Corte, Efectos, Vista Previa y Final) e incluye dos compuertas humanas donde el usuario debe aprobar el guion y la vista previa renderizada. Útil para creadores de contenido que buscan un flujo de trabajo eficiente y colaborativo. La herramienta se basa en scripts de Python dentro de una estructura de carpetas específica y requiere configuraciones como FFmpeg y Git. Soporta múltiples idiomas y estilos personalizables. El agente describe en detalle cómo manejar referencias de estilo, transcribir, alinear tomas, agregar efectos visuales y de sonido, y generar una vista previa editable antes de la salida final. También incluye reglas de estilo y limitaciones, como no cubrir la cara y no inventar números.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kidsavagez/CLAUDE-VIDEO-PIPLINE/tree/HEAD/.claude/skills/reel

Preguntar en tu IA favorita

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

Documentación

¿Qué hace reel?

Dónde están las cosas y configuración inicial

  • Carpeta del pipeline = la carpeta video-pipeline donde vive esta habilidad (tres niveles arriba de este archivo: video-pipeline/.claude/skills/reel/SKILL.md). Ejecuta cada comando desde allí. Los proyectos viven dentro de projects/<fecha>-<slug>/.
  • PY = el Python propio del pipeline. Úsalo para cada comando a continuación, nunca el del sistema: .venv/Scripts/python.exe en Windows, .venv/bin/python en Mac o Linux.
  • Si PY no existe aún, configura primero, sin preguntarle al usuario que escriba nada: ejecuta python install.py (o py install.py en Windows, python3 install.py en Mac). Si se detiene con "ffmpeg falta" o "git falta", instala esa herramienta por ellos (Windows: winget install ffmpeg / winget install Git.Git; Mac: brew install ffmpeg), diles que reinicien Claude Code si el nuevo comando no se encuentra, luego ejecuta install nuevamente. Cuando install imprima READY, ejecuta PY scripts/selftest.py y confirma 9/9 passed.
ESTILO (una vez por referencia) -> 1 BRIEF -> [compuerta: usuario aprueba guion] -> 2 GRABACIÓN (usuario)
-> 3 ALINEACIÓN -> 4 CORTE -> 5 EFECTOS -> 6 VISTA PREVIA -> [compuerta: notas del usuario, bucle] -> 7 FINAL

Tú escribes, cortas y renderizas. El usuario graba, aprueba y publica. Nada se publica desde aquí.

0. Estilo a partir de una referencia (cuando el usuario envía ediciones de referencia)

  1. PY scripts/style_ref.py <ref.mp4> [más referencias] --name <nombre-estilo>
  2. Abre cada imagen que escribe en styles/refs/<nombre-estilo>/ y lee los números del report.json.
  3. Escribe styles/<nombre-estilo>.json con SOLO las claves que difieren de styles/default.json: fuente/tamaño/colores/posición/palabras por grupo/mayúsculas de subtítulos, apariencia del texto en pantalla, ajuste de corte (cut.max_gap: más ajustado para ediciones rápidas), espaciado de efectos (effects.min_gap, del ritmo de la referencia), sonoridad.
  4. Escribe styles/<nombre-estilo>.md: qué hace la edición, en palabras sencillas. Cuáles de los 51 efectos coinciden con movimientos que viste, con qué frecuencia ocurre algo en pantalla, cómo se abre el gancho, qué nunca hace. Añade los números medidos (cortes por minuto, duración de toma).
  5. Muestra al usuario el .md y pregúntale qué entendiste mal. Ves fotogramas muestreados, no movimiento ni sonido: dilo, y pídeles que nombren marcas de tiempo que les encanten (--at 7.2,12 captura esos fotogramas).

Fuentes: los subtítulos pueden usar cualquier fuente en vendor/claude-video-effects/fonts/ (Montserrat, Anton, Archivo Black, Inter, Instrument Serif, Playfair Display, Space Mono, Permanent Marker) o cualquier .ttf/.otf que el usuario deje en fonts/.

1. Brief

  1. PY scripts/new_project.py "<slug>" --lang id --style <estilo> (lang: id, en o auto).
  2. Lee ~/.claude/youtube/voice.md o ~/.claude/instagram/voice.md si existe. Escribe en el idioma y voz del usuario. Nunca inventes un número, resultado o cliente; pregunta, o deja {{angka}}.
  3. Rellena script.json: una línea por oración que dirán, roles hook / body / cta.
    • Hook: escribe 3 opciones, recomienda una, mantenla en ~3 segundos hablados.
    • onscreen: texto corto para el gancho (y cualquier línea que necesite una tarjeta de título).
    • effects: efectos de señal EN UNA PALABRA: {"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}. Elige del .md del estilo. Como máximo un efecto cada effects.min_gap segundos. No todas las líneas reciben uno. Los efectos que usan los propios reels del usuario (orbit, phone-fan, place-in-grid, fan-build, noise, profile-wall, carousel-spin) necesitan "images": "<carpeta>".
    • Gráficos y contadores (liquid-glass-graph, over-the-shoulder-zoom) solo con números reales.
  4. Escribe brief.md junto a él: las opciones de gancho, el guion como lo leerán, una nota de toma por efecto ("línea 4: deja espacio sobre tu cabeza") y las reglas de grabación de templates/shooting.md.
  5. Compuerta: muestra el guion y detente. No continúes hasta que el usuario lo apruebe.

2. Grabación (usuario)

Ellos ponen los archivos en <proyecto>/raw/. Varios archivos están bien; se usan en orden de nombre.

3. Alineación

  1. PY scripts/transcribe.py <proyecto> (la primera ejecución descarga el modelo Whisper). ¿Muchos reinicios en la grabación, o el corte aún repite palabras? Usa PY scripts/burst_transcribe.py <proyecto> en su lugar: transcribe cada ráfaga de habla por separado (large-v3-turbo), así un reinicio después de una pausa nunca se fusiona con la siguiente toma. Si las palabras aún tragan las pausas, ejecuta PY scripts/snap_words.py <proyecto> antes de alinear.
  2. PY scripts/align.py <proyecto>. Lee el informe al usuario en forma breve: líneas que FALTAN o NO TIENEN TOMA COMPLETA, y cualquier improvisación que valga la pena conservar. No te detengas por ellas a menos que falte una línea; menciónalas con la vista previa.

4. Corte

PY scripts/cut.py <proyecto>

Reels solo de voz (el usuario graba solo su voz, la imagen son gráficos en movimiento): PY scripts/cut_voice.py <proyecto> en su lugar -> work/voice.wav (limpio, -16 LUFS) y work/prog_words.json (cada palabra conservada con su tiempo en la pista cortada). Construye los visuales sobre eso (HyperFrames, si el usuario lo tiene, o su propio editor). El paso de efectos necesita un rostro, así que saltarlo.

Música de fondo sin licencia: si existe .venv-music/ (python install.py --music), haz una base con .venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<ambiente>, sin voces", escucha por silencios (prueba otra semilla si es desigual) y establece "music": {"file": "<ruta abs>/work/bed.wav", "db": -22}.

5. Efectos

  1. PY scripts/effects.py <proyecto> plan. Corrige cualquier advertencia editando las señales en script.json.
  2. PY scripts/effects.py <proyecto> check, luego MIRA cada work/check/fx_*.png. Texto sobre el rostro, cortado en el borde, ilegible: corrige opciones (x, y, text más corto) y verifica de nuevo.
  3. PY scripts/effects.py <proyecto> render. Este es el paso lento (cada fotograma pasa por seguimiento facial). Dile al usuario que se está ejecutando.

6. Vista previa

  1. PY scripts/finish.py <proyecto> -> preview/preview_vN.mp4.
  2. PY scripts/finish.py <proyecto> --check <t1,t2,...> en medio de cada efecto y dos o tres momentos más. MIRA los PNGs: subtítulos chocando con un efecto, el texto del gancho ilegible, algo sobre el rostro. Corrige antes de mostrar.
  3. Compuerta: dale al usuario la ruta de la vista previa y una breve lista de edición: tomas usadas, qué se cortó, efectos y dónde. Pide notas.

Convertir notas en cambios

notacambiovolver a ejecutar desde
"usa la otra toma de la línea 3"choices.json {"take": {"3": 1}}alineación
"conserva lo que dije en 0:14"choices.json {"keep_unmatched": ["u3"]}alineación
"elimina la línea 5"choices.json {"drop_lines": [5]}alineación
"el corte es demasiado ajustado / demasiado suelto"estilo cut.max_gap, cut.post_padalineación
"sin efecto allí" / "palabra más grande"script.json efectosplan de efectos
apariencia de subtítulos, texto en pantallaestilo captions / onscreen, o script onscreenfinal
músicascript.json "music": {"file": "...", "db": -22}final

Volver a ejecutar desde una etapa significa también todas las etapas posteriores. Volver a ejecutar alineación o corte significa renderizar efectos de nuevo (lento), así que agrupa las notas primero.

7. Final

  1. PY scripts/finish.py <proyecto> --final -> final/final.mp4 y final/cover.jpg.
  2. Escribe final/caption.md:
    • Los primeros ~125 caracteres llevan el gancho; eso es todo lo que muestra el feed antes de "más".
    • Una llamada a la acción. Si es "comenta PALABRA CLAVE", coincide con el video.
    • Máximo 5 hashtags, específicos del tema, al final. En el idioma y voz del usuario.
    • Sin números inventados. Sin "deja de desplazarte", sin muros de hashtags.
  3. Recuérdales en una línea: el audio de tendencia se añade dentro de Instagram, y ellos mismos lo publican.

Reglas

  • El .md del estilo es el gusto. Cuando no estés seguro de añadir algo, déjalo fuera.
  • Nunca cubras el rostro. Nunca hagas zoom más allá de 2x.
  • Sé directo sobre los límites: el editor selecciona tomas y tiempos bien; no juzga su interpretación. Si una toma suena plana, di "revisa la energía de la línea 3", no finjas que la escuchaste.
  • Mantén projects/ fuera de git: el metraje en bruto es grande y personal.

Skills relacionados