Audivo

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

Podcast transcripts: send an episode link and get the transcript back, a page at a time.

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

概覽

AI 產生的概覽

Audivo 把播客單集轉成逐字稿:助理可以搜尋節目、轉錄單集,並逐頁讀取逐字稿。

可以做什麼
  • 依名稱、主持人或主題搜尋節目,查看分類排行榜,依最新優先列出節目單集
  • 從連結、feed 與 guid、單集 id、上傳檔案或 YouTube 連結轉錄單集,並分頁回傳逐字稿
  • 為一批單集報價、確認報價,再追蹤任務群組進度並取消尚未開始的任務
  • 讀取並列出最近的逐字稿;本機版還可上傳音訊檔案、搜尋 YouTube
適用情境
適合讓助理取得播客單集文字以進行摘要、引用或檢索,或先估算費用再批次轉錄某個排行榜或歷史節目。
執行需求
可使用 api.audivo.dev 的託管端點(Streamable HTTP,OAuth 登入或 Bearer API 金鑰),或以 npx 執行本機 npm 套件,需要 Node.js 與 AUDIVO_API_KEY 環境變數。本機版的 YouTube 與檔案輸入需要 yt-dlp,缺少時首次呼叫會下載。需要具備額度的 Audivo 帳號。
安裝前請注意
轉錄會消耗 Audivo 額度,約每分鐘音訊一點;quote 與 confirm 用來限制批次費用,max_credits 會拒絕可能超額的呼叫。API 金鑰只顯示一次,須避免進入 Git 或共用對話。本機檔案與 YouTube 輸入會把音訊上傳到 Audivo 儲存空間,下載內容的轉錄授權由你自行負責。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Audivo,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

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

交給代理程式安裝

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

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

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

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "audivo": {
      "type": "http",
      "url": "https://api.audivo.dev/mcp"
    }
  }
}

README

Audivo MCP server

[npm] [CI]

Podcast transcripts for Claude, ChatGPT, Codex, Cursor, and any other MCP client, backed by the Audivo API. Ask for an episode; get the transcript back.

Transcribe the latest episode of Acquired and summarise it.

Two ways to connect. The hosted endpoint serves eleven tools. The local server serves the same eleven, with transcribe also taking a file on your machine or a YouTube link, plus upload_audio and youtube_search. Both serve an app to clients that render MCP Apps.

HostedLocal
Where it runsAudivo's serversYour machine, spawned by the client
TransportStreamable HTTP at https://api.audivo.dev/mcpstdio via npx -y @audivo/mcp@latest
CredentialSign in with OAuth, or Authorization: Bearer hk_live_…AUDIVO_API_KEY environment variable
Good forClaude on the web and desktop, ChatGPT, anything that takes a URLClaude Code, Codex, Cursor, VS Code, and every client that spawns a process
YouTubeNoYes, downloaded on your machine with yt-dlp

Tools

ToolWhat it doesSpends credits
transcribeThe default. One episode in, its transcript out, a page at a timeYes, about one per audio minute
search_showsFind shows by name, host, or topicNo
chart_showsThe current chart for a categoryNo
list_episodesA show's episodes, newest firstNo
quotePrice a selection of many episodes before anything runsNo
confirmTurn a quote into a job groupYes, up to the quote's ceiling
group_statusWhere a group's jobs are, and which transcripts are readyNo
list_groupsYour recent groupsNo
cancel_groupStop what has not started and release its creditsNo
read_transcriptA job's transcript, a page at a time; waits for a running jobNo
list_transcriptsYour recent transcripts, with their titlesNo
upload_audioAnnounce and upload a file from this machineNo (local only)
youtube_searchFind an episode on YouTube when it has no podcast feedNo (local only)

transcribe

