Skip to main content
Glama

AI-MediaLens – Medienanalyse für KI-Agenten über OpenRouter

Füllt die Lücke dessen, was Cline nicht lesen kann: Video-, Audio- und PDF-Dateien. Sendet Dateien direkt an die OpenRouter-API, die sie an multimodale Modelle weiterleitet (und PDFs für jedes Modell parst).

Funktioniert als MCP-Server für Cline, als eigenständige CLI und als importierbares Python-Modul – alles aus einer Datei.

Quick start

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 interaktiv:

  1. Speichert deinen OpenRouter-Schlüssel in .env

  2. Registriert den ai-medialens-MCP-Server in der globalen Konfiguration von Cline

Related MCP server: Media Context MCP

Unterstützte Eingaben (automatisch anhand der Erweiterung erkannt)

Typ

Erweiterungen

OpenRouter-Inhaltsteil

Video

.mp4 .mpeg .mov .webm

video_url (base64)

Audio

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

input_audio

PDF

.pdf

file (base64)

Bild

.jpg .jpeg .png .gif .webp

image_url (base64)

Verwendung

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 (von Cline aus)

Cline ruft die Tools nativ auf:

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 }

Als Python-Modul

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

Reihenfolge der API-Schlüsselauflösung

  1. -k/--key-Flag

  2. Umgebungsvariable OR_KEY

  3. Umgebungsvariable OPENROUTER_API_KEY

  4. .env-Datei neben dem Skript (siehe .env.example)

ffmpeg & Zeitbereichs-Trimmung

--start/--end trimmen die Medien lokal vor dem Hochladen (OpenRouter hat keinen nativen Bereichsparameter). ffmpeg wird in dieser Reihenfolge aufgelöst:

  1. Gebündeltes bin\ffmpeg.exe (wenn du eines dort platziert hast)

  2. Zwischengespeicherte Kopie unter %LOCALAPPDATA%\ai-medialens\bin\ffmpeg.exe

  3. ffmpeg im PATH

  4. Automatischer Download (~80 MB statischer Build, einmalig, Windows)

Hinweis: Die Trimmung verwendet -c copy (schnell, schneidet aber an Keyframes; exakte Schnitte erfordern eine Neucodierung).

Modelle

Standard: qwen/qwen3.7-flash ($0.03/M Eingabe, $0.13/M Ausgabe) – derzeit das günstigste OpenRouter-Modell mit vollständiger Videoeingabeunterstützung.

Andere gute video-fähige Optionen (aktuelle Preise über --list-models video prüfen):

Modell

Eingabe /M

Ausgabe /M

qwen/qwen3.7-flash (Standard)

$0.03

$0.13

z-ai/glm-5.3-flash

$0.075

$0.25

qwen/qwen3.8-27b

$0.425

$2.55

Jeder OpenRouter-Modell-Slug funktioniert über -m / model= – einschließlich neuerer Veröffentlichungen, sobald sie erscheinen.

PDF-Parsing-Engines

PDFs werden entweder lokal oder serverseitig von OpenRouter geparst:

Engine

Verhalten

Kosten

(Standard)

Serverseitige Textextraktion aus eingebetteter Textebene

Kostenlos

--pdf-engine local

Lokales Parsen über PyMuPDF (pip install pymupdf) – keine Ratenbegrenzungen. Digitale PDFs: Text wird lokal extrahiert. Gescannte PDFs: Seiten werden als Bilder gerendert und das Vision-Modell führt die OCR selbst durch

Kostenlos

--pdf-engine mistral-ocr

Serverseitige echte OCR über Seitenbilder – liest gescannte/nur-Bild-PDFs

Pro Seite abgerechnet

--pdf-engine native

Leitet rohe PDFs an Modelle mit nativem Dateieingang weiter

Kostenlos

local wird empfohlen: Es stößt nie an die Parser-Ratenbegrenzungen von OpenRouter und verarbeitet sowohl digitale als auch gescannte PDFs ohne zusätzliche Kosten.

Sprach-zu-Text (STT)

Verwendet den dedizierten /audio/transcriptions-Endpunkt von OpenRouter (Whisper-Klasse-Modelle). Standardmodell: openai/whisper-large-v3-turbo. Andere Optionen: openai/gpt-4o-transcribe, openai/gpt-4o-mini-transcribe, microsoft/mai-transcribe-1.5, openai/whisper-large-v3.

Pipeline-Härtung (Lehren aus einem Produktions-YouTube→Untertitel-System):

  • Jede Audio-/Videoeingabe → ffmpeg konvertiert in Opus 32kbps/16kHz/mono (8× kleiner als WAV, von allen Anbietern akzeptiert); Videospuren werden entfernt

  • Lange Medien werden automatisch in 6-Minuten-Chunks aufgeteilt (OpenRouter hat ein ~60s Upstream-Timeout pro Anfrage)

  • Jeder Chunk wird neu gemuxt, um die fehlende Ogg-EOS-Seite hinzuzufügen (ffmpegs Segment-Muxer lässt sie aus; OpenRouters Parser lehnt Streams ohne sie ab)

  • --srt gibt zeitgestempelte SRT-Untertitel über verbose_json-Segmente zurück, korrekt über Chunks hinweg versetzt

  • Hinweis: whisper-large-v3 erzeugt bei beschleunigtem Audio verstümmelte Ausgabe; mai-transcribe-1.5 toleriert das

Anmerkungen

  • Große Dateien werden im Speicher base64-codiert – sehr große Videos können die Upload-Limits des Anbieters erreichen.

  • Geheimnisse sind sicher: .env ist gitignored und wird nie committet.

Related MCP Connectors

Related MCP Servers