Picture Book Video
/install picture-book-video
绘本故事视频 (Picture Book Video)
将绘本故事脚本 → 中英文双语视频(带字幕+旁白)
核心流程:
脚本解析 → 分镜图生成 → 画面合成 → 串联 → TTS旁白 → ASS字幕 → 最终视频
(LLM) (ComfyUI) (ffmpeg) (ffmpeg) (EdgeTTS) (脚本) (ffmpeg)
Phase 0 Phase 1 Phase 2 Phase 2 Phase 3 Phase 3 Phase 4
执行纪律
- Phase 分隔 — Phase 0-1 由 LLM 驱动(内容决策),Phase 2-4 由脚本驱动(技术合成)
- BLOCKING 步骤 — Phase 0(脚本评估)和 Phase 1(分镜方案确认)⛔ 必须等待用户响应
- 禁止跳过确认 — 未经 Phase 1 用户确认,不得调用管线脚本
- 脚本做技术,LLM 做内容 — 脚本不判断风格、不改写脚本、不做内容决策
- 串行执行 — Phase 必须按顺序执行,不得跳跃
- 双语输出 — 每个故事必须生成中文 + 英文两个版本
Phase 0: 脚本评估
🚧 GATE: 用户提供了故事脚本
0.1 扫描输入
检查用户是否提供了:
- 故事脚本(必需)
- 合集名称(可选)
- 序列号(可选,如 S02E01)
- 合集描述(可选)
0.2 完整性评分
| 材料 | 必需 | 评分规则 |
|---|---|---|
| 故事脚本 | ✅ 必需 | 无则直接报错退出 |
| 合集名称 | ❌ 可选 | 无则使用默认"琪琪的魔法故事屋" |
| 序列号 | ❌ 可选 | 无则自动生成 |
| 合集描述 | ❌ 可选 | 无则留空 |
0.3 交互策略
脚本完整 → 进入 Phase 1
脚本不完整 → ⛔ BLOCKING,提示用户补充
0.4 创建项目目录
PROJECT_NAME="picture-book-$(date +%Y%m%d)-\x3Cshort-desc>"
PROJECT_DIR="\x3Cworkspace>/project/${PROJECT_NAME}"
mkdir -p "${PROJECT_DIR}/input/"
mkdir -p "${PROJECT_DIR}/scenes/"
mkdir -p "${PROJECT_DIR}/output/"
mkdir -p "${PROJECT_DIR}/.temp/"
# 拷贝脚本到项目目录
cp \x3Cscript_file> "${PROJECT_DIR}/input/"
Phase 1: 分镜方案
🚧 GATE: 脚本评估通过
1.1 解析故事脚本
LLM 读取故事脚本,解析为分镜结构。每个分镜包含:
- 场景编号
- 旁白文本
- 画面描述(用于 ComfyUI 生成图片)
- 预计时长
输出格式:
# 分镜方案
| 场景 | 旁白 | 画面描述 | 预计时长 |
|------|------|----------|----------|
| 1 | ... | ... | ...s |
...
1.2 风格确定
默认风格:蜡笔儿童手绘风格
LLM 向用户确认:
根据故事内容,推荐画面风格:
[1] 蜡笔儿童手绘(默认)
[2] 水彩风格
[3] 剪纸风格
请确认或自选。
1.3 生成 ComfyUI 提示词
为每个场景生成 Flux 文生图提示词,遵循风格规范。
1.4 保存分镜方案
生成 \x3CPROJECT_DIR>/scene_plan.md 和 \x3CPROJECT_DIR>/scene_prompts.json
1.5 方案确认
⛔ BLOCKING — 向用户展示分镜方案,等待确认:
请确认:
1. 确认生成 → 进入 Phase 2
2. 修改第X场景 → 重新生成 → 再次确认
Phase 2: 画面生成
🚧 GATE: Phase 1 用户已确认
2.1 生成分镜图片
使用 ComfyUI 技能生成每个场景的图片:
python3 \x3CSKILL_DIR>/scripts/generate_scenes.py \
--prompts "\x3CPROJECT_DIR>/scene_prompts.json" \
--output-dir "\x3CPROJECT_DIR>/scenes/" \
--style "crayon"
2.2 生成封面
python3 \x3CSKILL_DIR>/scripts/stage_cover.py \
--output "\x3CPROJECT_DIR>/scenes/cover.png" \
--title "\x3C标题>" \
--subtitle "\x3C合集名>" \
--episode-id "\x3C序列号>" \
--brand "琪琪的魔法故事屋" \
--qiqi "~/.openclaw/workspace/characters/qiqi_default.png" \
--width 1920 --height 1080
2.3 画面验证
检查所有场景图片是否生成成功,分辨率是否为 1920x1080。
Phase 3: 音频与字幕
🚧 GATE: Phase 2 完成
3.1 生成中文 TTS
python3 \x3CSKILL_DIR>/scripts/tts.py \
--text "\x3C中文旁白全文>" \
--output "\x3CPROJECT_DIR>/narration_cn.mp3" \
--srt "\x3CPROJECT_DIR>/narration_cn.srt" \
--voice zh-CN-XiaoyiNeural \
--rate=-15%
3.2 生成英文 TTS
python3 \x3CSKILL_DIR>/scripts/tts.py \
--text "\x3C英文旁白全文>" \
--output "\x3CPROJECT_DIR>/narration_en.mp3" \
--srt "\x3CPROJECT_DIR>/narration_en.srt" \
--voice en-US-JennyNeural \
--rate=-15%
3.3 生成中文 ASS 字幕
python3 \x3CSKILL_DIR>/scripts/srt_to_ass.py \
--srt "\x3CPROJECT_DIR>/narration_cn.srt" \
--output "\x3CPROJECT_DIR>/subtitles_cn.ass" \
--font-size 80
3.4 生成英文 ASS 字幕
python3 \x3CSKILL_DIR>/scripts/srt_to_ass.py \
--srt "\x3CPROJECT_DIR>/narration_en.srt" \
--output "\x3CPROJECT_DIR>/subtitles_en.ass" \
--font-size 80
Phase 4: 视频合成
🚧 GATE: Phase 3 完成
4.1 运行完整管线
# 中文版
python3 \x3CSKILL_DIR>/scripts/pipeline.py \
--scenes-dir "\x3CPROJECT_DIR>/scenes/" \
--audio "\x3CPROJECT_DIR>/narration_cn.mp3" \
--ass "\x3CPROJECT_DIR>/subtitles_cn.ass" \
--output "\x3CPROJECT_DIR>/output/\x3Cepisode_id>_cn.mp4" \
--title "\x3C标题>" \
--subtitle "\x3C合集名>" \
--episode-id "\x3C序列号>" \
--brand "琪琪的魔法故事屋" \
--qiqi "~/.openclaw/workspace/characters/qiqi_default.png" \
--cover-duration 4.0 \
--fade-duration 0.8
# 英文版
python3 \x3CSKILL_DIR>/scripts/pipeline.py \
--scenes-dir "\x3CPROJECT_DIR>/scenes/" \
--audio "\x3CPROJECT_DIR>/narration_en.mp3" \
--ass "\x3CPROJECT_DIR>/subtitles_en.ass" \
--output "\x3CPROJECT_DIR>/output/\x3Cepisode_id>_en.mp4" \
--title "\x3C英文标题>" \
--subtitle "\x3C英文合集名>" \
--episode-id "\x3C序列号>" \
--brand "琪琪的魔法故事屋" \
--qiqi "~/.openclaw/workspace/characters/qiqi_default.png" \
--cover-duration 4.0 \
--fade-duration 0.8
4.2 生成抖音发布描述
# 抖音发布描述
## 中文版
- 标题:{中文标题}|{合集名}
- 描述:{故事简介}
- 话题:#儿童故事 #{合集名} #睡前故事 #绘本动画
## 英文版
- 标题:{English Title}|{English Series}
- 描述:{English synopsis}
- 话题:#英语启蒙 #磨耳朵英语 #{合集名} #儿童英语
4.3 质量验证
检查:
- 视频文件存在且 > 10MB
- H.264 + AAC 编码
- 1920×1080 分辨率
- 时长与音频匹配
- 字幕完整显示
抖音发布
视频生成后,使用 douyin-browser-publish 技能发布:
# 中文版
使用 douyin-browser-publish 技能发布:
- 视频:\x3CPROJECT_DIR>/output/\x3Cepisode_id>_cn.mp4
- 标题:{中文标题}|{合集名}
- 话题:#儿童故事 #{合集名} #睡前故事 #绘本动画
# 英文版
使用 douyin-browser-publish 技能发布:
- 视频:\x3CPROJECT_DIR>/output/\x3Cepisode_id>_en.mp4
- 标题:{English Title}|{English Series}
- 话题:#英语启蒙 #磨耳朵英语 #{合集名} #儿童英语
🛠️ 依赖要求
# 必需
python3 --version # 3.8+
ffmpeg -version # 5.0+
edge-tts --version # 7.0+
# ComfyUI(文生图)
cd ~/ComfyUI && ~/comfyui-venv/bin/python main.py --listen 127.0.0.1 --port 8188
# 琪琪角色图
~/.openclaw/workspace/characters/qiqi_default.png
️ 故障排除
| 问题 | 解决 |
|---|---|
| ComfyUI 未启动 | cd ~/ComfyUI && LD_LIBRARY_PATH=~/comfyui-venv/lib/python3.12/site-packages/nvidia/cuda_runtime/lib:$LD_LIBRARY_PATH ~/comfyui-venv/bin/python main.py --listen 127.0.0.1 --port 8188 |
| TTS 失败 | 检查网络;文本超长时分段合成 |
| 字幕截断 | 检查 srt_to_ass.py 的 max_chars 设置(默认 24) |
| 视频合成失败 | 检查 ffmpeg 版本;检查场景图片存在 |
📁 输出文件
每个故事生成后,项目目录包含:
\x3CPROJECT_DIR>/
├── input/
│ └── \x3Cscript_file> # 原始脚本
├── scenes/
│ ├── cover.png # 封面(含琪琪角色)
│ ├── scene_01.png # 场景图
│ ├── scene_02.png
│ └── ...
── narration_cn.mp3 # 中文旁白
├── narration_cn.srt # 中文 SRT
├── subtitles_cn.ass # 中文 ASS 字幕
── narration_en.mp3 # 英文旁白
├── narration_en.srt # 英文 SRT
├── subtitles_en.ass # 英文 ASS 字幕
├── output/
│ ├── \x3Cepisode_id>_cn.mp4 # 中文视频
│ └── \x3Cepisode_id>_en.mp4 # 英文视频
── scene_plan.md # 分镜方案
├── scene_prompts.json # ComfyUI 提示词
└── douyin_publish.md # 抖音发布描述
🔗 相关技能
- comfyui-image-video: ComfyUI 文生图/视频生成
- tts-cosyvoice: Edge TTS 语音合成
- douyin-browser-publish: 抖音视频发布
- keynote-video: PPT 转视频
版本: v1.0 | 基于 琪琪OPC 项目管线 | 参考 keynote-video 架构
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install picture-book-video - 安装完成后,直接呼叫该 Skill 的名称或使用
/picture-book-video触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Picture Book Video 是什么?
绘本故事脚本 → 视频 mp4(中英文双语版本)。 自动完成:分镜图生成 → 静态画面/动画 → 串联 → TTS旁白 → ASS字幕 → 最终合成。 输出中英文两个版本,附带抖音发布所需的标题/描述/话题。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 52 次。
如何安装 Picture Book Video?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install picture-book-video」即可一键安装,无需额外配置。
Picture Book Video 是免费的吗?
是的,Picture Book Video 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Picture Book Video 支持哪些平台?
Picture Book Video 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Picture Book Video?
由 vincentlau2046-sudo(@vincentlau2046-sudo)开发并维护,当前版本 v1.0.0。