mcpField
V
video-podcast-maker

video-podcast-maker

github.com/agents365-ai创意与媒体972.7k 次安装2 周前更新
代码仓库

关于 video-podcast-maker

video-podcast-maker 是面向编码 Agent 的技能,指导使用 Remotion、TTS 和 FFmpeg 制作 Bilibili 4K 横屏知识视频的 11 步流程。它强调以音频为基准生成时间信息、渲染前审核和输出验证。

主要功能

  1. 0111 步视频制作流程
  2. 02主题调研与旁白撰写
  3. 03生成 TTS 音频和时间信息
  4. 04Remotion 预览与 4K 渲染
  5. 05输出验证与可选短视频

适用场景

  1. 01根据主题制作 Bilibili 知识视频
  2. 02修改旁白、画面、音乐或字幕
  3. 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.yaml
AGENTS.md
LICENSE
package.json
phonemes.json
phonemes.template.json
prefs_schema.json
requirements.txt
references/
design-guide.md
design-learning.md
natural-narration.md
platform-matrix.md
script-polish.md
troubleshooting.md
visual-taste.md
workflow-assets.md
workflow-production.md
workflow-publish.md
workflow-script.md
zh-polyphones.md
scripts/
_state.py
align_timing_from_srt.py
assets.py
audit_beat_sync.py
audit_components.py
check_prereqs.py
cli_envelope.py
cli.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。

目录


初始化

将 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)
仅背景音乐重新混音 BGMoutput.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.mdworkflow-script.md
2调研主题topic_research.mdworkflow-script.md
3设计 5-7 个章节(内存中)workflow-script.md
4撰写旁白脚本podcast.txtworkflow-script.md
4.5发音预检(zh-CN)phonemes.jsonworkflow-script.md
5规划并获取素材assets/manifest.jsonworkflow-assets.md
6生成缩略图(16:9 + 4:3)thumbnail_*.pngworkflow-production.md
7生成 TTS 音频podcast_audio.wav、timing.jsonworkflow-production.md
8Remotion 合成 + Studio 预览—workflow-production.md
9渲染 4K + 混入 BGMoutput.mp4、video_with_bgm.mp4workflow-production.md
10发布信息 + 验证输出publish_info.md、final_video.mp4workflow-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 前加载。

音频主时钟与同步

基本规则
  1. 音频是主时钟。 每张幻灯片的开始时间、字幕、章节和动画节拍都根据 podcast_audio.wav 和 podcast_audio.srt 推导。
  2. 根据 TTS 生成时间,而不是根据文本估算。 流程:podcast.txt → generate_tts.py → podcast_audio.wav + podcast_audio.srt + timing.json → 合成 → 渲染。
  3. 音频生成前,绝不手动编写 timing.json。 如果已有整理好的幻灯片,请运行 align_timing_from_srt.py,根据实际 SRT 确定时间。
  4. 补偿 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 fps30 fps
编码H.264,16MbpsH.264,16Mbps
音频AAC,192kbpsAAC,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。

评论

支持 Markdown