PodLearn

io.github.blutrichPublished by GitHub account blutrichv1.1.0Updated Oct 24, 2026

Search 4M+ podcasts & YouTube, transcribe any episode, search transcripts, generate AI lessons.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryMedia & Design

Overview

AI-generated overview

PodLearn searches podcasts and YouTube, transcribes episodes, searches transcripts, and generates AI lessons from them.

What you can do
  • Search and browse podcasts, episodes and YouTube videos, including resolving Spotify or Apple Podcasts links
  • Fetch podcast, episode and feed details, and list episodes from the upstream PodcastIndex feed
  • Transcribe a single audio URL, an in-library episode, or a whole feed in bulk
  • Read transcripts, search within one transcript, and pull timestamped segments
  • Generate structured AI lessons from a completed transcript and turn a lesson into a LinkedIn post
  • Manage saved episodes and lessons, and check subscription, credits and usage
When to use it
Useful when you want an assistant to turn long interviews, talks or lectures into readable transcripts and structured notes, to find the exact moment a topic is discussed, or to bulk-process a podcast season without listening to it.
Requirements
Remote Streamable HTTP endpoint at podlearn.ai. A PodLearn account is required; interactive clients sign in with OAuth in the browser, and headless clients send a personal token in the Authorization header. Network access is needed.
Before you install
Transcription and lesson generation spend PodLearn credits (2 free to start); reading and searching existing transcripts is free. OAuth sign-in can grant read and write access, and the server can save or permanently remove bookmarks. A personal token is sent as a bearer credential and should not be placed in the URL.

Installation

In SourceWeft

  1. Open PodLearn in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.blutrich%2Fpodlearn/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "podlearn": {
      "type": "http",
      "url": "https://podlearn.ai/mcp"
    }
  }
}

README

🎧 PodLearn for Claude Code

Stop listening. Start learning.

The podcast & video knowledge engine, right inside Claude Code. Drop a link. Get a verbatim transcript, a searchable archive, and an AI lesson in seconds.

[Claude Code plugin] [MCP included] [Free to start] [License: AGPL-3.0]


Some of the best thinking on the planet is locked inside hours of audio you'll never have time for. PodLearn unlocks it. Hand Claude any podcast or YouTube URL and it transcribes the whole thing (yes, even long talks with no captions), makes every word searchable, and distills the ideas into a structured lesson. No tab-switching, no copy-paste, no "I'll get to it later."

One install adds the PodLearn skill and MCP server to Claude Code. The skill handles the routing; the MCP does the work. You just talk.

✨ Why people use it

  • ⏱️ Hours → minutes. A 2-hour interview becomes a transcript + lesson you skim in five.
  • 🔎 Find the exact moment. Full-text search across every transcript, with citations. "Where did they talk about pricing?" jumps you straight there.
  • ▶️ YouTube that actually works. Paste any video, captions or not. Conference talks, lectures, channel deep-dives, all transcribed natively.
  • 📚 Bulk a whole season. transcribe_feed ingests an entire podcast feed in one shot, not episode-by-episode.
  • 🧠 Lessons, not just text. Auto-generated key takeaways and structured notes you can act on.
  • 🤖 Agent-native. It's a real MCP server, so every call composes with the rest of your Claude workflow (turn a lesson into a LinkedIn post, feed quotes into a doc, whatever).

💬 What you can ask

"What podcasts do you have about AI agents?" "Transcribe this and make me a lesson: ‹youtube or podcast URL›" "Find the best quotes about pricing from ‹episode›" "Transcribe the last 10 episodes of ‹podcast› and summarize the themes." "Turn that lesson into a LinkedIn post."

⚡ Install (60 seconds)

1. Have a PodLearn account (free, 2 credits to try) at podlearn.ai. No token needed: you sign in once in your browser.

2. Add the marketplace — in Claude Code (run this on its own, wait for confirmation):

/plugin marketplace add blutrich/podlearn-plugin

3. Install the plugin — then run:

/plugin install podlearn@podlearn

⚠️ Run them one at a time — they're two separate slash commands. Pasting both lines at once makes Claude treat the second as part of the first.

4. Restart Claude Code (or claude reload).

5. Sign in. Run /mcp, pick podlearn, choose Authenticate, and approve PodLearn in the browser. Approve both read and write if you want Claude to transcribe and save things for you (it still asks before spending credits). Then start asking.

That's it. The plugin ships the skill and the MCP, so there's no separate claude mcp add step and nothing to wire up by hand.

📦 What's inside

Skill (podlearn)Routes your intent through the MCP tools so you never think about which one to call.
MCP serversearch_podcasts · search_youtube · search_episodes · list_feed_episodes · transcribe_url · transcribe_feed (bulk/season) · get_transcription · search_transcription · generate_lesson · generate_linkedin_post · and more.

🔌 Just the MCP server (without the plugin)