Pass one episode: an Apple Podcasts link, feed_url with guid, an episode_id from list_episodes (with that show's feed_url and itunes_id, so an episode nobody has transcribed yet can be found), or an upload_id — and on the local server, a YouTube link or an absolute path.

  • An episode that is already transcribed comes back at once.
  • A fresh one becomes a job. transcribe waits for it inside the call: up to 20 seconds on the hosted server, whose gateway allows 29, and 50 by default on the local one, which reports progress to clients that ask for it. If it is still running, the answer is the job_id and read_transcript waits the rest.
  • The transcript comes a page at a time, about 40,000 characters each (roughly 50 minutes of speech). Each page names the exact call for the next one.
  • max_credits refuses the call, before anything is spent, if it could cost more. A job holds its ceiling (the estimate plus 25%) and settles at the audio it measured, never above.
  • The same call twice returns the same job, never a second charge: the idempotency key is derived from the request.

For many episodes at once — a chart, a back catalogue — use quote and then confirm, which refuses unless the model restates the quote's total.

The app

Clients that render MCP Apps — ChatGPT, Claude, and others — show results in Audivo's own view instead of only text:

  • transcribe opens a transcript reader: the show and episode, its length, language and cost, then the transcript with timestamps, a search box, and more pages on demand. A job still running shows its progress and fills in when it finishes.
  • list_transcripts opens your library: recent transcripts to open in the reader, and a search that finds a show, lists its episodes, and transcribes one after you confirm its estimated cost. ChatGPT also puts the library in its sidebar and as a tab beside a conversation.

The app is one self-contained page served as ui://audivo/app-v1.html. It loads nothing from any domain, so it declares none. Its data travels in each result's _meta, which hosts give the app and never the model; the model keeps getting the same fenced text as before. Every title and transcript line is rendered as text, never as markup. Clients without MCP Apps ignore all of this.

Its source is in ui/; npm run build:ui bundles it into src/app-html.ts, and a test fails when the two disagree.

Local: run it with npx

You need an API key from the Audivo dashboard. Keys are shown once. Set the key in the environment the client starts the server with, then add the server.

Claude Code (or install the Audivo plugin, which adds this server and the skill together)

bash
claude mcp add --scope user audivo -e AUDIVO_API_KEY=hk_live_... -- npx -y @audivo/mcp@latest

Codex

bash
codex mcp add audivo --env AUDIVO_API_KEY=hk_live_... -- npx -y @audivo/mcp@latest

Cursor, Claude Desktop, Windsurf, and other JSON-configured clients

json
{  "mcpServers": {    "audivo": {      "command": "npx",      "args": ["-y", "@audivo/mcp@latest"],      "env": { "AUDIVO_API_KEY": "hk_live_..." }    }  }}

VS Code (.vscode/mcp.json)

json
{  "servers": {    "audivo": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@audivo/mcp@latest"],      "env": { "AUDIVO_API_KEY": "hk_live_..." }    }  }}

Keep files that contain a real key out of Git and shared chats.

Updating

@latest makes npx look the package up on npm each time the client starts the server, so a new release arrives with your next session. To get it in the session you are in, restart the server: in Claude Code, /mcp, choose audivo, then Reconnect. A spec without @latest works too, but a bare @audivo/mcp resolves to a copy in the current project first, when there is one. The hosted server at https://api.audivo.dev/mcp is kept current by Audivo.

Environment

VariableRequiredMeaning
AUDIVO_API_KEYYesYour API key. Bearer in front of it is accepted and normalised.
AUDIVO_API_BASE_URLNoThe API origin. Defaults to https://api.audivo.dev. Must be a public https origin: no userinfo, no loopback or private address.
AUDIVO_YTDLP_PATHNoA yt-dlp binary to use for YouTube, instead of one on PATH or the managed copy.
AUDIVO_CACHE_DIRNoWhere the managed yt-dlp is kept. Defaults to your user cache directory (~/Library/Caches/audivo-mcp, ~/.cache/audivo-mcp, …).

The server writes nothing to stdout except protocol messages. Log lines go to stderr as JSON, and the key never appears in them.

YouTube (local server only)

When a show has no public RSS feed — many exist only on YouTube — search_shows finds nothing. On the local server, youtube_search finds the episode and transcribe takes its link:

Find the Costco episode of Acquired on YouTube and transcribe it

transcribe downloads the video's audio on your machine with yt-dlp, audio only and with no transcoding, uploads it to Audivo as your own upload, and transcribes it. The transcript is private to your account.

yt-dlp is found in this order: AUDIVO_YTDLP_PATH; a yt-dlp on your PATH; otherwise the project's official standalone binary for your platform, downloaded once from its GitHub releases into your user cache directory and checked against that release's SHA2-256SUMS before it is made executable. The package has no install script: nothing is downloaded until the first YouTube call. A managed copy that stops working is updated to the latest release once and the call retried; a yt-dlp you installed yourself is never touched. yt-dlp is given the Node running this server as its JavaScript runtime.

You run the download, on your machine, under your own account; you are responsible for having the rights to transcribe what you download, as with any upload. Audivo's servers never fetch from YouTube, which is why the hosted server does not offer any of this.

Upload your own audio

A recording you made, an interview, or any file you already have on disk:

Transcribe /Users/alex/Downloads/interview.m4a

transcribe with path announces the file to Audivo (its hash, size, content type, and duration), uploads the bytes straight to Audivo's storage with the signed URL the announcement returns, and transcribes it. upload_audio does only the first two steps and returns an upload_id, for when you want to quote several uploads together. The path must be absolute.

Limits: 1 byte to 5 GiB, up to 10 hours, and one of these content types: audio/mpeg, audio/mp3, audio/mp4, audio/m4a, audio/x-m4a, audio/aac, audio/x-aac, audio/ogg, audio/opus, audio/flac, audio/x-flac, audio/wav, audio/x-wav, audio/webm. An upload is kept for 7 days, and its transcript is private to your account; each account may hold up to 10 GiB across 100 unexpired uploads at a time. See the uploads guide.

Hosted: point a client at the URL

SettingValue
MCP URLhttps://api.audivo.dev/mcp
TransportStreamable HTTP
AuthenticationOAuth (sign in to Audivo), or Authorization: Bearer hk_live_...

Clients that support MCP authorization — Claude, ChatGPT, Claude Code, VS Code — need only the URL: they open an Audivo sign-in page, you approve the connection, and it appears under Connected apps in the dashboard, where you can revoke it. For example, in Claude Code:

bash
claude mcp add --transport http --scope user audivo https://api.audivo.dev/mcp

For clients that take a fixed header instead, or for automation, send an API key:

bash
claude mcp add --transport http --scope user audivo https://api.audivo.dev/mcp \  --header "Authorization: Bearer hk_live_..."

Per-client instructions are in the connection guide. The hosted server is this package's lambda export, deployed by Audivo.

How it works

  • Stateless. Every tool call is one or a few typed calls on the public API with the caller's own credential. The server keeps no table, no cache, and no copy of a credential beyond the call in flight.
  • Fenced. Show names, episode and video titles, descriptions, and transcript text are publisher-authored. Each reaches the model inside a fence marked as untrusted content, with a per-response nonce, so a podcast cannot smuggle instructions into a session.
  • Bounded. transcribe spends within the job's ceiling and the caller's max_credits; confirm compares the total the model states with the total the quote carried and refuses on a mismatch without sending anything. The API applies both checks on its side too.
  • Typed by the contract. src/contract/types.ts is generated from the published OpenAPI spec in contract/openapi.yaml; a test fails the build when the two drift.
  • Local only. upload_audio, youtube_search, and the file and YouTube inputs of transcribe run on your machine; the hosted server never sees your files and never fetches from third-party sites.

Development

bash
npm cinpm test            # vitestnpm run typechecknpm run lintnpm run build       # dist/

To pick up a spec change: npm run contract:sync fetches the published spec and regenerates the types. Run it locally against a key with:

bash
AUDIVO_API_KEY=hk_live_... node dist/bin.js

Live reload in your MCP client

npm run dev:server runs src/ through tsx behind a small proxy that restarts the server on every save, replays the client's handshake into the new process, and sends tools/list_changed. A connected client uses your latest code with no build and no reconnect. A save that breaks startup answers calls with an error, the details go to the client's MCP log, and the next save recovers. A call still running when you save is sent again to the new code, except one that uploads audio (a file or YouTube transcribe, or upload_audio): sent twice, that could be transcribed and charged twice, so it finishes on the old code first.

To use it in Claude Code for this repository only, taking precedence over a user-wide audivo server:

bash
claude mcp add audivo -s local -e AUDIVO_API_KEY=hk_live_... \  -- "$PWD/node_modules/.bin/tsx" "$PWD/scripts/dev-server.ts"

The absolute tsx path lets the client start it from any directory. A bare npx -y @audivo/mcp does not work inside this repository — npm takes the checkout to be the package and finds no linked audivo-mcp bin — which is one reason the configs above say @latest.

Releasing

Bump version in package.json, both version fields in server.json, and SERVER_INFO in src/server.ts (a test fails until they agree), add a CHANGELOG.md entry, commit, then tag v<version> and push the tag. The release workflow publishes to npm with provenance and lists the release in the MCP Registry as io.github.AudivoDotDev/mcp.

License

MIT

來源:README.md,提交 a65a30a

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

2
  1. v0.4.2最新Oct 2, 2026
  2. v0.3.0Sep 30, 2026

評分

已滿足適用檢查項的 85%

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

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分