Communitygithub.com

ONIKOSIOLA/kit-de-edicion-de-video

Convierte material de vídeo sin procesar en un vídeo terminado y listo para publicar en Adobe Premiere Pro, tanto para clips de cabezas parlantes/grabaciones de pantalla como para montajes sin diálogo (recorridos de habitaciones, paseos, viajes, exhibiciones de propiedades/productos).

¿Qué es kit-de-edicion-de-video?

Este skill combina dos herramientas MCP (premiere-pro y claude-video-vision) para automatizar el proceso completo de edición de vídeo en Adobe Premiere Pro. Analiza el audio mediante detección de silencios y transcripción local (whisper) para decidir los cortes, y luego ejecuta esos cortes, corrige el color, añade subtítulos y exporta versiones horizontal y vertical. Soporta dos modalidades: edición basada en diálogo (cortando silencios, muletillas y tartamudeos) y montaje sin diálogo (seleccionando los mejores 3-6 segundos de cada clip, alternando planos generales y detalles). Aplica un 'House Style' predefinido que prioriza la entrega vertical (1080×1920, 30fps) y cortes precisos (un ritmo por escena, ~3-6 segundos). El skill maneja bugs conocidos del servidor premiere-pro MCP, como la no-operación de `trim_clip` o la falta de sincronización en `razor_timeline_at_time`, y proporciona soluciones como usar `cortar + eliminar con ripple` y verificar pistas de audio manualmente.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ONIKOSIOLA/video-editing-kit/tree/HEAD/skills/premiere-clean-edit

Preguntar en tu IA favorita

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

Documentación

Edición Limpia en Premiere

Toma uno o más archivos de vídeo sin procesar y conviértelos en vídeos terminados y exportables: corta los silencios y las palabras de relleno, corrige el color, añade subtítulos listos para incrustar y exporta tanto una versión horizontal como una vertical, todo ello manejando Adobe Premiere Pro a través de las herramientas MCP premiere-pro, con claude-video-vision realizando el análisis de audio que Premiere no puede hacer sin interfaz gráfica.

Premiere Pro debe estar abierto en el equipo con el servidor MCP premiere-pro conectado y el panel MCP Bridge (CEP) iniciado (Ventana → Extensiones) — este skill no puede lanzar la aplicación. Ejecuta el skill setup del kit si el servidor no está instalado. Si herramientas como create_sequence no aparecen directamente, el servidor las está ocultando tras search_tools / invoke_tool: úsalas, o vuelve a registrar el servidor con PREMIERE_MCP_TOOLSET=full. Si alguna llamada a la herramienta mcp__premiere-pro__* falla con un error de conexión, dile al usuario que abra Premiere Pro y reintente, en lugar de buscar soluciones alternativas.

Por qué son dos MCP, no uno

premiere-pro puede cortar, etalonar y exportar, pero no tiene forma de decidir dónde cortar. No hay detección de silencios ni herramienta de transcripción en ese servidor. claude-video-vision con video_analyze llena ese vacío: ejecuta detección de silencios con ffmpeg y transcripción local con whisper (con marcas de tiempo a nivel de palabra) en el archivo crudo antes de que toque Premiere. La lista de cortes se calcula una vez, en datos planos, y luego se ejecuta como una secuencia de llamadas MCP. No intentes calcular los puntos de corte a ojo desplazándote por la línea de tiempo de Premiere — no tienes una audición precisa de fotogramas, el análisis lo hace.

Dos tipos de edición — elige antes de empezar

  • Basada en diálogo (cabeza parlante, grabación de pantalla, voz en off): sigue el Pipeline a continuación — cortar silencios y relleno, y los subtítulos son el trabajo.
  • Montaje / B-roll (recorrido de habitación, paseo, metraje de viaje — sin diálogo que guíe el corte): omite los pasos de silencios y relleno y sigue el pipeline de Montaje más abajo. Subtítulos opcionales; la música y el ritmo son el trabajo.

Ambos tipos terminan con el House Style a continuación. En caso de duda sobre qué tipo es: si el audio no transmite la historia, es un montaje.

House Style (apariencia predeterminada para redes sociales)

