Transcription for AI agents.

Give your agent speech-to-text it can actually drive: quote a price first, create a job, wait, and read the result as pure JSON on stdout. Speaker labels, chapters, and cited Q&A on every transcription, with word-level timings available via the API and MCP. Same engine, same wallet, and same API key as the transcribe.so API and MCP server.

Three ways to install

One repo ships all three: an agent skill, a Claude Code plugin, and a CLI. Pick the one that matches your agent runtime. Each needs a TRANSCRIBE_API_KEY from your settings.

Agent skill

For any agent that reads SKILL.md files (skills.sh, OpenClaw, and similar).

npx skills add shsunmoonlee/transcribe-agent

Claude Code plugin

Adds transcription skills and commands to Claude Code.

/plugin marketplace add shsunmoonlee/transcribe-agent
/plugin install transcribe-so@transcribe-agent

CLI

A transcribe-so binary for scripts, cron jobs, and any agent that can run a shell.

npm install -g transcribe-so
export TRANSCRIBE_API_KEY=tsk_live_...

The core flow

Quote first (free), create (charges the wallet), wait, then read the result. Every command prints pure JSON to stdout, so the output pipes straight into jqor your agent's tool loop. The job id is the one returned by create.

$ transcribe-so quote --source youtube --url https://youtu.be/RdAY3DjSr3A
{ "retail_usd": 0.35, "billed_minutes": 21, "pipeline_code": "standard", ... }

$ transcribe-so create --source youtube --url https://youtu.be/RdAY3DjSr3A
{ "id": 4821, "status": "processing", "stage": "queued", ... }

$ transcribe-so wait 4821
{ "id": 4821, "status": "completed", ... }

$ transcribe-so result 4821 > transcript.json

Or do all four in one call with a spend cap: transcribe-so run --source youtube --url ... --max-usd 2. The CLI refuses locally if the quote exceeds the cap, before any money moves.

Command reference

CommandWhat it does
transcribe-so auth:statusCheck that the API key works and which account it belongs to
transcribe-so meAccount, plan, and wallet balance
transcribe-so pipelinesPipeline catalog with per-minute pricing
transcribe-so quotePrice a job before creating it. Free, does not start anything
transcribe-so createSubmit a transcription. Charges the wallet, returns the job id
transcribe-so wait <id>Block until the job completes or fails (server long-poll)
transcribe-so result <id>Transcript with chapters and cited Q&A; add --include segments for speaker-labelled, timestamped segments
transcribe-so runquote, then create, wait, and result in one call. Requires --max-usd
transcribe-so listRecent transcriptions
transcribe-so get <id>Status and metadata for one transcription
transcribe-so delete <id> --yesDelete a transcription. Irreversible
transcribe-so retry <id> --yesRetry a failed job. Re-charges from scratch
transcribe-so upload <file>Upload a local file, get an upload_id for quote and create
transcribe-so subtitles <id>Subtitle file (SRT/VTT) to stdout. The one non-JSON command
transcribe-so ask <id> -qAsk a question about a transcript, get a cited answer

Destructive and re-charging commands require an explicit --yes. Exit codes separate auth, payment, and spend-cap failures so an agent knows whether to fix the key, top up, or raise --max-usd.

Every agent surface

The skill, plugin, and CLI sit on the same public API as everything else. If your agent speaks MCP or plain HTTP, connect directly:

Wire it into your agent

Create a key, export it, and your agent is transcribing in one command. Quotes are free, so it can always check the price before it spends.