How to Extract Subtitles With an AI Agent (2026): What Automates, What Doesn't

By Flora Wang, video localization specialist · Updated September 30, 2026 · 11 min read

TL;DR: How much of subtitle extraction you can automate depends on which of the three subtitle types you have. Toggleable subtitle tracks inside MKV/MP4 files are one ffmpeg command — fully scriptable. Videos with no subtitles at all are handled by speech recognition: Whisper runs locally from the command line, or GeekLink's Watch Folder auto-transcribes and translates every video dropped into a folder, no per-file clicks. Burned-in subtitles (text baked into the pixels) are the step that resists scripting — there is no mature, maintained open-source OCR pipeline you can just drop into a script — which is where GeekLink's batch OCR (50+ videos per run, fully local) fills the gap. Every path outputs standard SRT, the universal interface any downstream script, editor, or AI agent can consume.

Why are people automating subtitle extraction in 2026?

Subtitle extraction used to be a one-off task: open an app, load a video, click through. In 2026 it is increasingly a step inside a larger workflow. Creators repurpose whole back catalogs for new languages. Language learners feed sentence-mining tools like subs2srs. Teams wire up AI coding agents — Claude Code, and similar tools — to orchestrate video pipelines end to end: download, extract subtitles, translate, QC, publish.

The moment subtitle extraction becomes a pipeline step instead of a one-off task, the questions change: can it run unattended, can it run in batch, and can a script or AI agent trigger it and pick up the output? This guide answers those three questions honestly for each subtitle type — including the parts where the answer is "not with a script alone."

One constraint shapes everything below: the pipeline stays local. Cloud subtitle APIs exist, but for creators processing hours of footage they meter by the minute, and they require uploading source video — a non-starter for unpublished or client material. Everything in this guide runs on your own computer, with no video ever uploaded.

Which subtitle types can be extracted automatically?

Every video falls into one of three cases, and each case has a completely different automation story:

  • Toggleable subtitles (embedded tracks) — a separate text track inside the container (common in MKV, some MP4). The text already exists as data. Extraction is trivial and 100% scriptable.
  • No subtitles — the video only has audio. You need speech recognition. Highly automatable locally, with quality caveats.
  • Burned-in subtitles (hardcoded) — the text is part of the picture, common in anime rips, Chinese and Korean variety shows, TikTok/Reels reposts, and older broadcast footage. The original text data is gone; you need OCR against video frames. This is the step that resists DIY scripting.

A useful rule of thumb: if you can turn the subtitles off in a player, one command extracts them; if you can hear speech but see no subtitles, local speech recognition handles it; if the subtitles are part of the image, you need a dedicated OCR tool. If you are not sure which case you have, our embedded vs burned-in guide shows how to tell in ten seconds.

How do you extract toggleable subtitle tracks automatically?

This is the easy case, and you do not need any special tool for it. ffmpeg (free, cross-platform) extracts a subtitle track in one command:

ffmpeg -i input.mkv -map 0:s:0 output.srt

That takes the first subtitle stream (0:s:0) and writes it as SRT. Wrap it in a shell loop and you have batch extraction for a whole folder. Any AI coding agent can write and run this for you — extracting toggleable subtitle tracks is a solved, fully scriptable problem and needs no paid software.

Two caveats worth knowing. First, DVD and Blu-ray subtitle tracks (VobSub/PGS) are stored as images, not text — -map alone cannot convert those to SRT; they need OCR too. Second, many files have multiple tracks in different languages, so list them first with ffprobe before picking an index. Our guides for MKV and MP4 cover the details.

How do you automate speech-to-subtitle transcription?

When there is no subtitle data at all, speech recognition generates it. There are two local automation paths.

Path 1: Script Whisper directly

OpenAI's Whisper is open source and runs from the command line: whisper video.mp4 --model small --output_format srt. It is genuinely scriptable, and if you are already driving your computer with an AI agent, having it orchestrate Whisper over a folder of videos works. The gaps show up after transcription: raw Whisper output gives you no translation step, no visual check of results against the video, and no way to know which lines it got wrong without watching everything.

Path 2: Watch Folder automation (no scripting)

GeekLink's Watch Folder feature is the no-code version of the same automation. You point GeekLink at a folder once, choose your recognition and translation settings, and every video dropped into that folder afterwards is auto-imported, transcribed, and translated — no per-file clicks, no scripts to maintain. A downloader, an AI agent, or a person can feed the folder; the app does the rest.

