Skip to main content
The tube CLI turns any YouTube URL (or media file) into a transcript — txt, srt, vtt, md or json — straight from your terminal. The same package ships an MCP server, so AI clients like Claude and Cursor can transcribe and read YouTube transcripts as a native tool.
You need a TranscribeTube account and an API key. Grab one from your API key page. Transcription consumes account credit, same as the web app.

Install

npm install -g @transcribetube/cli
This installs the tube binary.

Authenticate

Store your API key once:
tube login
# opens app.transcribetube.com/account/api-key, then paste your key
For CI or headless environments, pass it non-interactively or via the TUBE_API_KEY environment variable:
tube login --api-key "tt_live_xxx"
Verify with tube whoami (prints the account email and remaining credit).

Transcribe a YouTube video

The one-liner most people come for:
tube transcribe "https://youtu.be/dQw4w9WgXcQ" --wait
--wait blocks until processing finishes and prints the transcript. Without it, the command queues the job and returns the project id so you can poll later.

Choose an output format

txt (default), srt, vtt, md, and json are supported via -f/--format:
tube transcribe "https://youtu.be/dQw4w9WgXcQ" --wait -f srt > captions.srt

Common flags

FlagDescription
-w, --waitWait for completion and print the transcript
-f, --format <fmt>txt | srt | vtt | md | json (default txt)
-l, --lang <code>Language hint, e.g. en. Omit to auto-detect
--webhook <url>POST to this URL when transcription completes
--jsonMachine-readable JSON output for any command

Work with projects

Every transcription is a project. Fetch transcripts later, in any format:
tube project list                       # recent projects + status
tube project get <id>                   # project details
tube project watch <id>                 # poll until DONE or ERROR
tube project transcript <id> -f srt     # fetch a finished transcript
project transcript also takes --no-speakers and --no-timecodes to strip speaker labels or timecodes from the output.

MCP server (Claude, Cursor, Claude Code)

The package ships an MCP server over stdio. Point any MCP-capable client at tube mcp and it gains three tools:
ToolWhat it does
transcribe_youtubeTranscribe a YouTube URL and return speaker-labeled, timecoded text
get_transcriptFetch an existing project’s transcript by id, in any format
list_projectsList recent projects with their ids and status

Claude Desktop / Claude Code

Add this to your MCP config (claude_desktop_config.json, or .mcp.json for Claude Code). The server reads your key from TUBE_API_KEY:
{
  "mcpServers": {
    "transcribetube": {
      "command": "tube",
      "args": ["mcp"],
      "env": { "TUBE_API_KEY": "tt_live_xxx" }
    }
  }
}
Then just ask: “Transcribe this YouTube video and summarize the key points: <url>.” Claude calls transcribe_youtube, gets the text, and works with it directly — no copy-paste.

Cursor

Add the same block under mcpServers in Cursor’s MCP settings. The tools appear automatically in the agent’s tool list.
The MCP server transcribes synchronously and waits up to 10 minutes for long videos. For batch or unattended jobs, prefer the CLI with --webhook.

Scripting examples

# transcript.txt for every URL in urls.txt
while read url; do
  id=$(tube transcribe "$url" --json | jq -r '.id')
  echo "queued $id for $url"
done < urls.txt

API early access

🔌 Need transcription as a hosted API for your agents? TranscribeTube is opening an MCP-native transcription API. Request early access →

Reference