mcpField
V
video-podcast-maker

video-podcast-maker

github.com/agents365-ai创意与媒体1.7k162 次安装7 周前更新
代码仓库

关于 video-podcast-maker

面向编码 Agent 的视频播客制作技能,可将主题转为 Bilibili 横屏 4K 知识视频。它按阶段编排选题、脚本、配音、Remotion 合成与校验,并要求渲染前进行预览确认。

主要功能

  1. 0111 步视频制作流程
  2. 02edge 与 Azure 配音
  3. 03Remotion 预览及 4K 渲染
  4. 04音频驱动时间与字幕同步
  5. 05输出校验与竖屏短视频

适用场景

  1. 01制作 Bilibili 横屏知识视频
  2. 02修改脚本后重新生成配音与时间轴
  3. 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.yaml
AGENTS.md
LICENSE
package.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
components.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。

目录


初始化

将 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)
仅背景音乐重新混音 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