Skip to main content
Glama

AI-MediaLens — анализ медиа для ИИ-агентов через OpenRouter

Заполняет пробел того, что Cline не может прочитать: видео, аудио и PDF-файлы. Отправляет файлы напрямую в OpenRouter API, который направляет их мультимодальным моделям (и разбирает PDF для любой модели).

Работает как MCP-сервер для Cline, автономный CLI и импортируемый Python-модуль — всё из одного файла.

Быстрый старт

git clone https://github.com/Alihkhawaher/ai-medialens.git
cd ai-medialens
pip install mcp          # only needed for MCP mode
python openrouter_media.py setup    # configure API key + register in Cline

setup в интерактивном режиме:

  1. Сохраняет ваш ключ OpenRouter в .env

  2. Регистрирует MCP-сервер ai-medialens в глобальной конфигурации Cline

Related MCP server: Media Context MCP

Поддерживаемые входные данные (определяются автоматически по расширению)

Тип

Расширения

Тип контента OpenRouter

Видео

.mp4 .mpeg .mov .webm

video_url (base64)

Аудио

.wav .mp3 .aiff .aac .ogg .flac .m4a

input_audio

PDF

.pdf

file (base64)

Изображение

.jpg .jpeg .png .gif .webp

image_url (base64)

Использование

CLI

# Full file
python openrouter_media.py video.mp4 -p "Transcribe all spoken Arabic word-for-word"

# Only seconds 5-20 (trimmed locally; ffmpeg auto-downloaded on first use)
python openrouter_media.py video.mp4 -p "What happens here?" --start 5 --end 20

# Different model / explicit key
python openrouter_media.py doc.pdf -p "Summarize" -m z-ai/glm-5.3-flash -k sk-or-v1-...

# Scanned PDF -> real OCR (billed per page by OpenRouter)
python openrouter_media.py scan.pdf -p "Extract all text" --pdf-engine mistral-ocr

# Speech-to-text (works on video files too - audio track extracted locally)
python openrouter_media.py lecture.mp4 --stt --language ar

# SRT subtitles with timestamps
python openrouter_media.py lecture.mp4 --stt --srt > lecture.srt

# Find models that accept video input, with prices
python openrouter_media.py --list-models video

# Preview request shape without sending (no API cost)
python openrouter_media.py video.mp4 -p "test" --dry-run

MCP (из Cline)

Cline вызывает инструменты нативно:

use_mcp_tool: server=ai-medialens, tool=analyze_media
arguments: { "path": "...", "prompt": "...", "start": "5", "end": "20" }

use_mcp_tool: server=ai-medialens, tool=transcribe_audio
arguments: { "path": "...", "language": "ar", "srt": false }

Как Python-модуль

from openrouter_media import analyze
text = analyze("video.mp4", "Transcribe all speech.")
resp = analyze("doc.pdf", "Summarize.", raw=True)

Порядок определения ключа API

  1. Флаг -k/--key

  2. Переменная окружения OR_KEY

  3. Переменная окружения OPENROUTER_API_KEY

  4. Файл .env рядом со скриптом (см. .env.example)

ffmpeg и обрезка по времени

--start/--end обрезают медиа локально перед загрузкой (у OpenRouter нет нативного параметра диапазона). ffmpeg ищется в следующем порядке:

  1. Встроенный bin\ffmpeg.exe (если вы его туда поместили)

  2. Кэшированная копия в %LOCALAPPDATA%\ai-medialens\bin\ffmpeg.exe

  3. ffmpeg в PATH

  4. Автоматическая загрузка (~80 МБ статическая сборка, однократно, Windows)

Примечание: обрезка использует -c copy (быстро, но режет по ключевым кадрам; точная обрезка потребовала бы перекодирования).

Модели

По умолчанию: qwen/qwen3.7-flash ($0.03/M вход, $0.13/M выход) — на данный момент самая дешёвая модель OpenRouter с полной поддержкой видео на входе.

Другие хорошие варианты с поддержкой видео (проверяйте актуальные цены через --list-models video):

Модель

Вход /M

Выход /M

qwen/qwen3.7-flash (по умолчанию)

$0.03

$0.13

z-ai/glm-5.3-flash

$0.075

$0.25

qwen/qwen3.8-27b

$0.425

$2.55

Любой slug модели OpenRouter работает через -m / model= — включая новые релизы по мере их появления.

Движки разбора PDF

PDF-файлы разбираются либо локально, либо на стороне сервера OpenRouter:

Движок

Поведение

Стоимость

(по умолчанию)

Извлечение текста на стороне сервера из встроенного текстового слоя

Бесплатно

--pdf-engine local

Локальный разбор через PyMuPDF (pip install pymupdf) — без лимитов запросов. Цифровые PDF: текст извлекается локально. Сканированные PDF: страницы рендерятся в изображения, и модель зрения сама выполняет OCR

Бесплатно

--pdf-engine mistral-ocr

Настоящий OCR на стороне сервера по изображениям страниц — читает сканированные PDF и PDF только с изображениями

Тарифицируется за страницу

--pdf-engine native

Передаёт сырой PDF моделям с нативным файловым вводом

Бесплатно

Рекомендуется local: он никогда не упирается в лимиты запросов парсера OpenRouter и обрабатывает как цифровые, так и сканированные PDF без дополнительных затрат.

Распознавание речи (STT)

Использует выделенную конечную точку OpenRouter /audio/transcriptions (модели класса Whisper). Модель по умолчанию: openai/whisper-large-v3-turbo. Другие варианты: openai/gpt-4o-transcribe, openai/gpt-4o-mini-transcribe, microsoft/mai-transcribe-1.5, openai/whisper-large-v3.

Укрепление конвейера (уроки из продакшн-системы YouTube→субтитры):

  • Любой аудио/видео вход → ffmpeg конвертирует в Opus 32kbps/16kHz/mono (в 8 раз меньше WAV, принимается всеми провайдерами); видеодорожки удаляются

  • Длинные медиа автоматически разбиваются на 6-минутные фрагменты (у OpenRouter есть таймаут ~60 секунд на запрос)

  • Каждый фрагмент пересобирается для добавления недостающей страницы Ogg EOS (сегментный мультиплексор ffmpeg её пропускает; парсер OpenRouter отклоняет потоки без неё)

  • --srt возвращает субтитры SRT с временными метками через сегменты verbose_json, с корректным смещением между фрагментами

  • Примечание: whisper-large-v3 выдаёт искажённый вывод на ускоренном аудио; mai-transcribe-1.5 это переносит

Примечания

  • Большие файлы кодируются в base64 в памяти — очень большие видео могут упереться в лимиты загрузки провайдера.

  • Секреты в безопасности: .env в .gitignore и никогда не коммитится.

Related MCP Connectors

Related MCP Servers