ListenHub MCP

可用工具

8 个 ListenHub MCP 工具的入参约束,以及每个工具返回的响应结构。

ListenHub MCP server 提供 8 个工具。每个工具封装一个 OpenAPI 接口,成功时返回解包后的 data 负载。底层响应遵循标准信封 { "code": 0, "message": "", "data": { ... } }code 非 0 表示出错。

播客支持 1 到 2 位音色。debate 模式是双主持人形式,需要 2 个音色 ID。FlowSpeech 为单人(1 位音色)。语言为 zhen

音色查询

get_speakers

返回可用于播客和 FlowSpeech 生成的音色列表,包括音色 ID、名称、语言、性别、试听音频链接和音色画像。

入参

  • language:按语言代码筛选,zhen(字符串,可选)

响应

返回 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:主题或内容提示(字符串,可选)
  • sources:文本/URL 来源数组(数组,可选)
  • speakerIds:1 到 2 个音色 ID(数组,必需)。debate 模式需提供 2 个 ID。
  • language:语言代码 zhen(字符串,可选,默认:en
  • mode:生成模式 quickdeepdebate(字符串,可选,默认: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(字符串,必需)

响应

结构与上面 create_podcast 的完成负载相同。生成进行中时,processStatus 反映当前状态,内容字段(audioUrlscripts 等)在对应阶段完成前可能缺失。contentStatus 取值为 text-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

创建仅含文本的播客(脚本,无音频)。这是先审后录流程的第一阶段:先生成脚本、审阅或修改,再调用 generate_podcast_audio

入参

  • query:主题或内容提示(字符串,可选)
  • sources:文本/URL 来源数组(数组,可选)
  • speakerIds:1 到 2 个音色 ID(数组,必需)。debate 模式需提供 2 个 ID。
  • language:语言代码 zhen(字符串,必需)
  • mode:生成模式 quickdeepdebate(字符串,可选,默认:quick
  • waitForCompletion:等待文本生成完成(布尔值,可选,默认:true

querysources 至少提供一项。

响应

返回新的 episodeId 和一条状态信息。waitForCompletiontrue 时,工具会等待脚本生成完成后再返回;通过 get_podcast_status 查询脚本。

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

generate_podcast_audio

为已有文本的播客生成音频。这是先审后录流程的第二阶段。

入参

  • episodeId:播客单集 ID(字符串,必需)
  • customScripts:自定义脚本数组(数组,可选)。每项含 content(字符串)与 speakerId(字符串)。不提供时使用已有脚本。
  • waitForCompletion:等待音频生成完成(布尔值,可选,默认:true

响应

确认音频生成已启动。通过 get_podcast_status 轮询获取最终的 audioUrl

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

FlowSpeech 生成

create_flowspeech

从文本或 URL 创建 FlowSpeech(单人旁白)。smart 模式对来源进行 AI 增强;direct 模式逐字朗读,不做任何修改。

入参

  • sourceType:来源类型 texturl(字符串,必需)
  • sourceContent:来源内容 —— 文本正文或 URL(字符串,必需)。text 类型时内容至少 10 个字符。
  • speakerId:旁白音色 ID(字符串,必需)。FlowSpeech 仅使用一位音色。
  • language:语言代码 zhen(字符串,可选)
  • mode:生成模式 smartdirect(字符串,可选,默认:smart

响应

返回新的 episodeId。生成异步进行,通过 get_flowspeech_status 轮询。

{
  "episodeId": "664e0c2b9f1a2b3c4d5e6f71"
}

get_flowspeech_status

立即返回当前 FlowSpeech 详情,不进行轮询。

入参

  • episodeId:FlowSpeech 单集 ID(字符串,必需)

响应

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

On this page