This matters for automation because a watched folder is itself an integration point. Anything that can move a file — a yt-dlp script, a Hazel rule, an agent, a network share — can trigger processing without GeekLink exposing an API. Recognition covers 49 languages via Whisper, and translation covers 40+ languages using models you choose (Claude 3.5 Haiku, GPT-4o, GPT-4o mini, DeepSeek), so the folder can output bilingual subtitles, not just transcripts.

Why is burned-in subtitle extraction the hardest step to automate?

Here is the honest part of this guide. If your videos have subtitles baked into the pixels, the "just script it" approach that works everywhere else breaks down. As of 2026 there is no mature, maintained open-source pipeline that reliably turns burned-in subtitles into timed SRT that you can simply drop into a script — the open-source OCR projects in this space are Windows-only, GPU-dependent, or unmaintained. (We compare the whole landscape in our hardcoded subtitle extractor roundup.)

The reason a weekend script cannot do it: video OCR is not "screenshot plus text recognition." A naive script that samples one frame per second and OCRs it hits four walls at once:

  • Timing precision. Sampling every second means subtitle start and end times can be off by up to a second per line — instantly noticeable against speech.
  • Deduplication. A subtitle that stays on screen for three seconds appears in dozens of sampled frames, each OCR'd slightly differently. Merging them into one clean line with correct duration is the actual hard problem.
  • Subtitles vs everything else. Watermarks, channel logos, on-screen graphics, and lyrics all look like text to an OCR engine. Without knowing where the real subtitles live, output fills with garbage lines.
  • CJK accuracy. Chinese, Japanese, and Korean subtitles — the languages most likely to be burned in — are exactly where generic OCR accuracy drops hardest.

GeekLink's batch OCR is built around those four walls. It scans the first video and detects the likely subtitle lines automatically. You review the rows it found — deleting logos or adding subtitle boxes manually when the layout needs them — and the rest runs unattended. One run processes 50+ videos back to back on your computer, and each video comes out as a timed SRT, with per-line confidence so you can see what to double-check. The full workflow is in our burned-in subtitle OCR guide.

How does a desktop app fit into an automated workflow without an API?

A fair question from anyone wiring up an agent-driven pipeline: GeekLink is a desktop app, not a command-line tool — so how does it compose with scripts?

The integration contract is the filesystem: files go into a folder, standard SRT files come out, and everything in between runs unattended. Concretely:

  • Input side: the Watch Folder accepts anything that lands in it (for speech recognition and translation), and batch import accepts a whole folder at once (for OCR and everything else).
  • Output side: exports are standard SRT (also TXT transcripts and subtitle-burned video). SRT is plain text with a stable, decades-old format — any script, editor, translation step, or AI agent downstream can parse it. No proprietary project files to unlock.

To be transparent about limits: GeekLink has no public CLI or HTTP API today. Folder-based automation covers the unattended-batch use case that solo creators and small teams actually run; on Mac, an AI assistant can also drive the app through MCP, as described below.

Can an AI agent control GeekLink directly through MCP?

The most direct form of agent automation is a tool protocol: instead of watching a folder, an AI agent calls a named function — "extract the subtitles from this video" — and gets structured output back. MCP (Model Context Protocol) lets a compatible assistant discover and call an app’s tools. A local integration can use STDIO; it does not require a public HTTP endpoint.

Yes, in GeekLink for Mac. Click Connect AI (MCP) in the top bar and pick your AI app; one-click setup currently supports Claude Desktop and Codex. GeekLink itself runs on Mac and Windows, but Connect AI (MCP) is Mac-only for now. Our Subtitle MCP Server guide documents the actual tools for OCR, transcription, translation, frame inspection, review and export, including the limits of the current batch workflow.

Watch an AI assistant run GeekLink

What does a complete local subtitle pipeline look like?

Putting the pieces together, here is a pipeline that handles any mix of videos, entirely on-device:

  1. Sort by subtitle type. Check each file: does the player show a subtitle track (toggleable), visible baked-in text (burned-in), or neither (speech)? An agent can do the first check automatically with ffprobe; the other two take a two-second look.
  2. Toggleable tracks → ffmpeg. One scripted command per file, done.
  3. No subtitles → Watch Folder. Drop the files in; recognition and translation run unattended, with your chosen source and target languages.
  4. Burned-in → GeekLink batch OCR. Import the batch, review the automatically detected subtitle lines, run. 50+ videos per pass.
  5. Collect SRT output. All three paths converge on timed SRT files, ready for whatever comes next — translation, editing, sentence mining, re-embedding, or publishing.

