# PodVoice — 完全仕様書(AI 向け詳細版) このドキュメントは AI エージェントが PodVoice を完全に理解・操作するための詳細仕様です。 人間向けドキュメント: https://www.podvoice.jp/docs 概要版: https://www.podvoice.jp/llms.txt --- ## 基本情報 - サービス名: PodVoice - URL: https://www.podvoice.jp - API ベース URL: https://www.podvoice.jp - 認証: Bearer トークン(`pv_` で始まる文字列) - コンテンツタイプ: application/json - レスポンス言語: 日本語 - 文字コード: UTF-8 --- ## MCP Server npx で即起動可能な stdio MCP Server。 ```json { "mcpServers": { "podvoice": { "command": "npx", "args": ["-y", "podvoice-mcp"], "env": { "PODVOICE_API_KEY": "pv_xxxx" } } } } ``` 代替(node 直接実行): ```json { "command": "node", "args": ["/path/to/mcp-server/proxy/index.js"], "env": { "PODVOICE_API_KEY": "pv_xxxx" } } ``` --- ## MCP ツール詳細仕様 ### get_status プラン・API残り回数・ストレージ使用量を返す。 パラメータ: なし レスポンス: `{ plan, api_calls_used, api_calls_limit, api_calls_remaining, storage_used_mb, recordings_count }` ### get_recordings 録音一覧を取得。 パラメータ: `limit: number(1-100, default=20)` レスポンス: `Array<{ id, filename, format, duration_sec, file_size, created_at, voice_type, url }>` ### recordings_latest 最新録音1件を取得。 パラメータ: なし レスポンス: `{ id, filename, format, duration_sec, url, created_at }` ### search_recordings 録音をファイル名・日付で検索。 パラメータ: `query: string(ファイル名の部分一致), after: string(YYYY-MM-DD)` レスポンス: `Array` ### get_recording_info 録音の詳細情報を取得。試聴 URL が含まれる。 パラメータ: `recording_id: string` レスポンス: `{ id, filename, format, duration_sec, url, created_at, voice_type }` ### export_audio 署名付きダウンロード URL(1時間有効)を取得。 パラメータ: `recording_id: string` レスポンス: `{ url, expires_at }` ### rename_recording ファイル名を変更。 パラメータ: `recording_id: string, new_name: string` レスポンス: `{ id, filename, updated_at }` ### duplicate_recording 録音をコピーして新しいレコードを作成。R2 ストレージは共有(コピーしない)。 破壊的編集前のバックアップに使う。 パラメータ: `recording_id: string, new_name?: string(省略時は "元の名前_コピー")` レスポンス: `{ recording_id, filename, duration_sec, original_recording_id }` ### delete_recording 録音を削除。取り消し不可。 パラメータ: `recording_id: string, confirm: boolean(true のみ実行)` レスポンス: `{ ok: true }` ### trim_audio 録音の指定区間を切り出す。 パラメータ: `recording_id: string, start_sec: number, end_sec: number` レスポンス: `{ recording_id, url, duration_sec }` ### reduce_noise ノイズ(環境音・ハム音)を除去。 パラメータ: `recording_id: string` レスポンス: `{ recording_id, url, duration_sec }` 注意: 処理に30〜120秒かかる場合がある。 ### remove_fillers フィラー語(えー・あのー・んー等)を自動検出して除去。要 AmiVoice API 設定。 パラメータ: `recording_id: string` レスポンス: `{ recording_id, url, duration_sec, removed_count }` ### change_voice ボイスチェンジを適用。 パラメータ: `recording_id: string, voice_type: string` 利用可能な voice_type: Free: pitch_up, pitch_down, child, robot, narrator Pro: female, male, anime_girl, anime_boy, elder, whisper, echo, dark, bright, telephone, monster, alien, choir, helium, deep_bass レスポンス: `{ recording_id, url, duration_sec, voice_type }` ### adjust_volume 音量をゲイン(dB)で調整。全体または区間単位。 パラメータ: `recording_id: string` `gain_db: number(全体ゲイン。0=変化なし、+6≈2倍、-6≈半分)` `segments?: Array<{ start_sec, end_sec, gain_db }>` レスポンス: `{ recording_id, url, duration_sec, gain_db, segments_applied }` ### normalize_audio 音量を指定 LUFS に正規化。ポッドキャスト配信前の必須処理。 パラメータ: `recording_id: string, target_lufs: number(default=-14)` 一般的な基準: Spotify=-14LUFS, Apple Podcasts=-16LUFS, YouTube=-14LUFS レスポンス: `{ recording_id, url, duration_sec, original_lufs_approx, target_lufs, gain_db_applied }` ### remove_silence 無音区間を自動検出して除去。デッドエア・間の詰めに使う。 パラメータ: `recording_id: string` `min_silence_sec: number(この秒数以上の無音を除去、default=1.0)` `threshold_db: number(無音と判断する dB 閾値、default=-40)` レスポンス: `{ recording_id, url, duration_sec, removed_count, removed_sec, silence_intervals }` silence_intervals: `Array<{ start_sec, end_sec }>` ### transcribe_recording 音声を文字起こし。 パラメータ: `recording_id: string` レスポンス: `{ text, segments?: Array<{ start, end, text }>, language }` ### search_bgm Jamendo CC(クリエイティブコモンズ)楽曲を検索。商用利用可能。 パラメータ: `query: string(キーワード、例: "calm piano", "upbeat electronic")` `style?: "relaxing"|"upbeat"|"news"|"podcast"|"stylish"` `limit: number(default=5, max=20)` レスポンス: `{ tracks: Array<{ id, name, artist, duration_sec, url, license, tags }>, query, total }` url フィールドを bgm_url として add_bgm に渡せる。 ### add_bgm BGM を追加してミックス。project_name を指定するとマルチトラックプロジェクトも同時作成。 パラメータ: `recording_id: string` `position: "intro"|"outro"|"both"(default="intro")` `style: "relaxing"|"upbeat"|"news"|"podcast"|"stylish"(default="relaxing")` `bgm_url?: string(カスタム BGM URL、search_bgm の url フィールドを使用)` `bgm_duration?: number(BGM セグメント長の秒数、default=12)` `bgm_volume?: number(BGM 音量比、1.0=本編と同じ音量、default=0.18)` `project_name?: string(指定時: マルチトラックプロジェクトを自動作成)` レスポンス: `{ recording_id, url, duration_sec, position, style, voice_duration_sec, bgm_url, bgm_duration_sec, bgm_volume, bgm_fade_sec, project_regions, project_id?, project_name? }` project_regions: タイムライン構成(voice トラック + BGM トラック)の AudioRegion 配列 ### concatenate_recordings 複数の録音を順番に結合。WebM 形式は非対応(WAV のみ)。 パラメータ: `recording_ids: string[](結合順), gap_seconds: number(録音間の無音、default=1.0)` レスポンス: `{ recording_id, url, duration_sec, track_count, filenames }` ### pipeline 複数の処理をまとめて順番に実行。 パラメータ: `recording_id: string` `steps: string[](例: ["noise", "filler", "bgm:both:podcast", "export"])` 使用可能なステップ: noise, filler, voice:, trim::, bgm::