Audivo について
Audivo は Audivo API を利用するポッドキャスト文字起こし用 MCP サーバーで、番組検索やページ単位の文字起こし取得に使えます。ホスト型とローカル型があり、ローカル型では音声ファイルや YouTube のリンクも扱えます。
主な機能
- 01ポッドキャストを文字起こししページ単位で返す
- 02番組検索、チャート表示、エピソード一覧
- 03一括文字起こしの料金見積もりと確定
- 04ジョブ状況と最近の文字起こしの確認
- 05ローカル型での音声アップロードと YouTube 検索
- 06MCP Apps によるタイムスタンプ付き表示
活用シーン
- 01番組の文字起こしを取得してページごとに読む
- 02番組を検索し最新エピソードを確認
- 03複数エピソードの文字起こし前に費用を見積もる
- 04ローカル録音や YouTube 音声を文字起こしする
MCP 対応
ホスト型は Streamable HTTP、ローカル型は stdio で MCP を提供し、どちらも文字起こしなどのツールを利用できます。ローカル型はファイルや YouTube の入力にも対応し、MCP Apps 対応クライアントには文字起こし画面を表示します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.audivo.dev/mcpclaude mcp add --transport http audivodotdev https://api.audivo.dev/mcp{"mcpServers":{"audivodotdev":{"type":"http","url":"https://api.audivo.dev/mcp"}}}Cursor で開く{"servers":{"audivodotdev":{"type":"http","url":"https://api.audivo.dev/mcp"}}}VS Code で開く{"mcpServers":{"audivodotdev":{"type":"http","url":"https://api.audivo.dev/mcp"}}}{"mcpServers":{"audivodotdev":{"serverUrl":"https://api.audivo.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Audivo MCP サーバー
Audivo APIを利用して、Claude、ChatGPT、Codex、Cursor、その他あらゆるMCPクライアントでポッドキャストの文字起こしを利用できます。 エピソードを指定すれば、文字起こしが返ってきます。
Acquiredの最新エピソードを文字起こしして、要約してください。
接続方法は2つあります。ホスト型エンドポイントでは11個のツールを提供します。ローカルサーバーでも同じ11個のツールを提供し、transcribeはお使いのマシン上のファイルやYouTubeリンクにも対応します。さらに、upload_audioとyoutube_searchも利用できます。どちらも、MCP Appsを表示するクライアント向けにアプリを提供します。
| ホスト型 | ローカル | |
|---|---|---|
| 実行場所 | Audivoのサーバー | クライアントによって起動される、お使いのマシン |
| トランスポート | https://api.audivo.dev/mcpでのStreamable HTTP | npx -y @audivo/mcp@latestによるstdio |
| 認証情報 | OAuthでサインインするか、Authorization: Bearer hk_live_…を指定 | AUDIVO_API_KEY環境変数 |
| おすすめの用途 | Web版およびデスクトップ版Claude、ChatGPT、URLを受け付けるあらゆるサービス | Claude Code、Codex、Cursor、VS Code、プロセスを起動するすべてのクライアント |
| YouTube | いいえ | はい。yt-dlpを使ってお使いのマシンにダウンロードします |
ツール
| ツール | 機能 | クレジットを消費するか |
|---|---|---|
transcribe | 標準のツールです。 エピソードを入力すると、ページごとに文字起こしを返します | はい。音声1分あたり約1クレジットです |
search_shows | 番組を名前、ホスト、またはトピックで検索します | いいえ |
chart_shows | カテゴリーの最新チャートを表示します | いいえ |
list_episodes | 番組のエピソードを新しい順に表示します | いいえ |
quote | 実行前に複数のエピソードの料金を見積もります | いいえ |
confirm | 見積もりをジョブグループに変換します | はい。見積もりの上限まで消費します |
group_status | グループ内のジョブの状況と、文字起こしが準備できたジョブを確認します | いいえ |
list_groups | 最近のグループを表示します | いいえ |
cancel_group | 未開始のジョブを停止して、そのクレジットを返却します | いいえ |
read_transcript | ジョブの文字起こしをページごとに取得します。実行中のジョブは完了を待ちます | いいえ |
list_transcripts | タイトル付きで最近の文字起こしを表示します | いいえ |
upload_audio | このマシン上のファイルを登録してアップロードします | いいえ(ローカルのみ) |
youtube_search | ポッドキャストのフィードがない場合に、YouTubeでエピソードを検索します | いいえ(ローカルのみ) |
transcribe
1 件のエピソードを渡します。Apple Podcasts のリンク、guid を含む feed_url、list_episodes から取得した episode_id(その番組の feed_url と itunes_id も指定するため、まだ誰も文字起こししていないエピソードも見つけられます)、または upload_id を指定します。ローカルサーバーでは、YouTube のリンクまたは絶対パスの path も指定できます。
- すでに文字起こし済みのエピソードは、すぐに返されます。
- 新しいエピソードはジョブになります。
transcribeは呼び出し中にジョブの完了を待ちます。ホスト型サーバーでは最大 20 秒(ゲートウェイの制限は 29 秒)、ローカルサーバーではデフォルトで 50 秒待ちます。ローカルサーバーは、進捗を要求したクライアントに進捗を通知します。ジョブがまだ実行中の場合は、回答にjob_idが含まれ、read_transcriptが残りの時間を待ちます。 - 文字起こし結果は 1 ページずつ返され、各ページは約 40,000 文字(音声にして約 50 分)です。各ページには、次のページを取得するための正確な呼び出し方法が記載されています。
max_creditsを指定すると、それ以上の費用がかかる可能性がある場合、クレジットを消費する前に呼び出しを拒否します。ジョブは上限(見積もりに 25% を加えた額)を確保し、計測した音声の長さに応じた金額で精算されます。上限を超えることはありません。- 同じ呼び出しを 2 回行うと、2 回目も同じジョブが返され、二重に課金されることはありません。冪等性キーはリクエストから生成されます。
複数のエピソードをまとめて処理する場合(チャート、バックカタログなど)は、quote を使ってから confirm を使います。モデルが見積もりの合計額を言い直さない限り、confirm は処理を拒否します。
アプリ
MCP Apps を表示できるクライアント(ChatGPT、Claude など)では、結果がテキストだけでなく、Audivo 専用のビューに表示されます。
transcribeは文字起こしリーダーを開きます。番組とエピソード、長さ、言語、費用が表示され、その後にタイムスタンプ付きの文字起こし、検索ボックス、必要に応じて追加ページを読み込む機能が表示されます。ジョブがまだ実行中の場合は進捗が表示され、完了すると結果が反映されます。list_transcriptsはライブラリを開きます。最近の文字起こし結果をリーダーで開けるほか、番組を検索してエピソードを一覧表示し、見積もり費用を確認してから文字起こしを行えます。ChatGPT では、ライブラリがサイドバーと会話の横のタブにも表示されます。
アプリは ui://audivo/app-v1.html として提供される、自己完結型の単一ページです。どのドメインからも読み込まないため、ドメインを宣言していません。データは各結果の _meta 内で送られ、ホストがアプリに渡しますが、モデルには渡しません。モデルにはこれまでと同じフェンス付きテキストが引き続き返されます。タイトルと文字起こしの各行はすべてテキストとして描画され、マークアップとして扱われることはありません。MCP Apps に対応していないクライアントは、これらすべてを無視します。
ソースは ui/ にあります。npm run build:ui で src/app-html.ts にバンドルされ、両者に食い違いがあるとテストが失敗します。
ローカルでの実行:npx を使う
Audivo ダッシュボードから API キーを取得してください。キーは一度しか表示されません。クライアントがサーバーを起動する環境にキーを設定してから、サーバーを追加します。
Claude Code(または、サーバーとスキルをまとめて追加する Audivo プラグインをインストールしてください)
claude mcp add --scope user audivo -e AUDIVO_API_KEY=hk_live_... -- npx -y @audivo/mcp@latest
Codex
codex mcp add audivo --env AUDIVO_API_KEY=hk_live_... -- npx -y @audivo/mcp@latest
Cursor、Claude Desktop、Windsurf、その他の JSON 設定クライアント
{
"mcpServers": {
"audivo": {
"command": "npx",
"args": ["-y", "@audivo/mcp@latest"],
"env": { "AUDIVO_API_KEY": "hk_live_..." }
}
}
}
VS Code(.vscode/mcp.json)
{
"servers": {
"audivo": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@audivo/mcp@latest"],
"env": { "AUDIVO_API_KEY": "hk_live_..." }
}
}
}
実際のキーを含むファイルは、Git や共有チャットに含めないでください。
更新
@latest を指定すると、クライアントがサーバーを起動するたびに npx が npm でパッケージを検索するため、次のセッションから新しいリリースが使われます。現在のセッションに反映するには、サーバーを再起動してください。Claude Code では /mcp を実行し、audivo を選んでから Reconnect を選択します。@latest を付けない指定も使えますが、@audivo/mcp だけを指定した場合、カレントプロジェクト内にコピーがあれば、そちらが優先されます。ホスト型サーバー https://api.audivo.dev/mcp は Audivo によって最新の状態に保たれています。
環境
| 変数 | 必須 | 説明 |
|---|---|---|
AUDIVO_API_KEY | はい | API キーです。先頭に Bearer が付いていても受け付けられ、正規化されます。 |
AUDIVO_API_BASE_URL | いいえ | API のオリジンです。デフォルトは https://api.audivo.dev です。公開された https オリジンである必要があります。ユーザー情報、ループバックアドレス、プライベートアドレスは使用できません。 |
AUDIVO_YTDLP_PATH | いいえ | YouTube に使用する yt-dlp バイナリです。PATH 上のものや管理対象のコピーの代わりに使用します。 |
AUDIVO_CACHE_DIR | いいえ | 管理対象の yt-dlp の保存先です。デフォルトはユーザーのキャッシュディレクトリ(~/Library/Caches/audivo-mcp、~/.cache/audivo-mcp、…)です。 |
サーバーはプロトコルメッセージ以外を stdout に書き込みません。ログ行は JSON 形式で stderr に出力され、 キーがログに記録されることはありません。
YouTube(ローカルサーバーのみ)
番組に公開 RSS フィードがない場合(YouTube のみに存在する番組は多数あります)、search_shows では見つかりません。
ローカルサーバーでは、youtube_search でエピソードを見つけ、リンクを transcribe に渡します。
YouTube で Acquired の Costco のエピソードを見つけて文字起こししてください
transcribe は yt-dlp を使って動画の音声のみをお使いのマシンにダウンロードし、
トランスコードせずに Audivo へご自身のアップロードとして送信し、文字起こしします。文字起こし結果は
ご自身のアカウントでのみ公開されます。
yt-dlp は次の順序で検出されます。AUDIVO_YTDLP_PATH、PATH 上の yt-dlp、それ以外の場合は、お使いのプラットフォーム向けの
プロジェクト公式スタンドアロンバイナリを GitHub のリリースから一度だけユーザーのキャッシュディレクトリにダウンロードし、
実行可能にする前にそのリリースの SHA2-256SUMS と照合します。パッケージにはインストールスクリプトがないため、
最初の YouTube 呼び出しまで何もダウンロードされません。管理対象のコピーが動作しなくなった場合は、最新リリースに一度更新して
呼び出しを再試行します。ご自身でインストールした yt-dlp には一切手を加えません。yt-dlp には、このサーバーを実行している
Node が JavaScript ランタイムとして渡されます。
ダウンロードはご自身のアカウントを使ってご自身のマシン上で行われます。アップロードの場合と同様、ダウンロードしたものを 文字起こしする権利があることはご自身の責任でご確認ください。Audivo のサーバーが YouTube から取得することはありません。 そのため、ホスト型サーバーではこれらの機能を利用できません。
音声をアップロードする
ご自身で録音したもの、インタビュー、またはすでにディスク上にあるファイルを使用できます。
/Users/alex/Downloads/interview.m4a を文字起こししてください
path を指定した transcribe は、ファイルの情報(ハッシュ、サイズ、コンテンツタイプ、再生時間)を Audivo に通知し、
通知で返された署名付き URL を使ってバイトデータを Audivo のストレージに直接アップロードし、文字起こしします。
upload_audio は最初の 2 つの手順のみを実行して upload_id を返すため、複数のアップロードをまとめて引用したい場合に使用できます。
path は絶対パスでなければなりません。
制限:1 バイト以上 5 GiB 以下、最長 10 時間、コンテンツタイプは次のいずれかです。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。アップロードは 7 日間保持され、
文字起こし結果はご自身のアカウントでのみ公開されます。各アカウントで同時に保持できるのは、期限切れでないアップロード 100 件、
合計 10 GiB までです。アップロードガイドをご覧ください。
ホスト型:クライアントに URL を指定する
| 設定 | 値 |
|---|---|
| MCP URL | https://api.audivo.dev/mcp |
| トランスポート | Streamable HTTP |
| 認証 | OAuth(Audivo にサインイン)、または Authorization: Bearer hk_live_... |
MCP 認証に対応したクライアント — Claude、ChatGPT、Claude Code、VS Code — では URL を指定するだけで済みます。 Audivo のサインインページが開くので、接続を承認すると、ダッシュボードの Connected apps に表示されます。ここから接続を取り消せます。たとえば、Claude Code では次のようにします。
claude mcp add --transport http --scope user audivo https://api.audivo.dev/mcp
固定ヘッダーを使用するクライアントや、自動化の場合は、API キーを送信します。
claude mcp add --transport http --scope user audivo https://api.audivo.dev/mcp \
--header "Authorization: Bearer hk_live_..."
クライアントごとの手順は接続ガイドに記載されています。ホスト型
サーバーはこのパッケージの lambda エクスポートで、Audivo によってデプロイされます。
仕組み
- ステートレス。 すべてのツール呼び出しは、呼び出し元自身の認証情報を使って、公開 API に対して型付きの呼び出しを 1 回または数回行います。サーバーはテーブルもキャッシュも保持せず、処理中の呼び出しを超えて認証情報のコピーを保持することもありません。
- フェンスで保護。 番組名、エピソードや動画のタイトル、説明、文字起こしテキストは、パブリッシャーが作成したものです。それぞれが信頼できないコンテンツとしてマークされたフェンス内に、レスポンスごとのノンスとともにモデルに渡されるため、ポッドキャストがセッションに指示を紛れ込ませることはできません。
- 上限あり。
transcribeはジョブの上限と呼び出し元のmax_creditsの範囲内で処理します。confirmは、モデルが示した合計と見積もりに含まれる合計を比較し、一致しない場合は何も送信せず拒否します。API 側でも両方のチェックを適用します。 - コントラクトで型付け。
src/contract/types.tsは、公開された OpenAPI 仕様contract/openapi.yamlから生成されます。両者に差異があるとビルドが失敗するテストがあります。 - ローカルのみ。
upload_audio、youtube_search、およびtranscribeのファイル入力と YouTube 入力はお使いのマシン上で実行されます。ホスト型サーバーがファイルを参照したり、サードパーティーのサイトから取得したりすることはありません。
開発
npm ci
npm test # vitest
npm run typecheck
npm run lint
npm run build # dist/
仕様の変更を取り込むには、npm run contract:sync で公開された仕様を取得し、型を再生成します。キーを使ってローカルで実行するには、次のようにします。
AUDIVO_API_KEY=hk_live_... node dist/bin.js
MCP クライアントでのライブリロード
npm run dev:server は、小さなプロキシの背後で tsx を使って src/ を実行します。保存するたびにサーバーを再起動し、クライアントのハンドシェイクを新しいプロセスに再送して、tools/list_changed を送信します。接続済みのクライアントは、ビルドも再接続もせずに最新のコードを使えます。保存によって起動に失敗した場合、呼び出しにはエラーが返され、詳細はクライアントの MCP ログに記録されます。次に保存すると復旧します。保存時に実行中の呼び出しは新しいコードで再送されますが、音声をアップロードする呼び出し(ファイルまたは YouTube の transcribe、あるいは upload_audio)は除きます。二重に送信すると文字起こしと課金が 2 回行われる可能性があるため、先に古いコードで完了します。
このリポジトリでのみ Claude Code から使用し、ユーザー全体に設定された audivo サーバーより優先させるには、次のようにします。
claude mcp add audivo -s local -e AUDIVO_API_KEY=hk_live_... \
-- "$PWD/node_modules/.bin/tsx" "$PWD/scripts/dev-server.ts"
絶対パスの tsx により、クライアントはどのディレクトリからでも起動できます。このリポジトリ内では、npx -y @audivo/mcp は動作しません。npm はチェックアウトしたリポジトリをパッケージとみなし、リンクされた audivo-mcp の実行ファイルを見つけられないためです。これが、上記の設定で @latest を指定している理由の 1 つです。
リリース
package.json の version、server.json の 2 つのバージョンフィールド、src/server.ts の SERVER_INFO を更新します(これらが一致するまでテストは失敗します)。CHANGELOG.md にエントリーを追加してコミットし、v<version> タグを作成してプッシュします。リリースワークフローにより、来歴情報付きで npm に公開され、MCP Registry に io.github.AudivoDotDev/mcp としてリリースが登録されます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。