Skip to main content

MCP server for natural-language YouTube channel discovery + Gemini-powered video summaries. Zero YouTube API key required.

Project description

Podcast Summarizer MCP 📝

MCP that works with OpenClaw, Claude Desktop, Claude Code. Search & discover YouTube channels via natural language and summarize videos with no transcripts or subtitles required.

License: MIT Python MCP Version

Claude Desktop Claude Code OpenClaw


Quick start (5 minutes)

Python 3.10+ and a Gemini API key (free) from https://aistudio.google.com.

1. Install from source

git clone https://github.com/kaiding-ucb/podcast-summarizer-mcp
cd podcast-summarizer-mcp
python3 -m venv .venv && .venv/bin/pip install -e .

# Note the absolute path — you'll paste it into your host config below.
echo "$(pwd)/.venv/bin/podcast-summarizer-mcp"

2. Configure ONE host

Pick whichever you use. Replace /ABSOLUTE/PATH with what step 1 echoed, and AIza... with your Gemini key.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "podcast-summarizer": {
      "command": "/ABSOLUTE/PATH",
      "env": { "GEMINI_API_KEY": "AIza..." }
    }
  }
}

Quit Claude Desktop fully (⌘Q) and reopen. Click the 🔌 icon — podcast-summarizer should be listed.

Claude Code

claude mcp add podcast-summarizer \
  --env GEMINI_API_KEY=AIza... \
  -- /ABSOLUTE/PATH

claude mcp list   # should show podcast-summarizer

OpenClaw

Add to ~/.openclaw/openclaw.json under mcp.servers:

"podcast-summarizer": {
  "command": "/ABSOLUTE/PATH",
  "env": { "GEMINI_API_KEY": "AIza..." }
}

Restart OpenClaw (pkill -f openclaw-gateway; openclaw).


Example prompts

Discover:

Does Andrej Karpathy have a YouTube channel?

Find me a few investing podcasts.

Track:

Add Forward Guidance to my channels

Add @ForwardGuidanceBW

What channels am I tracking?

Remove Forward Guidance

Summarize:

Summarize this video: https://www.youtube.com/watch?v=MO9ZTZPUwXY

Summarize today's new videos from all my channels in parallel

I have a 20-video backlog — no rush, do it overnight to save cost

The agent picks analyze_video_start (parallel, full price) by default and analyze_videos_batch_start (50% off, async) only when you say "no rush" / "overnight".


📱 Use via Telegram, WhatsApp & More (OpenClaw)

Connect this MCP to Telegram, WhatsApp, Discord and 20+ messaging platforms via OpenClaw — a self-hosted AI gateway. Talk to your podcast research agent from your phone, anywhere.

Telegram → OpenClaw agent (Claude / Gemini / GPT) → podcast-summarizer-mcp → Gemini + YouTube

OpenClaw routes messages from your chat platform of choice to an AI agent. The agent talks to this MCP over standard stdio — no Python wrapper or shim required.

Setup

# 1. Install OpenClaw (Node 22+)
npm install -g openclaw

# 2. Add a Telegram bot token (interactive — paste BotFather token)
openclaw configure --section channels

# 3. Add this MCP + agent + model to ~/.openclaw/openclaw.json:
#    (already covered in Quick Start — use the OpenClaw snippet)
openclaw config set agents.defaults.model "anthropic/claude-sonnet-4-5"

# 4. Start the gateway
openclaw gateway

Tools

13 tools. The agent picks; you don't call them directly.

Tool Purpose
search_youtube_channels(query, max_results=5) Fuzzy channel search
resolve_youtube_channel(handle_or_url) @handle or URL → channel
get_channel_metadata(channel_id) Subs, description, recent titles
add_tracked_channel(channel_id, name, handle?, tags?) Add to registry
remove_tracked_channel(channel_id) Remove from registry
list_tracked_channels(tag?) List tracked channels
discover_new_videos(channel_ids?, tag?, ...) New videos since last poll
get_video_info(video_url) Metadata only (no Gemini cost)
analyze_video_start(video_url, prompt?) Launch Gemini analysis (returns job_id)
analyze_video_result(job_id) Poll for the result
analyze_videos_batch_start(video_urls, prompt?) 50%-cheaper batch path (24h SLA)
analyze_videos_batch_result(batch_job_name) Poll batch result
get_state(channel_ids?) Per-channel last-seen video

Registry state lives at ~/.podcast-summarizer-mcp/channels.json.


Configuration

Set in the host's env block. Only GEMINI_API_KEY is required.

Variable Default
GEMINI_API_KEY required
VIDEO_ANALYSIS_CHANNELS_PATH ~/.podcast-summarizer-mcp/channels.json
VIDEO_ANALYSIS_STATE_PATH ~/.podcast-summarizer-mcp/video-state.json
VIDEO_ANALYSIS_JOBS_PATH ~/.podcast-summarizer-mcp/jobs.json
VIDEO_ANALYSIS_BATCH_METADATA_PATH ~/.podcast-summarizer-mcp/batches.json
VIDEO_ANALYSIS_PROMPT_PATH unset → built-in investment-podcast prompt

VIDEO_ANALYSIS_PROMPT_PATH is re-read on every analysis call (no restart). Bundled examples in prompts/: investment-podcast.md, technical-talk.md, interview.md, news-briefing.md.


MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

podcast_summarizer_mcp-0.3.0.tar.gz (68.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

podcast_summarizer_mcp-0.3.0-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file podcast_summarizer_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: podcast_summarizer_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 68.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for podcast_summarizer_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5a4b6ad5a4fb63b2508a5d1820d57656e8e14270254b730b337c3151151813d3
MD5 fd69dd83e0a49239973f9a6dbe14f088
BLAKE2b-256 d9c66d61abc615e733e39a405bf5167bacc20d32b67586ce5cde218b56923f51

See more details on using hashes here.

File details

Details for the file podcast_summarizer_mcp-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for podcast_summarizer_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dbc1ca52fc9fcfca35a00a5dd08e3c9736733b59271233cdbe7fe069bc025890
MD5 c82e2e8d0095e6f051d9cf90300e7841
BLAKE2b-256 05101ea9d7d1559785bfed55cbda7324b9ccf0baf2804b309e2026b29733a4d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page