关于 podcast
podcast 是一项生成 1 分钟双主持播客视频的技能,可从 URL 或自由文本简报创作内容。它结合来源信息或主题对话,并支持生成画面和配置语音。
主要功能
- 01支持 URL 或主题输入
- 02分为四段,每段 15 秒
- 03生成演播室与主持人图像
- 04可配置预设或克隆语音
- 05付费生成前需确认费用
适用场景
- 01将产品页面改编成短播客评述
- 02根据主题简报制作双主持讨论
MCP 相关
通过 MCP 工具检查余额并生成媒体,包括图像和参考视频;付费调用前须经用户确认。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pika-labs/ pika-plugins --skill podcast安装后在 Claude Code 中输入/podcast确认已加载。
详细介绍
/pika:podcast
4 幕 × 每幕 15 秒 = 共 60 秒。主持人 A 始终在左侧,主持人 B 始终在右侧。接受 URL 或自由形式的话题/简报。
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
input | 必填 | 要点评的 URL 或自由形式的话题/简报(例如:“我和 Elon Musk 谈论火星”) |
bg_img | 自动生成 | 播客录音室背景 |
host_a_img | 自动生成 | 主持人 A 肖像——参见下文“真人处理” |
host_b_img | 自动生成 | 主持人 B 肖像——参见下文“真人处理” |
voice_a | 876341503281471517 | Kling 预设音色或主持人 A 的克隆音色 ID |
voice_b | 829837252279803904 | Kling 预设音色或主持人 B 的克隆音色 ID |
aspect_ratio | 16:9 | 输出宽高比 |
费用透明度确认
进行任何付费 MCP 调用前,调用一次 identity_balance({verbose: true})。告知当前余额、近期消耗速率和剩余可用时长,然后用以下原文确认是否继续:
预计费用:四段 Kling v3-omni pro 15 秒视频、可选的缺失素材图像生成、一次单幕纠错重试、拼接和飞行后 analyze_media QA,总计约需 6,000-9,000 点数(约 $60-$90)。费用超过 $5。回复
proceed以继续,或回复cancel以停止。
在用户回复 proceed 前,不得调用任何付费 MCP 工具。如果用户回复 cancel,则停止,不生成任何内容。这是唯一的是否确认环节;用户回复 proceed 后,渲染四幕并返回 URL。
默认设置——快速执行,中途无需确认
- 静默使用参数表中的默认音色。
voice_a默认为 Kling 预设音色876341503281471517,voice_b默认为829837252279803904。执行前不要询问“要用哪种音色?”,仅在用户明确指定时使用覆盖值(voice_a=、voice_b=)。 - 静默自动生成任何缺失的主持人肖像(步骤 1 的原型提示词)。不要询问“要不要生成主持人图像?”,直接生成即可。
- **只有费用透明度确认会询问是否
proceed。**用户回复proceed后,提交 → 渲染 4 幕 → 返回 URL。账户点数余额和服务提供商故障转移是标准防护措施。为保持向后兼容,接受--yes标志,但不执行任何操作。 - 话题模式角色设定(步骤 3)——用户提到真人公众人物时,静默遵循步骤 4(真人处理):默认使用原型肖像,不自动生成照片写实肖像,也不询问用户是否拥有肖像权。
生成前墙钟超时防护
在确定播客输入并通过成本门槛后,技能启动时立即开始计时。第一次付费生成调用是为缺失的背景/主持人素材调用 generate_image。如果所有素材都已提供,第一次付费生成调用则是 generate_reference_video。必须在技能启动后 5 分钟内发起第一次付费生成调用。如果技能启动后 5 分钟内仍未发起第一次付费生成调用,请在任何付费生成调用之前停止,并报告 failed_pre_generation_timeout,同时提供目前已有的信息:输入模式、素材状态、语音状态、URL 抓取/WebFetch 状态、脚本草稿状态,以及确切的阻碍。不要继续完善主持人原型、事实依据、笑话或分幕措辞。
每个准备阶段结束后,以及付费生成调用前,打印一行进度检查点:
Stage 1/4 done — input resolved and cost gate passed, locking missing-asset image prompts.Stage 2/4 done — missing asset prompts ready, calling image generation now.如果缺少任何背景或主持人图片,请在第一次调用generate_image前立即打印此信息。如果所有图片都已提供,则改为打印Stage 2/4 done — assets and voices ready, collecting URL/topic facts.,并继续,不调用图像生成。Stage 3/4 done — script draft locked, preparing first act.Stage 4/4 done — first act prompt ready, calling Kling now.
第一次调用 generate_image 前,缺失素材的图像提示词最多迭代 2 轮。达到最多 2 轮后,将现有内容提交给 generate_image;不要继续完善主持人原型、演播室背景细节或角色风格。调用 Kling 前,脚本和分幕提示词最多迭代 2 轮。达到最多 2 轮后,将现有内容提交给 generate_reference_video;不要继续完善笑话、打断方式、角色设定或镜头措辞。
Claude Desktop 上的本地图片
Claude Desktop 目前无法将内联粘贴的图片传递给 MCP 工具(Anthropic 方面的限制)。如果用户内联粘贴了照片,或提到想用作 host_a_img / host_b_img 的本地文件,请暂停步骤 1,并友好地向他们说明以下内容,例如:
请注意——Claude Desktop 目前无法将粘贴的图片传递给 MCP 工具(Anthropic 的限制)。处理照片有两个简单选项:
- 粘贴 URL(如果图片已经托管在 Imgur、S3 或你的网站上)——最快
- 附上图片文件,这样我就可以在生成前上传。
收到本地文件后,在步骤 1 前使用 upload_asset 将其转换为公开 URL,并将返回的 public_url 用作参数。已经托管的 https://... URL 可直接使用,无需执行此流程。
如果用户提到某位现实中的公众人物,但没有附上任何图片,请勿自动生成其肖像——步骤 4(真人处理)会改用原型肖像。
长时间运行的 task_status 轮询
当任何长时间运行的生成或编辑调用返回 task_id(无论是否包含初始状态),包括 {task_id}、{task_id, status: "queued"},或初始状态为 queued、running 或 processing 时,立即记录任务 ID 和开始时间。
- 紧密循环调用
task_status({task_id}),直到任务进入终止状态(completed | failed | cancelled)。不要手动休眠,也不要使用 Bash 轮询;工作线程会让每次状态调用保持等待。 - 当状态为
queued、running或processing时,每 60 秒输出一行可见进度:Seedance i2v queued for {N}m {S}s... still processing。轮询 Kling、图像生成、克隆语音或拼接任务时,替换提供方/阶段标签。 - 任务
completed时,提取返回的结果 URL 并继续。 - 任务
failed或cancelled时,向用户报告失败,并提供task_id、状态和最后一条状态消息。 - 从最初提交起满 15 分钟后,如果任务仍未进入终止状态,则调用
task_cancel({task_id}),然后向用户报告失败。如果取消操作返回任务已经处于终止状态,则再调用一次状态查询,并报告该终止结果。 - 原任务仍处于
queued、running或processing状态时,不要重复提交请求。
步骤
0. 解析输入(空参数菜单)
从 $ARGUMENTS 中移除标志(--yes、--no-captions 等)和 key=value 参数。如果剩余内容为空或仅包含空白字符,则原样输出以下菜单作为完整回复,然后停止并等待用户的下一条消息——不要调用任何工具,不要继续执行步骤 1,也不要自行编造主题或 URL。如果移除后的输入不为空(URL 或任意文字),则静默跳过此步骤并继续执行步骤 1。
**您想做一期关于什么内容的播客?**以下内容都可以:
- 网站 URL(产品页面、文档站点、发布页面)——例如
https://pika.art- GitHub 仓库——例如
https://github.com/anthropics/claude-code- 博客文章/文章 URL——例如您希望讨论的一篇近期文章
- 自由主题或简述——例如 "我和埃隆·马斯克聊火星" 或 "两位科学家辩论 AGI"
回复您的选择,我会生成一段 1 分钟的双主持人播客视频(4 幕 × 约 15 秒)。
提示:您无需输入
/pika:podcast——只需说“制作一期关于 的播客”“播客评论 ”或“我和 聊聊 ”之类的话,我就会自动启动此技能。
用户回复后,将其回复视为已解析的输入(URL 或主题),并继续执行步骤 1。不要再次提示。
1. 生成缺少的素材(并行)
仅生成用户未提供的内容。默认原型提示词:
bg_img— 现代播客录音室,两把椅子,暖色灯光,无人,16:9host_a_img— 热情的主持人,录音室肖像,人物位于画面左侧,1:1host_b_img— 务实的怀疑派主持人,录音室肖像,人物位于画面右侧,1:1
如果输入中提到了特定人物(步骤 3),则调整原型以匹配人物风格——参见下文“真实人物处理”。
2. 解析语音 ID
使用给定的 voice_a / voice_b;否则使用默认 Kling 预设(876341503281471517 / 829837252279803904)。如果用户通过 voice_a= / voice_b= 提供了克隆语音 ID,则直接使用。
3. 解析输入模式——URL 与主题
从 $ARGUMENTS 中剥离标志(--yes、--no-captions 等)和 key=value 参数。检查剩余内容。
URL 模式——输入中包含 https?:// URL:
- 对该 URL 调用
capture_website,仅用于视觉参考:产品/页面名称、可见布局、屏幕截图、B-roll 线索,以及一个可拿来开玩笑的视觉细节。 - 对同一个 URL 调用
WebFetch,并将其全文作为脚本的事实来源。不要仅依赖屏幕截图获取事实。 - 从合并后的输入中提取:产品名称、价值主张、2–3 个具体功能或事实、定价、一个可拿来开玩笑的细节,以及任何具体引语或说法。
- 对于长篇页面(Wikipedia、文档、博客文章或文章),检查
WebFetch的全文,寻找导语之后的深入章节。若至少有 3 个实质性的深入章节,脚本必须提及导语之后至少 3 个不同章节(例如架构、训练、幻觉、局限性、部署或安全),而不能只介绍开篇摘要。 - 使用
WebFetch文本作为事实依据,并使用capture_website获取视觉信息。如果二者冲突,事实说法以WebFetch为准,并将屏幕截图视为视觉参考。
主题模式——输入为自由形式的文本(不含 URL):
- 将全部输入视为创作简报。解析以下内容:
- 主题——对话内容
- 主持人——若有明确提及则使用所述信息(“我和 Elon Musk”“两位科学家”“Joe 和 Sarah”);否则使用默认设置(热情的主持人 + 持怀疑态度的主持人)
- 角度——辩论/采访/讲解/闲聊
- 具体事实——用户提供的任何具体说法、数字、日期或引语
- 如果没有提供具体事实,使用 2–3 条明确标注的观察或假设,作为笑话和“等等,其实……”转折的依据。不要将编造的说法当作事实;如果主题需要事实准确性,请索要来源或 URL。
- 如果用户说“I and X”或“me and X”,则主持人 A = 用户(若提供
host_a_img=,则使用该图片;否则生成主持人肖像),主持人 B = X。
4. 真实人物处理(仅限主题模式)
如果解析后的输入将某位真实公众人物(例如“Elon Musk”“Taylor Swift”“Joe Rogan”)指定为主持人:
- 默认行为:不要自动生成该人物的照片级肖像。生成符合其人物气质的原型肖像——例如,为 Elon 风格的主持人生成“在播客桌前、充满科技亿万富翁气场的 CEO”,为 Taylor 风格的主持人生成“流行巨星风格”。应明确体现灵感来源,而非冒充本人。
- 例外情况:如果用户明确提供
host_a_img=<url>或host_b_img=<url>,则原样使用所提供的图片。用户需自行承担肖像权责任。 - 语音:遵循相同逻辑——默认使用通用 Kling 预设;只有在用户提供克隆语音(
voice_a=/voice_b=)时才使用。 - 脚本基调:对话可以围绕该人物已知的公开立场或风格展开(例如,Elon 风格的主持人对火星的热情);公开记录中的观点可以作为创作素材。不要让他们说出具体的诽谤性、不符合其风格或虚构的私人生活相关言论。
这项防护措施既能让创作保持自由(“我想制作一个和科技 CEO 争论火星问题的播客”),又能避免自动生成具名真实人物的深度伪造内容。
CJK / 非拉丁文字处理
当 URL、主题、产品名称、主机名、引语或必需的脚本细节中包含中文、日文、韩文、阿拉伯文、天城文、西里尔文、带重音符号的拉丁字母、表情符号或其他非拉丁文字时,请使用本节。
- 文字保留:在脚本和任何事实回顾中,准确保留用户提供的非拉丁字符及其文字形式。除非用户明确要求,否则不要将产品名称、人名、口号或引用语罗马化、音译或翻译。如果需要辅助发音,请在附近的英文文本中提供,不要用它替代原始字符。
- Kling 语音 ID:
voice_a=和voice_b=仍必须是有效的 Kling 语音 ID。对于中文 / 日文 / 韩文对话,优先选择已知能够讲该语言的 Kling 语音 ID 或克隆语音样本;如果没有匹配语言的 Kling 语音可用,请在对话中保留原始字符,并说明发音可能带有口音,而不是悄悄换用无关的 TTS 服务提供商。 - 混合语言对话:让每位主持人的台词保持简短明确。避免要求 Kling 朗读冗长的混合语言段落;将复杂名称或引语拆分到不同段落中,并让周围的英文保持简单。
- 字幕 / 字体回退:此技能默认跳过
add_captions,因为播客对话的自动转录可能会误转术语。如果用户明确要求添加字幕,请根据撰写的脚本传入手动编写的subtitles[],中文 / 日文 / 韩文使用font: "noto-cjk",并准确保留原始非拉丁文本。 - QA:交付前,如果存在非拉丁文本,请在最终结论中添加一行说明:原始字符是否在脚本中得到保留,以及所选语音是否与语言匹配或为尽力选择。
术语密集型原生音频处理
当 URL、主题、产品名称、引语或必需的脚本细节涉及专业领域或术语密集内容时,请使用本节,尤其是金融、法律、医学、AI / 加密货币、缩写、新造词、特殊产品名称、长数字或多词复合术语。Kling-omni 原生 TTS 不仅可能在自动字幕中出错,也可能在语音输出中读错新造词,因此请在付费调用 Kling 之前降低风险。
- 风险扫描:如果某一行包含多个领域专用术语、缩略词、较长数字,或嵌套的、多分句的经济学家式表达,就将该段标记为术语密集。stablecoins、unbundle 和 reassure 等示例属于关键术语,必须确保含义清晰。
- 脚本改写:在脚本状态和最终回顾中保留规范术语,但缩短围绕术语的口播内容。使用短句,拆分长分句,每位主持人的台词最多包含一两个高风险术语,并避免嵌套分句,以免 Kling 推断出听起来相似的填充词。
- 发音提示:为每一幕创建简短的高风险术语发音提示,例如
stablecoins = STAY-bul coins、unbundle = un-BUN-dul、reassure = ree-uh-SHOOR。发音提示仅用于提示元数据;不要在对话、字幕、事实内容或最终回顾中用其替代规范术语。 - 已知难读术语的修正:如果已知某个术语容易读错,或后续检查发现将其听成了近似词,就不要再次单独尝试这个难读词。将规范术语保留在幕元数据中(
canonical_terms: ["unbundle"]),然后将修正后的语音词条改为简短的上下文短语,并加入便于朗读的提示/微停顿,例如we un-bundle payments。在元数据中添加观察到的错误形式作为发音排除项,例如unbundle = un-BUN-dul, not un-bumble。 - 已知难读术语的可发布备用方案:在付费 Kling 调用之前,如果以往 E2E 或当前后续检查发现
unbundle等术语会发生偏差,例如被读成unbubble、un-bumble或unbundable,就将其标记为已知难读术语。记录canonical_terms和observed_wrong_forms。不要用 Kling 原生音频生成包含已知难读口播术语的内容。应生成不含已知难读术语原生语音词条的相关视觉幕或最终视频,然后使用规范拼写(unbundle,而非连字符提示)通过generate_speech(text=<spoken-only script>, provider: "minimax-tts", minimax_model: "speech-2.8-hd", language: "en")生成可控旁白。仅包含口播内容的脚本必须保留撰写好的主持人轮次顺序,但不得包含 HOST_A/HOST_B 标签、元数据、发音提示或观察到的错误形式拼写。使用transcribe_audio(audio=<tts_audio_url>)和analyze_media(media=<tts_audio_url>)对 TTS 音频进行替换前 QA;每个必需的canonical_terms条目都必须出现在transcribe_audio文本和analyze_media观察到的转录文本中。如果缺少规范术语,或被任何观察到的错误形式或新的近似词替代,则拒绝该 TTS。然后调用edit_audio_replace(video_url=<final_mp4>, audio_url=<tts_audio_url>, duration_policy: "video"),丢弃原生音频并替换为可控 TTS 音轨。使用transcribe_audio(audio=<replaced_mp4_url>)和analyze_media(media=<replaced_mp4_url>)对替换后的 MP4 进行替换后 QA;每个必需的canonical_terms条目都必须出现在两项最终检查中,且analyze_media还必须验证主持人轮次顺序和音画同步是否可接受。如果任何最终检查听到错误形式、未听到规范术语,或指出备用方案破坏了播客轮次结构,则返回not publish-ready;如果两项检查均通过,即使使用的是可控 TTS 而非 Kling 原生语音,备用方案输出仍可发布。 - 数字和缩略词:在口播表达很重要时,改用便于朗读的形式:
$175B改为one hundred seventy-five billion dollars;除非品牌通常将其读作单词,否则将API写作A P I。 - 幕提示词:在语音词条附近加入每幕的发音提示,并说明这不是对话,不应逐字朗读。要求清晰读出规范术语,不要临场改说相似词。
5. 编写脚本
编写 4 幕 × 每幕 2 句台词(HOST_A / HOST_B)。每句口播时长约为 10–12 秒。
必需(URL 模式和主题模式都适用):
- 一个与具体细节相关的笑点(URL 模式中来自抓取的事实;主题模式中来自主题相关的说法)
- 一个“等等,其实……”式的质疑反转时刻
- 至少一次句中打断
- 自然的填充语:“okay so”“wait”“right?”“i mean”“honestly”
- 真实反应,而非泛泛赞美
- 至少提及一个实际的功能名称、价格、说法或引言
- 自然收尾,不要生硬地说“bye!”
- 如果主题属于领域知识密集、术语密集或使用自造词,在敲定每幕台词前,先处理术语密集内容的原生音频。
各幕:引子 → 功能深入讲解 → 转折 → 结论 (主题模式下对应为:引子 → 内容实质 → 转折 → 结论。)
6. 生成视频各幕(子代理,依次执行)
将所有已确定的素材和脚本交给子代理。子代理按 1→2→3→4 幕依次执行——不要并行处理。子代理必须遵循上文的长时间运行任务 task_status 轮询约定,并在等待 Kling、图像生成、语音克隆或拼接任务时,每隔 60 秒向父代理转发进度信息。
每个常规幕:调用一次 generate_reference_video(kling-v3-omni、duration=15、sound=true、quality_mode: "pro")。每个常规幕都传入 reference_images=[bg_img, host_a_img, host_b_img]、voice_ids=[voice_a, voice_b] 和 quality_mode: "pro";必须传入 quality_mode: "pro",因为成本关卡按 Pro 档的 15 秒幕报价。可选参数:如果需要确保不同运行之间结果可复现,可使用 kling_model 固定具体的 Kling 系列成员。三个镜头:
- 已知难发音内容的回退例外:对于包含已知难发音口播词语的幕,将受影响的画面幕设为
sound=false,且受影响的台词不使用语音令牌。不要在任何<<<voice_*>>>原生语音令牌台词中包含标准写法的已知难发音词语;之后由受控 TTS 替换内容补上这些词语。对于术语密集但不属于已知难发音的幕,在该幕提示词中以非对白元数据的形式加入第 5 步提供的发音辅助信息,并在引号中的<<<voice_*>>>台词中保留标准写法的术语。 - 全景 5 秒:两位主持人,无语音令牌
- A 的中近景 5 秒:
<<<voice_1>>> '<HOST_A line>' - B 的中近景 5 秒:
<<<voice_2>>> '<HOST_B line>'
每幕的情绪表现:
- 第 1 幕:A 兴奋,B 怀疑
- 第 2 幕:A 做手势并讲解,B 提问
- 第 3 幕:A 坚定,B 惊讶并重新考虑
- 第 4 幕:A 满意,B 认同
第 4 幕结束后,子代理调用 edit_concat([act1, act2, act3, act4]),将任何异步轮询进度转发给父代理,并返回最终视频 URL。将四个幕的 URL 保存在状态中,以便飞行后质量关卡最多只需进行一次有针对性的幕修正,而不必重新生成已通过检查的幕。
7. 输出
返回最终视频 URL 和一句话结论。默认不要调用 add_captions——Whisper 自动转录在播客对白常见的领域专有词语(产品名称、角色名称、技术术语)上并不可靠。如果用户明确要求字幕,请根据撰写好的脚本传入 subtitles[],不要自动转录;对于 CJK / 非拉丁文本,请遵循上文的字体和保留原文指导。默认交付内容为 Kling Omni 原生音频。
飞行后质量门槛
在宣布成功之前,请对最终视频 URL 调用 analyze_media,并要求给出结构化判定:
Return JSON only: {
"verdict": "clean" | "degraded" | "catastrophic",
"observations": string[],
"quality_warning": string | null,
"re_roll_suggestion": string | null
}
Check that Host A remains on the left, Host B remains on the right, product names / persona names / topic-specific terms are not visibly garbled, the four-act podcast structure is present, and there are no black frames or wrong-host shots.
Also check the spoken audio, not only captions or visible text: product names, persona names, topic-specific terms, coined terms, and jargon must be intelligible. Flag garbled or mispronounced native audio such as "stablecoins" sounding like "stable kinds", "unbundle" sounding like "un-bumble" or "unbundable", or "reassure" losing syllables.
- 如果
verdict为clean,首先检查脚本状态中是否包含已知难发音词。对于已知难发音词,在接受 clean 判定之前,运行“已知难发音词可发布备用方案”,并执行替换前及替换后的transcribe_audio/analyze_media检查。只有替换后的 MP4 检查通过后才能返回成功。如果没有已知难发音词,则正常返回最终 URL 和一句话判定。 - 如果
verdict因普通的非阻断性视觉问题而为degraded,则返回最终 URL 和quality_warning,供用户在发布前审核。 - 如果
verdict因口语音频将术语、新造词或其他领域专用词弄得含混不清而为degraded,则视为尚未达到发布要求,而非默默判定成功。对于已知难发音词或观察到的难词偏差,跳过原生音频的片段修正;不要将定向片段修正预算花在另一个 Kling 原生音频提示词上。直接使用“已知难发音词可发布备用方案”:调用generate_speech(text=<spoken-only script>, provider: "minimax-tts", minimax_model: "speech-2.8-hd"),对 TTS 音频运行替换前的transcribe_audio和analyze_media,然后调用edit_audio_replace(video_url=<final_mp4>, audio_url=<tts_audio_url>, duration_policy: "video"),丢弃原生音频并替换最终 MP4 的音频。对替换后的 MP4 运行替换后的transcribe_audio和analyze_media。如果这些检查通过,则返回替换后的 URL;如果备用方案检查仍报告口语术语含混不清,或者问题不够集中,无法修正或替换,则不要将播客视为已完成;返回 URL,并注明not publish-ready、受影响的术语以及quality_warning。仅对于非已知难发音词的含混问题,如果观察结果或re_roll_suggestion将问题定位到某一片段,则使用一次定向片段修正预算:通过缩短受影响的句子、拆分多分句表述、添加或改进语音发音辅助信息、更改镜头提示词、参考图像、语音 ID,或调整导致失败的其他阶段专用输入,对该片段的负载做实质性修改。以quality_mode: "pro"提交一个修正后的片段,将四个片段重新拼接,并再次运行此analyze_media检查。如果第二次判定仍报告口语术语含混不清,则不要将播客视为已完成;返回not publish-ready。 - 如果
verdict为catastrophic,仅当观察结果或re_roll_suggestion指明某一个片段有问题、镜头中的主持人错误、出现黑屏,或存在局部视觉 / 音频故障时,才使用一次定向片段修正预算。kling-v3-omni 没有 seed,相同的片段负载可能会解析为相同的任务 / 资源。不要提交相同的 Kling 负载。重试前,通过调整脚本句子、镜头提示词、参考图像、语音 ID、发音辅助信息,或导致失败的其他阶段专用输入,对有问题片段的负载做实质性修改。以quality_mode: "pro"提交一个修正后的片段,将四个片段重新拼接,并再次运行此analyze_media检查。不得超出成本门控范围:如果第二次判定仍为catastrophic,或者故障无法归因于某一个片段,则不要将播客视为已完成;应呈现判定和re_roll_suggestion,而不是宣布成功。
规则:
voice_ids必须是有效的 Kling 语音 ID — 绝不要使用Calm_Man这类名称式字符串- 主持人 A 始终在左侧(
<<<image_2>>>),主持人 B 始终在右侧(<<<image_3>>>)— 绝不能交换
承载关键信息的短语
这些锚点可确保播客输出在 URL 模式和主题模式下都连贯一致:
| 短语 | 位置 | 为何是承载关键信息的内容 |
|---|---|---|
Host A always LEFT, Host B always RIGHT | 布局和镜头提示词 | 防止在分别渲染的 4 个单独片段中,主持人身份互换。 |
4 acts × 15s each | 整体结构 | 确保拼接结果可预测,并避免各片段节奏不均。 |
Hook → Feature deep-dive → The Turn → Verdict | 脚本结构 | 让单集形成对话式的起承转合,而不是 4 段互不相干的反应。 |
wait, actually... 怀疑者立场反转时刻 | 脚本要求 | 通过制造转折,让播客听起来像真实交流。 |
Do not call add_captions | 输出规则 | 默认避免生成质量较差的烧录字幕;用户明确要求字幕时,使用手动设置的 subtitles[] 和字体回退,而不是自动转录。 |
引擎选择:使用 Kling v3-omni 实现原生双主持人对话
4 个片段都使用 Kling v3-omni,因为它支持在单个镜头计划中使用 2 位参考主持人和语音令牌进行原生对话。代价是为了保持一致性,片段会依次运行,耗时可能比纯剪辑/合成流程更长。默认不要添加单独的字幕或音乐层;这项技能的价值在于原生的口语交流。
运行时间预期
完整的 4 段渲染通常需要 24-32 分钟的实际耗时:实际情况约为 25 分钟,P95 约为 32 分钟。 4 个片段会依次通过 Kling Omni 运行;这是主要耗时环节,不应描述为并行工作。 如果用户或执行框架的时间预算低于 32 分钟,应提前提醒用户,完整渲染可能无法完成,并提供 2 段/30 秒的备用方案。否则,按正常流程执行,无需确认。
| 步骤 | 实际耗时 | 备注 |
|---|---|---|
| 生成缺失素材 | 30-90s | 用户已提供背景/主持人参考素材时跳过 |
| 解析 URL/主题 + 编写脚本 | 1-3 min | URL 模式取决于页面抓取质量 |
| 4 段 Kling 生成 | 24-32 min | 依次调用 Kling Omni 4 次,每次约 8 分钟;是主要耗时环节 |
| 拼接 + 返回 | 30-90s | 仅返回最终 URL;默认跳过字幕 |
故障模式
从 capture_website / clone_voice / generate_video / edit_concat 的上游 5xx 错误中恢复
如果任何 MCP 调用返回:
code: "provider_5xx"且retry_class: "retry_after_backoff"- 或任何上游服务商(Kling、语音克隆、抓取、存储)返回 HTTP 502 / 503 / 504
请按以下步骤操作:
- 等待 5 秒。
- 使用完全相同的参数,重新调用完全相同的 MCP 工具。不要改写脚本、切换语音、更换主持人参考素材、改变片段顺序,也不要重新提交不同的提示词。
- 如果重试后仍返回 5xx,则中止并向用户说明:"服务商两次返回暂时性上游错误。请在 1-2 分钟后重试;此类错误通常会自行消失。"
最多重试一次。5xx 表示暂时性服务中断,并不意味着播客主题、语音或脚本有问题。
从上游 4xx / moderation_blocked 错误中恢复
如果可选的 generate_image 辅助工具、主持人素材或 Kling 片段出现上游 4xx 或 moderation_blocked:
- 不要使用相同输入重试;审核拦截和大多数 4xx 验证失败都是确定性的。
- 只有在该环节明确提供备用服务商时才使用。默认的 Kling v3-omni 双主持人片段流程没有等效的备用服务商;不要用无关字幕或单人语音合成来伪造播客。
- 向用户说明:"服务商拒绝了此播客输入。请尝试更换主持人参考素材、减少对知名公众人物/品牌的明显提及,或选择更安全的主题角度。"
从上游 429(速率限制)错误中恢复
如果任何上游服务返回带有退避提示的 HTTP 429:
- 等待提示的退避时长;如果未提供提示,则等待 30 秒。
- 使用完全相同的参数,重新调用完全相同的 MCP 工具。
- 最多重试一次。如果仍返回 429,则中止并向用户说明速率限制问题。
capture_website 返回空内容/页面未加载
如果 URL 模式调用 capture_website 后返回 200,但 action_bboxes 为空或 recording_viewport 为 0x0:
- 不要重试
capture_website;页面在捕获环境中未能渲染。 - 如果
WebFetch返回了可用的全文文本,请勿重试capture_website,直接继续:使用 WebFetch 提供事实依据,并使用通用视觉素材或生成的视觉素材,而不要假装损坏的页面捕获包含页面细节。 - 如果捕获和 WebFetch 都未能提供可用的源材料,请说明:“无法捕获 。该页面可能受到拦截/付费墙限制/需要身份验证。请提供文本简介或粘贴源材料。”
如果捕获的页面明显只有首屏导航,没有文章/内容正文,只有在 WebFetch 返回了足以支撑脚本的全文时才继续;这种情况下,使用捕获内容作为视觉素材,使用 WebFetch 提供事实依据。如果捕获和 WebFetch 都未能提供可用的源材料,请要求用户粘贴源材料,而不要臆造页面深层内容。
upload_asset 网络/身份验证失败
如果 upload_asset 在将本地宿主引用、语音样本或源媒体转换为托管 URL 时失败,请勿使用本地文件系统路径继续。仅针对上述 5xx 或 429 类错误重试一次。对于 auth_error、不支持的 MIME 类型、网络故障或重试后仍失败的情况,请用户提供托管 URL 或受支持的替代文件。
长时间运行的 task_status 超出上限
每个异步 MCP 调用都会返回内联结果或 {task_id, status} 以供轮询。在判定任务卡住之前,请使用以下时限:
- Kling Omni act:每次调用 15 分钟
- 语音克隆:5 分钟
- 编辑/拼接:5 分钟
使用以下两者中较早的时限:服务提供方时限的 1.5 倍,或任何特定技能的硬性轮询上限,包括上文“长时间运行的 task_status 轮询约定”中的 15 分钟总上限。如果 task_status 返回 status: "processing" 或 status: "queued",且超过了较早的时限,请调用 task_cancel({task_id}) 并说明:“服务提供方耗时异常;正在中止。请重试。”
示例
URL 模式(审阅网站/仓库/博客):
/pika:podcast https://pika.art
/pika:podcast https://github.com/anthropics/claude-code
/pika:podcast https://cursor.com voice_a=876341503281471517
主题模式(自由形式的简介):
/pika:podcast Two AI researchers debate whether AGI arrives before 2030
/pika:podcast I and a Mars-obsessed tech CEO talk about colonization timelines
/pika:podcast interview with a seed-stage VC about what kills most startups
/pika:podcast podcast about quantum computing breakthroughs in 2026
混合模式(主题提示中包含 URL——如果找到有效 URL,Agent 会优先采用 URL 模式):
/pika:podcast podcast about https://pika.art with skeptical investor energy