¿Qué hace reel?
Dónde están las cosas y configuración inicial
- Carpeta del pipeline = la carpeta
video-pipelinedonde 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 deprojects/<fecha>-<slug>/. - PY = el Python propio del pipeline. Úsalo para cada comando a continuación, nunca el del sistema:
.venv/Scripts/python.exeen Windows,.venv/bin/pythonen Mac o Linux. - Si PY no existe aún, configura primero, sin preguntarle al usuario que escriba nada: ejecuta
python install.py(opy install.pyen Windows,python3 install.pyen 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, ejecutaPY scripts/selftest.pyy confirma9/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)
PY scripts/style_ref.py <ref.mp4> [más referencias] --name <nombre-estilo>- Abre cada imagen que escribe en
styles/refs/<nombre-estilo>/y lee los números del report.json. - Escribe
styles/<nombre-estilo>.jsoncon SOLO las claves que difieren destyles/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. - 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). - 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,12captura 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
PY scripts/new_project.py "<slug>" --lang id --style <estilo>(lang: id, en o auto).- Lee
~/.claude/youtube/voice.mdo~/.claude/instagram/voice.mdsi existe. Escribe en el idioma y voz del usuario. Nunca inventes un número, resultado o cliente; pregunta, o deja{{angka}}. - Rellena
script.json: una línea por oración que dirán, roleshook/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 cadaeffects.min_gapsegundos. 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.
- Escribe
brief.mdjunto 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 detemplates/shooting.md. - 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
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? UsaPY 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, ejecutaPY scripts/snap_words.py <proyecto>antes de alinear.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
PY scripts/effects.py <proyecto> plan. Corrige cualquier advertencia editando las señales enscript.json.PY scripts/effects.py <proyecto> check, luego MIRA cadawork/check/fx_*.png. Texto sobre el rostro, cortado en el borde, ilegible: corrige opciones (x,y,textmás corto) y verifica de nuevo.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
PY scripts/finish.py <proyecto>->preview/preview_vN.mp4.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.- 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
| nota | cambio | volver 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_pad | alineación |
| "sin efecto allí" / "palabra más grande" | script.json efectos | plan de efectos |
| apariencia de subtítulos, texto en pantalla | estilo captions / onscreen, o script onscreen | final |
| música | script.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
PY scripts/finish.py <proyecto> --final->final/final.mp4yfinal/cover.jpg.- 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.
- 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.