auto_subtitle
What it does
Pulls the latest review video, sends it to OpenAI Whisper (via your own OPENAI_API_KEY — BYO Keys), and produces SRT and/or VTT files written back into R2 at <slug>/subtitles/<content_id>.{srt,vtt}.
The transcript + language + duration are also returned in the response so an agent can act on them without a second round-trip.
Input schema
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | required | — |
Content id. |
| translate_to | string|null | optional | null |
Only "en" is natively supported (Whisper translation). Other codes are accepted but ignored; transcript stays in the source language. |
| style | string | optional | "both" |
srt · vtt · both. |
Example call
json{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "auto_subtitle", "arguments": { "id": "c_abc123", "style": "both" } } }
Response shape
json{ "ok": true, "transcript": "Today we're pulling...", "language_detected": "en", "duration_sec": 42.7, "srt": "1\n00:00:00,000 --> 00:00:02,800\nToday we're pulling...", "vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:02.800\nToday we're pulling...", "srt_r2_key": "your-slug/subtitles/c_abc123.srt", "vtt_r2_key": "your-slug/subtitles/c_abc123.vtt", "translated_to": null, "source_upload": { "id": "u_xyz789", "filename": "veo_cut_v3.mp4" }, "warning": null }
Usage from Claude Desktop
prompt"Generate Italian subtitles for c_abc123 and store the SRT in R2."
Usage from Python
pythonimport requests LUMIQA = "https://lumiqa.io/mcp/your-slug" HEADERS = {"Authorization": "Bearer lk_live_xxxxxxxxxxxx"} r = requests.post(LUMIQA, headers=HEADERS, json={ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "auto_subtitle", "arguments": {"id": "c_abc123", "style": "srt"} }, }) print(r.json())
Usage from Node
javascriptconst r = await fetch("https://lumiqa.io/mcp/your-slug", { method: "POST", headers: { "Authorization": "Bearer lk_live_xxxxxxxxxxxx", "Content-Type": "application/json", }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/call", params: { name: "auto_subtitle", arguments: { id: "c_abc123", style: "srt" }, }, }), }); const data = await r.json(); console.log(data);
Required env vars / integrations
- BYO Keys: bring your own
OPENAI_API_KEY— configure it once in Settings → Integrations and Lumiqa proxies the call. - R2 binding
UPLOADS(managed by Lumiqa). - Cost: ~$0.006 / minute of audio (OpenAI Whisper pricing, billed directly to your OpenAI account).
- Typical latency: 6–15 s for clips under 2 minutes; scales linearly above that.
Known limitations
- Whisper's 25 MB cap — files bigger than that throw
file_too_large_for_whisper. Extract audio to a compressed mp3/m4a and re-upload. - Translation is English-only natively. Asking for
fr/de/etc. keeps the source language and setswarning. - Very short clips with no segment data fall back to a single full-duration cue.