Communitygithub.com

analyze-video

Convierte un video local o grabación de reunión en hojas de contacto con marcas de tiempo y una transcripción usando ffmpeg y whisper.cpp local, o las transcripciones que Zoom o Teams guardaron. Úsalo cuando el usuario pida revisar, ver, transcribir, resumir o analizar un video o grabación (.mp4, .mov, .webm, .mkv, .m4v, .m4a), incluyendo reuniones de Zoom y grabaciones de pantalla, o cuando escriba /configure para cambiar la configuración. La grabación permanece en la máquina.

¿Qué es analyze-video?

Analyze-video es una habilidad para agentes de IA (como Claude Code, Cursor o Codex) que procesa localmente archivos de video y audio para generar transcripciones con marcas de tiempo, hojas de contacto e imágenes de fotogramas individuales, todo sin enviar datos a servicios externos en la nube. Es ideal para revisar grabaciones de reuniones (Zoom, Teams), videos de demostración o capturas de pantalla, ya que mantiene la privacidad de los datos al ejecutarse completamente en la máquina del usuario. La herramienta utiliza ffmpeg para la extracción de fotogramas y Whisper (a través de whisper.cpp) para la transcripción de audio, o alternativamente puede usar archivos de transcripción .vtt ya existentes (como los que generan Zoom o Teams) para preservar nombres de hablantes. El resultado se organiza en una carpeta _video/ dentro del sandbox del agente, con un índice, transcripción, hojas de contacto e imágenes de fotogramas. Soporta macOS, Linux y Windows, y permite configuración detallada mediante un servidor web local o parámetros en línea de comandos. Entre sus características destacan: detección automática de cambios de escena, límite configurable de fotogramas, soporte para múltiples formatos de video/audio, uso de transcripciones externas, y la capacidad de evitar reprocesar videos ya analizados con la misma configuración. Es especialmente útil para desarrolladores y profesionales que necesitan analizar reuniones grabadas de forma segura y eficiente.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/richardjahnke-eng/ai-video-skill/tree/main

Preguntar en tu IA favorita

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

Documentación

Analizar video

Procesa el archivo en esta máquina. No subas el video ni su audio, y no los envíes a ningún servicio de transcripción en la nube.

Ejecución

Ejecuta el comando desde la raíz del proyecto abierto. Los resultados van a _video/ dentro de esa carpeta, lo que mantiene todo dentro del entorno del agente y fuera de las carpetas compartidas. Ejecuta el script de entrada de esta habilidad usando su ruta absoluta.

macOS y Linux:

/ruta/absoluta/hacia/analyze-video/scripts/analyze_video "/ruta/absoluta/hacia/video.mp4"

Windows:

powershell -NoProfile -ExecutionPolicy Bypass -File \ruta\absoluta\hacia\analyze-video\scripts\analyze_video.ps1 "C:\ruta\hacia\video.mp4"

Toma la ruta del video de un listado de directorio y pásala exactamente como aparece. Los nombres de grabaciones pueden contener caracteres que parecen espacios normales pero no lo son.

Las grabaciones locales de Zoom están en ~/Documents/Zoom/<fecha hora nombre reunión>/, normalmente como zoom_0.mp4, junto con un archivo solo de audio audio_only.m4a. Usa el archivo .mp4 a menos que el usuario pida explícitamente el archivo de audio. Un archivo solo de audio obtiene una transcripción pero no hojas de contacto.

El comando imprime la ruta de index.md. La carpeta contiene:

  • index.md: duración, intervalo entre fotogramas y lista de hojas
  • transcript.md: la transcripción con marcas de tiempo, o una nota indicando que no hay audio
  • sheets/sheet_NNN.jpg: hojas de contacto
  • frames/f_NNNN.jpg: fotogramas individuales, ya sellados con su marca de tiempo
  • manifest.json: huella digital de la fuente y la configuración utilizada

Si hay un archivo .vtt junto a la grabación (las descargas de grabaciones en la nube de Zoom incluyen …_Recording.transcript.vtt, y las de Teams <nombre>.vtt), se usa en lugar de Whisper y conserva los nombres de los hablantes. Pasa --whisper para transcribir localmente de todas formas, o --transcript /ruta/hacia/archivo.vtt para indicar un archivo con otro nombre.

Una segunda ejecución con el mismo archivo y la misma configuración muestra already processed y no repite el trabajo. Un intervalo, modelo, idioma, configuración de escena, indicación textual, límite de fotogramas, elección de omitir fotogramas o archivo de transcripción diferente hace que se procese de nuevo.

Si el comando falla, detente y transmite su salida. No tomes fotogramas tú mismo como sustituto. Si la salida indica que se necesita configuración, o que la descarga del modelo Whisper está bloqueada, muéstrale al usuario el comando de configuración que se imprime. Él lo ejecuta una vez en una Terminal. Ejecútalo tú mismo solo si el usuario lo pide y autoriza ejecutarlo fuera del entorno.

Leer el resultado

  1. Lee index.md.
  2. Lee transcript.md completo.
  3. Lee cada imagen de hoja de contacto.
  4. Abre un archivo dentro de frames/ solo cuando una celda sea ilegible.

Si index.md indica que se omitieron fotogramas, lee transcript.md y detente. No hay hojas de contacto.

Configurar

Cuando el usuario escriba /configure, o pida configurar o cambiar los ajustes de esta habilidad, abre la página de configuración. Haz esto antes de editar cualquier archivo de configuración tú mismo.

  1. Ejecuta el script scripts/configure de esta habilidad usando su ruta absoluta. En Windows, ejecuta python scripts/configure.py con el Python de esa habilidad.
  2. Imprime una línea: configure: http://127.0.0.1:<puerto>/. Abre esa URL en el navegador de Cursor para que el usuario pueda ver la página.
  3. Deja el servidor en ejecución. La página escribe config.local.json en la carpeta de la habilidad. El siguiente video usará esos ajustes.

Cuando el usuario quiere ajustes diferentes

Las banderas anulan config.json para esa ejecución. Por defecto se toma un fotograma cada 30 segundos y en cada cambio de escena (nueva diapositiva o ventana), y una grabación larga tiene un límite de 96 fotogramas (8 hojas). Para más detalle en una grabación corta:

/ruta/absoluta/hacia/analyze-video/scripts/analyze_video "/ruta/absoluta/hacia/video.mp4" --interval 5 --max-frames 0

En Windows, pasa las mismas banderas a scripts/analyze_video.ps1.

Pasa --prompt "términos ya conocidos para este video" solo cuando esos nombres ya estén en la tarea. No inventes una indicación textual. --max-frames 0 elimina el límite. Pasa --skip-frames solo cuando el usuario pida una transcripción o resumen sin solicitar ver o revisar las imágenes.

Otras banderas: --language en, --model medium, --no-scene, --scene-threshold 0.2, --min-scene-gap 1, --sheet-cols, --sheet-rows, --frame-width, --keep-audio, --output-root beside (junto al video), --config /ruta/hacia/config.json.

Los valores predeterminados y la lista completa de claves están en config.json y README.md dentro de la carpeta de esta habilidad. Un modelo solo inglés (medium.en y los demás nombres *.en) no puede usar "language": "auto".

Skills relacionados