视频播客制作器·微型版 是做什么的?
七步个人使用管线:调研 ∥ 素材 → 脚本 → TTS → 音频检查点 → 视频 → 预览检查点 → 4K渲染 ∥ 发布包。无捆绑脚本、无硬编码后端、无模板。该技能拥有逻辑并默认自动运行;TTS后端和视频工具按每个视频选择(参见工具选择)。
无论工具如何选择,以下三个不变原则保证了其工作:
- 检查点永远不跳过——但由谁检查由策略决定。 存在三个检查点:脚本(步骤2之后)、音频(步骤3之后)、预览(渲染之前)。默认检查者是代理本身(自验证,按检查点定义);项目的AGENTS.md/CLAUDE.md可将任何检查点升级为人工关卡——参见监督策略.
- 音频是主时钟。 最终视频时长必须与旁白音频误差在±0.5秒内(使用
ffprobe两者)。视觉内容裁剪到音频时长,绝不反向。 - 脚本更改使下游一切失效。 编辑脚本→重新运行脚本检查点,然后TTS→音频检查点→视觉内容→预览检查点→渲染。绝不手动修补时间。
监督策略
默认模式为自动:管线端到端运行,代理执行每个检查点的自验证。工作项目的AGENTS.md/CLAUDE.md可每检查点用一行覆盖:
检查点1(脚本):人工— 步骤2后暂停,等待用户批准脚本。值得:后期脚本更改会导致完整重新运行。检查点2(音频):人工— 用户听取完整音频后再制作视觉内容。当TTS误读难以在后期捕捉时值得。检查点3(预览):人工— 用户在渲染前审阅草稿。对风格敏感频道值得。
未提及的检查点保持代理验证。项目策略文件从AGENTS.template.md(位于此SKILL.md旁边)开始:将其复制到视频项目根目录作为AGENTS.md(以及为Claude Code准备的CLAUDE.md副本)并填写工具绑定。该技能绝不将任何内容上传或发布——发布包只是磁盘上的文件;发布始终是在此管线之外的人类行为。
工具选择(每视频)
在步骤3之前,按以下优先级决定TTS后端和视频工具:
- 项目绑定优先。 工作项目中已填写的
AGENTS.md/CLAUDE.md(参见监督策略)是用户的固定规范——使用它,无需扫描,无需猜测。如果用户在会话中命名了工具,则覆盖该文件。如果策略文件缺失或仍包含模板占位符(/absolute/path/to/...),则通过规则2-3解析绑定,然后将解析后的值写回项目策略文件,以便下次运行从绑定开始。 - 自动检测已安装的技能。 扫描会话中的可用技能,寻找能够完成该工作的技能——视频:包装了创作工具(Remotion、HyperFrames、CapCut等)的技能;TTS:任何包装了TTS引擎的技能。排除端到端管线技能(例如其他视频播客制作器变体,如果已安装):它们像本技能一样是管线,而非后端——在此调用它们会导致工作流嵌套并翻倍检查点。找到一个→使用它;找到多个→选择最符合项目语言和输出需求的。将选择记录在
research.md中;在最终摘要中显示。绝不等待工具确认。 - 未找到任何内容。 回退到用户已有的纯CLI工具(ffmpeg + 任何TTS CLI)并说明;绝不未经提示安装新工具。如果TTS CLI无法输出字幕时间,则通过将脚本均匀分割到音频时长并标记近似值(在检查点2处)来推导提示。如果用户指定的工具缺失或无法满足能力下限,则说明情况并降至规则2,而不是即兴应对。
能力下限(适用于规则1-3):TTS选择必须生成旁白音频加字幕时间;视频选择必须导出草稿视频文件(用于检查点3验证)和4K。实时预览是加分项,绝不能替代草稿导出。辅助作业无需选择:调研使用内置网络搜索,静态/封面使用视频工具的静态导出或任何图像工具,时长使用ffprobe检查。如果ffmpeg/ffprobe缺失,报告并停止——±0.5秒不变原则不可协商,绝不能跳过以保持运行。
工作布局
一个视频的所有工件位于videos/{name}/({name} = 小写英文、连字符分隔)。音频/时间的文件名适应所选后端;重要的是文件集:
videos/{name}/
├── research.md # 步骤1 — 事实+来源
├── podcast.txt # 步骤2 — 旁白脚本
├── podcast_audio.wav # 步骤3 — 旁白音频 (名称按后端)
├── podcast_audio.srt # 步骤3 — 字幕时间 (或等效的后端格式)
├── assets/ # 步骤1 — 图像/BGM + sources.md(每个资源的来源+许可)
├── video-project/ # 步骤5 — 视频工具产生的任何内容
├── final_4k.mp4 # 步骤7 — 3840×2160渲染
├── cover.png # 步骤7 — 视频封面
└── publish_info.md # 步骤7 — 标题/描述/标签/章节
工作流
入口点检查(步骤1之前)。 在项目根目录(或用户命名的目录)中查找videos/{name}/。如果它已包含早期会话的工件,则这是迭代——从受影响的最早步骤恢复(参见迭代),不要重新运行步骤1。仅当没有工件存在时才从步骤1开始。
步骤1 — 调研 ∥ 收集素材
从一个调查阶段并行产生两类输出(事实和素材来自相同来源):
调研 → research.md。调研主题(网络搜索、论文、用户的指点)。浓缩到research.md:事实、数字及其来源。脚本中将声称的每个数字必须在此追溯——没有来源的精确数字是编造的;删除它或注明出处。
素材 → assets/。将视觉内容和封面将消耗的所有内容收集到videos/{name}/assets/中:每节图像/插图/截图、品牌标志、背景音乐。两个来源,按优先级顺序:
- 用户提供的 — 用户交或指向的文件;复制到
assets/中,绝不在原地引用它们。 - 自动收集的 — 首先官方素材(产品横幅、规格卡片、截图),否则免费/许可集(unDraw SVG、Pixabay/Pexels、OpenMoji / Microsoft Fluent Emoji / Google Noto Emoji、
@lobehub/icons用于品牌标志)。
在收集时记录每个资源的来源URL + 许可到assets/sources.md中(需要署名的集必须在步骤7的视频描述中注明)。没有适合某节的合适素材?不要编造截图——对该节回退到纯文本布局(或通用免费许可插图),在assets/sources.md中记录决策,然后继续;在人工模式下询问用户是可选的。缺失的素材可以在步骤5之前的任何时间添加。
步骤2 — 脚本 → podcast.txt,然后检查点1
仅口语文本,无markdown。用[SECTION:xxx|display-label]标记(小写英文名,例如[SECTION:hero|intro])将脚本分割成段落——每个视频段落对应一节。此标记约定是脚本、TTS分块和视觉布局之间的可移植契约;任何TTS/视频工具都可以消费它。标记是结构元数据:永远不会朗读,永远不会显示为字幕文本——TTS和字幕只消费标记之间的文本。
风格规则(语言无关):参见脚本风格。
检查点1 — 脚本自审(强制)。 对照每个脚本风格规则验证脚本,然后对照assets/协调其节:列出没有匹配素材的节,根据上述无素材规则进行收集或回退,并注明哪些节没有素材。在人工模式下(项目策略),改为暂停并将脚本交给用户——不要在用户明确批准前运行TTS。音频、时间和视觉入口都源自脚本;后期脚本更改会导致完全重新运行。
步骤3 — TTS
运行所选TTS后端(Azure、Edge、fish、minimax……取决于会话选择)。生成:
- 旁白音频(WAV/MP3)
- 字幕时间(SRT或等效,提示文本 = 逐字脚本)
在合成前进行发音卫生处理,无论旁白语言如何:无法机械推导的品牌/术语读音(Qwen读作其中文品牌名,MoE逐字母拼出)放入别名/音素列表(按后端机制)——绝不放入脚本文本(否则会泄漏到字幕中)。
步骤4 — 音频检查 — 检查点2
代理自验证(自动模式):ffprobe音频时长与脚本的粗略估算(按语言语速;仅用于捕捉严重错误如静音或截断文件);验证脚本中每个品牌/术语标记都有别名/音素条目(覆盖率检查——实际发音正是人工模式检查点2的目的);检查是否存在静音或裁剪段落(silencedetect/volumedetect)提示合成失败。如果发现,修复别名列表间隙并重新合成。在人工模式下,用户听取完整音频代替;误读→修复别名列表(而不是脚本),重新合成,重新检查。
步骤5 — 制作视频
使用所选工具(Remotion、HyperFrames、CapCut……)将视觉内容剪辑到旁白音频,使用assets/作为素材池。podcast.txt中的节标记驱动布局;字幕提示驱动文本入口。将草稿文件保留在videos/{name}/中。
步骤6 — 预览检查 — 检查点3
代理自验证(自动模式):检查导出的草稿(可查找的视频文件——能力下限保证有一个):每节提取一帧(ffmpeg -ss <mid-section-time> -i draft.mp4 -frames:v 1)并查看每帧的布局溢出、缺失字幕、素材引用断裂;验证草稿时长与旁白音频误差在±0.5秒内。每次更改后修复并重新验证。在人工模式下,用户亲自审阅草稿(如果工具有实时预览则使用,否则使用导出的草稿);仅在明确确认("render")时渲染,并且每轮更改需要新的确认。
步骤7 — 渲染4K ∥ 发布包
并行运行(渲染是长时间的阻塞作业;发布包不依赖它):
- 渲染 为3840×2160 →
final_4k.mp4。声称完成前验证时长与旁白音频误差在±0.5秒内。 - 发布包 →
publish_info.md(标题/描述/标签/章节时间戳——每个章节从该节第一个提示的SRT时间开始)和cover.png(如果视频工具有静态帧则生成,否则使用任何图像工具;可复用assets/素材)。publish_info.md的素材来源部分从assets/sources.md复制。
脚本风格(语言无关)
来源: 完整技能的
video-podcast-maker/references/natural-narration.md(反AI风味)+script-polish.md(深度编辑)是规范来源; 这是语言无关的提炼。先在那些文件中编辑规则,然后在此镜像—— 不要分叉规则并使其漂移。
旁白语言是用户脚本的语言——此管线默认为中文,但以下规则适用于任何语言的口语语域。这些规则在检查点1执行;大声朗读每个句子——如果卡住,拆分句子。
- 日常口语散文,不是书面散文。 每句一个想法,主语在前,无嵌套从句,不用 — 或 · 作为连接词。变化句子长度;轻度的第一人称是好的。
- 连接词替换。 将书卷连接词(此外/然而/因此/总之)替换为日常等效词,或删除。删除列举式开头(首先/其次/最后)直接进入下一点。
- 清单删除。 删除套路化填充:公司流行语、“值得指出的是”、“众所周知”、“革命性的”、“颠覆性的”、“无缝的”、“让我们拭目以待”——以及旁白语言中的等效语。
- 结构提示。 动词-名词外壳(“执行优化”)→具体动作+结果(“将审批从三步减少到一步”)。“不是X而是Y”→陈述Y。三点并行(“又A又B又C”)→只保留最信息丰富的那个;两个比三个好。模糊强调词(“显著地”)→一个数字或可感知的后果。模糊归因(“专家说”)→具名来源+日期,否则删除句子。口号结尾(“前途是光明的”)→以一个具体事实、数字或下一步行动结束。
- 数字是阿拉伯数字(
86.1、1.5G、9B)——字幕是逐字脚本,所以写出屏幕上应显示的内容。绝不为修复误读而将TTS口语形式写入脚本;使用后端的别名/音素层。 - 数字必须可追溯到
research.md——没有来源的精确数字是编造的;删除它或注明出处。
迭代
- 脚本更改 → 重新运行检查点1(人工模式下由人进行),然后从步骤3(TTS)经过检查点2和3到渲染。绝不手动编辑时间。
- 音频重新合成(相同脚本、不同声音/语速)→ 重新运行检查点2;如果时间未变化,视觉内容可保留;渲染前重新运行检查点3。
- 仅视觉内容更改 → 编辑并重新运行检查点3。
- 复用相同的
videos/{name}/目录。