OPC 口播视频流水线
把"选题 → 写稿 → 标题 → 标签"固化成一条可复用流水线,核心是悬念递进式写稿引擎
(源自日更验证过的抖音历史科普号:5s 完播约 40%,最大反转压到最后 1/3)。
适用范围(务必先读)
当前为「历史科普向」调校,叙事引擎通用,但以下部分按历史/文物领域硬编码:
| 部件 | 历史向调校 | 换领域需自行适配 |
|---|---|---|
| 事实结构 fact_sheet | 文物字段:name/period/material/dimensions/unearthed/current_location | 改 schema(产品→price/spec,成语→origin/meaning) |
| 画面风格 visual | 锁"报纸拼贴 newspaper collage" | 改成领域画风(数码科技感/美妆实拍) |
| 开场禁词 BAN_HOOK_UNEARTH | 禁"出土/挖出/考古队/挖掘/开棺" | 换成领域流水账禁词 |
| 标签策略 | 提朝代标签 + 按材质分类 | 换成品类/品牌提取 |
| 热词库 HOT_CONTENT_KWS | 文物/历史/收藏/考古/博物馆/拍卖/天价/国宝 | 换成领域热词 |
| 标杆示例 | 金缕玉衣(正反例) | 换领域标杆 |
- ✅ 适合:历史科普、文物、古籍、收藏、考古类口播视频号
- ⚠️ 不适合直接用:美妆、数码、产品种草、成语、新闻类——需先做领域适配层
- 叙事引擎(悬念递进/段尾留钩/9道死检)本身通用,任何口播可复用其逻辑
何时使用
- 用户要做历史科普类短视频口播文案(抖音、B站、小红书、视频号)
- 用户要搭建历史向日更内容流水线(一人公司 / OPC 场景)
- 用户提供文物/历史话题或事实清单,要结构化分镜脚本
快速开始
# 1. 初始化项目(一次)
python scripts/init_project.py my-project --topic "唐三彩骆驼" --type 文物 --visual kenburns
# 2. 复制 projects/my-project/.env.example 为 .env,填入 DEEPSEEK_API_KEY
# 3. 跑流水线
python scripts/run_pipeline.py --project my-project --topic "唐三彩骆驼" --facts data/facts.json
输出 projects/项目名/output/话题_package.json:
{script: [...], titles_tags: {...}, meta: {...}}。
工作流约定
阶段 1:写稿(scripts/engine/primitives/script_writer.py)
- 悬念引擎铁律:最大信息差压到最后 1-2 段(reveal);每段(末段除外)段尾留钩
(hook_out 字段);每段 ≤25 字;hook 必须用认知冲突开场,禁止"XX年挖出XX"流水账 - 事实锚定:脚本中带单位的数字必须能在 fact_sheet 中找到(5% 容差),编造即重写
- 9 道死检(不满足则整条重跑):段数 6-12、字数 ≤25、reveal 位置、段尾钩、
knowledge 在 reveal 之后、敏感词、数字锚定、谜底合约、存疑措辞 - 可选:
--segments N锁定段数,--no-cache强制重写
阶段 2:标题 + 标签(scripts/engine/primitives/title_tag.py)
- 4 种爆款策略:人物悬念 / 数字冲击 / 反常识 / 两段式
- 铁律:标题不能是纯器物名(实测完播 0%),15-30 字,不剧透最大反转
- 标签走确定性规则:品牌标签 + 精准标签(文物名/朝代/品类),砍泛标签
阶段 3:画面 / 配音 / 合成 / 发布(外部接入,不在标准包内)
本 Skill 只交付文案(写稿 + 标题 + 标签)。画面渲染、配音、剪辑、发布由用户自备工具接入,
接入指南见 references/EXTERNAL_DEPENDENCIES.md。
- 标准包输出每段 visual(画面 prompt),买家自行接 AI 生图 / Ken Burns / Remotion 渲染
- 画面渲染引擎不打包、不分发(属第三方工具,用户自备)
- 如需"OPC 文案 + 画面整套跑通"的完整日更系统,联系作者定制服务
项目配置(projects/项目名/config.json)
| 字段 | 说明 |
|---|---|
domain.type |
领域:文物/成语/产品/新闻… |
style.hook_types |
叙事模板(反转打脸型等),作为写稿 template 默认值 |
style.duration_sec |
目标时长(秒) |
visual_mode |
kenburns(默认省)/i2v(贵)/remotion/vector |
model_router |
模型路由(默认 deepseek-chat,静态表,不让 LLM 自选) |
budget.daily_max_rmb |
每日预算上限 |
checkpoints |
把关点:选题确认/存疑史实/发布确认 |
publish.brand_tags |
品牌标签 |
质量与合规
- 事实核验:
confidence_min以下的低置信度事实转人工 - 敏感词过滤:内置政治敏感词表,命中整条作废
- 存疑史实强制"有人说/据传/有学者认为"措辞,禁止下确定性结论
- API key 只从
.env读取,代码内无硬编码密钥 - 博主身份(persona)参数化:默认"抖音历史科普博主",可在 config.style.persona 改成自己的号名,不绑定特定账号
模型选择
| 模型 | 用途 | 说明 |
|---|---|---|
deepseek-v4-pro |
写稿/标题(默认推荐) | DeepSeek 旗舰,质量最佳 |
deepseek-v4-flash |
成本敏感场景 | 经济档,高并发低成本,质量略低 |
deepseek-chat / deepseek-reasoner |
⚠️ 已弃用 | 旧别名,2026-07-24 停用,勿用 |
改模型:编辑 .env 的 DEEPSEEK_MODEL,或改 config.json 的 model_router 静态表。
写稿默认 temperature=0.85(创意与稳定平衡)。
交付物
scripts/— 可直接运行的流水线(Python 3.10+,依赖openai包)assets/configs/_template/— 新项目配置模板references/WORKFLOW.md— 完整流程与 21 原语说明references/EXTERNAL_DEPENDENCIES.md— 画面/配音/合成/发布接入指南