The design principle: automate by routing each video to the right extractor, not by forcing one tool to do everything. ffmpeg is unbeatable for track extraction; Whisper-based recognition handles speech; dedicated OCR handles burned-in text. The SRT format is what lets them compose.

Where does automation still need a human?

An unattended pipeline produces subtitles; it does not guarantee they are right. Names, jargon, overlapping speech, and anything under loud music are where recognition errors cluster — and a fully automated pipeline will happily propagate those errors into your translations and published videos.

The scalable fix is not reading every line — it is having the pipeline flag which lines are likely wrong, so the human review step shrinks from the whole transcript to a shortlist. GeekLink reads the recognizer's per-word confidence and flags the lowest-confidence word in each line, plus segments covered by music, then exports a review pack for the free Subtitle Edit. The end-to-end review workflow is covered in finding the lines AI got wrong.

Budget-wise, the automated pipeline above runs on GeekLink's free tier for trying it out; full batch use is $99/year (~$8.25/month) or $129 lifetime, both including 4,800 AI credits. Requirements: macOS 13.0+ (Apple Silicon M1–M4) or Windows 10/11 (64-bit).

FAQ

Can I automatically extract subtitles from videos with an AI agent?

Yes, but the method depends on the subtitle type. Toggleable subtitle tracks extract with one free ffmpeg command. Videos without subtitles need local speech recognition (scriptable Whisper, or GeekLink's Watch Folder for a no-code version with translation). Burned-in subtitles need dedicated OCR — GeekLink batch-processes 50+ videos per run locally.

Can AI agents like Claude Code extract subtitles from videos?

Partially. An AI coding agent can script ffmpeg to pull toggleable subtitle tracks and run Whisper for speech-to-text — both are command-line tools it drives well. What an agent cannot reliably script is burned-in subtitle OCR, because no maintained open-source pipeline exists for it. The practical split: let the agent handle tracks and speech, and route burned-in videos through a batch OCR tool via a shared folder.

Does GeekLink have a CLI or API for automation?

No — GeekLink has no public command-line interface or API today. Its automation model is folder-based: the Watch Folder auto-transcribes and translates any video dropped into it, batch import handles 50+ videos per OCR run, and all output is standard SRT that scripts can pick up. On Mac, an AI assistant can also drive GeekLink through MCP — see the section above.

Does GeekLink support MCP so an AI agent can drive it?

Yes, on Mac. In GeekLink for Mac, click Connect AI (MCP) and pick your AI app; one-click setup currently supports Claude Desktop and Codex. Connect AI (MCP) is not available on Windows yet, and there is no remote ChatGPT web connection. On both Mac and Windows, the app also supports folder-based speech and translation automation.

How do I batch-extract burned-in subtitles from many videos?

Use a batch OCR tool rather than per-file scripting. In GeekLink you import the whole folder, review the subtitle lines it detects automatically on the first video, and the batch runs unattended on your computer — 50+ videos per pass, each exported as a timed SRT with per-line confidence for review. If the video's layout needs it, you can add the subtitle boxes manually before running the batch.

Is automated subtitle extraction private? Does my video get uploaded?

The pipeline in this guide is local: ffmpeg, Whisper recognition, and GeekLink's OCR all run on your own computer, and no video is uploaded anywhere. The one optional cloud step is AI translation — if you enable it, subtitle text (not video) is sent to the translation model you choose (Claude 3.5 Haiku, GPT-4o, GPT-4o mini, or DeepSeek).

What output format should an automated subtitle pipeline use?

SRT. It is plain text, supported by effectively every editor, player, platform, and translation tool, and trivial for scripts and AI agents to parse. Whatever extractor you use, converge on timed SRT as the interchange format; convert to platform-specific formats (VTT, ASS) only at the final step if needed.

Disclosure: GeekLink is our own desktop app; the Watch Folder, batch OCR, confidence flagging, and translation features described here are GeekLink features. ffmpeg and Whisper are independent open-source projects, not affiliated with us, recommended on their own merits.

Automate the subtitle step of your workflow

Drop videos in a folder, get timed SRT out — speech recognition, burned-in OCR, and AI translation, all running locally on your computer.

Free Download