Spoken

io.github.spokenmd由 GitHub 帳號 spokenmd 發布v0.4.3更新於 Oct 24, 2026

Podcast transcripts as clean Markdown with real speaker names — via the Spoken API.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶媒體與設計

概覽

AI 產生的概覽

Spoken 讓助理搜尋播客,並取得帶有真實講者姓名的乾淨 Markdown 逐字稿,還能追蹤節目、找出新單集。

可以做什麼
用文字查詢或貼上 Spotify、YouTube 連結來搜尋已發布的播客單集,並用 podcast id 列出某節目的完整歷來單集。以 Markdown 取得單集逐字稿,包含真實講者姓名與時間戳記。查看帳戶的點數餘額、電子郵件與近期用量。管理追蹤的節目:宣告追蹤、將某節目設為靜音,以及列出目前追蹤的節目。列出已追蹤節目中尚未取得的新單集,每筆附上逐字稿連結。
適用情境
當你想讓助理取得播客逐字稿用於摘要、RAG 流程或搜尋,而不必自行執行語音轉文字服務時使用;也適合定期檢查已追蹤節目的新單集,讓知識庫保持最新。
執行需求
可使用 spoken.md 上以 Streamable HTTP 提供的託管端點,或以 npx 執行本機 npm 套件 spoken-mcp(需要 Node.js)。來自 spoken.md 的 API 金鑰透過 SPOKEN_API_KEY 環境變數或 Authorization Bearer 標頭提供;未提供時預設使用示範金鑰 pt_demo,搜尋完全可用,但逐字稿僅限示範單集。需要能連線至 spoken.md 的網路。
安裝前請注意
取得逐字稿會消耗點數:單集首次取得扣 1 點,重複取得免費,發生錯誤不扣點。點數須透過 Stripe 結帳與加值以真實金錢購買。API 金鑰是可計費的機密,請勿放入共用設定。追蹤與取消追蹤會變更帳戶的追蹤清單。逐字稿內容來自第三方播客。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Spoken,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.spokenmd%2Fspoken/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "spoken": {
      "type": "http",
      "url": "https://spoken.md/mcp"
    }
  }
}

README

Spoken — podcast transcript API and MCP server, clean Markdown with real speaker names

Spoken is a transcript API that turns any published podcast into clean Markdown with real speaker names — not "Speaker 1." One API call returns named, timestamped text, ready for LLMs, RAG pipelines, summarizers, and search. This repo also ships spoken-mcp, an MCP server that gives Claude Desktop, Claude Code, Cursor and Cline the same transcripts as tools — see Use as an MCP server.

It's a transcript retrieval API, not a speech-to-text service: it works on already-published podcasts, so you skip uploading audio, running diarization, and mapping anonymous speaker labels by hand. For published shows that's typically 5–10× cheaper than running the audio through a transcription service.

  • 🎙️ Real speaker names, resolved automatically
  • 📄 Clean Markdown with timestamps, tuned for LLM context windows and RAG chunking
  • 🔎 Search by text query or paste a Spotify/YouTube URL
  • 💳 Pay-per-use credits — no subscription, failed calls never charged, repeat fetches free
  • 🤖 Agent-native — ships with an Agent Skill, agents.md, llms.txt, and an OpenAPI spec

Get a key at spoken.md — or try it free with the demo key pt_demo (search works fully; transcripts limited to the demo episode).

Quickstart

sh
# 1. Find an episode (by text, or paste a Spotify/YouTube URL)curl -s 'https://spoken.md/search?q=huberman+sleep' \  -H 'x-api-key: pt_demo'
# 2. Fetch the transcript as Markdowncurl -s 'https://spoken.md/transcripts/1000651996090' \  -H 'x-api-key: pt_demo'

The transcript comes back as Markdown with named speakers and timestamps:

md
**John Smith** (0:00)Welcome to the show. Today we're talking about...
**Jane Doe** (0:15)Thanks for having me.

Endpoints

Method & pathWhat it doesCredits
GET /search?q={query or URL}Find episodes; returns id, title, podcast, podcastId, date0
GET /podcasts/{podcastId}/episodesList a show's full back catalog; returns every episode's id, title, date0
GET /transcripts/{id}Return the Markdown transcript1 on first fetch, 0 on repeat
GET /balanceCurrent credit balance + usage history0
GET /followingThe shows this key keeps up with (inferred from fetches, or declared with PUT / dropped with DELETE /following/{podcastId})0
GET /newNew episodes on those shows that have not been fetched yet, each with a transcript URL; ?format=atom for a feed0
POST /buyNew-key checkout (Stripe)—
POST /top-up?key={key}Returning-customer top-up (Stripe)—

Auth is the x-api-key header. Responses include X-Credits-Remaining and X-Credits-Charged. See agents.md for the full error table and response shapes.

Examples

Use from Python

The spoken-md package wraps the API with no dependencies outside the standard library, and installs a spoken-md command.

sh
pip install spoken-md
python
from spoken_md import Spoken
spoken = Spoken()                                  # SPOKEN_API_KEY, or the demo keyepisode = spoken.search("huberman sleep")[0]print(spoken.transcript(episode.id))               # Markdown with real speaker names

archive(podcast_id, skip=...) walks a whole show and is resumable; errors are typed by status (PaymentRequired carries the top-up URL, NotFound means no transcript). See python/README.md.

Use as an MCP server

