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-agentClaude Code plugin
Adds transcription skills and commands to Claude Code.
/plugin marketplace add shsunmoonlee/transcribe-agent
/plugin install transcribe-so@transcribe-agentCLI
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.jsonOr 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
| Command | What it does |
|---|---|
transcribe-so auth:status | Check that the API key works and which account it belongs to |
transcribe-so me | Account, plan, and wallet balance |
transcribe-so pipelines | Pipeline catalog with per-minute pricing |
transcribe-so quote | Price a job before creating it. Free, does not start anything |
transcribe-so create | Submit 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 run | quote, then create, wait, and result in one call. Requires --max-usd |
transcribe-so list | Recent transcriptions |
transcribe-so get <id> | Status and metadata for one transcription |
transcribe-so delete <id> --yes | Delete a transcription. Irreversible |
transcribe-so retry <id> --yes | Retry 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> -q | Ask 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:
- MCP server:
https://transcribe.so/mcp(streamable HTTP; OAuth or API key) - OpenAPI spec: /openapi.json (also served as YAML at /api/v1/openapi.yaml)
- Site overview for LLMs: /llms.txt
- Skill, plugin, and CLI source: github.com/shsunmoonlee/transcribe-agent
- Human-oriented docs: /developers/docs
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.