video-to-llm
Tu LLM no puede ver un curso de cuarenta horas. Subirlo es lento, a menudo caro y con frecuencia no está permitido. Extraer los fotogramas por tu cuenta cuesta millones de tokens y descarta el audio.
video-to-llm convierte cada vídeo en un documento cronológico — habla, silencios marcados, encabezados de sección y, opcionalmente, lo que aparecía en pantalla —, todo en el orden en que ocurrió y cada línea con una marca de tiempo que conduce al fotograma exacto del que procede.
Hazlo una vez. Haz todas las preguntas que quieras, a todos los modelos que quieras, mientras conserves la carpeta.
Inicio rápido
uvx video-to-llm process lecture.mp4 --transcribe-model tinyEsa es la forma rápida de verlo funcionar: el modelo de voz tiny es una descarga de 75 MB, no de los 1.4 GB del modelo por defecto, así que obtienes un documento real en un minuto en lugar de esperar una descarga para saber si te gusta el resultado. Cuando lo hagas, elimina la flag:
uvx video-to-llm process lecture.mp4Todavía no se puede instalar desde PyPI. El nombre está registrado, pero no hay nada en el índice que merezca instalarse: la única versión publicada,
1.0.0rc1, salió sin el módulo de colecciones y ha sido retirada. Hasta que llegue 1.0.0, clona el repositorio y ejecutauv syncy despuésuv run video-to-llm process lecture.mp4 --transcribe-model tiny.
Necesitas FFmpeg en tu PATH — las versiones 4 a 9 funcionan bien. El modelo de voz se descarga una sola vez, en el primer uso, y a partir de ahí nada vuelve a tocar la red.
video-to-llm doctor # check this machine is readytiny es rápido y notablemente menos preciso; medium es el predeterminado porque es el más pequeño del que merece la pena conservar una transcripción. --transcribe-model también acepta base, small y large-v3.
Related MCP server: video-reader-mcp
Lo que obtienes
Esta es la salida real — líneas reales de una grabación real de 49 minutos, en la configuración:
00:01:30 [nobody speaking · 11 seconds]
00:01:40 Yep, just so that you know, the first thing you'll do is you'll take everything out of
00:01:48 your chart.
00:01:49 When you're going to analyze the chart.
00:01:54 [nobody speaking · 4 seconds]
00:01:58 I think all of you know what trends are, right?
00:02:01 You're either going up or you're either coming down. Very simple, right?
00:02:05 But when you look at trends in terms of structure, what we are looking for is the basic.Ese es todo el artefacto: texto plano, cronológico, con marcas de tiempo hasta la fuente y tuyo. Entréguelo a cualquier modelo. Ponlo en el revisor. Guárdaledurante diez años.
Comprueba cualquier línea
Cada marca de tiempo resuelve a la imagen que hay detrás:
video-to-llm show lecture 00:02:05lecture.mp4 — 00:02:05
in job 'lecture'
00:02:01 You're either going up or you're either coming down. Very simple, right?
> 00:02:05 But when you look at trends in terms of structure, what we are looking for is the basic.
Picture: ~/Documents/VideoToLLM/lecture/…/frames/000062_t000124.jpgUna afirmación de tu modelo solo es evidencia si puedes verificarla. Así es como se hace.
Cómo se compara
Honesto en ambas direcciones — incluido donde esta es la herramienta equivocada.
video-to-llm | Herramientas de clips ( | Subir el vídeo | |
Duración del vídeo | Horas. Probado con 49 min / 1.488 fotogramas y un curso de 15 h | Minutos; límites de fotogramas de 50–150 por defecto | De minutos a una hora, con coste |
Hacer una segunda pregunta | Gratis e instantáneo — reutiliza el documento | Volver a descargar y reprocesar | Volver a subir o volver a pagar |
Sobrevive a un fallo a mitad de trabajo | Sí, reanuda la fase exacta | No | N/D |
Varios vídeos, un único documento | Sí | No | No |
Sale de tu máquina | Nunca, salvo que lo elijas por trabajo | La variación depende — | Por completo |
Idioma hablado | Cualquiera — detectado, o con | Depende; | Cualquiera |
Control de costes | Límite comprobado antes de cada solicitud | Ninguno | Vi/pre |
Citar() una afirmación hasta un fotograma | Sí | No | No |
Tiempo de preparación | Minutos: FFmpeg y un modelo de 75 MB | Segundos | Segundos |
Un clip rápido | Excesivo — usar otra cosa | Ideal | Ideal |
Comprobado con la documentación propia de esos proyectos el 21 de agosto de 2026. Evolucionan; si alguna fila de aquí se ha quedado obsoleta, es un error que merece que lo ocurra.
Cómo usarlo
Desde la línea de comandos
video-to-llm process lecture.mp4 # one video
video-to-llm process w1.mp4 w2.mp4 --name "Course" # several, in your order
video-to-llm process talk.mp4 --interval 5 # fewer pictures, faster
video-to-llm process demo.mp4 --describe local # add screen descriptions
video-to-llm process talk.mp4 --format jsonl # also emit structured data
video-to-llm show "Course" 01:12:30 # resolve a citation
video-to-llm export "Course" --format srt # subtitles, no reprocessing
video-to-llm status # what is done, what is running
video-to-llm run-next "Course" # jump the queueDesde un agente
video-to-llm mcp # MCP server on stdio; needs the [mcp] extraCuatro herramientas — process_video, list_videos, get_transcript, get_segment. process_video es idempotente: si se le pide un vídeo que ya ha procesado, devuelve el documento existente en lugar de hacer el trabajo de nuevo. Ese es el objetivo. Procesa un curso de cuarenta horas una sola vez; cada pregunta después es instantánea, offline y gratuita.
Un agente no puede elegir un servicio de descripción de pago a través de estas herramientas. Esa decisión corresponde a la pantalla de aplicación, donde están visibles la estimación y el límite de gasto.
También hay una skill (habilidad/que enseña a un agente a comprobar lo que ya está procesado antes de hacer algo caro:
npx skills add navdeep-h-singh/video-to-llm -gEso funciona en Codex, Cursor, Copilot, Gemini CLI y cualquier otra cosa que lea Agent Skills. Para Claude Code, el plugin registra la skill junto al servidor MCP:
/plugin marketplace add navdeep-h-singh/video-to-llm
/plugin install video-to-llm@video-to-llmDesde el navegador
video-to-llm startUna interfaz en 127.0.0.1 con progreso en vivo, un revisor de fotogramas, control de trabajos y el constructor de colecciones. Cerrar el navegador no detiene un trabajo.
Colecciones
Varios vídeos ya procesados, en un orden establecido explícitamente por ti, ensamblados en un único documento o en partes numeradas y dimensionadas para caber en la ventana de contexto. Crear una colección reutiliza el resultado existente — nunca reextrae un fotograma, ni vuelve a transcribir audio ni a ejecutar una descripción.
El orden nunca se deduce del nombre de archivo, la fecha o el contenido. Dos grabaciones de la misma mañana no tienen secuencia inherente; así que tú indicas cuál es.
Privacidad como mecanismo
No es una promisoria — es un conjunto de propiedades con tests que fallan cuando se degradan.
La interfaz se enlaza a
127.0.0.1, verificado al crear la aplicación.Un middleware rechaza un
Hostajeno y un origin ajeno en cada escritura.Ninguna página carga un recurso fuera de su propio origen. Sin CDN, sin fuente web, sin analítica.
Tus vídeos fuente nunca se copian, ni se mueven, ni se suben.
Las claves están en el llavero del sistema — macOS Keychain, Windows Credential Manager, Linux Secret Service. Nunca se crea un respaldo texto plano, y una clave almacenada no se te vuelve a mostrar, ni siquiera un prefijo.
No hay cuentas, ni telemetría, ni nada en la que iniciar sesión.
Las descripciones están desactivadas por defecto. Un trabajo que las deja desactivadas no ocasiona ninguna petición de red.
El sistema local nunca recurre silenciosa a la nube.
Opcional: descripciones de pantalla
Desactivadas por defecto. Cuando las activas, eliges entre tu propio modelo de Ollama — los fotogramas permanecen en el dispositivo, sin coste — y marcador un servicio (Claude, Gemini, OpenAI o cualquier endpoint compatible con OpenAI o Anthropic), que recibe solo las imágenes fijas numeradas, nunca el vídeo y nunca el audio. Ves lo que se enviará y aproximadamente el coste antes de que salga nada, y el procesamiento se detiene en un límite que establezcas.
Requisitos
Python 3.11, 3.12 o 3.13
FFmpeg con
ffprobeen tuPATHEspacio para el modelo de voz — 75 MB para
tiny, 1,4 GB para el modelomediumpor defecto — además de espacio para los los (un vídeo de 2 horas con un imagen cada 2 segundos supone unos 2 GB)
Una GPU es opcional en todos los lados. La transcripción funciona con CPU en todas las plataformas.
FFmpeg 9 no da problemas. Eliminó -vsync, que todos los FFmpeg anteriores a 5 necesitaban; la extracción lee la versión una vez y pide la flag que esa crea acepta, de modo que desde 4.x hasta 9.x funciona. video-to-llm doctor imprime la versión encontrada y la flag que se usará. Aquí se ha desarrollado contra 8.1.2; el resto está cubierto por tests sobre la lista de argumentos y la matriz de CI.
Otras formas de instalar
uv tool install video-to-llm # or: pipx install video-to-llm
uv sync # from a clone
docker build -t video-to-llm . # command line only, see the DockerfileLimitaciones conocidas
Aquí están documentadas a propósito, en lugar de dejarte que las descubras tú.
Las descripciones de pantalla están en beta y sus campos estructurados están pensados para un solo dominio. Funcionan — en una grabación de un gráfico de 49 minutos el modelo leyó el instrumento correcto, el marco temporal correcto y valores reales de la pantalla — pero cinco de los ocho campos (
timeframe,currency_pair,indicators_and_states,exact_action,setup_type) describen gráficos de trading, y eso es una decisión deliberada, no un descuido. En cualquier otro tipo de vídeo esos cinco devuelvenUnknown. El modelo se abstiene en lugar de inventar, así que el resultado es escueto en lugar de incorrecto, yvisible_text,visual_descriptionyconfidencesiguen aplicándose a cualquier cosa. La precisión no está medida en ninguno de los dos casos. Consultadocs/DESCRIPTION_QUALITY.mdpara ver el experimento que hay detrás de esta lectura.La transcripción, la línea temporal y las citas son las partes que funcionan en todos los vídeos. Evalúa la herramienta por esas partes.
La precisión de la transcripción no está medida, y a veces Whisper escribe una línea sobre el silencio — una transcripción que empieza con «¡Gracias por ver el vídeo!» es invención del modelo, no de tu vídeo.
Las descripciones locales son lentas: unos 31 s por imagen en un Mac con Apple Silicon, medido sobre 1488 imágenes. Usa un
--intervalmás espaciado, o un servicio con un tope.Ningún proveedor de nube se ha probado contra un servicio en vivo. Cinco adaptadores están verificados contra los esquemas de petición y respuesta documentados; la instancia local de Ollama está verificada en vivo contra 0.32.6 con
qwen2.5vl:7b.Nadie ha usado esto en Windows ni Linux, aunque la CI ya se ejecuta allí. El desarrollo fue enteramente en macOS (Apple Silicon). La suite completa pasa en los tres sistemas operativos y las tres versiones de Python; la wheel compilada se instala y se ejercita fuera del checkout en cada uno de ellos, el contenedor ejecuta el pipeline completo de principio a fin y sin red. Eso es un mínimo real, pero no es lo mismo que usarlo: una matriz en verde dice que los paths, los backends de keyring y los fallbacks de symlink funcionan en un runner limpio, no que funcionan en tu máquina con tus archivos. Los informes procedentes de ambos son lo más útil que este proyecto puede recibir.
El contenedor incluye la línea de comandos, no la interfaz — la interfaz se enlaza a loopback, que dentro de un contenedor es inalcanzable desde el host.
No se descarga ninguna URL. Solo archivos locales. Descárgalo tú primero.
El registro de eventos crece sin límite.
Documentación
Documento | Contenido |
Lo que produce de verdad el modelo de descripciones y lo que no | |
Entradas, salidas y garantías de las etapas | |
Colecciones y paquetes de contexto | |
Tratamiento de secretos y la frontera de localhost | |
Ejecutar las descripciones en este ordenador | |
Después de un fallo, una suspensión o una cancelación | |
Ejecutar, pausar, monitorizar |
|| docs/IMPORT_EXPORT.md | Introducir trabajo previo y extraer resultados |
| docs/LOCAL_SETUP.md | Configuración por plataforma |
| docs/DECISIONS.md | Decisiones tomadas en el momento de la construcción, y por qué |
Contribuciones
Los informes de errores que vienen del uso real valen más que cualquier otra
cosa ahora mismo, sobre todo en Windows y Linux. Consulta
CONTRIBUTING.md.
Licencia
MIT. Consulta LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to query local video timelines by extracting speech, frame captions, and on-screen text into a SQLite store, exposing search and retrieval tools via MCP.PolyForm Noncommercial 1.0.0
- AlicenseNot gradedqualityAmaintenanceExtracts ffprobe metadata, subtitles, scenes, and timelines from video files without frame-by-frame LLM vision, providing evidence-first reading for AI agents.472MIT
- AlicenseAqualityBmaintenanceLet AI agents watch videos: local transcripts, speaker labels, scenes, chapters and exact-moment search from any video URL or file. Fully local, no API keys.42AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceLets any LLM agent actually watch videos: a watch_video tool takes a URL or local file and returns scene-aware keyframes fused with a timestamped transcript, processed 100% locally with per-source caching.2,053MIT
Related MCP Connectors
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/navdeep-h-singh/video-to-llm'
If you have feedback or need assistance with the MCP directory API, please join our Discord server