Estos valores predeterminados provienen de comparar un ensamblaje automático con un corte final hecho a mano. Un primer corte que los ignore generalmente se rehace a mano. Si la usuaria tiene su propio estilo o un vídeo de referencia que le guste, su gusto prevalece: pregunta, y ajusta estas reglas para que coincidan.

  • Enmarca con la toma de marca/establishing más fuerte — abre con ella como una tarjeta de título Y cierra con ella. El orden narrativo supera al orden cronológico; un letrero de marca o una toma principal superan a "el clip que ocurrió primero".
  • Corta sin piedad. Un ritmo por escena, ~3–6 segundos cada uno, solo el mejor momento — nunca el clip completo. Un corte de referencia bueno mantuvo 46s de 80s de material utilizable. Apunta a ~45–60s en total para entregables sociales.
  • Descarta el material débil por completo — caminatas temblorosas, inicios torpes. Si un clip necesita una disculpa, no se incluye.
  • Alterna planos generales con primeros planos de detalle — general de la habitación → pomos de la cocina, general del dormitorio → textura del cabecero. Detalles entre las tomas de establishing.
  • Transiciones con encadenado entre escenas, no cortes secos. Cortes secos solo para énfasis deliberado (un buen corte de referencia tiene uno, quizás dos).
  • Audio con música primero para montajes. Pista musical continua (~-11 LUFS), sin silencio; el audio original de la cámara/ambiente se elimina o se sepulta por completo, no solo se atenúa. Si no se proporciona ninguna pista, pide una o deja la línea de tiempo silenciada y márcalo — nunca envíes audio ambiente sin procesar.
  • Entrega vertical primero: 1080×1920, 30fps, H.264 ~12 Mbps es la entrega principal incluso desde fuente 4K60. La horizontal es la opción adicional, no al revés.

Para clips de storytime/UGC (un momento real con diálogo — un encuentro, una reacción, una interacción espontánea), añade cuatro reglas además de las anteriores:

  • Apertura en frío con el momento viral. Coloca el primer plano más impactante de 2–4s de la mitad del encuentro en 0:00, luego retrocede y cuenta la historia desde el principio. El orden cronológico es el modo de fallo básico aquí — nunca abras con la introducción/contexto.
  • Deja espacio para un gancho narrado. Los creadores suelen grabar una línea de voz en off dirigiéndose directamente a la cámara sobre la apertura en frío ("Sé que probablemente os estáis preguntando por qué…"). La edición no puede generar esto — construye la apertura en frío, luego marca que el gancho de VO necesita grabarse (o pídelo) en lugar de enviar sin uno.
  • Termina con la tarjeta de marca. Si la usuaria tiene una marca, producto o handle para promocionar, cierra con una tarjeta final corta (~3–5s) con ello. Pide su logotipo o handle; nunca inventes uno.
  • Ecualiza el diálogo (~-16 LUFS, rango estrecho) en lugar de poner una pista musical — para storytime, el discurso es lo principal; para montaje, la música lo es.

Pipeline

Ejecuta estos pasos en orden. Para un lote de clips (ej. grabaciones de una semana), repite los pasos 2–8 por clip dentro de un mismo proyecto de Premiere compartido.

1. Confirma las entradas

Pregunta (o infiere del contexto) por: la(s) ruta(s) del archivo crudo, y si esto es una sola entrega o necesita tanto una exportación horizontal (estilo LinkedIn, 16:9) como vertical (Threads/TikTok/Reels, 9:16). Si la usuaria no lo dice, por defecto exporta ambos — reencuadrar es barato una vez que la edición está bloqueada.

2. Obtén datos de la fuente con ffprobe

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate \
  -show_entries format=duration -of json "<archivo-crudo>"

Necesitas width, height, r_frame_rate (analiza la fracción, ej. 30000/1001 ≈ 29.97), y duration. La secuencia que crees en Premiere debe coincidir con estos — una configuración de secuencia no coincidente provoca un escalado/adaptación de velocidad de fotogramas silenciosa que degrada la calidad.

3. Analiza el audio — silencios + transcripción

Llama a mcp__claude-video-vision__video_analyze en el archivo crudo con filters: {silence: true, transcription: true}. Esto devuelve intervalos de silencio y una transcripción a nivel de palabra (whisper se ejecuta localmente via whisper.cpp — no se necesita clave API, la primera ejecución puede tardar un minuto en cargar el modelo).

Guarda el resultado en un archivo JSON — lo usarás para alimentar el script de lista de cortes a continuación.

4. Calcula la lista de cortes

Ejecuta scripts/build_cutlist.py en el JSON del análisis:

