ListenHub MCP

利用可能なツール

ListenHub MCP の 8 つのツール、それぞれの入力制約、返されるレスポンス構造。

ListenHub MCP server は 8 つのツールを公開します。各ツールは OpenAPI エンドポイントをラップしており、成功時にはラップを外した data ペイロードを返します。基盤となるレスポンスは標準のエンベロープ { "code": 0, "message": "", "data": { ... } } に従い、code が 0 以外の場合はエラーを示します。

ポッドキャストは 1 〜 2 人の話者に対応します。debate モードは 2 人のホスト形式で、2 つの speaker ID が必要です。FlowSpeech は単一話者(1 人)です。言語は zh または en です。

話者の検索

get_speakers

ポッドキャストと FlowSpeech の生成に使える話者を返します。ボイス ID、名前、言語、性別、デモ音声リンク、ボイスプロファイルが含まれます。

入力

  • language: 言語コードによる絞り込み、zh または en(string、任意)

レスポンス

items 配列を返します。各項目は speakerId を持ちます(この値を他のツールの speakerIds / speakerId に使用します)。

{
  "items": [
    {
      "name": "Aria",
      "speakerId": "sp_aria_en",
      "demoAudioUrl": "https://storage.googleapis.com/.../aria-demo.mp3",
      "gender": "female",
      "language": "en",
      "profile": {
        "pitch": ["medium", "medium-high"],
        "speed": ["medium-fast"],
        "traits": ["clear", "bright", "warm"],
        "styles": ["friendly", "narrative"],
        "scenes": ["podcast", "audiobook"],
        "accent": "American English",
        "description": "Warm, conversational host voice.",
        "descriptionLocalized": { "zh": "温暖、口语化的主持人声音。" }
      }
    }
  ]
}

ポッドキャスト生成

create_podcast

完全なポッドキャスト(テキスト + 音声)を作成します。完了まで自動でポーリングするため、数分かかることがあります。

入力

  • query: トピックまたは内容のプロンプト(string、任意)
  • sources: テキスト / URL ソースの配列(array、任意)
  • speakerIds: 1 〜 2 個の speaker ID(array、必須)。debate モードでは 2 個指定します。
  • language: 言語コード zh または en(string、任意、デフォルト:en
  • mode: 生成モード quickdeepdebate(string、任意、デフォルト:quick

querysources のうち少なくとも一方を指定してください。

レスポンス

このツールは完了までポーリングするため、ポッドキャストの詳細をすべて返します(get_podcast_status と同じ構造)。完了時のペイロード例:

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "createdAt": 1716460000000,
  "processStatus": "success",
  "contentStatus": "audio-success",
  "completedTime": 1716460320000,
  "credits": 12,
  "title": "How LLMs Changed Search",
  "outline": "1. The shift from keywords...",
  "cover": "https://storage.googleapis.com/.../cover.png",
  "audioUrl": "https://storage.googleapis.com/.../episode.mp3",
  "audioStreamUrl": "https://storage.googleapis.com/.../episode-stream.mp3",
  "subtitlesUrl": "https://storage.googleapis.com/.../episode.srt",
  "scripts": [
    { "speakerId": "sp_aria_en", "speakerName": "Aria", "content": "Welcome back to the show." },
    { "speakerId": "sp_leo_en", "speakerName": "Leo", "content": "Today we're digging into search." }
  ]
}

get_podcast_status

ポーリングせずに、現在のポッドキャストの詳細を即座に返します。

入力

  • episodeId: ポッドキャストのエピソード ID(string、必須)

レスポンス

上記の完了時の create_podcast ペイロードと同じ構造です。生成中は processStatus が現在の状態を示し、コンテンツ関連のフィールド(audioUrlscripts など)は対応するフェーズが終わるまで存在しないことがあります。contentStatustext-successtext-failaudio-successaudio-fail のいずれかです。

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "createdAt": 1716460000000,
  "processStatus": "processing",
  "contentStatus": "text-success",
  "credits": 0,
  "title": "How LLMs Changed Search",
  "outline": "1. The shift from keywords...",
  "scripts": [
    { "speakerId": "sp_aria_en", "speakerName": "Aria", "content": "Welcome back to the show." }
  ]
}

create_podcast_text_only

テキストのみのポッドキャスト(台本、音声なし)を作成します。これは台本先行ワークフローの第 1 フェーズです。台本を生成し、確認・編集したうえで generate_podcast_audio を呼び出します。

