Video Generator Skill v2.0.0
自动化视频生成完整工作流程,将有序图片序列和对应旁白合成为同步的MP4视频。支持数据可视化图表动画、端到端全自动生成、统一异常处理。
⚠️ 关键原则(必读)
原则1:音画必须精确匹配
每张图片的旁白必须精确描述该图片的视觉内容,不能讲A图内容却配B图。
原则2:所有片段必须有相同的流结构
concat copy 模式要求所有输入文件有完全相同的流结构(都有video+audio,或都有video-only)。标题页也必须生成带静音AAC轨道的MP4。
原则3:图片完整显示,不裁切
使用 pad 而非 crop,等比缩放图片完整显示,黑边填充剩余区域。
功能概述
- 热点获取 - 自动从多个平台获取当前热门AI话题
- 图片准备 - 接收用户上传的有序图片序列
- 旁白生成 - 为每张图片撰写精确匹配其视觉内容的旁白文本
- 音频生成 - 使用 edge-tts 生成高质量旁白音频
- 视频合成 - 使用 FFmpeg 将图片和音频合成为标准MP4视频
- 标题页生成 - 使用PIL生成中文标题页图片(避免FFmpeg中文乱码)
- 数据可视化 - 将 Excel/CSV 数据生成图表动画视频(v2.0新增)
- 端到端生成 - 主题→脚本→分镜→图片→音频→视频全自动(v2.0新增)
- 异常处理 - 统一错误处理、重试机制、临时文件清理(v2.0新增)
何时使用此技能
当用户输入包含以下意图时,使用此技能:
- "帮我生成一个视频" / "制作教学视频"
- "把这些图片做成视频"
- "生成视频,图片是..."
- "热点视频" / "帮我找个热点话题做视频"
video generator/video制作- "检查" / "测试" / "bug" / "有问题" / "报错了" → 执行诊断流程
- "优化" / "改进" / "提升质量" → 执行视频质量优化流程
- "数据可视化" / "Excel图表" / "生成图表视频" → 使用
generate_chart_video.py - "全自动生成" / "从主题开始" → 使用
generate_full_video.py
【关键】自检与诊断流程
当用户提到"检查"、"测试"、"bug"、"报错"、"有问题"等关键词时,必须执行以下诊断流程!
诊断步骤
- 环境检查:运行
ffmpeg -version、python -c "import edge_tts"等 - 脚本语法检查:对所有 .py 脚本运行
python -m py_compile - 读取错误日志:读取
ERROR_LOG.md,检查是否有未修复的错误 - 生成诊断报告:输出 ✅/❌ 的具体结果
- 自动修复(如可能):按
ERROR_LOG.md记录的方法自动修复
常见诊断场景
| 用户说 | 应该做什么 |
|---|---|
| "检查测试看看是否有什么bug" | 执行完整诊断流程 |
| "生成视频时报错XXX" | 在 ERROR_LOG.md 中搜索相似错误 |
| "FFmpeg not found" | 运行 python scripts/install_ffmpeg.py |
| "视频没有声音" | 检查 edge-tts 是否安装 |
使用流程
步骤0:获取热点话题(可选)
在生成视频前,先帮助用户找到当前热门话题。
步骤1:收集需求 + 撰写旁白脚本
明确信息:
- 图片文件路径列表
- 旁白文本(必须精确匹配图片内容!)
- 语音偏好(默认:zh-CN-XiaoxiaoNeural)
- 输出路径
⚠️ 旁白撰写规范:
旁白必须严格描述当前图片的视觉内容。
步骤2:生成音频
使用 edge-tts 为每段旁白生成MP3音频。
步骤3:生成标题页图片(PIL)
⚠️ 不要用FFmpeg drawtext 渲染中文! 用PIL生成标题页图片。
步骤4:合成视频(黑屏转场方案)
推荐方案:每段图片+音频直接合成完整MP4,再拼接
此方案避免音频丢失问题。支持黑屏转场(0.3-0.5秒)。
步骤5:验证输出
检查生成的视频文件:
- ✅ 有 video 流(codec=h264)
- ✅ 有 audio 流(codec=aac)
- ✅ 音频时长 ≈ 视频时长
脚本选择指南
| 脚本 | 用途 | 何时使用 |
|---|---|---|
generate_video.py |
主脚本(v3.0) | 完整视频生成(推荐) |
generate_full_video.py |
端到端全自动生成 | 从主题开始,自动完成所有步骤 |
generate_chart_video.py |
数据可视化视频 | Excel/CSV → 图表动画视频 |
generate_subtitle.py |
字幕生成/烧录 | 单独生成或烧录字幕 |
auto_script.py |
AI 自动生成旁白 | 有图片但无旁白文本时 |
fetch_hot_topics.py |
获取热点话题 | 需要选题灵感时 |
install_ffmpeg.py |
FFmpeg 安装/诊断 | 首次使用/环境诊断 |
error_handler.py |
统一异常处理模块 | 所有脚本共用(v2.0新增) |
常见问题 FAQ
Q1: 报错 "FFmpeg not found" 怎么办?
A: 运行:python scripts/install_ffmpeg.py --check 诊断环境。
Q2: 生成的视频没有声音?
A: 检查:edge-tts 是否安装、audio/ 目录是否有音频文件。
Q3: 如何诊断 FFmpeg 环境?
A: 运行:python scripts/install_ffmpeg.py --check
Q4: 如何永久添加 FFmpeg 到 PATH?
A: 运行:python scripts/install_ffmpeg.py --add-to-path
Q5: 如何生成数据可视化视频?
A: 运行:python scripts/generate_chart_video.py --input data.xlsx --chart bar
Q6: 如何全自动生成视频(从主题开始)?
A: 运行:python scripts/generate_full_video.py --topic "AI工作流" --num-segments 5
数据可视化视频生成(generate_chart_video.py)v1.0
将 Excel / CSV 数据自动生成图表动画视频。
依赖安装
pip install pandas matplotlib openpyxl
使用方式
# 柱状图
python scripts/generate_chart_video.py --input data.xlsx --chart bar --x-col 产品名 --y-col 销量 --output output/bar.mp4
# 折线图
python scripts/generate_chart_video.py --input data.csv --chart line --x-col 日期 --y-col 销售额 --output output/line.mp4
# 饼图
python scripts/generate_chart_video.py --input data.xlsx --chart pie --label-col 渠道 --value-col 占比 --output output/pie.mp4
支持的图表类型
| 类型 | 参数值 | 适用场景 |
|---|---|---|
| 柱状图(动画) | bar |
销量对比、数据排名 |
| 折线图(动画) | line |
趋势分析、时间序列 |
| 饼图(动画) | pie |
占比分析、份额分布 |
| 条形竞赛图 | bar_race |
排名变化、竞赛展示 |
端到端视频生成(generate_full_video.py)v1.1
全自动工作流:主题 → 脚本 → 分镜 → 图片 → 音频 → 视频。
使用方式
# 模式A:全自动(--topic)
python scripts/generate_full_video.py --topic "AI自动化工作流" --num-segments 5 --output output/ai_video.mp4
# 模式B:已有图片+音频,直接合成
python scripts/generate_full_video.py --images-dir images --audio-dir audio --output output/my_video.mp4
参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--topic |
视频主题(自动生成脚本+图片+音频+视频) | - |
--num-segments |
片段数量 | 5 |
--output |
输出视频路径 | output/full_video.mp4 |
--trans-duration |
黑屏转场时长(秒),0=无转场 | 0.5 |
--ffmpeg-path |
手动指定 ffmpeg.exe 路径 | - |
异常处理增强(v2.0)
video-generator v2.0 引入了统一异常处理架构。
架构概览
scripts/
├── error_handler.py ← 统一异常处理模块(所有脚本共用)
├── generate_video.py ← 已接入全局异常处理
├── generate_full_video.py ← 已接入全局异常处理
└── generate_chart_video.py ← 已接入全局异常处理
error_handler.py 功能清单
| 功能 | 说明 |
|---|---|
ErrCode |
结构化错误码(20+ 种) |
VideoGeneratorLogger |
日志写入(带时间戳+严重程度) |
retry_on_fail |
重试装饰器(指数退避) |
TempFileCleaner |
临时文件自动清理(context manager) |
validate_file_exists |
输入文件校验 |
print_error_report |
用户友好错误报告 |
全局异常处理
每个脚本的入口都包裹了全局 try/except,确保任何未捕获的异常都会:
1. 打印用户友好的错误报告(含排查步骤)
2. 将完整 traceback 写入 output/error.log
3. 以正确退出码退出
更新日志
v2.0.0 (2026-06-26)
- ✅ 新增 error_handler.py 统一异常处理模块
- ✅ 所有脚本接入全局异常处理(未捕获异常 → 友好报告 + 日志)
- ✅ 新增重试机制(网络请求自动重试 3 次,指数退避)
- ✅ 新增临时文件自动清理(TempFileCleaner context manager)
- ✅ 新增输入校验(validate_file_exists() / validate_ffmpeg() 等)
- ✅ 错误码系统化(20+ 种错误码,含中文排查建议)
- ✅ 日志增强(所有异常写入 output/error.log,含 traceback)
- ✅ install_ffmpeg.py 升级至 v2.0(--check / --add-to-path / --force)
- ✅ 新增触发词:检查、测试、bug(触发诊断流程)
v1.8.0 (2026-06-25)
- ✅ 新增数据可视化视频生成(generate_chart_video.py)
- ✅ 支持 4 种图表类型:柱状图、折线图、饼图、条形竞赛图
- ✅ 支持 Excel / CSV 数据读取
- ✅ 支持旁白自动生成(edge-tts)
- ✅ 新增触发词:短视频制作、抖音视频、TikTok视频、数据可视化视频
v1.7.0 (2026-06-25)
- ✅ 修复 compose_video() 视频合成失败
- ✅ 新增 --ffmpeg-path 参数
- ✅ 转场优化:trans_duration=0 时结尾不加黑屏转场
v1.6.0 (2026-06-25)
- ✅ 修复最后图片显示不全bug
- ✅ 完整错误码系统(ERR_XXX)
- ✅ 自动检测 FFmpeg 路径(跨平台)
v1.5.0 (2026-06-24)
- ✅ 转场效果改用黑屏帧方案
v1.0.0 (2026-06-21)
- 初始版本
技能维护者: WorkBuddy AI
最后更新: 2026-06-26