python3 "<ruta-del-skill>/scripts/build_cutlist.py" analysis.json \
  --duration <duración-ffprobe> --srt-out captions.srt

Este script existe porque hacerlo bien a mano es propenso a errores de una manera específica: cada marca de tiempo de subtítulo después de un corte debe desplazarse por la duración acumulada de todo lo eliminado antes, o los subtítulos se desincronizan. El script maneja eso, más la lógica de combinación/relleno para los espacios de silencio, de modo que un corte nunca caiga a mitad de palabra.

Corta automáticamente tres cosas: espacios de silencio ≥0.35s (con un relleno de 0.08s para que el habla no se corte), palabras de relleno duras (um, uh, er y variantes), y tartamudeos/falsos inicios (repeticiones inmediatas de palabras como "el el"). Deliberadamente no corta los rellenos suaves (like, so, right, you know, actually) — esas suelen ser la voz real de alguien, no ruido. Comentarios reales de ediciones UGC pasadas: una improvisación como "¿sabes lo que te digo?" se marcó como el elemento más auténtico del lote y se mantuvo explícitamente, no se recortó. El script muestra estos en flagged_for_review con contexto — revisa esa lista y solo escala a la usuaria si algo parece un relleno genuino en lugar de voz/personalidad; ante la duda, déjalo.

5. Construye el proyecto de Premiere y el corte bruto

  1. create_project (o open_project si se reutiliza uno) y create_sequence con la configuración que coincida con la salida de ffprobe (paso 2).
  2. import_media el archivo crudo, add_to_timeline en el tiempo 0 en la pista 0.
  3. Recorre el array cuts de la lista de cortes en orden descendente de tiempo start y para cada uno: razor_timeline_at_time al inicio y final del corte, luego remove_from_timeline en el clip intermedio resultante con deleteMode: "ripple". El orden descendente importa — eliminar con ripple un corte anterior desplaza cada marca de tiempo posterior, por lo que si avanzas hacia adelante los puntos de corte restantes del paso 4 ya no coinciden con nada.
  4. Confirma que la duración de la secuencia ahora coincide aproximadamente con new_duration del JSON de la lista de cortes.

6. Corrige el color

Aspecto predeterminado (la usuaria pidió limpio/natural, no un etalonaje estilizado): corrige el balance de blancos, suaviza los reflejos duros, levanta ligeramente las sombras aplastadas, saturación modesta. No puedes hacer esto a ciegas — los parámetros de color_correct son controles deslizantes manuales sin detección automática detrás. Por lo tanto:

  1. export_frame un fotograma representativo (unos segundos después del inicio, más allá de cualquier introducción).
  2. Míralo. Evalúa el balance de blancos (los tonos de piel no deben verse naranjas o azules), la exposición (¿hay algo recortado/aplastado?) y el contraste.
  3. Aplica ajustes modestos de color_correct en el clip de la línea de tiempo — pequeños empujones (valores de un solo dígito), no cambios drásticos. La corrección natural debe apenas notarse como "corrección", solo como "esto se ve bien".
  4. export_frame de nuevo y compara. Itera una o dos veces si algo sigue fuera de lugar; no bucles infinitamente persiguiendo la perfección en un solo fotograma.

Si la usuaria tiene un LUT .cube/.3dl que quiera aplicar en lugar de/en adicón a la corrección manual, usa apply_lut con una intensity baja a moderada (0.5–0.8) sobre la corrección base en lugar de en lugar de ella — un LUT no solucionará un problema real de balance de blancos, solo lo recoloreará.

7. Subtítulos

  1. import_media el captions.srt escrito en el paso 4.
  2. create_caption_track en la secuencia, apuntando projectItemId al SRT importado.

Esto solo funciona porque el paso 4 ya reajustó los tiempos del SRT a la línea de tiempo post-corte — si regeneras los subtítulos a partir de las marcas de tiempo originales (pre-corte) de la transcripción aquí, estarán desincronizados con el vídeo editado.

8. Reencuadra para la segunda relación de aspecto

Reencuadrar recorta dentro del fotograma existente usando seguimiento de movimiento — funciona bien yendo de más ancho a más estrecho (16:9 → 9:16) pero no hay datos de fotograma reales para inventar yendo de más estrecho a más ancho (9:16 → 16:9 requeriría expansión generativa que el auto-reencuadre de Premiere no hace). Por lo tanto:

  • Grabado horizontal → auto_reframe_sequence con numerator: 9, denominator: 16 para la exportación vertical. Este es el caso común y funciona bien.
  • Grabado vertical → si se necesita realmente una versión horizontal, díselo a la usuaria en lugar de rellenar/difuminar los lados silenciosamente; una regrabación o una exportación con bandas negras suele ser mejor opción que un mal reencuadre de IA.

