| 你要做的书视频 | 用哪个 |
|---|---|
| 竖屏短视频:金句拆书、图书号矩阵、批量生产(本 skill) | 本 skill |
| 横屏长视频:3 分钟精读解说 / 20-30 分钟书单号 | book-video-generator |
| 只要矩阵治理骨架、不做内容生产 | book-video-factory(能力已被本 skill 包含) |
已废弃、不要单独触发:hsf-shipintuiguang(金句三段式与 OCR 喂料已并入本 skill)。
把「一次性的视频制作」变成「可移动、可复用的账号矩阵工作区」,同时内置一套已验证的金句拆书成片引擎,让矩阵里的每条视频都带拆书级文案质量 + 高清画面 + 对齐字幕。
完全独立:本 skill 内置完整引擎(金句三段式写稿法 + 黄金 8 镜 + 内联合成引擎 compose_engine.py + 片尾金句卡 + 质量基线)与矩阵管理能力,不依赖任何其他 skill,可单独部署、换机器运行。
workspace.yaml、account.yaml、book.yaml、日志或导出清单。.env.local 读取;不得回显、复制到模板或提交到版本库。references/写稿规范.md)。hsf-book-video-workspace。即使模板或脚本不可用,也必须能按下面的结构直接创建:
hsf-book-video-workspace/
├── workspace.yaml
├── .env.local
├── .gitignore
└── accounts/
└── <account-id>/
├── account.yaml
├── production.csv
├── shared/
│ ├── intro/
│ ├── bgm/
│ ├── voice-reference/
…(完整代码见技能源码)
最小账号配置必须覆盖这些边界:
account_id: account-01
platform: xiaohongshu
video:
width: 1080
height: 1920
target_duration_seconds: 40
intro: ""
opening:
title_format: "《{book_title}》"
intro_to_main_transition:
type: glitch
duration_seconds: 0.35
…(完整代码见技能源码)
读书/知识类账号默认横屏 1920×1080(hsf 引擎的成片画幅),口播带货类再考虑竖屏 9:16。详见 [账号配置](references/account-config.md)。
发生冲突时严格按以下顺序取值:
book.yaml 的临时覆盖项。account.yaml 的长期规则。workspace.yaml 的工具选择。用户确认某项以后都要沿用时,更新账号配置;只影响当前书时,写入 book.yaml。
.gitignore,确保 .env.local 被忽略。shared/ 目录,再在配置中记录相对路径。workspace.yaml 或 account.yaml。默认渲染器与 TTS = 本 skill 自带 hsf 引擎(见下),无需额外配置 key。如果 Python 可用,可从 Skill 根目录运行可选脚本:
python scripts/workspace.py init --root ./hsf-book-video-workspace
python scripts/workspace.py add-account --root ./hsf-book-video-workspace --id account-01
python scripts/workspace.py validate --root ./hsf-book-video-workspace
没有 Python 时直接用文件工具创建相同结构。
步骤横幅规范(P1-3):每个阶段开头用统一横幅,让用户随时知道"在哪、出什么、确认后花不花钱": 「第 N 步 · <阶段名> / 产出:<文件或资产> / 请确认:<是·对应哪个开关 | 否> / 确认后:<免费 | 付费·约¥X·具体动作>」 凡会调用付费接口、上传用户文件或消耗额度的步骤,必须先报成本再执行,不得先跑后说。
「第 1 步 · 建立任务 / 产出:book.yaml + production.csv 一行 / 请确认:否 / 确认后:免费」
book.yaml,在 production.csv 新增一行。「第 2 步 · 研究与文案 / 产出:02-script/script-v1.md + segments.json / 请确认:是·require_script_approval / 确认后:免费(图片在下一步才生成)」
ocr_points.py(RapidOCR)把「观点长图」抠成素材库。01-research/sources.md。references/写稿规范.md 的金句三段式 + 黄金 8 镜写作(这是本 skill 默认文案引擎,取代 factory 的「自然口播」泛要求):caption(旁白原句,用于配音+字幕)+ sub(观点钉短句);02-script/script-v1.md 与 segments.json(hsf 引擎的合成输入),报告传播角度和预计时长。require_script_approval 为真,在这里停止并等待确认。「第 3 步 · 分镜与图片 / 产出:03-storyboard/storyboard-v1.yaml + 04-images/* / 请确认:是·require_image_approval / 确认后:免费(生图走本地 ImageGen);若本步改用视频生成或外购库素材则为付费·约¥X·先报成本」
03-storyboard/storyboard-v1.yaml。若账号 images.style_preview 为真(默认),生成正式图之前先走风格矩阵:
01-research / 书名判断书类,按 [视觉风格矩阵](references/visual-style-matrix.md)(JSON 在 assets/templates/visual-style-matrix.json)取 3 个候选 id。04-images/style-preview-{id}.png,提示词带 no text 约束),并排展示请用户挑 1 个。id 写入账号 account.yaml 的 images.default_style(或本书 book.yaml.overrides.images.default_style),全片统一冻结该风格,不再逐镜重选。图已生成后想换风格,按 P0-1 只改 render-manifest 重渲或重做图片阶段。按账号 source_strategy 决定来料:
opening: real-video(默认):开场优先用真实动态视频片段(用户素材 / 可商用库 / 视频生成),落到 shared/intro/ 并记 [来源账本](references/source-strategy.md)(模板 assets/templates/source-ledger.json)。无合适真视频时明确告知用户并降级为动态图形 / Ken Burns,不假装实拍。body: image-gen(默认):正文背景默认文生图;用户指定某镜用真实片段或视频生成时,改动同样记入账本。creator / license / attribution / sha256。default_style)生成图片,保存为 04-images/scene-01.* 等稳定文件名。require_image_approval 为真,展示图片并等待确认。「第 4 步 · 配音字幕渲染 / 产出:05-audio/* + 07-render/compose_engine/ + 预览 / 请确认:否(预览在下一步)/ 确认后:免费(本地合成,无外部调用)」
compose_engine 的开场段,而非静态图 + Ken Burns;其余正文段用 3a 冻结风格生成的图。scripts/gen_audio.py(edge-tts + boundary=WordBoundary 词级时间戳),产出 05-audio/*.mp3 + words.json。文案变了必须重新配音。<phoneme>/<sub> 全被拒)。解法:在 segments.json 的 segment 里加 "say" 字段——caption 是字幕原字,say 是配音文本(多音字 1:1 替换成同音字:了→瞭、行→形),gen_audio.py 配音用 say、再把词级时间戳里的同音字映射回原字,字幕仍显原字。scripts/build_compose.py(读 segments.json → 调 compose_engine.py 合成主体,字幕=旁白 caption、与配音词级时间戳精确对齐)。scripts/gen_ending_card.py(主金句 + 补充金句 + CTA,CTA 超宽自动换行)+ scripts/concat_ending.py 拼接。cd 到工作目录(segments.json 里相对 image 路径相对 HSF_WORKDIR 解析),或用绝对路径。audio_mix 契约)。_kenburns_vf() 1.0→1.06 缓推/拉;片尾金句卡也必须做慢推/拉,不得直接静止 8-10s。若用户指出某镜“按住观众”,优先加镜头运动、换图或拆分镜头;手部/笔尖/灯光变化这类动作,只有在有分层素材、视频生成工具或额外动效资产时才做,不要在单张 PNG 上粗糙伪造。07-render/compose_engine/,预览 08-preview/preview-vN.mp4,成片 09-output/final-vN.mp4。「第 5 步 · 预览导出 / 产出:08-preview/preview-vN.mp4 + 09-output/final-vN.mp4 / 请确认:是·require_preview_approval_before_render / 确认后:免费」
require_preview_approval_before_render 为真,等待确认后才正式渲染。exports/ready/。更新 book.yaml 和 production.csv。Skill 不负责上传或发布。以下参数已写死进 scripts/compose_engine.py / build_compose.py / gen_ending_card.py,矩阵里每条视频自动带上,无需每次重调:
-crf 18 -b:v 4000k -maxrate 4500k -bufsize 9000k -preset slow。⚠️ x264 中 crf 优先、b:v 被忽略,实际走 CRF 18 恒定质量(静止插画约 2.3~2.6 Mbps,已视觉无损)。_kenburns_vf() 已内置 —— fps 归一 + 4x 超采样(scale 到 7680×4320 再 crop)+ zoompan 1.0→1.06 缓慢推/拉(奇偶镜交替方向)+ 入出场淡入淡出。4x 超采样必须保留,否则 zoompan 亚像素取整会产生周期性抖动。caption(旁白原句,与配音词级时间戳对齐);每行 ≤ 12 字;关键词高亮;淡入 400ms / 淡出 350ms;单句最短停留 1.2s 且持续到下一句开始。标点以 caption 为唯一真源,尤其中文分号/冒号/顿号要逐字保留;用户指出字幕错字时,不能只改 segments.json,必须重新跑 build_compose.py 重烧主体字幕。-shortest),别写虚高 duration。caption(旁白原句) —— 用 sub 做字幕会导致词级时间戳错位(只显半句/看起来没字幕)。cd 到工作目录 —— 否则相对 image 路径找不到、clip 列表为空、concat 报错。output_dir —— 必须单张顺序生成,每张独立目录,生成后校验张数。rapidocr-onnxruntime 报 DLL load failed,仅影响可选 ocr_points.py。<phoneme>/<sub> 被拒)。用 segment 的 say 字段(同音字替换配音 + 词级时间戳映射回原字)解决,见「单书生产 · 4」。build_compose.py 默认 chapter_titles=["拆书"],会在视频顶部渲染一条"板块标题 + 当前高亮 + 进度线"的导航条(视觉上像目录)。如正式发布不要任何章节/目录导航,在 segments.json 设 "chapter_titles": [] 即可关闭(compose_engine 中 use_progress_bar=False,所有 overlay 走 else 分支,不崩溃)。注意:sub 观点钉只作写稿辅助,不渲染上屏,无需处理。movie_body.mp4 已经烧录字幕,用户指出标点/错字后,必须重新跑 gen_audio.py(若 caption/say 改动影响配音)和 build_compose.py,再重新拼接片尾;只做后处理拼接会保留旧字幕。gen_ending_card.py 若拿 scene_008.png 等生成图当底,会把右下角 AI/WORKBUDDY/乱字带回正式版。发布版片尾优先使用干净封面、纯背景或人工遮盖后的底图,并抽右下角 crop 复查。图书短视频矩阵——知莫三沉淀的实战方法论工具,覆盖从诊断、判断到内容生产与推广的全链路
需要做图书短视频的运营、产品与内容团队,基于知莫三 15 年全链路实战框架,按步骤填内容即可产出。
不需要。图书短视频矩阵面向业务与内容同学,方法已固化成可复用的流水线,跟着步骤走就能产出结果。