Communitygithub.com

anthonytrance/video-editor-skill

Edita videos cortos a partir de material en bruto usando FFmpeg: reels de afterparty y conciertos, saludos, clips de entrevista mezclados con actuaciones, historias de viajes o vlogs, y cualquier híbrido. Un plan de edición JSON guía cortes exactos al fotograma, reencuadre de 16:9 a 9:16, movimientos, gradación, texto, logotipos, música y voz con ducker; un verificador bloquea material reutilizado, letterboxing y texto bajo la interfaz de la app; conoce cada destino (Reel, Story, carrusel, feed, TikTok, Shorts, YouTube) y diseña como un cuadrado enmarcado dentro de un Reel 9:16; Gemini registra el metraje y critica las exportaciones. Úsalo para cualquier edición multicorte, recorte o para 'hacer un reel/aftermovie/clip con este metraje'.

¿Qué es video-editor-skill?

Esta skill transforma una carpeta de clips en un video corto terminado, actuando el agente como editor: decide la historia y escribe un plan de edición, mientras los scripts ejecutan las partes mecánicas con precisión, asegurando que los cortes coincidan con el ritmo, no haya repeticiones accidentales ni letterboxing. Está diseñada para entornos como Claude Code, Cursor o Codex, y se apoya en FFmpeg y Python para el procesamiento. La skill requiere leer primero un archivo LOCAL.md (que define Python, marca y carpetas de medios) y un archivo de marca (`~/.video-editor/brand.json`) para fuentes, logotipos y estilo visual. Su flujo de trabajo abarca desde la creación de un brief, el registro del metraje con Gemini para identificar momentos clave y rostros, la elaboración de hojas de contacto, la escritura de un plan JSON detallado (con validación automática que evita errores como clips reutilizados o texto en zonas no seguras), hasta la exportación en borrador y final, y una revisión crítica con Gemini para detectar problemas visuales o de sincronización. La skill maneja múltiples tipos de contenido (reels, historias, carruseles, TikTok, Shorts, YouTube) y modos de edición (musical, narrado, cronológico o híbrido), proporcionando un control preciso sobre cortes, reencuadres, gradación, texto y capas de sonido. Su fortaleza radica en la combinación de decisiones editoriales humanas (lectura de hojas de contacto y revisión de advertencias) con la automatización de tareas repetitivas y la verificación semántica mediante IA.

Compatible con~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/anthonytrance/video-editor-skill/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

Editor de video

Convierte una carpeta de clips en un video corto terminado. El agente es el editor: decide la historia y escribe un plan de edición, y los scripts hacen las partes mecánicas con exactitud, para que los cortes caigan en el ritmo, nada se repita por accidente y nada quede con letterboxing.

Lee primero LOCAL.md si existe: contiene el Python de esta máquina, el archivo de marca y las carpetas de medios. El propietario, las fuentes de la marca, los logotipos y la apariencia predeterminada residen en un archivo de marca (~/.video-editor/brand.json, consulta references/brand.md), nunca en los scripts.

Los clips individuales que solo necesitan recorte o un simple corte, los subtítulos en un solo clip y la publicación pertenecen a la skill social de la instalación (para XNP: xnp-social). Esta skill crea la edición; esa skill la revisa, subtitula, planifica y publica.

No hay lista de tipos de video

Cada solicitud es una mezcla. No busques una plantilla que coincida. En su lugar, decide cuatro cosas a partir del brief, por sección si el video cambia de carácter a mitad de camino:

  1. La columna vertebral: qué impulsa el tiempo. Música: los cortes caen en compases y tiempos, las tomas se eligen por energía, el drop es el punto culminante (len en "2bar", "1beat"). Voz: las palabras marcan la duración, la imagen corta al final de las frases, la música baja bajo la voz (audio_db en la toma hablada, duraciones en segundos). Historia o cronología: llegada, desarrollo, momento, resplandor final; corta por acción y cambios de lugar, la música es un fondo. Un híbrido cambia de columna vertebral por sección: un saludo de 6 segundos con voz, luego imágenes de concierto al ritmo; o una historia de viaje con cronología y un montaje al ritmo en el concierto.
  2. Destino y diseño. A dónde va (Reel, Story, carrusel, feed, TikTok, Shorts, YouTube) y cómo usar ese espacio: a pantalla completa, un cuadrado enmarcado o imagen 4:5 sobre un fondo diseñado, o ambos alternando por toma. Elige basándote en el material y el propósito, no por costumbre; un momento panorámico que un recorte 9:16 arruinaría puede querer un Reel enmarcado, un carrusel o un resumen 16:9. Lee references/formats.md para saber qué hace cada plataforma con la imagen y cuándo encaja cada diseño. La duración sigue al destino y al material.
  3. Imprescindibles. Personas nombradas que deben aparecer y ser reconocibles, un logotipo, una fecha, un agradecimiento, un momento específico, una línea de título. Pregunta solo si el brief realmente deja algo abierto.
  4. Capas de sonido. Solo música; música más público o ambiente que asoma; voz con música de fondo; solo voz. La voz lleva subtítulos (ver Subtítulos más abajo).

Luego escribe el plan, con "destination" configurado para que el lienzo, el área segura y el límite de duración se ajusten. references/examples.md muestra cuatro briefs resueltos (reel de afterparty, saludo, saludo con imágenes de concierto, historia de viaje) como razonamiento, no como tipos a copiar. references/craft.md contiene las reglas de edición que se aplican a todos ellos.

