video-to-llm
Ваша LLM не может посмотреть сорокачасовой курс. Загружать его — долго, часто дорого и обычно нельзя. Извлекать кадры самостоятельно — это миллионы токенов, а аудиодорожка остаётся неиспользованной.
video-to-llm превращает каждое видео в один хронологический документ —
речь, отмеченные паузы, заголовки разделов и, по желанию, то, что было на
экране, — всё в порядке событий, каждая строка с таймкодом, ведущим к
конкретному кадру, из которого она взята.
Сделайте это один раз. Задавайте сколько угодно вопросов — каким угодно моделям — как долго храните папку.
Быстрый старт
uvx video-to-llm process lecture.mp4 --transcribe-model tinyЭто самый быстрый способ увидеть, как всё работает: модель речи tiny
весит 75 МБ вместо стандартных 1,4 ГБ, так что вы получите настоящий
документ примерно за минуту, а не будете ждать загрузку, чтобы понять,
нравится ли вам результат. Когда разберётесь — уберите флаг:
uvx video-to-llm process lecture.mp4Пока недоступно для установки с PyPI. Имя зарегистрировано, но на индексе нет ничего, что стоило бы ставить: единственный опубликованный релиз,
1.0.0rc1, вышел без модуля collections и был отозван. До выхода 1.0.0 клонируйте репозиторий и выполнитеuv sync, затемuv run video-to-llm process lecture.mp4 --transcribe-model tiny.
Нужен FFmpeg в вашем PATH — версии 4–9, любые. Модель
речи загружается один раз, при первом использовании, после чего сеть больше
не используется.
video-to-llm doctor # check this machine is readytiny быстрая, но заметно менее точная; medium — стандартная, потому что
это наименьшая модель, ради которой стоит хранить транскрипт.
--transcribe-model также принимает base, small и large-v3.
Related MCP server: klaket-mcp
Что вы получаете
Это реальный вывод — настоящие строки из настоящей 49-минутной записи, в конфигурации по умолчанию:
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.Это весь артефакт: обычный текст, хронологический, с таймкодами на источник, и он ваш. Отдайте его любой модели. Ищите grep. Храните десятилетиями.
Проверка строк
Каждый таймкод обратимо ведёт к картинке, из которой получен:
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.jpgУтверждение вашей модели является доказательством, только если вы можете проверить его. Вот как проверить.
Сравнение
Честно в обе стороны — включая те случаи, где этот инструмент не подходит.
video-to-llm | Инструменты для клипов ( | Загрузить видео | |
Длина видео | Часы. Проверено на 49 мин / 1 488 кадров и 15-часовом курсе | Минуты; по умолчанию лимиты кадров 50–150 | От минут до часа, платой |
Второй вопрос | Бесплатно и мгновенно — использует уже готовый документ | Повторная загрузка и обработка | Повторная загрузка или оплата |
Переживает сбой в середине работы | Да, продолжает с того же этапа | Нет | н/п |
Много видео, один упорядоченный документ | Да | Нет | Нет |
Покидает ваш компьютер | Никогда, кроме случая когда вы явно разрешаете для задачи | По-разному — | Полностью |
Разговорная речь | Любая — определяется автоматически или указывается через | По-разному; | Любой |
Контроль расходов | Есть проверка лимита перед каждым запросом | Нет | Оплата за вызов |
Сослаться на кадр для утверждения | Да | Нет | Нет |
Время настройки | Несколько минут: FFmpeg и модель на 75 МБ | Секунды | Секунды |
Один короткий клип | Излишняя сложность — используйте что-то другое | Идеально | Идеально |
Проверено по собственной документации этих проектов 21 августа 2026 года. Они развиваются; если какая-то строка устарела — это ошибка, которую стоит сообщить.
Использование
Из командной строки
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 queueИз агента
video-to-llm mcp # MCP server on stdio; needs the [mcp] extraЧетыре инструмента — process_video, list_videos, get_transcript,
get_segment. process_video идемпотентен: если запрошено видео, которое уже
обработано, возвращается существующий документ без повторной работы. Именно
в этом и смысл. Обработайте сорокачасовой курс один раз; каждый следующий
вопрос становится мгновенным, офлайн и бесплатным.
Агент не может выбрать платный сервис описаний через эти инструменты. Это решение остаётся экрану настроек, где видны оценка расходов и предел расходовщины.
Также есть скилл, который учит агента проверять, что уже обработано, до того как делать что-то идалось дорогое:
npx skills add navdeep-h-singh/video-to-llm -gОн работает в Codex, Cursor, Copilot, Gemini CLI и любых других программах, которые читают Agent Skills. Для Claude Code плагин регистрирует скилл и MCP сервер вместе:
/plugin marketplace add navdeep-h-singh/video-to-llm
/plugin install video-to-llm@video-to-llmИз браузера
video-to-llm startИнтерфейс на 127.0.0.1 с прогрессом в реальном времени, просмотрщиком
кадров, управлением задачами и сборщиком коллекций. Закрытие браузера не
останавливает задачу.
Коллекции
Несколько уже обработанных видеозаписей, в заданном вами явном порядке, собираются в один документ или в пронумерованные части, с учётом контекстного окна. Сборка коллекции переиспользует существующие выходные данные — она никогда не извлекает кадры заново, не транскрибирует аудио и не запускает описание повторно.
Порядок никогда не выводится из имени файла, даты или содержимого. Две записи из одного утра не имеют собственной последовательности, поэтому вы её задаёте.
Конфиденциальность как механизм
Не обещание, а набор свойств с тестами, которые падают при их регрессе.
Интерфейс привязывается к
127.0.0.1, это проверяется при построении приложения.Один middleware отклоняет чужой
Hostи чужой origin при каждой записи.Ни одна страница не загружает внешний ресурс. Ни CDN, ни веб-шрифта, ни аналитики.
Ваши исходные видео никогда не копируются, не перемещаются и не загружаются.
Ключи хранятся в системной связке ключей — macOS Keychain, Windows Credential Manager, Linux Secret Service. Никогда не создаётся запасной вариант с открытым текстом, и хранимый ключ никогда не отображается вам обратно, даже префиксом.
Никаких аккаунтов, никакой телеметрии и входить не во что.
Описания по умолчанию выключено. Задача с выключенными описаниями не делает сетевых запросов вообще.
Локальный режим никогда молча не заменяется облачным.
Необязательные: описания экрана
По умолчанию выключено. Если включить, нужно выбрать между собственной Ollama моделью — кадры остаются на устройстве, без оплаты — и сервис (Claude, Gemini, OpenAI или точку совместимый с OpenAI либо Anthropic), который получает только пронумerованные статичные картины, никада виdeо и никада аудио. Видно, что будет отправлено и примерную стоимость преждe чем что-либо покинет систему, и обробка остановится на пределе, который вы установили.
Требования
Python 3.11, 3.12 or 3.13
FFmpeg с
ffprobeв вашемPATHМесто для модели речи — 75 МБ для
tiny, 1,4 ГБ для всей по умолчаниюmedium— плюс место для кадров: двухчасовое видео при одном кадре каждые 2 секунды занимает примерно 2 ГБ
GPU везде украшает. Транскрипцы работает на процессоре на всех платформах.
Ffmpeg 9 — это нормльно. sub>убрал -vsync, которое было всем FFmpegдо
5; извлечение считывает версию один раз и применяет тот же флаг, который
принимает конкретная сборка, поэтому работают 4.x–9.x. video-to-llm doctor
выводит найденную версию и используемый флаг. В разработке тут всё
проверено против 8.1.2; остальное охваченotests на списке аргументов и в
матрице ci.
Другие способы установки
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 DockerfileИзвестная ограничения
Здесь учтены заранее, а не изучены для вас.
Описания экранов находятся в статусе бета, и их структурированные поля рассчитаны на одну предметную область. Они работают — на 49-минутной записи графика модель прочитала с экрана правильный инструмент, правильный таймфрейм и реальные значения — но пять из восьми полей (
timeframe,currency_pair,indicators_and_states,exact_action,setup_type) описывают торговые графики, и это осознанный выбор, а не упущение. На любом другом типе видео эти пять возвращаютUnknown. Модель отказывается от ответа, а не выдумывает, поэтому результат скорее скудный, чем неверный, аvisible_text,visual_descriptionиconfidenceпо-прежнему применимы к чему угодно. Точность в любом случае не измерялась. Эксперимент, стоящий за этим, описан вdocs/DESCRIPTION_QUALITY.md.Транскрипт, таймлайн и цитаты — это то, что работает с любым видео. Оценивайте инструмент по ним.
Точность транскрибации не измерялась, и Whisper иногда записывает строку поверх тишины — транскрипт, начинающийся с «Thanks for watching!», это модель, а не ваше видео.
Локальные описания работают медленно: примерно 31 с/изображение на Mac с Apple Silicon, измерено на 1 488 изображениях. Используйте более крупный шаг
--intervalили сервис с лимитом.Ни один облачный провайдер не проверялся на живое использовании. Пять адаптеров проверены на соответствии документированным формам запросов и ответов; локальный Ollama проверен вживую на версии 0.32.6 с моделью
qwen2.5vl:7b.Никто не использовал это на Windows или Linux, хотя CI теперь работает и там. Разработка велась полностью на macOS (Apple Silicon). Весь набор тестов проходит на всех трёх операционных системах и всех трёх версиях Python, собранный wheel устанавливается и проверяется вне рабочей копии на каждой из них, а контейнер прогоняет конвейер от начала до конца без сети. Это реальный минимум, но это не то же самое, что реальное использование: зелёная матрица говорит, что пути, бэкенды keyring и запасные варианты для симлинков работают на чистом раннере, а не то, что они заработают на вашей машине с вашими файлами. Сообщения и о том, и о другом — самое полезное, что может получить этот проект.
Контейнер поставляет командную строку, а не интерфейс — интерфейс привязывается к loopback, который внутри контейнера недоступен с хоста.
Загрузка по URL не предусмотрена. Только локальные файлы. Загрузите их сами.
Журнал событий растёт без ограничений.
Документация
Документ | Что описывает |
Что на самом деле выдаёт модель описаний, а чего не выдаёт | |
Входные данные, выходные данные и гарантии этапов | |
Коллекции и контекстные пакеты | |
Обработка секретов и граница localhost | |
Запуск описаний на этом компьютере | |
После сбоя, сна или отмены | |
Запуск, пауза, наблюдение | |
Импорт ранее проделанной работы, экспорт результатов | |
Настройка под конкретную платформу | |
Решения, принятые во время сборки, и почему |
Участие в разработке
Отчёты об ошибках из реального использования сейчас важнее всего остального,
особенно на Windows и Linux. См. CONTRIBUTING.md.
Лицензия
MIT. См. LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
Local ML: speech to text (SRT/VTT), text embeddings, reranking, similarity, entities, zero-shot.
151YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Video knowledge base for agents: search your library's transcripts, keyframes and on-screen text.
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
- AlicenseAqualityDmaintenanceLet 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.43AGPL 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.783 PyPI2,209MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to download, convert, and visually analyze videos by providing timestamped frames and locally transcribed speech, all without API keys.MIT