Spoken is a Model Context Protocol server two ways: hosted at https://spoken.md/mcp, and as spoken-mcp, the package in this repo, for clients that run a server locally (Claude Desktop, Cursor, Cline, …). Both provide the same eight tools:

ToolDescription
search_podcastsFind episodes by text or a pasted Spotify/YouTube URL
list_episodesList a show's entire back-catalog from a podcast_id
get_transcriptFetch an episode's transcript as Markdown with real speaker names
get_balanceCheck remaining credits
list_followingThe shows this key is kept current on, inferred from fetches or declared
follow_podcastDeclare a follow for a show (or clear a mute)
unfollow_podcastMute a show so it leaves the list and fetches do not re-add it
list_new_episodesNew episodes on followed shows that have not been fetched yet, with transcript links

Keeping a knowledge base current is list_new_episodes on a schedule and get_transcript on what it lists: each fetch raises that show's floor.

Hosted

Nothing to install. Point a client that connects to a URL at https://spoken.md/mcp (Streamable HTTP):

sh
claude mcp add --transport http spoken https://spoken.md/mcp

The client asks you to sign in the first time a tool needs your key. To skip that, send the key as a header yourself: Authorization: Bearer pt_your_key.

A client that can only sign in with OAuth, such as ChatGPT in developer mode, is sent to a page where you paste your key once. Steps for each app: spoken.md/mcp-server. With no key at all, searching, listing a show and the demo episode work.

Local

Add it to your MCP client config (e.g. Claude Desktop's claude_desktop_config.json):

json
{  "mcpServers": {    "spoken": {      "command": "npx",      "args": ["-y", "spoken-mcp"],      "env": { "SPOKEN_API_KEY": "pt_your_key" }    }  }}

SPOKEN_API_KEY defaults to pt_demo (search works fully; transcripts limited to the demo episode). Get a real key at spoken.md.

Run from source instead:

sh
npm install && npm run buildSPOKEN_API_KEY=pt_your_key node dist/index.js

Use with AI agents

Spoken is designed to be called by agents. Point your agent at the Agent Skill (also served at https://spoken.md/.well-known/skills/spoken-md/SKILL.md), or hand it agents.md. The OpenAPI spec makes it easy to wrap as a tool for any function-calling or MCP-compatible client (Claude, GPT, Cursor).

Pricing

Pay-per-use credits, no subscription. New keys: 100 for $15, 500 for $50, 2,000 for $160. Machine-readable at spoken.md/pricing.md.

Links


Spoken is built and maintained at spoken.md.

來源:README.md,提交 079853d

工具

8

search_podcasts

Search podcasts

Search published podcast episodes by text query, or paste an episode URL (Spotify, YouTube, etc.). Returns matching episodes with their id, title, podcast, podcast_id, and date. Use the id with get_transcript, or the podcast_id with list_episodes to get the show's whole back-catalog. Does not consume credits.

輸入參數query必填

get_transcript

Get transcript

Fetch a podcast episode's transcript as clean Markdown with real speaker names and timestamps. Pass an episode id from search_podcasts. Costs 1 credit on the first fetch of an episode; repeat fetches are free and errors are never charged.

輸入參數episode_id必填

list_episodes

List a show's episodes

List a podcast's entire back-catalog (every episode, newest first). Pass a podcast_id from a search_podcasts result. Returns each episode's id, title, and date — fetch any with get_transcript. Use this to transcribe a whole show. Does not consume credits itself; transcribing the returned episodes costs 1 credit each (repeat fetches are free), so make sure the key has enough credits before looping.

輸入參數podcast_id必填

get_balance

Get credit balance

Check the current Spoken credit balance, account email, and recent usage for the configured API key. Does not consume credits.

無需輸入參數。

list_following

List followed shows

The shows this key is kept current on. Every charged fetch makes its show a follow: the five most-fetched shows from the last 180 days are followed automatically (source 'fetch'), and up to 25 more can be declared with follow_podcast (source 'explicit'). Muted shows are listed separately. Use list_new_episodes to see what is new on them. Does not consume credits; the demo key has nothing to follow with.

無需輸入參數。

follow_podcast

Follow a show

Declare a follow for a show, or clear a mute. Pass a podcast_id from search_podcasts. A declared follow stays until unfollow_podcast, regardless of fetch activity, and does not use one of the five automatic slots. For a show never fetched, what counts as new starts from its newest episode now. Does not consume credits.

輸入參數podcast_id必填

unfollow_podcast

Stop following a show

Mute a show: it leaves the followed list and later fetches do not re-add it. follow_podcast reverses it. Pass a podcast_id from list_following. Does not consume credits.

輸入參數podcast_id必填

list_new_episodes

List new episodes on followed shows

What is new on the shows this key follows: for each show, the episodes released in the last 90 days that are newer than the newest one already fetched from it (up to 10 per show), each with a transcript_url. Episodes with no transcript are left out. Fetch any with get_transcript (1 credit each on first fetch); a fetch raises that show's floor, so the next call lists only what came after. Refreshed hourly, so a show followed moments ago may be empty until its first poll. Does not consume credits.

無需輸入參數。

版本歷史

5
  1. v0.4.3最新Oct 6, 2026
  2. v0.4.1Oct 4, 2026
  3. v0.4.0Oct 4, 2026
  4. v0.3.0Sep 24, 2026
  5. v0.2.2Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分