The plugin already bundles the server, so most people don't need this. But if you want the MCP on its own — in Claude Desktop, Cursor, ChatGPT, or any other MCP client, or in Claude Code without the skill — add it directly.

Claude app (web, desktop, mobile): Settings → Connectors → Add custom connector → paste https://podlearn.ai/mcp → Connect, and sign in.

Claude Code:

bash
claude mcp add --transport http podlearn https://podlearn.ai/mcp

Then /mcp → podlearn → Authenticate.

Codex:

bash
codex mcp add podlearn --url https://podlearn.ai/mcpcodex mcp login podlearn --scopes mcp:read,mcp:write

Any MCP client — point it at the Streamable HTTP endpoint and sign in with OAuth:

FieldValue
TransportStreamable HTTP (http)
URLhttps://podlearn.ai/mcp
AuthOAuth (sign in with your PodLearn account)

Headless client that can't open a browser? Create a personal token in Settings → API Tokens and send it as the Authorization: Bearer … header. Never put it in the URL: tokens in the query string are ignored, and calls will hang waiting for a sign-in. Full setup guide: podlearn.ai/mcp-docs.

🔄 Manage

/plugin marketplace update podlearn      # pull the latest/plugin uninstall podlearn@podlearn      # remove the plugin/plugin marketplace remove podlearn      # remove the marketplace

🔐 Notes

  • Your account, your permissions. The MCP signs in with OAuth; you choose read-only or read + write in the browser. Auth error or "insufficient scope"? Run /mcp → podlearn → re-authenticate. To get write access after a read-only sign-in, remove and re-add the server first.
  • Upgrading from 1.0.x? The old token prompt is gone. Update the marketplace, reinstall, restart, then sign in with /mcp. You can revoke the old pl_mcp_… token in Settings → API Tokens.
  • Transparent pricing. Reading and searching transcripts already in your library is free. Paid actions (transcribe_url, transcribe_feed, generate_lesson) spend PodLearn credits, and the skill confirms the cost before charging. Start with 2 free credits; top up or subscribe at podlearn.ai.

🌐 Also available

PodLearn runs as a web app at podlearn.ai and as an MCP server for Claude Desktop, ChatGPT, Cursor, and any MCP-compatible client. This plugin is the fastest way to use it from Claude Code.

📄 License

AGPL-3.0 — © 2026 Ofer Blutrich. Built on the PodLearn platform.

Source: README.md at commit 6950c05

Tools

25

search_podcasts

Search podcasts

Search PodLearn library AND PodcastIndex.org (4M+ podcasts) by keyword. Also resolves Spotify/Apple Podcasts URLs. Returns rows tagged with `source: local|podcastindex|spotify`. First move when the user names a podcast/host but you don't have its id.

Parametersqueryrequired

list_podcasts

List podcasts

List podcasts already in the PodLearn library, optionally filtered by category. Returns most-recently-added first. For discovery beyond the library use search_podcasts.

Parameterslimitoffsetcategory

get_podcast_details

Podcast details

Fetch full metadata for one podcast in the PodLearn library, including its episode count. The podcast must already be in the local DB (source=local in search_podcasts results).

Parameterspodcast_idrequired

search_episodes

Search episodes

Cross-podcast episode search by title/description AND parent podcast name/author. Returns local episodes only — for podcasts discoverable on PodcastIndex that aren't yet ingested, use list_feed_episodes instead. `status: "transcribed"` filters to ready-to-read; `status: "untranscribed"` to available-to-transcribe.

Parameterslimitqueryrequiredoffsetstatus

list_feed_episodes

List feed episodes

Fetch the canonical episode list for a podcast directly from PodcastIndex (the upstream RSS index). NO COST — pure discovery. Each episode is enriched with `in_library`, `episode_id` (if already ingested), and `transcription_status`. For episodes you want to ingest: call transcribe_url(audio_url, title, feed_id, podcast_name) — passing feed_id/podcast_name lands the episode under its real show. For episodes already in_library, use start_transcription(episode_id) instead.

Parametersmaxsincebeforefeed_idrequired

list_episodes

List episodes

List episodes already in the local DB for a specific podcast. Requires podcast_id (use search_podcasts first if you only have a name). For cross-podcast search use search_episodes; for canonical PodcastIndex listings use list_feed_episodes.

Parameterslimitoffsetstatuspodcast_idrequired

get_episode_details

Episode details

Fetch full metadata for one episode including transcription_status and lesson_generation_status. Tells you whether get_transcription is ready or you need to transcribe first: start_transcription(episode_id) for an in-library episode (inherits its existing show/artwork/feed linkage automatically) or transcribe_url(audio_url, title, feed_id, podcast_name) for a URL not yet in the library.

Parametersepisode_idrequired

transcribe_url

Transcribe URL