入力

  • query: トピックまたは内容のプロンプト(string、任意)
  • sources: テキスト / URL ソースの配列(array、任意)
  • speakerIds: 1 〜 2 個の speaker ID(array、必須)。debate モードでは 2 個指定します。
  • language: 言語コード zh または en(string、必須)
  • mode: 生成モード quickdeepdebate(string、任意、デフォルト:quick
  • waitForCompletion: テキスト生成の完了まで待機する(boolean、任意、デフォルト:true

querysources のうち少なくとも一方を指定してください。

レスポンス

新しい episodeId とステータスメッセージを返します。waitForCompletiontrue の場合、ツールは台本の生成が終わるまで待ってから返します。台本の取得には get_podcast_status を使用してください。

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "message": "Text content generation started. Audio generation can be triggered later."
}

generate_podcast_audio

既存のテキストのみのポッドキャストに対して音声を生成します。これは台本先行ワークフローの第 2 フェーズです。

入力

  • episodeId: ポッドキャストのエピソード ID(string、必須)
  • customScripts: カスタム台本の配列(array、任意)。各要素は content(string)と speakerId(string)を持ちます。省略した場合は既存の台本が使われます。
  • waitForCompletion: 音声生成の完了まで待機する(boolean、任意、デフォルト:true

レスポンス

音声生成が開始されたことを示します。完成した audioUrlget_podcast_status をポーリングして取得します。

{
  "success": true,
  "message": "Audio generation started",
  "episodeId": "664e0c2b9f1a2b3c4d5e6f70",
  "status": "processing"
}

FlowSpeech 生成

create_flowspeech

テキストまたは URL から FlowSpeech(単一話者のナレーション)を作成します。smart モードは元の内容に AI による推敲を加え、direct モードは内容を一切変更せずそのまま読み上げます。

入力

  • sourceType: ソースの種類 text または url(string、必須)
  • sourceContent: ソースの内容 — 本文テキストまたは URL(string、必須)。text の場合、内容は 10 文字以上である必要があります。
  • speakerId: ナレーションの speaker ID(string、必須)。FlowSpeech は話者をちょうど 1 人使用します。
  • language: 言語コード zh または en(string、任意)
  • mode: 生成モード smart または direct(string、任意、デフォルト:smart

レスポンス

新しい episodeId を返します。生成は非同期で実行されるため、get_flowspeech_status でポーリングしてください。

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f71"
}

get_flowspeech_status

ポーリングせずに、現在の FlowSpeech の詳細を即座に返します。

入力

  • episodeId: FlowSpeech のエピソード ID(string、必須)

レスポンス

FlowSpeech では、scripts はポッドキャストのような話者ごとの配列ではなく、単一の文字列(ナレーション台本)です。コンテンツ関連のフィールドは、各フェーズが終わるたびに現れます。

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f71",
  "createdAt": 1716460000000,
  "processStatus": "success",
  "completedTime": 1716460120000,
  "title": "Quarterly Product Update",
  "outline": "1. Highlights...",
  "cover": "https://storage.googleapis.com/.../cover.png",
  "audioUrl": "https://storage.googleapis.com/.../flowspeech.mp3",
  "audioStreamUrl": "https://storage.googleapis.com/.../flowspeech-stream.mp3",
  "subtitlesUrl": "https://storage.googleapis.com/.../flowspeech.srt",
  "scripts": "Welcome to the quarterly update. This quarter we shipped..."
}

ユーザーのサブスクリプション照会

get_user_subscription

現在のユーザーのサブスクリプションとクレジット残高を返します。プランの詳細、月次 / 永久 / 期間限定クレジット、利用可能な合計クレジット、更新ステータス、サブスクリプションの日付が含まれます。生成前にこれを呼び出して、クレジットが足りているか確認してください。

入力

なし。

レスポンス

タイムスタンプは 13 桁のミリ秒です。totalAvailableCredits は、利用可能な月次・永久・期間限定クレジットの合計です。

{
  "subscriptionStartedAt": 1714000000000,
  "subscriptionExpiresAt": 1716592000000,
  "usageAvailableMonthlyCredits": 480,
  "usageTotalMonthlyCredits": 500,
  "usageAvailablePermanentCredits": 100,
  "usageTotalPermanentCredits": 100,
  "usageAvailableLimitedTimeCredits": 0,
  "totalAvailableCredits": 580,
  "resetAt": 1716592000000,
  "platform": "web",
  "renewStatus": true,
  "paidStatus": true,
  "subscriptionPlan": {
    "name": "Pro",
    "duration": "monthly",
    "platform": "web"
  }
}

クレジットの消費量はツールごとに固定ではありません。生成前にコストを見積もるには、OpenAPI リファレンス の該当する */estimate-credits エンドポイントを使用し、get_user_subscription で現在の残高を確認してください。


ListenHub MCP server をご利用いただきありがとうございます。

サポートのお問い合わせ先:support@marswave.ai

このページの内容