Flujo de trabajo

Los scripts están en scripts/; ejecútalos con el Python de LOCAL.md, PYTHONUTF8=1 PYTHONIOENCODING=utf-8, FFmpeg y ffprobe en PATH. Trabaja en una carpeta de proyecto fuera de la skill (src/, audio/, log/, proxy/, out/, review/, edit.json).

  1. Brief. Quién y qué hay en el material, cómo reconocer a cada persona, el evento, el propósito, las cuatro decisiones anteriores. Escríbelo en brief.txt; Gemini lo lee.
  2. Registra el material. gemini.py log WORKDIR src/*.mp4 --context brief.txt --ratio 9:16 escribe log/NOMBRE.json por clip: momentos con quién está dónde (x como fracción para recortar), acción, emoción, energía, sonido, habla, calidad, si una ventana 9:16 contiene a los sujetos, el mejor centro de recorte y un uso (apertura, clímax, reacción...). Aproximadamente un céntimo de dólar por clip. Los registros son pistas: confirma rostros, centros de recorte y "mejores momentos" en fotogramas antes de construir sobre ellos.
  3. Observa. sheet.py hace hojas de contacto etiquetadas en una sola ejecución de FFmpeg: --every 2 a través de un clip, --times, comparación de candidatos con a.mp4@3 [email protected], --crop 9:16 --cx 0.4 para ver una fuente tal como se encuadrará, --grid 10 para planificar recortes. Lee la imagen tú mismo; nunca le pidas al propietario que mire.
  4. Planifica. Escribe edit.json (references/edit-format.md). Cada toma nombra un momento diferente; dale a cada una una nota que explique por qué está ahí.
  5. Verifica. validate.py edit.json (render.py también lo ejecuta y se niega si hay errores). Errores: el mismo material usado dos veces, una fuente demasiado corta, movimiento desconocido, fit encuadrado sin permiso, texto en las zonas de la interfaz de la plataforma, archivos faltantes, música demasiado corta. Advertencias: tomas del mismo clip con menos de 2s de diferencia, tomas similares, cortes fuera del ritmo, bordes negros dentro de la fuente encuadrada, logotipos cerca de las zonas de la interfaz. Lee cada advertencia y decide; no la silencies sin más.
  6. Exportación de borrador. render.py edit.json --out out/v1-draft.mp4 --draft (mitad de tamaño, rápido). Luego sheet.py out/v1-draft.mp4 --plan edit.json --out review/v1.png muestra el inicio, el medio y el final de cada toma: verifica el encuadre, las cabezas, la colocación del texto y que cada toma sea lo que dice la nota.
  7. Exportación completa. render.py edit.json --out out/v1.mp4. Ajuste lento, unos 5 minutos para 30 segundos de fuentes 4K; render.py luego verifica tamaño, duración, sonido, barras negras por toma, fotogramas negros y el max_mb del plan.
  8. Crítica. gemini.py review out/v1.mp4 --context brief.txt --plan edit.json --out review/v1.json (menos de un céntimo). Trata cada nota como una afirmación: verifícala contra fotogramas o el plan antes de cambiar algo. Ha llamado "inseguro" a texto correcto y "error tipográfico" a una fecha correcta. Sus aciertos reales fueron tomas de aspecto repetido, una mano bloqueando un gesto clave, un teléfono en el encuadre, un destello que parecía un fallo.
  9. Itera con nuevos números de versión; nunca sobrescribas un archivo entregado. Mantén edit.json por versión (copia a edit-v2.json) para que cualquier versión pueda reexportarse.
  10. Entrega como indique LOCAL.md, describe qué hay en la edición con palabras (toma por toma, qué dice el texto, dónde alcanza su punto máximo la música), y entrega el archivo a la skill social para revisión, subtítulos y publicación. La publicación siempre necesita la aprobación explícita del propietario.

Subtítulos

Los subtítulos de voz son trabajo de la skill social: exporta primero la edición, luego ejecuta su helper de subtítulos (para XNP: xnp-social/scripts/captions.py transcribe sobre la exportación terminada, para que los tiempos de las palabras coincidan con la edición), sigue su paso de aprobación obligatorio, luego quema. Si ya existe un .srt o .ass aprobado para la línea de tiempo final, el captions.file del plan lo quema durante la exportación.

Límites honestos

La verificación de similitud es un hash de imagen más color medio: detecta el mismo momento dos veces, no "la misma persona desde el mismo ángulo" en momentos diferentes. Esa verificación semántica proviene de los registros y la revisión de Gemini y de leer la hoja de contacto. No hay detección automática de ritmo: proporciona el BPM y un punto de inicio en un tiempo fuerte (music.start), luego la cuadrícula es exacta. No hay seguimiento facial: las panorámicas y los centros de recorte provienen de los registros y las hojas. Los códigos de tiempo de Gemini pueden desviarse en clips largos; los proxies llevan un código de tiempo quemado para mantenerlos honestos, y log advierte cuando los momentos sobrepasan el clip.

Archivos

scripts/common.py cargador de plan, matemáticas de tiempo, sonda, marca, gradaciones. scripts/render.py el exportador en una sola pasada. scripts/validate.py el verificador. scripts/sheet.py hojas de contacto. scripts/gemini.py registro y revisión. Referencias: formats.md, edit-format.md, craft.md, examples.md, brand.md.

Skills relacionados