9. Exporta

Los entregables sociales finales son H.264 1080p, no ProRes — esto es una exportación terminada, no una transferencia de Premiere a Premiere. export_sequence cada versión:

  • Horizontal: format: "h264" (o "mp4"), resolution coincidiendo con la fuente, quality: "high".
  • Vertical (de la secuencia reencuadrada): misma configuración, 1080×1920.

Convención de salida cuando la usuaria no ha especificado una ruta: crea una carpeta edited/ junto al(los) archivo(s) fuente crudo(s) y nombra las salidas <nombre-fuente>-final.mp4 (horizontal) y <nombre-fuente>-vertical.mp4. save_project antes de terminar.

10. Informa

Dile a la usuaria: qué se cortó (recuentos por motivo — silencio/relleno/tartamudeo), cualquier cosa de flagged_for_review que dejaste y por qué, qué cambió la corrección de color, y dónde quedaron los archivos exportados. No te limites a decir "hecho" — este es su material; deben saber qué se tocó.

Pipeline de Montaje (material sin diálogo)

  1. Mira cada clip fuente antes de que toque la línea de tiempo — video_watch a 1fps como mínimo. No deduzcas el contenido de los nombres de archivo, miniaturas o resúmenes de carpetas anteriores: un clip de "solo habitación" puede terminar con la persona visible en un espejo (esto pasó — dos clips de baño estaban limpios hasta los últimos segundos). Mientras miras, anota el mejor 3–6s de cada clip y los puntos de corte exactos.
  2. ffprobe a todos los clips (paso 2 del Pipeline). Crea la secuencia para que coincida con los fps de la fuente — los clips a 60fps obtienen una secuencia a 60fps. La configuración de la secuencia no se puede cambiar después de la creación (ver errores de MCP), así que hazlo bien primero.
  3. Ensambla en orden narrativo según el House Style: toma de marca → generales alternando con detalles → tomas de vista principal → toma de marca de nuevo.
  4. Recorta cada clip a su ritmo anotado: añade el clip completo en su lugar, corta con razor en el límite de lo que se conserva, elimina con ripple el resto — pasando tanto videoTrackIndices como audioTrackIndices, luego list_sequence_tracks para confirmar que las longitudes de las pistas de vídeo y audio siguen coincidiendo. Las colas de audio huérfanas desincronizan silenciosamente todo lo que está después.
  5. Añade encadenados en cada límite de escena (add_transition_to_clip).
  6. Pista musical según House Style; elimina el audio de la cámara.
  7. Exporta vertical primero (1080×1920, 30fps, h264, alta calidad). Solo haz una versión horizontal si se pide.

Errores conocidos del MCP de premiere-pro (verificado en agosto de 2026)

  • trim_clip no-op silenciosamente — devuelve éxito, no cambia nada (con o sin duration). Nunca lo uses; corta con razor + elimina con ripple.
  • export_frame ignora time — siempre devuelve el primer fotograma de la secuencia, independientemente del código de tiempo que pidas. Inútil para comprobar un momento específico o etalonar un clip en mitad de la secuencia; extrae fotogramas del archivo fuente con claude-video-vision. También añade su propia extensión (x.png → x.png.png), así que pasa un outputPath sin extensión.
  • razor_timeline_at_time con solo videoTrackIndices aún corta todas las pistas de audio — y las eliminaciones con ripple solo de vídeo dejan audio huérfano atrás. Siempre pasa audioTrackIndices explícitamente y verifica la sincronización después.
  • set_sequence_settings no puede cambiar fps/tamaño después de la creación — crea una nueva secuencia con la configuración correcta y elimina la antigua.
  • Las llamadas MCP pueden agotar el tiempo de espera pero aún así tener éxito (create_sequence lo hizo). En un tiempo de espera, comprueba get_project_info/list_sequences antes de reintentar — los reintentos ciegos crean duplicados.
  • export_sequence puede informar éxito y no escribir nada — confirmado dos veces (con y sin extensión de archivo en outputPath); también repite `format: "Pro... [truncado para la traducción]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados