可用工具
8 个 ListenHub MCP 工具的入参约束,以及每个工具返回的响应结构。
ListenHub MCP server 提供 8 个工具。每个工具封装一个 OpenAPI 接口,成功时返回解包后的 data 负载。底层响应遵循标准信封 { "code": 0, "message": "", "data": { ... } };code 非 0 表示出错。
播客支持 1 到 2 位音色。debate 模式是双主持人形式,需要 2 个音色 ID。FlowSpeech 为单人(1 位音色)。语言为 zh 或 en。
音色查询
get_speakers
返回可用于播客和 FlowSpeech 生成的音色列表,包括音色 ID、名称、语言、性别、试听音频链接和音色画像。
入参
language:按语言代码筛选,zh或en(字符串,可选)
响应
返回 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:语言代码zh或en(字符串,可选,默认:en)mode:生成模式quick、deep或debate(字符串,可选,默认:quick)
query 与 sources 至少提供一项。
响应
由于该工具会轮询至完成,返回完整的播客详情(与 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 反映当前状态,内容字段(audioUrl、scripts 等)在对应阶段完成前可能缺失。contentStatus 取值为 text-success、text-fail、audio-success 或 audio-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:语言代码zh或en(字符串,必需)mode:生成模式quick、deep或debate(字符串,可选,默认:quick)waitForCompletion:等待文本生成完成(布尔值,可选,默认:true)
query 与 sources 至少提供一项。
响应
返回新的 episodeId 和一条状态信息。waitForCompletion 为 true 时,工具会等待脚本生成完成后再返回;通过 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:来源类型text或url(字符串,必需)sourceContent:来源内容 —— 文本正文或 URL(字符串,必需)。text类型时内容至少 10 个字符。speakerId:旁白音色 ID(字符串,必需)。FlowSpeech 仅使用一位音色。language:语言代码zh或en(字符串,可选)mode:生成模式smart或direct(字符串,可选,默认: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