关于 video-podcast-maker
video-podcast-maker 是面向编码 Agent 的技能,指导使用 Remotion、TTS 和 FFmpeg 制作 Bilibili 4K 横屏知识视频的 11 步流程。它强调以音频为基准生成时间信息、渲染前审核和输出验证。
主要功能
- 0111 步视频制作流程
- 02主题调研与旁白撰写
- 03生成 TTS 音频和时间信息
- 04Remotion 预览与 4K 渲染
- 05输出验证与可选短视频
适用场景
- 01根据主题制作 Bilibili 知识视频
- 02修改旁白、画面、音乐或字幕
- 03发布前检查音视频同步
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agents365-ai/ 365-skills --skill video-podcast-maker安装后在 Claude Code 中输入/video-podcast-maker确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.example.python-version.skillspector-baseline.yamlAGENTS.mdLICENSEpackage.jsonphonemes.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.py详细介绍
必需:先加载 Remotion 最佳实践
此技能依赖
remotion-best-practices。
- Pi:读取已加载的
remotion-best-practices技能(列于可用技能中)。- Claude Code:继续操作前,调用
remotion-best-practices技能/工具。尚未安装?请从 remotion-dev/skills 获取(文档:remotion.dev/docs/ai/skills)。
如果尚未安装
remotion-best-practices,最低限度的规则如下:必须能使用 chromium,始终使用<Scale4K>包裹 4K 内容,使用带有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"
更新通过插件市场进行(/plugin update);直接通过 git 克隆安装的版本则按照 README 使用 git pull 更新。此技能不会检查更新。
先决条件检查失败 — 请参阅 README.md 了解设置方法。检查会根据后端确定所需变量(解析顺序为 TTS_BACKEND 环境变量 → user_prefs.json 中的 global.tts.backend → 默认值 edge),因此只会验证当前后端所需的环境变量。
在新项目中制作第一个视频? 优先复用已安装 node_modules/ 的现有 Remotion 项目 — 创建全新项目需要下载约 2.2 GB 的 npm 包,以及一个 90 MB 的 Chrome 无头 shell(每个项目只需下载一次)。如果用户有之前视频使用的项目,请使用该项目。如果必须新建项目,请在后台运行 npm install,同时执行步骤 1-4(主题研究和脚本编写)。
所有渲染内容都放在 videos/{name}/ 下 — 每个 output.mp4、final_video.mp4 和 thumbnail_*.png 都直接放入对应的视频目录。切勿渲染到 out/ 或 dist/ 目录;使用 --public-dir videos/{name}/ 约定可确保所有内容都集中在同一目录中。
TTS 引擎 — 所有 11 个后端(TTS_BACKEND=edge|azure|cosyvoice|doubao|tencent|baidu|minimax|xunfei|elevenlabs|openai|google)都通过 ttscn 组件技能进行合成,该技能为必需项:请将其安装到 ~/.claude/skills/ttscn,或将 TTSCN_HOME 指向其根目录(Agents365-ai/ttsCN)。每个后端仍只需要配置其自身的 API 密钥(Edge 不需要密钥);check_prereqs.py 会同时验证安装情况和密钥。
Pi 用户: Pi 未内置
ttscn— 请将Agents365-ai/ttsCN安装为 Pi 技能(会自动检测其skills/ttscn/布局),或设置TTSCN_HOME;check_prereqs.py会在 TTS 合成前验证安装情况。
设计学习快捷方式:如果用户提供了参考视频/图片,或要求保存/列出/删除样式配置文件,请参阅 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。