关于 video-podcast-maker
面向编码 Agent 的视频播客制作技能,可将主题转为 Bilibili 横屏 4K 知识视频。它按阶段编排选题、脚本、配音、Remotion 合成与校验,并要求渲染前进行预览确认。
主要功能
- 0111 步视频制作流程
- 02edge 与 Azure 配音
- 03Remotion 预览及 4K 渲染
- 04音频驱动时间与字幕同步
- 05输出校验与竖屏短视频
适用场景
- 01制作 Bilibili 横屏知识视频
- 02修改脚本后重新生成配音与时间轴
- 03调整画面或音乐并复用已有素材
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agents365-ai/ video-podcast-maker --skill video-podcast-maker安装后在 Claude Code 中输入/video-podcast-maker确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.example.python-version.skillspector-baseline.yamlAGENTS.mdLICENSEpackage.jsonphonemes.template.jsonprefs_schema.jsonrequirements.txtreferences/design-guide.mddesign-learning.mdnatural-narration.mdplatform-matrix.mdscript-polish.mdtroubleshooting.mdvisual-taste.mdworkflow-assets.mdworkflow-production.mdworkflow-publish.mdworkflow-script.mdzh-polyphones.mdscripts/_state.pyalign_timing_from_srt.pyassets.pyaudit_beat_sync.pyaudit_components.pycheck_prereqs.pycli_envelope.pycli.pycomponents.py详细介绍
推荐:加载 Remotion 最佳实践
使用
remotion-best-practices(不随附)可获得完整的 Remotion 模式库。该技能为可选项;若未安装,最低要求如下。
- Pi:读取已加载的技能
remotion-best-practices(列于可用技能中)。- Claude Code:继续操作前,调用
remotion-best-practices技能/工具。尚未安装?可从 remotion-dev/skills 获取(文档:remotion.dev/docs/ai/skills)。
如果未安装
remotion-best-practices,最低要求:必须有可用的 chromium,4K 内容始终使用<Scale4K>包裹,使用搭配linearTiming的<TransitionSeries>,并将音频视为主时钟。
视频播客制作器
从主题自动生成 4K 哔哩哔哩横屏知识视频的流水线。编码 Agent + TTS 后端 + Remotion + FFmpeg。
目录
- 初始化 — 前置条件(在第 1 步之前运行)
- 执行模式 — 自动模式与交互模式 → references/workflow-script.md
- 重新生成现有视频 — 对已完成的视频进行迭代
- 工作流 — 11 步流水线 + 阶段文件指引 + 强制停顿点
- 硬性规则 — 不可妥协的制作约束
- 音频主时钟与同步
- 单视频布局
- 其他资源 — 何时加载各个
references/文件 - 用户偏好
- 故障排除
初始化
将 SKILL_DIR 解析为包含此 SKILL.md 的目录:
- Pi:Agent 可从已加载的技能列表中获知技能路径 — 在运行命令前,将
SKILL_DIR设置为该目录。 - Claude Code:
${CLAUDE_SKILL_DIR}会自动填充。
SKILL_DIR="${SKILL_DIR:-${CLAUDE_SKILL_DIR}}"
# Prerequisites (CLIs + backend env vars)
python3 "${SKILL_DIR}/scripts/check_prereqs.py"
更新通过 skills CLI 进行(npx skills update video-podcast-maker -g);直接通过 git clone 安装的项目请按照 README 使用 git pull。此技能不会检查更新。
先决条件检查失败 — 请参阅 README.md 进行设置。检查会识别后端(依次解析 TTS_BACKEND 环境变量 → user_prefs.json 中的 global.tts.backend → 默认值 edge),因此只会验证当前启用后端所需的环境变量。
在新项目中制作第一个视频? 建议复用已安装 node_modules/ 的现有 Remotion 项目 — 创建新项目需要下载约 2.2 GB 的 npm 包和 90 MB 的 Chrome headless shell(每个项目仅需下载一次)。如果用户有之前制作视频时使用的项目,请使用该项目。如果必须创建新项目,请在执行步骤 1–4(主题调研和脚本撰写)时,在后台运行 npm install。
所有渲染内容都放在 videos/{name}/ 中 — 每个 output.mp4、final_video.mp4 和 thumbnail_*.png 都直接存放在对应的视频目录中。切勿渲染到 out/ 或 dist/ 目录;采用 --public-dir videos/{name}/ 约定可确保所有内容都集中在一个目录中。
TTS 引擎 — 两种本地后端,无需外部技能:
edge(默认)— 免费,无需密钥,通过 edge-tts 使用。azure— 需要AZURE_SPEECH_KEY+AZURE_SPEECH_REGION(Microsoft Speech SDK)。
两者均在内部进行合成(scripts/tts/backends/native.py)— 内置发音处理(显示文本 → 口播文本 → 返回显示文本用于字幕)和音素应用。check_prereqs.py 会验证当前启用后端所需的环境变量。
需要多平台 TTS? 此前提供 9 种后端的 ttscn 组件技能已不再是此技能的依赖项。如果需要使用那些平台,请单独安装 Agents365-ai/ttsCN 并直接调用 — 此技能仅附带 edge + azure。
设计学习快捷方式:如果用户提供了参考视频/图片,或要求保存/列出/删除风格配置,请参阅 references/design-learning.md,而不是运行以下工作流。
执行模式
在工作流开始时检测自动模式(默认)还是交互模式 — 自动模式默认决策表和按请求覆盖设置的说明见 references/workflow-script.md。
重新生成现有视频
如果 videos/{name}/ 已存在,且用户正在修改已完成或制作中的视频,请复用该目录。不要启动新项目,也不要创建新的 videos/{newname}/。
根据实际变更选择最小范围的重新运行:
| 变更内容 | 重新运行 | 复用(无需重做) |
|---|---|---|
旁白脚本(podcast.txt) | 步骤 7(TTS)→ 步骤 8 预览 → 渲染+混音 | 主题调研 + 分节设计 |
| 仅视觉内容(组件、布局、颜色) | 步骤 8 预览 → 渲染+混音 | 音频(podcast_audio.wav / timing.json) |
| 仅背景音乐 | 重新混音 BGM | output.mp4(无需重新渲染) |
| 仅字幕 | 步骤 10.1 定稿 | output.mp4 / video_with_bgm.mp4 |
任何会改变观众看到或听到的内容的重新运行都必须重新进入步骤 8 的确认环节:应用变更,让 Studio 热重载,并等待新的明确“render 4K”指令 — 之前的确认不再有效。脚本变更会影响所有后续时间戳,因此务必通过 TTS 重新生成 timing.json — 切勿手动编辑。任何重新运行后,都要再次验证:
python3 ${SKILL_DIR}/scripts/verify_output.py videos/{name}/
工作流
正在迭代已完成的视频? 如果
videos/{name}/已存在,请参阅上文重新生成已有视频,了解最精简的重新运行流程——不要从第 1 步开始。
从第 1 步开始时,在 Agent 的跟踪器中为每一步创建一个任务。开始时标记为 in_progress,完成时标记为 completed。videos/{name}/ 中的文件是持久记录——如果流程中断,请检查该目录以确定从哪里继续。
| # | 步骤 | 输出 | 阶段文件 |
|---|---|---|---|
| 1 | 确定主题方向 | topic_definition.md | workflow-script.md |
| 2 | 调研主题 | topic_research.md | workflow-script.md |
| 3 | 设计 5-7 个章节 | (内存中) | workflow-script.md |
| 4 | 撰写旁白脚本 | podcast.txt | workflow-script.md |
| 4.5 | 发音预检(zh-CN) | phonemes.json | workflow-script.md |
| 5 | 规划并获取素材 | assets/manifest.json | workflow-assets.md |
| 6 | 生成缩略图(16:9 + 4:3) | thumbnail_*.png | workflow-production.md |
| 7 | 生成 TTS 音频 | podcast_audio.wav、timing.json | workflow-production.md |
| 8 | Remotion 合成 + Studio 预览 | — | workflow-production.md |
| 9 | 渲染 4K + 混入 BGM | output.mp4、video_with_bgm.mp4 | workflow-production.md |
| 10 | 发布信息 + 验证输出 | publish_info.md、final_video.mp4 | workflow-publish.md |
| 11 | 生成竖屏短视频(可选) | shorts/ | workflow-publish.md |
强制暂停点(上方粗体行):
- 第 8 步——Studio 审核。 必须启动
npx remotion studio并等待用户反馈,然后才能渲染。在用户明确确认(“render 4K” / “render final”)之前,绝不要渲染 4K。包含修改要求的回复不算确认——应用修改,让 Studio 热重载,然后再次询问。每一轮修改后,都必须获得新的明确确认,才能进入第 9 步。 - 第 10 步——
verify_output.py。 必须通过验证,才能宣布视频完成。退出代码为 0 表示通过;退出代码为 2 表示仍可发布,但存在警告。自动修复常见遗漏(如果缺少final_video.mp4,则创建该文件)。根据平台矩阵验证发布信息(标题、描述、标签、章节)——请在第 5.5 步和第 10.2 步生成发布信息。要获取机器可读输出,请添加--format json。
渲染前审计(建议)——在第 8 步之前:
python3 ${SKILL_DIR}/scripts/audit_beat_sync.py <Video.tsx> <timing.json>
标记与旁白时间偏差超过 1.5 秒的节拍。
自动模式:视觉自检。 在自动模式下运行(没有用户观看 Studio)时,请在询问是否确认渲染之前,先渲染 3-5 张关键帧静帧:
npx remotion still src/remotion/index.ts <CompositionId> videos/{name}/_review_001.png --public-dir videos/{name}/ --frame=<midpoint_frame>
选择以下时间点的画面:主标题(约在 10% 处)、内容密集章节的中点,以及片尾。查看静帧图像,并根据 design-guide.md 和 visual-taste.md 中的清单,对照实际渲染结果进行检查。在 4K 渲染前发现溢出、对比度和布局回归问题。审核后删除 _review_*.png。
验证检查点
| 步骤之后 | 检查项 |
|---|---|
| 7(TTS) | podcast_audio.wav 可播放 · timing.json 涵盖所有章节 · SRT 为 UTF-8 编码 |
| 9(渲染) | output.mp4 为 3840×2160 · 音画同步 · 无黑帧 |
| 10(验证) | verify_output.py 退出代码为 0(或为 2,且警告已审核) |
硬性规则
| 规则 | 要求 |
|---|---|
| 单个项目 | 用户的 Remotion 项目中,所有视频都放在 videos/{name}/ 下。切勿为每个视频创建新项目。 |
| 4K 输出 | 3840×2160(或竖屏 2160×3840),在 1920×1080 设计空间上使用 scale(2) 包装器 |
| 音频同步 | 音频(podcast_audio.wav + podcast_audio.srt)是主时钟。必须根据实际 TTS 输出生成 timing.json,不得手动估算。渲染前,最终视频时长必须与音频相差不超过 ±0.5s。参见 音频主时钟与同步。 |
| 缩略图 | 必须同时生成 16:9(1920×1080)和 4:3(1200×900)版本——参见 design-guide.md |
| 渲染前启动 Studio | 必须启动 remotion studio 进行审核。未经用户明确确认,切勿渲染 4K。调整反馈不等于确认——应用调整、热重载,然后再次询问。 |
--public-dir | 每条 Remotion 命令都使用 --public-dir videos/{name}/。所有输出文件(output.mp4、final_video.mp4、缩略图)都直接放入 videos/{name}/,绝不放入 out/ 或 dist/ 目录。 |
视觉最低要求(文字尺寸、内容宽度、安全区域、动画安全性)见 references/design-guide.md。必须在步骤 8 前加载。
音频主时钟与同步
基本规则
- 音频是主时钟。 每张幻灯片的开始时间、字幕、章节和动画节拍都根据
podcast_audio.wav和podcast_audio.srt推导。 - 根据 TTS 生成时间,而不是根据文本估算。 流程:
podcast.txt→generate_tts.py→podcast_audio.wav+podcast_audio.srt+timing.json→ 合成 → 渲染。 - 音频生成前,绝不手动编写
timing.json。 如果已有整理好的幻灯片,请运行align_timing_from_srt.py,根据实际 SRT 确定时间。 - 补偿 TransitionSeries 重叠。
TransitionSeries渲染的帧数为sum(section.duration_frames) - (N-1) * transitionFrames。按比例调整每个部分,确保渲染时长等于timing.total_frames。不要把所有重叠帧都塞进第一个部分。修正后的写法见templates/Video.tsx。
强制同步检查点
| 时间 | 检查项 |
|---|---|
| 步骤 7(TTS)后 | timing.json.total_duration 与 podcast_audio.wav 的时长相差不超过 ±0.5s |
| 渲染前 | Video.tsx 已根据转场重叠调整所有部分 |
| 渲染后 | final_video.mp4 的时长与 podcast_audio.wav 相差不超过 ±0.5s |
| 步骤 10(验证) | verify_output.py 以代码 0 退出,并显示音频/时间检查通过 |
如果任何检查点未通过,请停止。不要发布。
输出规格
| 参数 | 横屏(16:9) | 竖屏(9:16) |
|---|---|---|
| 分辨率 | 3840×2160(4K) | 2160×3840(4K) |
| 帧率 | 30 fps | 30 fps |
| 编码 | H.264,16Mbps | H.264,16Mbps |
| 音频 | AAC,192kbps | AAC,192kbps |
| 时长 | 1-15 分钟 | 60-90 秒(精选片段) |
单视频布局
project-root/ # Remotion project root
├── src/remotion/ # Remotion source (Root.tsx, compositions, index.ts)
├── videos/{video-name}/ # Per-video directory
│ ├── topic_definition.md # Step 1
│ ├── topic_research.md # Step 2
│ ├── podcast.txt # Step 4: narration script
│ ├── phonemes.json # Step 4.5: zh-CN pronunciation overrides
│ ├── assets/manifest.json # Step 5: per-section asset registry
│ ├── publish_info.md # Step 10: title/description/tags
│ ├── podcast_audio.wav # Step 7: TTS audio
│ ├── podcast_audio.srt # Step 7: subtitles
│ ├── timing.json # Step 7: timeline (drives animations)
│ ├── thumbnail_*.png # Step 6
│ ├── output.mp4 # Step 9: 4K render
│ ├── video_with_bgm.mp4 # Step 9: with BGM
│ ├── final_video.mp4 # Step 10: final output
│ └── bgm.mp3 # Background music
└── remotion.config.ts
每个视频的 --public-dir
每条 Remotion 命令都使用 --public-dir videos/{name}/——每个视频的素材都保留在各自的目录中,从而支持并行渲染:
npx remotion studio src/remotion/index.ts --public-dir videos/{name}/
npx remotion render ... videos/{name}/output.mp4 --public-dir videos/{name}/ --video-bitrate 16M
npx remotion still ... videos/{name}/thumbnail.png --public-dir videos/{name}/
命名规则
- 视频名称
{video-name}:小写英文,以连字符分隔(例如reference-manager-comparison) - 部分名称
{section}:小写英文,以下划线分隔,并与[SECTION:xxx]匹配 - 缩略图(必须同时提供 16:9 和 4:3):
thumbnail_remotion_16x9.png+thumbnail_remotion_4x3.png(AI 生成的缩略图使用_ai_前缀)
其他资源
按需加载 — 切勿一次性全部加载:
| 文件 | 加载时机 |
|---|---|
| references/workflow-script.md | 步骤 1-4(主题 → 脚本)以及执行模式(自动与交互) |
| references/natural-narration.md | 编写第 4 步脚本前加载 — 口语旁白的避免劣质内容规则(禁用清单、结构性特征、检查清单) |
| references/script-polish.md | 写完第 4 步初稿后加载 — 深度编辑工具包,包含 24 组中英文修改前后示例、证据边界、质量评估标准 |
| references/workflow-assets.md | 第 5 步,或用户提供图片/片段或想使用素材库/AI 媒体时 |
| references/workflow-assets.md | 某个部分需要超出组件库能力的数据图表/信息图动画(通过 Hyperframes 制作透明叠加层)时 |
| references/workflow-production.md | 步骤 5.5-9.5(起草发布信息 → 缩略图 → TTS → Remotion → 渲染 → 混合背景音乐) |
| references/workflow-publish.md | 步骤 10-11(发布信息、验证、短视频) |
| references/platform-matrix.md | 特定平台的行为(缩略图、章节、片尾、发布信息、短视频) |
| references/design-guide.md | 第 8 步前必须加载 — 视觉最低标准、排版、动画安全性 |
| references/visual-taste.md | 第 8 步前与 design-guide 一起加载 — 设计调节项、避免默认规则、视觉模式、章节节奏 |
| references/design-learning.md | 用户提供参考视频/图片,或管理风格配置时 |
| references/troubleshooting.md | 选择 Azure 语音/风格,或排查声音嘶哑/音频故障时 |
| references/troubleshooting.md | 出错、查找脚本/CLI,或用户询问偏好设置/背景音乐时 |
| templates/presets/kinetic-typography/ | 大胆的文字驱动预设(观点 / 论证 / 宣言类视频) |
所有脚本都可通过一个分发器调用 — 从 python3 ${SKILL_DIR}/scripts/cli.py --help 开始;完整路由和信封错误代码见:references/troubleshooting.md。
用户偏好
可变状态(user_prefs.json、phonemes.json)位于 ~/.video-podcast-maker/ — 不受技能更新影响。首次运行时会从技能目录自动迁移。运行“show preferences”以查看,或运行“set X Y”以更改。完整命令见:references/troubleshooting.md。
故障排除
有关错误、背景音乐选项、偏好学习和设计学习问题,请参阅 references/troubleshooting.md。