Ingest and transcribe an EXTERNAL / arbitrary audio URL — a URL the user pasted, or audio not reachable through the index. Creates a STANDALONE episode row. If the episode is already in the library (it has an episode_id), prefer start_transcription(episode_id) instead — it inherits the episode's existing show, artwork, and feed linkage automatically. Consumes 1 transcription credit, or one unit of subscription quota; the credit is refunded automatically if transcription fails. Pass feed_id / podcast_name when you already know the parent show (e.g. from search_podcasts or list_feed_episodes) so the episode lands under its real show instead of appearing as unidentified "External audio". Returns the new episode_id. Transcription is asynchronous on the fallback path — poll get_episode_details until transcription_status is "completed".

Parameterstitlerequiredfeed_idlanguageaudio_urlrequiredpodcast_idpodcast_name

transcribe_feed

Transcribe feed (bulk)

Bulk/season transcription — kick off transcription for up to `max` (cap 25) not-yet-transcribed episodes of a podcast feed in ONE call. Pass the `feed_id` from search_podcasts / list_feed_episodes. Already-transcribed episodes are skipped free. COSTS 1 credit per newly enqueued episode (or subscription quota) — CONFIRM the cost with the user first. Enqueue-and-poll: returns each enqueued episode_id; poll get_episode_details until transcription_status is "completed".

Parametersmaxsincebeforefeed_idrequired

start_transcription

Start transcription

Kick off transcription on an episode ALREADY in the library. Use only when the episode row exists and transcription_status is not "completed". Inherits the episode's existing show, artwork, and feed linkage automatically — no need to pass podcast context. For audio not yet in the library, use transcribe_url. COSTS 1 CREDIT (or subscription quota).

Parametersepisode_idrequired

get_transcription

Get transcription

Fetch transcript text for a completed episode. PAGINATED — returns up to 120,000 characters per call (Claude.ai/Desktop caps a tool result at ~150k chars). Most transcripts fit in one call; only very long episodes page. If the response has `has_more: true`, call again with `offset: <next_offset>`. For focused look-up (a topic, quote, timestamp) prefer search_transcription.

Parametersoffsetmax_charsepisode_idrequired

search_transcription

Search transcript

Keyword search WITHIN a single episode's transcript. Returns matching chunks with surrounding context. Use instead of get_transcription when the user asked about a specific topic — server does this faster + cheaper on context.

Parametersqueryrequiredepisode_idrequired

get_transcription_segments

Transcript segments

Fetch timestamped transcript segments. Use when the user wants timestamps — "jump to where they discuss X", chapter boundaries, durations of specific parts.

Parametersend_timeepisode_idrequiredstart_time

list_lessons

List lessons

List the calling user's saved AI-generated lessons.

Parameterslimitoffsetepisode_id

get_lesson_content

Lesson content

Fetch the full body of one AI-generated lesson (title, summary, key takeaways, structured sections). Use to retrieve prior synthesis — for creating a NEW one call generate_lesson.

Parameterslesson_idrequired

generate_lesson

Generate lesson

Generate a structured AI lesson (summary, key takeaways, sections) from a completed transcription. Requires the episode to have transcription_status "completed". Consumes 1 credit, or one unit of subscription quota, on first generation for an episode; subsequent calls return the cached lesson at no cost.

Parametersepisode_idrequired

get_subscription_status

Subscription status

Get the caller's subscription plan + active/expired status + period end.

Takes no parameters.

get_user_credits

User credits

Get the caller's remaining transcription credits.

Takes no parameters.

get_episode_usage

Episode usage

Get the caller's episode-access usage stats — how many episodes they've transcribed/read this billing period.

Parameterslimitoffset

get_saved_items

Saved items

List the caller's saved/bookmarked episodes and lessons.

Parameterslimitoffset

save_item

Save item

Bookmark an episode or lesson for the caller.

Parametersitem_idrequireditem_typerequired

remove_saved_item

Remove saved item

Permanently remove a saved/bookmarked episode or lesson from the caller's collection. The saved_item_id comes from get_saved_items.

Parameterssaved_item_idrequired

generate_linkedin_post

Generate LinkedIn post

Turn an already-generated lesson into a LinkedIn-ready share post. Pass lesson_id directly OR episode_id (uses the most recent lesson generated by the caller for that episode). Lesson must exist — chain after generate_lesson if needed.

Parameterslesson_idepisode_id

search_youtube

Search YouTube

Discover YouTube videos by topic/keyword across all of YouTube. Use when the user wants to learn from a talk/interview/lecture and has no URL — especially when search_podcasts / search_episodes find nothing (much long-form content is YouTube-first). NO COST: pure discovery. Returns rows with a ready-to-transcribe `url`; to ingest one, confirm cost and call transcribe_url(url, title).

Parametersmaxqueryrequired

browse_episodes

Browse episodes

Open an interactive episode picker (cards with show, title, and status) for the user to pick an episode to read. On hosts that render MCP Apps the grid is clickable; everywhere else a markdown table is returned. Optional query filters by title/host.

Parameterslimitquery

Version history

2
  1. v1.1.0LatestOct 18, 2026
  2. v1.0.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.