| name | book-sharing-video |
| description | 将书籍内容转化为温暖书香风的竖屏读书分享视频(1080x1920)和适合传播的公众号文章。输入可以是书评/读书笔记文档,也可以是一本书的名字。输出包括:暖色调读书分享幻灯片、自然语速的播客音频、精准对齐的字幕、合成 MP4 视频,以及一篇抓住要点、适合公众号传播的 Markdown 文章。当用户提到「读书分享」「书评视频」「读书笔记视频」「把这本书做成视频」「读书推荐」「好书分享」「书单推荐视频」,或者任何将书籍内容转化为视频/音频/公众号文章的需求时,都应该使用这个技能。即使用户只是说「帮我分享一下这本书」或「做个读书分享」,也要触发。 |
读书分享视频 + 公众号文章生成流水线
这个技能将一本书的内容(来自读书笔记、书评文档或书名)转化为:
- 温暖书香风竖屏幻灯片(1080×1920,暖色调米色/棕色/橙色)
- 问题驱动式播客音频(默认 1.25x 语速,用好问题引发思考,深入浅出地解答,给听众豁然开朗感)
- 精准对齐字幕 + 合成视频(无水印,默认不叠加头像卡片)
- 公众号传播文章(启发式问题结构,Markdown 格式)
核心解读范式:问题驱动(Question-Driven Paradigm)
无论是视频播客脚本、公众号文章还是幻灯片小标题,坚决拒绝总结性、陈述式或宣讲式的干巴巴汇报。
核心公式
好问题 / 认识误区 / 现实反差(引发强烈好奇与思考)
↓
深入浅出的机制拆解(形象类比与逻辑推演)
↓
豁然开朗的顿悟时刻(核心洞见与穿透力金句)
与原 content-to-podcast-video 技能的核心差异
| 维度 | content-to-podcast-video | book-sharing-video |
|---|
| 视觉风格 | 暗色赛博朋克科技感 | 温暖书香风(米色底、棕/橙点缀、纸张纹理) |
| 封面 | 渐变深色 + 大字标题 | 书名 + 作者 + 暖光装饰,像一张精致的读书卡片 |
| 语速 | 1.25x 加速 | 1.25x 加速(默认 rate="+25%",可按需微调) |
| 解读方式 | 信息总结、陈述输出 | 问题驱动(设疑引发思考 → 拆解 → 豁然开朗) |
| 头像水印 | 默认开启 | 默认关闭(--avatar none),可选开启 |
| 公众号文章 | 无 | 自动生成 Markdown 公众号文章 |
Pipeline 架构与步骤
Step 0: 内容提炼(问题化重构)
提炼书本内容时,将其重构为 3-6 个核心追问:
- 痛点问题/现实矛盾是什么?
- 大众普遍的认知误区是什么?
- 书中揭示的底层运行逻辑是什么?(解答)
- 让人产生“原来如此”感受的顿悟金句是什么?
Step 1: 温暖书香风幻灯片生成(1080×1920)
幻灯片整体设计语言:温暖、文艺、有书卷气。
- 封面幻灯片(
1.png):
- 米色/暖白底色,带有纸张纹理感
- 书名居中,暖棕色系自适应字号(1行120px / 2行90px / 3行70px)
- 作者名称与一句话启发式推荐语
- 内容幻灯片(
2.png, 3.png, ...):
- 小标题采用追问式问题(例如:「为什么土地能凭空变出万亿建设资金?」)
- 卡片突出展示拆解逻辑与顿悟金句(
<span class='quote'>)
- 底部预留区:保持
padding-bottom: 300px 留给字幕
- 渲染:使用 Headless Chrome(
--window-size=1080,1920 --screenshot=X.png)
Step 2: 播客脚本 & 语音合成
脚本风格——问题驱动与解惑体验:
幻灯片标记:在 script.txt 中加入 [SLIDE: 1], [SLIDE: 2] 标记。
⚠️ 硬性约束(1:1 对应):[SLIDE: N] 段落的数量与编号必须与幻灯片张数(--slides N)严格一致。例如渲染了 7 张幻灯片(1.png~7.png),脚本就必须有 [SLIDE: 1] 到 [SLIDE: 7] 共 7 段。
- 段落数 < 幻灯片数 → 多余幻灯片没有解说,只能分到 5 秒占位画面(脚本会自动为占位画面补静音,使其完整显示而非被
-shortest 截掉);
- 段落数 > 幻灯片数 → 多余段落有解说却无对应画面。
build_video.py 检测到不匹配时会打印明确警告(⚠️ WARNING: … [SLIDE:] section …),务必按警告修正脚本后再重跑。
语音选择:
- 人文/思想/哲学:
zh-CN-YunjianNeural(沉稳男声)
- 商业/管理/自律:
zh-CN-YunxiNeural(自然男声)
- 文学/故事/心理/综合:
zh-CN-XiaoxiaoNeural(温暖女声,默认推荐)
音频生成:使用 edge_tts,默认 1.25x 语速(rate="+25%")。
Step 3: 字幕对齐与 ASS 格式化
- SentenceBoundary 精准对齐
- 每行 14-16 字,最多 3 行(
\N)
- ASS 样式:
Fontsize: 42, 暖色半透明底框(BackColour: &HA0282018)
- 自动修复句首开括号:edge_tts 的 SentenceBoundary 事件会丢弃句首的
《 「 ( —— 等开括号(如 《反对本本主义》 只剩 反对本本主义》),build_video.py 会从原始句子回溯补回,保证字幕与音频一致
Step 3.5: 头像卡片叠加
- 默认关闭:
--avatar none
- 可选开启:传入
--avatar <path>
Step 4: 视频合成
- 画面与音频同步展示,非循环
- FFmpeg 编码(
videotoolbox / libx264),无水印
Step 5: 公众号文章生成(问题驱动模式)
自动生成 article.md:
- 标题:启发思考/悬疑/反直觉标题
- 小标题:全篇采用追问式问题小标题(例如:
01 | 为什么地方政府不甘于只做旁观的裁判?)
- 正文推进:
抛出认知误区/痛点问题 → 拆解现实运行逻辑 → 给出“原来如此”的顿悟点
- 语言风格:富有对话感、深入浅出、多用短句。
自动化脚本
位于 scripts/ 目录:
generate_slides.py:渲染 1080×1920 暖色调书香风幻灯片(root/容器环境自动加 --no-sandbox 重试)
build_video.py:TTS 音频(默认 1.25x 语速)+ ASS 字幕 + MP4 视频合成
使用指引
- 读取输入(读书笔记/书名)
- 用「问题驱动」逻辑重构内容为 3-6 个核心追问
- 撰写幻灯片 Spec JSON(追问标题 + 顿悟金句)
- 撰写播客脚本
script.txt(带 [SLIDE: N],段数 = 幻灯片张数,编号从 1 连续递增)与公众号文章 article.md
- 执行生成脚本(
--slides <N> 必须与 Spec 中幻灯片张数、script.txt 中 [SLIDE:] 段数三者一致):
python3 scripts/generate_slides.py --dir <d> --spec <spec.json>
python3 scripts/build_video.py --script-file <script.txt> --dir <d> --slides <N> --topic literature --avatar none
- 检查产出文件(
1.png~N.png, podcast.mp3, podcast.ass, output.mp4, article.md),并留意终端输出中是否有 ⚠️ WARNING 幻灯片数不匹配警告
已知问题与自动规避(脚本已内置处理,无需手动干预)
| 问题 | 现象 | 脚本处理 |
|---|
| root/容器环境 Chrome 无沙箱 | 幻灯片渲染失败(Running as root without --no-sandbox is not supported) | generate_slides.py 自动重试加 --no-sandbox --disable-dev-shm-usage --disable-gpu |
| edge_tts 句边界丢句首开括号 | 字幕缺句首 《 「 ((音频正常) | build_video.py 从源句回溯补回(restore_leading_punctuation) |
ffmpeg concat + -shortest 死锁 | 视频渲染卡在结尾不结束 | 改用 -t <音频时长> 精确裁剪,音画同步且不会挂起 |
| 非 macOS 平台尝试 videotoolbox | Linux/Windows 上硬编失败日志 | 仅 macOS 走硬件编码,其他平台直接 libx264 |
| ffmpeg 意外挂起 | 渲染进程无限等待 | 900s 超时保护并给出明确错误 |