Video edit
Este skill convierte metraje bruto en una edición terminada junto con un editor humano. Lee todo este archivo antes de tocar un proyecto. Luego lee reference/audio.md antes de cualquier cambio de corte o nivel, y reference/style.md antes de cualquier gráfico.
Lee primero: lo que puedes y no puedes hacer
- No puedes oír. Nunca escuchas el audio. Todo lo que sabes del sonido proviene de números: marcas de tiempo de palabras de Whisper, una envolvente de energía de 10 ms, medidores de sonoridad, espectrogramas. Dilo claramente al usuario y nunca afirmes que algo "suena bien".
- El oído humano es la comprobación final. Si un corte recorta una palabra, si un efecto es demasiado fuerte, si la voz suena apagada: el usuario decide. Tu trabajo es hacer que cada problema sea medible y cada corrección sea rápida.
- La primera pasada nunca es la edición final. Trabaja por etapas, entrega una vista previa después de cada etapa y espera correcciones. La mayoría de los buenos resultados provienen de ciclos de revisión cortos, no de una larga ejecución autónoma.
- Sincroniza por construcción, no con el oído. Las animaciones y los efectos de sonido se activan desde el mismo reloj de la línea de tiempo, y ese reloj se deriva de los tiempos de palabra medidos. Así es como los efectos aterrizan en la imagen sin que los oigas.
- Sé creativo, con propósito. Cada elemento visual debe ayudar al espectador a entender, y nada debe parecer una plantilla. Consulta "Dirección creativa" más abajo.
Rutas
Los comandos se ejecutan desde la carpeta del proyecto del usuario. $SKILL es la carpeta donde se encuentra este archivo (por ejemplo ~/.claude/skills/video-edit); configúrala una vez en el shell: SKILL=~/.claude/skills/video-edit.
Primera ejecución: conoce al creador
Busca el perfil del creador en ~/.claude/video-edit/profile.md. Si no existe, esta es la primera ejecución: preséntate en un mensaje corto y haz estas preguntas juntas. El usuario puede omitir cualquiera de ellas.
- Nombre en pantalla: el nombre y un rol de una línea para la tercera inferior y la pantalla final.
- Canal: nombre del canal, plataformas (YouTube, Instagram, TikTok…), el idioma que hablan en los videos y si quieren un segundo idioma en pantalla.
- Colores: los colores que les gustan (un acento y uno o dos colores de apoyo) y los colores que nunca quieren. Una miniatura o una página de marca también sirve como respuesta.
- Logotipo: un archivo de logotipo (SVG o PNG con transparencia) y dónde puede aparecer: tercera inferior, pantalla final o en ningún lugar.
- Fuente: una fuente de marca, o la predeterminada.
- Videos habituales: educativos, charlas, tutoriales, Shorts, y qué tan calmado o enérgico les gusta el movimiento.
- Sonido: efectos de sonido nunca, solo cuando un sonido es lo que se muestra, o también en transiciones de forma sutil. Música de fondo sí o no.
- Nunca: cosas que no les gustan (brillos, cursivas, emojis, zooms rápidos, un color…).
Guarda las respuestas en ~/.claude/video-edit/profile.md (formato en reference/profile.md) y copia el logotipo en ~/.claude/video-edit/brand/. Muestra el perfil guardado en unas pocas líneas y pregunta si es correcto.
A partir de entonces:
- Lee el perfil al inicio de cada proyecto y aplícalo sin preguntar de nuevo: los colores de acento y apoyo van a las variables CSS de la escena, el nombre y el logotipo a la tercera inferior y la pantalla final, y los valores predeterminados de sonido y movimiento al plan.
- Recuerda las reglas duraderas. Cuando el usuario dé una regla para todos los videos ("sin sonido en las transiciones", "siempre entrega 4K y 480p", "mi acento ahora es verde"), agrégala al perfil en "Reglas duraderas" con la fecha de inmediato, y di que lo hiciste. Una regla para un solo video va a
work/NOTES.mdde ese proyecto. Cuando no estés seguro, pregunta. - El perfil es personal. Reside en la carpeta personal del usuario. Nunca lo copies en un proyecto compartido o en un repositorio.
Cada proyecto: pregunta
Pregunta esto una vez por proyecto y guarda las respuestas en work/NOTES.md. Omite lo que el perfil ya responda.
- Tipo de video: educativo / explicativo, charla (talking head), tutorial con grabación de pantalla o Short (vertical, menos de 60 s). Esto establece el nivel de movimiento (ver la tabla más abajo).
- Material bruto: qué clips, en qué orden, ¿hay un guion o esquema a seguir?
- Idioma(s) en pantalla: del perfil, a menos que este video sea diferente.
- Efectos de sonido: del perfil. Sin perfil, el valor predeterminado es sin efectos en las transiciones, solo efectos donde un sonido es el tema.
- Entregables: resolución (1080p / 1440p / 4K), subtítulos y sus idiomas, lista de capítulos de YouTube, fecha límite.
Tipos de video
| Tipo | Movimiento | Efectos de sonido | Cortes |
|---|---|---|---|
| Educativo / explicativo | Calmado y serio. Diagramas limpios, paneles legibles, movimientos de cámara lentos. three.js solo cuando explica algo (un modelo 3D de lo que se enseña). | Ninguno, o transiciones muy suaves | Ritmo natural |
| Charla (talking head) | Pocas tarjetas que permanecen en pantalla mucho tiempo, colocadas en áreas vacías, nunca sobre el rostro. | Solo transiciones de capítulo suaves | Ritmo natural o ajustado |
| Tutorial / grabación de pantalla | Zoom en la parte de la pantalla que se está discutiendo, cuadros de resalte, tarjetas de paso. | Opcional clics suaves en los resaltes | Ritmo natural |
| Short | Más enérgico: revelaciones más rápidas, letras más grandes, un gancho en los primeros 2 s, subtítulos activados. Con curvas suaves, nunca entrecortado. | Permitido, siempre por debajo de la voz | Ajustado |
Si el usuario no lo dice, deduce el tipo de la transcripción y confírmalo. No sobreanimes un video educativo y no hagas que un Short se sienta lento.
Dirección creativa
Sé creativo, con propósito. Una buena edición explica el tema mejor de lo que el orador podría hacerlo solo, y nunca parece la misma tarjeta pegada una y otra vez.
- Explica, no decores. Para cada momento pregúntate: ¿qué haría que esto hiciera clic para alguien que nunca ha oído hablar de ello? Dibuja la idea abstracta (para "el modelo necesita muchos datos", muestra muchas caras diferentes siendo escaneadas y etiquetadas). Cuando se nombre una herramienta, lenguaje o término que muchos espectadores puedan no conocer, muestra un pequeño recuadro: su nombre, qué tipo de cosa es (lenguaje, herramienta, modelo, concepto) y una oración sencilla.
- Usa material real. Los propios datos medidos del video (la forma de onda de la oración que se está diciendo, los números reales de sonoridad), capturas de pantalla reales y grabaciones de pantalla que el usuario tenga, el antes y el después real. Una prueba real siempre gana a un ejemplo inventado. Pide al usuario capturas de pantalla cuando un momento lo necesite.
- Muestra los errores con honestidad. Cuando el video hable de algo que salió mal, muestra la captura de pantalla real, la nota que se dio y la versión corregida una al lado de la otra.
- Varía la forma. Alterna entre una tarjeta de palabras clave, una lista que crece a medida que se dice cada elemento, un contador, un panel de pantalla completa para una idea densa, un zoom en la pantalla, una inserción enmarcada de otro video. Elige la forma que se ajuste al contenido, no la que se usó la última vez.
- Una idea a la vez, movimiento calmado. Creativo no significa recargado. Mantén el nivel de movimiento del tipo de video y del perfil.
- Propón las piezas grandes primero. Antes de construir un panel de pantalla completa, un montaje o una escena 3D, descríbelo en dos líneas y deja que el usuario diga que sí.
El flujo de trabajo
Trabaja en este orden. Después de cada etapa numerada, detente y entrega una URL de vista previa o archivo más una breve lista de lo que decidiste y por qué.
0. Estructura del proyecto
project/
src/ clips brutos (o enlaces simbólicos a ellos)
work/ todo lo generado: wav, transcripciones, program.json, proxy.mp4, sfx/, NOTES.md, copias de seguridad
scene/ la página de gráficos en movimiento (copiada de template/ de este skill)
out/ renders y archivos finales
Mantén el proyecto fuera de carpetas sincronizadas en la nube (iCloud Desktop, Dropbox) si es posible. Los archivos sincronizados pueden ser eliminados del disco durante el renderizado y la lectura luego se cuelga.
1. Transcripción
python3 $SKILL/scripts/transcribe.py --project . src/*.mov --lang en
Esto divide cada clip en pausas, transcribe cada fragmento corto por separado (rellenado con silencio) y escribe work/transcripts/<clip>.json + .txt con enunciados numerados y tiempos de palabra. Transcribir archivos completos oculta las repeticiones: Whisper fusiona oraciones repetidas y elimina palabras repetidas. Consulta reference/audio.md.
Luego lee tú mismo los archivos .txt. Marca repeticiones, falsos comienzos, frases a medias y palabras de relleno. Los oradores a menudo repiten una oración dos o tres veces; conserva la última toma fluida a menos que el usuario diga lo contrario.
2. Corte aproximado
Escribe work/edl.json (formato en reference/edl.md): los enunciados a conservar, en el orden del guion, con marcadores de capítulo. Luego:
python3 $SKILL/scripts/cuts.py --project . # edl.json -> work/program.json (puntos de corte ajustados a los bordes reales de las palabras)
python3 $SKILL/scripts/build.py --project . audio video # -> work/prog.wav + work/proxy.mp4 (vista previa 1080p)
python3 $SKILL/scripts/verify.py --project . # retranscribe cada unión, marca palabras recortadas y repeticiones sobrantes
Corrige lo que verify.py marque, reconstruye y solo entonces entrega. Informa al usuario la nueva duración y cuántos cortes se hicieron.
3. Ciclo de revisión
- El usuario da marcas de tiempo. Tradúcelas por contenido, no por tiempo de reloj. Su pestaña puede mostrar una versión anterior. Cita la oración que crees que quieren decir y confirma si no estás seguro. Si un tiempo no coincide, busca en las transcripciones las palabras citadas.
- Antes de cada nueva versión, copia
work/edl.jsonywork/program.jsonawork/backup/vN/. Si el usuario dice "deshacer todo", restaura exactamente, no reinterpretes. - Nunca reemplaces
work/proxy.mp4mientras el usuario lo esté viendo; escribe el nuevo y avisa cuando esté listo. - Cambia una cosa a la vez cuando el usuario no esté satisfecho. Una vista previa rota hace que la gente desconfíe de toda la revisión.
4. Capítulos
Divide el video en capítulos por significado, no por tiempo de reloj:
- Un capítulo por cada cambio real de tema, en el orden que el espectador necesita para entenderlo. Sigue las secciones del guion cuando haya uno.
- Para un video de 10 a 15 minutos, normalmente de 5 a 10 capítulos principales, cada uno de al menos unos 45 segundos. Un subtema corto permanece dentro de su capítulo como un cambio de tarjeta, no como un capítulo propio.
- Titula cada capítulo con lo que el espectador obtiene de él ("Donde la IA falló"), no con una etiqueta vaga ("Parte 3"). Suficientemente corto para leerlo de un vistazo.
- Reglas de YouTube: el primer capítulo comienza en 0:00, al menos tres capítulos en orden ascendente, cada uno de al menos 10 s de duración, marcas de tiempo escritas con dos puntos (
0:51, no0.51), en la descripción (no en un comentario). Los capítulos que incumplan una regla fallan en silencio.
Propón la lista con una línea sobre por qué cada capítulo comienza donde lo hace. Después de la aprobación, añade elementos {"chapter": "..."} al EDL. cuts.py imprime una lista de capítulos de YouTube (0:00 Intro …) y escribe work/chapters.txt. Los velos en pantalla y la lista de YouTube usan los mismos tiempos.
Una transición de capítulo en pantalla es un velo de fotograma completo (consulta reference/style.md, sección 9): el número de capítulo, el título y una barra de progreso. Pon de 0,3 a 0,6 s del tono ambiente propio del clip antes de cada capítulo para que el velo nunca se extienda sobre la última palabra.
5. Gráficos, rango por rango
Copia la plantilla en el proyecto (cp -R $SKILL/template scene), sirve el proyecto y abre la escena. ?demo muestra la demostración de la plantilla; sin él, la escena carga work/program.json y reproduce work/proxy.mp4:
python3 $SKILL/scripts/serve.py --project . --port 5600 # http://127.0.0.1:5600/scene/
Trabaja en un capítulo o rango de tiempo a la vez, nunca en todo el video a la vez. Para cada rango:
- Enumera los momentos clave: las pocas cosas que vale la pena mostrar (números, pasos, una comparación, una idea clave, una fuente). No pongas la narración en pantalla. Las tarjetas no son subtítulos; llevan lo que la voz no puede (estructura, datos, una imagen). Usa la dirección creativa anterior.
- Bloquea cada momento clave a una palabra hablada con
at('frase'). Un elemento aparece cuando se dice su palabra (aproximadamente 0,1 s antes) y desaparece solo después de que termina su oración.at()devuelve la primera coincidencia: para una frase dicha más de una vez, pasa{ from: sectionStart }. Un número en el habla puede ser una marca de tiempo ("a las cero dieciocho" son 0:18 de un video, no 0,18 segundos); comprueba el contexto antes de dibujarlo. - Coloca las transiciones (
reference/style.md, sección 9): un velo en cada capítulo, un difuminado borroso donde la imagen salta, un difuminado borroso oscuro donde un corte elimina un tramo completo. Nada en cortes simples. - Comprueba
?t=SEGUNDOSse congela en los momentos clave, luego entrega la URL. Siempre verifica también?t=0: el primer fotograma es lo que YouTube y la mayoría de los reproductores muestran antes de reproducir, así que nada que pertenezca a después debe ser visible allí.
Después de un recorte, vuelve a verificar cada momento que esté vinculado a un instante de la fuente en lugar de a una palabra: un tiempo de fuente que fue cortado ya no existe en el programa.
Las reglas que se aplican a cada fotograma están en reference/style.md. Ejecuta la auditoría de diseño antes de cada entrega:
node $SKILL/scripts/audit.mjs http://127.0.0.1:5600/scene/ --every 0.5
6. Efectos de sonido (solo si se desean)
Sigue el perfil. Sin uno, no pongas sonido en las transiciones; usa efectos donde un sonido sea el tema (mostrar cómo suena un whoosh a un nivel dado, un clic en el botón que se está explicando). Genera la biblioteca, luego activa los efectos desde la línea de tiempo de la escena con cue(t, 'whoosh'):
python3 $SKILL/scripts/sfx.py lib --out scene/sfx # --gain -3 hace que cada efecto sea 3 dB más silencioso
Los niveles y las reglas están en reference/audio.md. La primera reacción del usuario al nivel decide: si dicen "no lo oigo" o "demasiado", cambia el nivel en pasos pequeños y recuerda la respuesta para el resto del video.
7. Renderizado y mezcla finales
python3 $SKILL/scripts/build.py --project . video --final # video del programa con resolución de origen (el fondo del render)
node $SKILL/scripts/render.mjs "http://127.0.0.1:5600/scene/?src=../work/prog-final.mp4" --out out/frames --workers 4 --dpr 2
python3 $SKILL/scripts/mix.py --project . --video out/frames --out out/FINAL.mp4
python3 $SKILL/scripts/loudness.py out/FINAL.mp4
Solo inicia un renderizado final largo después de que el usuario apruebe la vista previa. Pregunta antes de eliminar algo para liberar espacio en disco.
Entrega el archivo más un breve informe: duración, resolución, número de fotogramas, sonoridad integrada (LUFS), pico verdadero, relación de diálogo (opcional).
Referencias
Cada archivo de referencia cubre una tarea exactamente. No adivines; léelos.
| Archivo | Cuándo leerlo |
|---|---|
reference/audio.md | Antes de cualquier cambio de corte o nivel |
reference/style.md | Antes de cualquier gráfico |
reference/edl.md | Al escribir EDL |
reference/profile.md | En la primera ejecución |
reference/chapters.md | Al proponer capítulos |
reference/sfx.md | Al diseñar efectos de sonido |