youtube-transcript-agent
v0.1.1
Published
Agent-ready CLI and local MCP server for YouTube transcript context.
Maintainers
Readme
YouTube Transcript Agent
Turn any YouTube video, playlist, or channel into agent-ready transcript context.
This package provides:
ytx, a CLI for transcripts, channel jobs, playlist jobs, polling, and ZIP downloads- a local stdio MCP server for coding agents and desktop assistants
- docs for using the hosted
/mcpendpoint and Developer API
Install
Run without installing:
npx youtube-transcript-agent --helpOr install globally:
npm install -g youtube-transcript-agent
ytx --helpAuthentication
The CLI reads auth in this order:
YOUTUBE_TRANSCRIPT_API_KEY- local config created by
ytx auth set-key
Set an API key:
npx youtube-transcript-agent auth set-key <api_key>Or use environment variables:
export YOUTUBE_TRANSCRIPT_API_KEY=<api_key>PowerShell:
$env:YOUTUBE_TRANSCRIPT_API_KEY="<api_key>"CLI Usage
Get account credits:
npx youtube-transcript-agent creditsFetch one transcript:
npx youtube-transcript-agent transcript FOp280ZAxhg --timestampsDownload channel transcripts:
npx youtube-transcript-agent channel download "@mkbhd" --max 25 --wait --output channel.zipDownload playlist transcripts:
npx youtube-transcript-agent playlist download <playlist_url_or_id> --max 25 --wait --output playlist.zipPoll a job:
npx youtube-transcript-agent jobs status <job_id>Download a completed job:
npx youtube-transcript-agent jobs download <job_id> --output transcripts.zipLocal MCP
Start the local stdio MCP server:
npx youtube-transcript-agent mcpThis command waits for JSON-RPC messages on stdin. Agent clients should launch it with:
Command: npx
Args: youtube-transcript-agent mcp
Env:
YOUTUBE_TRANSCRIPT_API_KEY=<api_key>Available MCP tools:
get_transcriptget_channel_infolist_channel_videosstart_channel_jobstart_playlist_jobget_job_statusget_download_url
Manual smoke test:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | npx youtube-transcript-agent mcpHosted MCP
If your API server is deployed with hosted MCP enabled:
Endpoint: https://api.youtubetranscripts.fbetteo.com/mcp
Auth: Authorization: Bearer <api_key>List tools:
curl -X POST "https://api.youtubetranscripts.fbetteo.com/mcp" \
-H "Content-Type: application/json" \
--data-raw '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Call a tool:
curl -X POST "https://api.youtubetranscripts.fbetteo.com/mcp" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
--data-raw '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_transcript","arguments":{"video_url":"FOp280ZAxhg"}}}'Agent Skill
The repo includes an installable skill template at:
agent-skill/skill.mdFor distribution, publish that file as the root skill.md in a separate public skill repo.
Troubleshooting
Advanced API Host Override
Most users do not need to set an API URL. The package defaults to the hosted production API.
Only set a custom base URL for local development, staging, self-hosted deployments, or debugging:
export YOUTUBE_TRANSCRIPT_API_BASE_URL=http://127.0.0.1:8000Or save it in local CLI config:
npx youtube-transcript-agent auth set-key <api_key> --base-url http://127.0.0.1:8000Troubleshooting
If fetch failed appears and the API logs show nothing, the CLI is not reaching the API host. Check:
echo "$YOUTUBE_TRANSCRIPT_API_BASE_URL"
echo "$API_BASE_URL"
cat ~/.youtube-transcript-agent/config.json 2>/dev/nullThe CLI base URL priority is:
YOUTUBE_TRANSCRIPT_API_BASE_URLAPI_BASE_URL- saved local config
- package default
On Windows PowerShell, quote channel handles:
node cli/dist/cli.js channel download "@mkbhd" --max 2 --waitPowerShell aliases curl to Invoke-WebRequest; use curl.exe or Invoke-RestMethod.
