一键成片(短视频全链路总控)
把"找料 → 选题 → 写稿 → 去AI味 → 质检 → 出片 → 复盘"串成一条流水线。人只在两个节点做决策:选题拍板 和 质检放行,其余全部串行执行。
什么时候用
- 用户给出一句"帮我把这条流水线跑起来 / 一键成片 / 从热点到出片"级别的指令。
- 用户指定了从某一中间环节开始(如"我已有脚本,直接去AI味+质检+出片"),则从该环节接入,前序环节跳过。
- 用户给 2-6 张图或 1 段 ≤60s 视频,要分镜表/配音稿 → 走「素材变分镜」模式(细则见
references/content-pack.md)。 - 不适用于:只想剪一条已有素材的片子(直接用剪辑能力)、真人出镜口播的静音裁剪(另走 auto-editor 系)。
第 0 步:依赖检查(每次必做)
流水线各工位技能按"本机已装 → 市场同款 → skillhub 替代"顺序解析。注意:新装技能当次会话可能未被加载,调用不到视同缺失,按降级策略代跑,勿反复重试调用。
| 工位 | 本机实测状态(2026-10-30) | 备选(未装时) | 环境依赖 |
|---|---|---|---|
| ⓪ 对标拆解(可选) | ⚠️ 未实测:@user_cbbcbcca/video-script-dissect(体积大,仅有链接时才加载) |
lingyi-wx-video-decomposer-exp(付费,不推荐) | 无 |
| ① 原料采集 | ✅ 已实测(2026-10-28):tencent-news |
联网搜索代跑 | 可能需 API Key |
| ② 选题定稿 | ✅ 已实测:无独立技能,总控按细则代跑(两次全流程跑通) | viral-deconstruct-pro 阶段零 | 无 |
| ③ 脚本生成 | ✅ 已实测:@user_423c8d0a/short-video-spoken-script;v2.0 起优先探测 HyperFlix 适配器(分镜+脚本一体) |
lingyi-wx-viral-script-generator;HyperFlix 缺失时总控代跑分镜 | 无 |
| ④ 去AI味 | ✅ 已实测:@user_1a7e2e57/ai-flavor-remover 偏网文向,口播稿以总控评分验收(初稿4分→重写8.5分) |
lingyi-copy-de-ai-human-comment | 无(本地规则) |
| ⑤ 质检闸门 | ✅ 已实测:总控代跑 + 机器 lint(正反例双向验证通过) | lingyi-content-quality-check | Node ≥18(lint.js) |
| ⑥ 成片 | v2.0 探测顺序:Emotion(动画渲染)→ 豆包TTS(配音+声纹复刻)→ Captions(动感字幕)适配器 → 已实测:DataTake 数据驱动渲染(2026-10-30,30.4s 成片验证)+ edge-tts 神经语音配音 | 适配器全缺失时走原降级链:DataTake → 云端渲染服务(references/render-service.md)→ 手写 TSX |
Node ≥18 + Remotion;豆包TTS 需火山引擎凭据 |
| ⑦ 发布 / ⑧ 复盘回填 | ✅ 已实测(2026-10-30 真机发布+复盘报告) | 手动发布 | Playwright + Edge |
依赖实测记录
- 2026-10-28 全流程首跑:采集→选题→脚本→去AI味→质检→Remotion 成片(60s 无声)全部走通。
- 2026-10-30 神经语音+精剪:edge-tts zh-CN-YunxiNeural 配音、31s 精剪渲染、ffmpeg 抽封面、Playwright 自动发布(含短信验证人工兜底)、review.js 数据复盘——链路完整可复现。
- 他机适配:文中
E:/workbuddy/...路径为本机实测环境示例;他机使用时把本 skill 的scripts/(lint.js、feedback.js)与assets/(Video.tsx、DataTake.tsx、scenes 规范与样例)直接复用,再自建remotion-app/工程,命令中的路径相应替换即可,流程不变。
降级策略:某工位技能缺失/未加载且用户暂不安装时,按 references/stages.md 中该工位的细则由总控直接代跑;⑥ 无 Node 环境时停在净稿+分镜,明确告知未出片。video-script-dissect 体积大(SKILL.md 近 1800 行),仅工位⓪/⑦真有视频链接或发布数据时才加载;②⑤日常代跑,避免吃上下文。
四人团队适配层(v2.0 核心新增,2026-11-02)
把四个外部工具当成四个"不给工资的员工"接入流水线,WorkBuddy 只做总调度。设计原则:适配器是"可插拔工位",探测不到不报错、不重试、直接走兜底链——流水线永不因缺工具而停摆,只会在交付时明确说明本次用了哪个员工的活、哪个是兜底代跑。
| 员工 | 工位 | 负责什么 | 输入 | 输出 | 探测方式 | 兜底链 |
|---|---|---|---|---|---|---|
| HyperFlix | ③ 脚本+分镜 | 拿文案排分镜和脚本,相当于随队导演 | 文案/选题 | 分镜表(兼容 scenes.json 字段) | 环境变量 HYPERFLIX_API 或本机 CLI hyperflix |
总控代跑分镜建议(原 ③ 细则) |
| Emotion | ⑥ 渲染 | 把分镜脚本动画执行落地、特效渲染 | scenes.json | mp4 | 环境变量 EMOTION_API 或本机 CLI emotion |
DataTake → 云端渲染 → 手写 TSX |
| 豆包TTS | ⑥a 配音 | 文案生成语音,支持声纹复刻(不出镜也是"我"在说话) | 净稿分段 | 分段 mp3 + 时长 | 环境变量 DOUBAO_TTS_APPID+DOUBAO_TTS_TOKEN |
edge-tts → 云端 tencent TTS |
| Captions | ⑥b 字幕 | 枯燥文字变网感词,对齐时间轴出动感字幕 | 配音音频+净稿+时间轴 | 字幕轨(scenes.json caption 字段或 .ass) | 环境变量 CAPTIONS_API 或本机 CLI captions |
DataTake 硬字幕轨(逐句上屏) |
调用纪律(适配层三铁律):
1. 先探测后调用,探测失败不复试——沿用第 0 步纪律,缺什么走兜底,交付时如实报"谁干的活"。
2. 输出契约统一——四个适配器无论真实接口长什么样,落地产物必须归一到流水线既有格式:分镜归 scenes.json 字段、配音归分段 mp3+ffprobe 实测时长、字幕归 caption 字段。下游工位(lint、DataTake、发布)不感知上游换没换人。
3. 质检闸门不豁免——HyperFlix 出的脚本照样过 ④去AI味+⑤lint;豆包TTS 声纹复刻的配音照样要 ffprobe 实测时长。员工换人不换验收标准。
接入细则、真实接口的对接方法(拿到 API/CLI 后怎么补)见 references/four-team-adapters.md。
背景层:主题包 + 实拍素材(v2.1 核心新增,2026-11-02)
要解决的问题:原来成片全是纯黑大字报,七条片子一个背景,用户一句"全是这种黑色的背景"就是判死。现在背景分两层——主题色兜底 + 实拍图语义命中,文案讲到什么就配什么底。
第一层:主题色包 BG_THEMES(DataTake / Video.tsx)
Video.tsx 导出 BG_THEMES,六个主题:frost(冷蓝霜)/ snow(雪夜)/ warmth(暖橙居家)/ herb(草木养生)/ clinic(诊疗冷白)/ gold(金秋夕阳),另加 neutral 兜底。themeOf() 按文案关键词选主题,写进 scene 的 theme 字段。
{ "theme": "warmth" }
Backdrop 收 theme 参数;Aurora 支持 color/fill 直供,改色不用改组件。
第二层:实拍底图 bg + bgDim
public/bgs/ 现有 13 张 1080×1920 静帧(AI 生成,右下角标已裁):
| 分组 | 文件 | 用在哪 |
|---|---|---|
| weather | snow-street senior-walk frost-window |
天气/出门/雪天 |
| kitchen | soup-steam dumplings |
汤、饺子、做饭 |
| medical | blood-pressure pills |
量血压、吃药 |
| hospital | corridor |
急诊、120、就医 |
| daily | scarf tea-hands |
围巾帽子、捧茶 |
| home | shower foot-soak bedroom-morning |
洗澡、泡脚、起床 |
构建期(build-1102.py)按 BG_RULES 语义配图,顺序敏感,相邻段不重复同一张底:
洗澡 → 泡脚 → 帽子围巾 → 出门 → 药 → 血压 → 120识别 → 起床 → 茶 → 食物 → 天气
两条实测教训:
- 语义规则优先于主题,但规则会互相抢跑。钩子里的"头晕"曾被血压规则抢走、护头段里的"血压容易蹿"曾被血压规则抢走 → 删宽泛词、把强相关规则前移。
- 洗澡段配厨房汤锅会直接出戏 → 补浴室图,别指望一张图通吃。
BG_DIM 逐张压暗(走廊 0.70 / 窗霜 0.66 / 血压计 0.64 / 药盒 0.62 / 浴室·卧室 0.60 / 捧杯 0.58 / 泡脚 0.55 / 汤·饺子·围巾 0.52 / 雪街 0.50 / 背影 0.48)——深底图压得轻,亮底图压得重,保证字幕压得住。
BgCover 运镜规则(写死在组件里,别改):
- 图片:Ken Burns 单向推近 1.12 → 1.03 + 14px/-22px 漂移,单向不回摆(回摆立刻假)
- 视频:只给 ±1.2% 呼吸,不加位移(位移叠运镜会抖)
字幕条:构建期拆句,别指望折行
Bar 52 号字单条 ≤17 字。超了不要靠 CSS 折行(会断在"赶紧量/量"这种词中间),必须在构建期用 split_bars() 按 ,、;: 拆成多条并按字数比例排时间。
素材来源铁律
海外素材站这台机全线不可用:mixkit / pexels / pixabay SSL reset(curl exit 35)、Wikimedia Commons 超时(exit 28),四路同时挂。不要在脚本里写自动下载,粮草靠 AI 生图,生成后必须裁掉右下角"AI生成"角标:
ffmpeg -i in.png -vf "crop=iw:ih-100:0:0,scale=-1:1920,crop=1080:1920" out.jpg
小程序端同步(一键成片助手 v1.13.0)
小程序没有 Remotion,用 canvas 2d 复刻同一套规则,两边规则必须逐字一致,否则同一个文案在端内端外两副样子:
utils/film.js:splitSentences(每屏 ≤12 字)/buildTimeline(4.2 字/秒,夹 1.2–5.5s)/BG_RULES/ 每张图 dimpages/preview/:preloadBgs()用canvas.createImage()一次性预载,src 必须/assets/...绝对路径,失败永久置 null 退色块;drawFrame每帧只drawImage+ Ken Burns + 压暗;dpr 封顶 2assets/bgs/:同 13 张压成 480×854 / 约 680KB(主包 774KB,2MB 限内)- 文字压照片靠描边:
0.15em宽 /0.62透明度,少了糊、多了脏
改完必跑 node <SKILL_DIR>/scripts/check-miniprogram.js(当前 122 项),含"规则引用的图必须真在包里"保命断言。
流水线主链(9 工位串行,编号全网统一:⓪对标 ①采集 ②选题 ③脚本 ④去AI味 ⑤质检 ⑥成片 ⑦发布 ⑧复盘)
每步只输出 结论 + 文件路径,不复述用户指令;每步产出先给用户看再进下一步。
- 工位⓪ 对标拆解(可选,有对标链接时执行):拆 3–5 条同赛道爆款 + 1 条自己账号历史,输出《爆款结构卡片》:前 3 秒钩子类型 / 结构骨架 / 信息密度 / 转折点时间轴 / CTA 方式 / 5 个可复用钩子句式。要含"低播放同题"对照组。
- 工位① 原料采集:按赛道关键词抓当日热榜,按受众相关度输出 20 条候选,每条带来源、时间、一句话事实、可延展角度;超 48h 降权。
- 工位② 选题定稿(人拍板):8 维打分(细则与分制以
references/content-pack.md验证版为准)+ 加权总分 + 风险自检,只保留前 3 且无高风险项,输出选题排期表。打分只做排序,必须等用户拍板选定后再进下一步。 - 工位③ 脚本生成:60 秒口播稿,结构 = 钩子3s + 3 个干货点(每点带具体例子/数字)+ 一句话收束 + CTA;口语化、每句 ≤20 字、≥3 个具体数字。只要 1 稿 + 2 个备选钩子,同时给分镜建议(每段配什么画面/字卡)。字数先定时长档位再写:31s=110–145 字、45s=180–240 字、60s=220–280 字(唯一字数表见
references/content-pack.md)。 - 工位④ 去AI味:删书面连接词与套话、改短句,口语停顿词 ≤3 处,保留全部数字和事实;输出净稿 + "像真人写的"评分 + 扣分点。评分 < 8/10 自动重写,不退回给用户。
- 工位⑤ 质检闸门(机器 + 人放行):先跑机器闸门 lint(字数/违禁词/数字出处/开场钩子,红灯退出码 1 禁止渲染;见下方示例命令),再做人工项:模拟 25–45 岁目标人群听感并标出会划走的句子、项目名/单位名/数据人工核实。红灯清零才可进成片。 字数按档位传参:
--dur 31(默认)/--dur 45/--dur 60,三档与references/content-pack.md是同一张表。 - 工位⑥ 成片(配音 + 渲染 + 封面一体):edge-tts 神经语音 zh-CN-YunxiNeural 逐段顺序合成(间隔1秒防限流,ffprobe 实测每段时长)→ 按 DataTake schema 写 scenes.json →
npx remotion render。不再手写每日 TSX 组件。降级链:DataTake → 云端渲染服务(references/render-service.md,无声需告知)→ 手写 TSX。封面用 ffmpeg 抽大字高潮帧。示例命令序列见下节。 - 工位⑦ 发布(文案 + 自动发布):同一成片配 4 平台(抖音/快手/视频号/小红书)× 各 2 版(A 首发 / B 二发测试)文案,含标题、简介、话题标签、封面建议、黄金时段;口吻套路见
references/stages.md平台差异表。本机已建 Playwright 自动发布通道(publish-bot),发布触发短信验证时向用户索取验证码。 - 工位⑧ 复盘回流:自动复盘(抓取播放/完播/互动/跳出率 → 诊断报告 → 跨天对比),效果回填选题表与最优结构模板(best-structure.json),反哺下轮选题与脚本;同时判定 A/B 文案谁胜出。
定时化编排(2026-10-31 实测定版)
全链路可拆成「复盘先行 + 出片随后」两条定时任务,复盘与出片间隔 10 分钟:
- 复盘任务(如每天 8:00):跑 review.js → 生成复盘报告 → 立即跑 feedback.js 把最优完播结构写入 best-structure.json(供出片任务读取)。复盘任务不做出片、不发布。
- 出片任务(如每天 8:10):第零步续跑检查 → 读 best-structure.json 沿用最优结构 → 选题/脚本/lint → 配音 → DataTake 渲染(
--concurrency=1)→ 封面 → 自动发布。 - 发布窗口选目标受众活跃时段(实测工地人/通勤人群:早 7–8 点、晚 18–20 点优于下午)。
- 自动任务纪律:发布脚本运行超 15 分钟视为卡死,终止进程并报告;任何一步失败报告具体原因,不重复执行已成功步骤。
内置可执行资产(随 skill 一起分发,开箱可跑)
本 skill 自带可执行脚本与模板,不依赖外部项目目录(路径按 <SKILL_DIR> 指代本 skill 所在目录):
| 资产 | 用途 | 用法 |
|---|---|---|
scripts/lint.js |
工位⑤ 机器质检闸门 | node <SKILL_DIR>/scripts/lint.js 脚本.txt [--dur 31\|45\|60](红灯退出码1) |
scripts/feedback.js |
工位⑧ 效果回填闭环 | OCV_ROOT=<用户工作区> node <SKILL_DIR>/scripts/feedback.js |
scripts/check-miniprogram.js |
小程序改动冒烟闸门(122 项) | node <SKILL_DIR>/scripts/check-miniprogram.js <小程序目录>,改完必跑 |
scripts/pack-miniprogram.py |
小程序代码包打 zip(UTF-8 文件名,排除 node_modules) | python <SKILL_DIR>/scripts/pack-miniprogram.py --dir <小程序目录> --version v19 |
assets/Video.tsx |
渲染基础组件(Pop/Bar/主题色/秒转帧) | 与 DataTake.tsx 一起复制进 remotion-app/src/ |
assets/DataTake.tsx |
数据驱动渲染引擎组件(依赖上面的 Video.tsx) | 同上;再在 Root.tsx 注册 Composition |
assets/scenes-schema.md |
scenes.json 字段规范 | 照 schema 写场景数据 |
assets/scenes.example.json |
可跑通的完整样例(5 段 31s) | 直接改用,替换 audio 路径与文案即可 |
> 两个 .tsx 相互依赖,只复制 DataTake.tsx 会编译报 Cannot find module './Video'——这是 1.5.0 的实际缺口,1.5.1 已补上 Video.tsx。
环境变量:OCV_ROOT(工作区根,默认当前目录)、OCV_SHARECODE(云端渲染服务分享码,向维护者索取)。
环境安装(跨平台,Windows/macOS/Linux 同理):
node -v # ≥18,Remotion 与本地脚本依赖
npm i -g remotion # 或用项目内 npx remotion
pip install edge-tts # 神经语音配音(pip 不可用时 python -m pip)
npm i playwright && npx playwright install msedge # 仅自动发布需要
缺 Node 时停在「净稿 + 分镜 + 文案」交付,明确告知未出片,不静默降级。
示例:31s 一条龙命令序列(本机实测环境,路径按需替换)
# ⑤ 机器质检(红灯=退出码1,必须改写重跑);字数档位:31s 用 --dur 31 / 60s 用 --dur 60
node <SKILL_DIR>/scripts/lint.js 02-口播稿.txt --dur 31
# ⑥a 配音(逐段顺序,间隔1秒防限流)
python -m edge_tts --voice zh-CN-YunxiNeural --text "第一段台词" --write-media remotion-app/public/audio1031/01.mp3
# ⑥b 实测每段时长 → 写 scenes.json(schema 见 assets/scenes-schema.md,样例见 assets/scenes.example.json)
ffprobe -v error -show_entries format=duration -of csv=p=0 remotion-app/public/audio1031/01.mp3
# ⑥c 渲染(必须重定向 log,管道接 tail 会 EPIPE;--concurrency=1 防小内存机 OOM)
cd remotion-app && npx remotion render src/index.ts DataTake out/成片-1031.mp4 --codec h264 --concurrency=1 > render.log 2>&1
# ⑥d 封面(抽大字高潮帧)
ffmpeg -ss 9.5 -i out/成片-1031.mp4 -frames:v 1 -q:v 2 封面.jpg
失败恢复表(按症状对症处理)
| 症状 | 原因 | 处置 |
|---|---|---|
| 渲染管道报 EPIPE / 输出截断 | 管道接 tail/head | 输出重定向到 log 文件再 tail |
| 渲染 x264 malloc 失败 / bundling OOM(8GB 内存机实测 3 连败) | 系统可用内存 <2GB(残留浏览器/发布进程/大程序占内存) | 渲染强制 --concurrency=1;渲染前查可用内存(PowerShell Get-CimInstance Win32_OperatingSystem),不足 2GB 先提醒用户关大程序;kill 残留 node/msedge 渲染发布进程后再试 |
| 定时任务续跑重复劳动 | 自动任务重跑已完成工位 | 任务开头做续跑检查:当日已有绿灯脚本 + 配音 + scenes.json → 直接从渲染步继续;已有成片+封面 → 直接进发布步 |
| staticFile(undefined) 崩 | scenes.json 段落缺 audio 字段 | 检查每段 audio 路径(相对 public/) |
| 渲染含 % 的句子全黑 | 老 ffmpeg 转义静默空帧 | 文本里 % 换全角% 或走 DataTake(无此坑) |
| edge-tts 403 / NoAudioReceived | 机房 IP 被封 / 偶发断流 | 换本机网络跑;逐段重试+指数退避 |
| lint 红灯 | 字数/违禁词/数字无出处 | 按输出逐条改写,重跑至绿灯;字数红灯先确认档位选错没(31s 稿拿 60s 档跑会误报) |
| feedback.js 报「未找到复盘快照目录」 | 工作区还没建 复盘/history |
1.5.1 起自动建目录并提示,退出码 2;把复盘 JSON 放进去再跑即可 |
| best-structure.json 写不进去 | 技能目录只读(全局安装常见) | 1.5.1 起自动回退写到 <工作区>/复盘/best-structure.json,日志会打印实际路径 |
| 抖音登录失效 | Cookie 过期 | 跑 login.js(自动勾选"记住本次登录")扫码 |
| 发布弹短信验证 | 平台风控(不可绕过) | 向用户索取验证码,写入 code.txt 自动填入 |
| 中文引号在 JSX 报错 | esbuild 解析 | 用 {'...'} 表达式包裹(手写 TSX 时) |
铁律
- 两个硬闸门不可跳过:选题必经人拍板;质检红灯清零 + 人放行。
- 脚本只要 1 稿 + 2 备选钩子,不出多稿。
- 去 AI 味 ≠ 加废话;"嗯、就是说"总量控制在 3 处以内。
- 热点 ≠ 选题:采集结果必须叠加专业判断做差异化,纯搬运不打分。
- 全程每个工位自检验收标准(见细则),不达标先内部重跑,再交付。
- Remotion 强在结构化图文视频,真人出镜需求要提前告知局限。
产物归档(固定结构,试跑验证)
所有中间产物按序号落盘到用户可见目录(默认 试跑-一键成片\,正式片用日期命名):
01-选题8维打分表.md (工位②,含候选池+打分+风险自检)
02-脚本与去AI味.md (工位③④,初稿评分→净稿评分→分镜建议)
03-质检报告.md (工位⑤,红黄绿清单+替换建议+放行栏)
remotion-app/ (工位⑥渲染工程,src/ 放 assets 里的 Video.tsx + DataTake.tsx,场景只改 scenes.json)
remotion-app/public/audio/ (edge-tts 分场景配音 mp3 + durations.json)
remotion-app/out/*.mp4
04-发布素材包.md (首发平台的标题/简介/标签/封面/时段)
05-多平台发布文案包.md(工位⑦,4平台×2版差异化文案)
每步交付时报"文件路径 + 一句话结论",用户随时可回看任意工位。
细则文件
references/stages.md— 各工位完整细则:8 维打分定义、口播稿结构骨架、各步验收标准与常见坑。references/content-pack.md— 小程序真机验证版内容成稿细则(2026-10-29):8 维 0-5 分制 40 分、字幕卡/图文卡/视频混剪三模式、字数纪律(净稿 220-280 / 配音稿 180-240)、去 AI 味硬规则、本地违禁词红黄表+替换建议、四平台口吻。与 stages.md 的推演值冲突时以本文件为准。references/render-service.md— 云端成片渲染服务细则(2026-10-29 部署验证,2026-10-31 增补腾讯云 TTS):域名/分享码/3 个接口/成片规格/云端配音引擎(tencent→edge→none 三级适配,标准音色仅 16000Hz)。工位⑥的降级通道(本机 DataTake 渲不动时才走),降级链与本文件主链一致。references/four-team-adapters.md— 四人团队适配层细则(2026-11-02 v2.0 新增):HyperFlix/Emotion/豆包TTS/Captions 四适配器的探测协议、输入输出契约、真实接口对接补录方法、兜底链验收标准。
质检清单(宣布"完成"前逐项确认)
- [ ] 选题经用户拍板,有打分表存档
- [ ] 口播稿朗读 ≤70 秒,每 15 秒有一个信息增量
- [ ] 去AI味评分 ≥ 8/10,扣分点已处理
- [ ] 红灯项清零,替换建议已落实,用户已放行
- [ ] 成片参数符合:竖屏 1080×1920 / 硬字幕 / 已挂配音轨;未出片时已明确说明卡在哪一环
- [ ] 分平台文案包已产出(4 平台 × 2 版),发布后 48h 数据待回填复盘
- [ ] 复盘结论已回填 best-structure.json / 选题库(工位⑧闭环)
版本变更
2.1.0(2026-11-02) —— 新增「背景层」,主链 9 工位不变:
1. 主题色包:BG_THEMES 六套(frost/snow/warmth/herb/clinic/gold)+ neutral 兜底,themeOf() 按文案关键词选,scene 里写 theme 生效。
2. 实拍底图:public/bgs/ 13 张 1080×1920,构建期 BG_RULES 语义命中(顺序敏感、相邻不重复),BG_DIM 逐张压暗,BgCover 图片走 Ken Burns 单向推近、视频只呼吸不位移。
3. 字幕条拆句:Bar 52 号字单条 ≤17 字,超长必须构建期 split_bars() 拆,不靠折行。
4. 素材来源定论:海外素材站四路全挂(SSL reset / 超时),改 AI 生图 + 裁角标,脚本不写自动下载。
5. 小程序同步:utils/film.js 的 BG_RULES/buildTimeline 与产线逐字一致,pages/preview 用 canvas.createImage 预载包内底图,dpr 封顶 2;新增 scripts/check-miniprogram.js(122 项)与 scripts/pack-miniprogram.py 随包分发。
2.0.0(2026-11-02) —— 新增「四人团队适配层」,主链 9 工位不变:
1. 四工位适配器:HyperFlix(③ 脚本+分镜)、Emotion(⑥ 渲染)、豆包TTS(⑥a 配音,含声纹复刻)、Captions(⑥b 动感字幕)工位化接入。探测顺序排在既有实测链之前,探测不到直接走兜底,不报错不停摆。
2. 输出契约统一:适配器产物归一到 scenes.json 字段 / 分段 mp3+实测时长 / caption 字段,下游工位不感知上游换人。
3. 质检闸门不豁免:外部工具产出一律过原有 ④⑤ 验收(去AI味评分、lint 红灯、ffprobe 实测时长)。
4. 细则落 references/four-team-adapters.md;本机当日四工具均无真实接口,首跑全走兜底链(已验证兼容性)。
1.5.1(2026-10-31) —— 只修内部一致性,主链不变:
1. 字数规则统一:原来 lint 硬限 145 字、content-pack 写 220–280 字,两份打架。现统一为一张档位表(31s 110–145 / 45s 180–240 / 60s 220–280),lint 用 --dur 选档,两处互相指向。
2. 出片通道顺序统一:render-service.md 曾写「云端优先、Remotion 降级」,与主链相反;现全文统一为 DataTake → 云端 → 手写 TSX,配音与画面分开列优先级。
3. 补齐渲染组件依赖:新增 assets/Video.tsx(DataTake.tsx 的 ./Video 依赖),1.5.0 缺此文件导致复制后编译失败。包内 DataTake.tsx 同步为「已去时间码」版本。
4. feedback.js 容错:复盘目录缺失自动创建并提示(退出码 2,不再抛 ENOENT);快照缺字段给默认值防 NaN 排序;技能目录只读时回退写到工作区。
5. 示例命令里的 pipeline/lint.js、pipeline/README-scenes.md 改为指向包内真实路径。
1.5.0(2026-10-31):新增「定时化编排」节、失败恢复表补 x264 malloc/续跑检查。