v5.7.2 release - #477
Merged
Merged
v5.7.2 release#477
Conversation
bigbrother666sh
commented
Sep 20, 2026
Member
- 小红书、抖音、视频号 DNA系统升级到2.0架构,Let's do this like an expert!
- content producer 升级为专家系统,现在除了AIGC大片外,还可以复刻众多短视频平台流行的“套路”,更易获得平台推荐流量:
- 效果展示,xiaobei的视频号:https://openclaw-for-business.com/xiaobei-wxchannel.jpg
- xiaobei 可直接指挥content producer,用户可选择将brief出具、节点验收等委托xiaobei
- 新增抖音平台图文音乐内容发布能力,支持多图上传、选择推荐配乐与发布链接回收。
- AIGC 端点支持阿里云百炼 Agent Plan:现在无需去多个平台开通不同账号,最简只用初始安装时的百炼账号就可获得全部能力。
- 修复一键安装脚本openclaw-weixin不会自动升级的问题
- wechat-channels-publish: 删 Step 9 分享面板取链接(审核/转码中常不可用,实践中难走通);Step 8 不必等转码,确认作品上列表即 close 回报;首次入库不传 --publish-url,用户后补链接后相同 --source-folder 重跑 upsert 升级(同 wx-mp-publisher 机制) - 话题标签段硬约束(工具 Step 6 + workflow Step 4 两端设防):只能半角 # + 空格分隔,禁分组前缀(【三层标签】)、分隔符(/)、全角 #——混入即整行标签不被视频号识别;DNA 分层标签策略只用于挑标签,结构标记不进正文 - content-production: Step 6/7 同步链接后补机制 - published-track: 修正交叉引用 Step 5 → Step 6(视频描述填写步骤)
采纳 skill-workshop 提案 xhs-publish-body-newline-normalize-20260915: agent 在 bash 双引号里传 --body 时 \n 是字面量「反斜杠+n」,脚本原样 透传 desc 导致小红书正文全是 \n 文本(09-15 实发事故)。 - publish_xhs.py:新增 normalize_body_newlines(),main() 在长度校验 / extract_topics 之前归一化(字面量 \n 占 2 字符先归一再校验才准; 紧贴 #话题 的字面量 \n 非空白,会污染话题名分词);\r\n 先于 \n 替换避免残留字面量 \r - SKILL.md:--body 换行传参规范(✅ 多行字符串 / $'...',❌ 双引号 字面量 \n),紧邻既有 --body 禁传路径警告 - 新增 test_publish_xhs.py:6 个回归测试(归一化语义 ×4 + 话题提取 顺序 ×1 + main() 接线端到端 ×1),全部通过
…p 升格为 intake workflow 基线生产链改为直接从 Brief 开始(Stage 0 intake → Stage 3 script-write),移除从 OpenMontage 移植但已失真的 intent→story→script 前段。OpenMontage 真实模型是 13 条 pipeline manifest 驱动全流程 + 对话式 creative-intake;我们移植时塌缩成 3 档 genre 分类,但 genre 在本包无任何下游消费——intent.json 全字段的唯一真实读者是 story-develop 的模板页眉。 - 删 intent-router.py:3 档分类(narrative/motion/montage)对下游制作无实际作用。 - 删 story-develop.py,升格为 workflows/story-develop.md(intake 类 workflow): Brief 创意模糊时与甲方对话式收敛 Brief(仿 OpenMontage creative-intake), 不产 intent.json/story.md;与 type workflow 正交可组合。 - script-write 入参 story.md → brief.md;character-register 人物段 story.md → script.md (顺带修工具 doc 里 character-register 入参写错的 storyboard.json+brief.md)。 - 删预算(shot_count):script-self-eval 去镜数维(六→五),storyboard 去镜数指令。 - 修 7 个脚本缺 die()(错误路径抛 NameError 而非干净报错)+ slot-plan 对 intent.json 的 dead read(读了不用,且 intent.json 根本无 tone 字段)。 - 编号策略 R2:Stage 3-14 编号与 GATE A/B 位置不变,仅退役 Stage 1-2,churn 最小。 - 同步 SKILL.md / AGENTS.md / video-producer 工具 doc+wrapper / narration-video / reversal-ad(三段结构归 Stage 3 script-write,不再走独立故事阶段)。 范围:本轮仅动 CP 侧,未碰 main DNA framework / Brief 模板。 已知 stale(留待后续轮次):main 侧 4 个 content-production.md + 3 个 video-dna-framework.md + docs/expert-pack-dna-architecture.md 仍有"Stage 1 intent-router 定档位"陈述。 验证:全脚本 py_compile OK;brief.md→script-write→self-eval→storyboard→ shot-decompose→character-register 链路干跑通过、产物齐;retired 子命令干净失败 (未知子命令);全仓 grep 无残留 intent.json/story.md 机器引用。
承接 expert-video 132c45b(intent-router 已删)。main 侧与架构 doc 仍写着 "未指定 workflow → CP 由 Stage 1 intent-router 定档位(narrative/motion/montage)", 该步骤已不存在。统一改为"叙事 / 动效 / 蒙太奇手法由 CP 据创意自定"。 20 处替换 / 14 文件: - 3 个平台 SKILL.md(douyin/xhs/wx-channel)视频分工硬边界 - 3 个 video-dna-framework.md 制作指向表 + 边界说明 - 3 个 build_style_profile.py 的 video-form 维度提示串 - 4 个 content-production.md 的 Brief workflow 字段 + 委托说明 - viral-chaser/SKILL.md 转交表 - docs/expert-pack-dna-architecture.md 的 video-form 说明 + Pipeline 废除记录 验证:grep 零残留"定档位"指令;剩余 intent-router 提及均为"已退役"语境; 3 个 build_style_profile.py py_compile OK;.py 字符串常量完整。
- AGENTS.md / SKILL.md: Stage 0→14→0→15;script-write 由 Stage 3 改 Stage 1; 工作区目录树内联编号(3/3b/4/5/6/7/8/9a/9b/14b)全部按新编号重排; 跨领域技能引用 aigc-video-gen 8/10→7/10、siliconflow-img-gen 6/10/14a→5/10/14a - video-producer.sh: help 全表重编号;GATE A 由 Stage 6 后改 Stage 5 后; motion-audit/make-cover 补 13b/14a 子标 - 12 个子脚本: docstring/argparse/报错/[next] 提示/JSON stub stage 字段全部对齐新编号; 9a/9b/3b/11a/11b 旧子字母清除(11B/11C 保留为 mix-audio 场景字母) - mix-audio.py: 三场景→四场景(正文补齐场景 D 甲方口播录音路径),与 SKILL.md 对齐 - reversal-ad.md: Stage 3 不重写策略文案 → Stage 1 不重写 voiceover.md 口播终稿 - main 三平台 video-dna-framework.md: 删「intent-router 档位分类已退役」历史注记 - character-register.py: 顺手修 docstring 错字(拱分→拆分)
…未指定 workflow 的默认入口 collage-broll 重移植(蓝本:gbro-collage-broll 原版 SKILL.md,方法论忠实照搬): - 三道闸门收敛为 GATE A / GATE B 两道:GATE A 检隐喻清单(script/script.md, 即本类型的"分场剧本"),GATE B 检静帧 contact sheet(素材闸门) - 新增阶段裁剪表:Stage 3-5 裁剪、6-9 由静帧生成替代、10 重定义为 i2v 组装、 11/12 裁剪(默认无声逐条独立成片)、13a/b 照走、13c 无声片豁免 - 输入契约对齐 Brief:voiceover.md 落稿锁定不重写,不混入"brief.md 含隐喻清单"旧写法 - 工作区对齐标准树:script/(隐喻+visual-spec+prompts)、gates/、render/<item-slug>/、 review/(QA 结论与总览图),废弃平铺的 gate2-qa/gate3-qa/gen-jobs 旧结构 - 工具层:gate3 子命令改名 render(run_gate3.py→run_render.py),check_setup 与 wrapper help 同步新口径;退出码语义不变 story-develop 默认入口化(对齐理念:未指定 workflow 走 story-develop): - SKILL.md / AGENTS.md / video-producer.sh / story-develop.md 统一口径: Brief 未指定 workflow 且无类型信号 → 默认从 story-develop 进入, 创意不足先收敛、够用则快速通过直进 Stage 1
违背理念的实质修复: - 删「口播子模块未启用时只给要点、由 CP 组织旁白」代写通道(xhs:192 / wx:226)—— 口播终稿一律由 main 写(子模块启用按其结构写,未启用按用户要求与 Brief 核心传达写), 「不适用」仅限非口播类;三平台 SKILL.md 分工硬边界、style-dna 口播行、 content-production spawn 段同步去条件化 - 脚本制作路线(douyin:24 / wx:24):「根据 DNA 改脚本交 CP」改为用户脚本按素材处理 (绝对路径进 Brief 素材清单),main 只调策略层不动分镜,需动分镜即改走 Brief 委托由 CP 重出 - 校验清单(build_style_profile.py ×3):删「未启用时避免规定逐句口播」,改要求无论 子模块是否启用口播类必附 voiceover.md 绝对路径或录音路径 story-develop 口径补齐(对齐 CP 侧新默认入口): - 三平台 SKILL.md / content-production Brief 模板与 spawn 段 / video-dna-framework 路由表与尾段 / build_style_profile video-form scaffold:「未指定 workflow → CP 走 story-develop intake 收敛创意(够用快速通过)后按通用制作流程做」 一致性清理: - 「只交 Brief + 素材 + 口播」→「只交 Brief 一份(素材、口播均以绝对路径写在 Brief 内)」 - 「制作简报」统一为 Brief;Brief 模板 workflow 行「未指定」枚举值改「省略本字段」; douyin 采集表补 workflow 行;video-review 限定为 main 自做轻加工自检; wx editing 成片后流程措辞、style-dna 图文残句、account-setup 脚本简报→话术简报
…w 默认入口」 用户澄清:story-develop 的产出是 Brief;Stage 0→15 是 CP 一切视频必走流程(无论指定什么 workflow),起点是 Brief;甲方没给 Brief 或 Brief 质量不足以完成 script 生产才调用 story-develop。 - CP 侧 SKILL.md / AGENTS.md / video-producer.sh / story-develop.md:「未指定 workflow 时 默认从 story-develop 进入」的错误口径回正为「未指定时按通用制作流程做;Brief 创意不足 以直接写剧本时先走 story-develop 收敛 Brief」;story-develop 何时触发恢复原始判据 (甲方没给 Brief 或 Brief 创意不足以直接写 script.md,够用就不触发),顺手修掉原文 行尾杂散反引号 - main 三平台 SKILL.md / video-dna-framework / build_style_profile / content-production: 同步回正;main 侧保留一处新增语境「Brief 缺失或创意不足时 CP 会走 story-develop 与 Brief owner 收敛 Brief」(让 main 看到 CP 反向提问时有上下文) - 上一轮的其他修复(口播代写、脚本路线、只交 Brief、制作简报统一等)全部保留 README 上游借鉴列表补 gbro-collage-broll(MIT)引用:Collage B-roll workflow 的 方法论来源与移植口径说明
用户定稿的术语边界:口播 = 真人出镜 / 数字人 / 真人录音,口播稿由 main 出 (voiceover.md 随 Brief 交付,或 main 向用户取得录音);旁白 = 剪辑配的解说 (画外音),完全由 CP 写、GATE A 交审,main 不出旁白稿。 main 三平台(SKILL.md 硬边界 / Brief 模板口播字段 / content-production 口播规则 / video-dna-framework 用途声明与路由表 / build_style_profile 校验清单): - 口播定义显式化(真人出镜 / 数字人 / 真人录音),Brief 口播字段注明 「旁白归 CP 写,写不适用」 - DNA 用途声明收窄为「口播(真人出镜/数字人)的口播文案;旁白不在 DNA 指导范围」 CP expert-video(SKILL.md 交付表与路由 / AGENTS.md 路由行 / narration-video / reversal-ad / collage-broll): - narration-video:类型定义拆两形态——口播稿甲方出、旁白稿由我写 GATE A 交审; 硬边界与验收分形态表述;模式 B 代拟条款限定为用户本人出镜口播 - reversal-ad:解说旁白归我写(原「未交付时由我写」的模糊分支消除), 口播形态(真人出镜/数字人)才走甲方交付落稿锁定;正文泛指声音轨的 「口播」统一改「解说/旁白」,避免与口播归属混淆 - collage-broll:文稿行注明口播形态给 voiceover.md,其余给 Brief 文稿字段
…」旧定义 用户第三次澄清架构:三个 type workflow(reversal-ad / narration-video / collage-broll) 的定义是**指导从 Brief 生产 script,含这一步之后的自检**(GATE A 质检标准), 不是叠加在通用制作流程上的「细化层」(旧定义是设计不清晰时期的产物); story-develop 维持已回正口径——没有 Brief 或 Brief 不清晰时与甲方探讨收敛 Brief。 - SKILL.md:三层表 type 类定义、底座 blockquote、类型 workflow 表标题与列头、 workflow 采用规则(「按它生产 script 并按它自检」)、通用流程引言与制作约定条款, 全部改为 Stage 1–2(Brief→script→自检)类型化指导的口径 - AGENTS.md:铁律段「叠加在基准上的进一步细化」废弃,路由表四行改 「按 <workflow> 生产 script 与自检」 - 三个 type workflow 头部:各自重述为「指导从 Brief 生产该类型 script 及自检, 并附该类型制作与验收约定」;story-develop 对 type workflow 的旁述同步 - video-producer.sh help 同步 workflow 文档中的类型制作约定(阶段裁剪 / 素材 sourcing / 验收清单)内容不动, 定位为 GATE A 批准后按通用流程执行时适用的类型约定
…板,collage-broll 裁剪阶段加守卫 按 type workflow 新定义(指导 Brief→script 生产,含自检)把脚本层对齐: - 新增 _brief.py 共享助手:解析 Brief 的 workflow 字段(含模板未填 / 省略标注 → None)与口播交付形态(voiceover.md / 录音 / 旁白), 及 collage_guard 阶段裁剪守卫 - script-write.py 重写:按 workflow 变体落对应 script 模板—— narration-video+口播稿 → 原样落稿锁定(脚本直接逐字拷入,不重写); +真人录音 → 排布计划;+旁白 → 旁白稿(由我写 GATE A 交审); reversal-ad → 三段结构剧本(附 GATE A 四问提示);collage-broll → 隐喻清单;未指定 → 通用分场剧本。[next] 提示全部 workflow 感知 - script-self-eval.py 重写:自检维度按 workflow 变体——reversal-ad GATE A 四问+闭环合规、collage-broll 隐喻自检五条、narration-video 落稿锁定模式(只检查不改写)/旁白稿规范/录音排布、通用五维; stub 记 workflow 与 mode 字段 - 10 个被 collage-broll 裁剪的链式脚本(storyboard-build / shot-decompose / character-register / slot-plan / asset-resolve / slideshow-risk / delivery-promise-lock / render-shot / mix-audio / assemble)加守卫:collage-broll 项目调用时打印 [skip] 指引并退出 0, 指向静帧生成 / collage-broll render,不再误导 agent 走 storyboard 链 - duck.py:gen.py 旧脚本名残留改 aigc-video-gen 实测六种变体(reversal-ad / narration-video 三形态 / collage-broll / 模板未填)+ 守卫触发与不触发路径,行为全部符合预期
…x_channel) - HEARTBEAT Step 1/2/时效窗口改为仅 douyin 走 published-track fetch-metrics, xhs/wx_mp/wx_channel 走各专家包 engagement 工具(不变); kuaishou/bilibili 移出取数范围,只保留发布记录/查询 - fetch-and-update-metrics.sh:SCRIPT_PLATFORMS 收窄为 douyin, bilibili/kuaishou 入口门禁 exit 1 报 PLATFORM_OUT_OF_FETCH_SCOPE; 清理不可达的 bilibili/kuaishou 分支(extract_content_id / PLATFORM_HOME) - SKILL.md 与 wrapper usage 文案同步收窄口径
- 新增 crews/main/skills/_shared/bailian_asr.py:百炼同步 Flash ASR (qwen-audio-3.0-asr-flash,multimodal-generation + input_audio base64 直传, X-DashScope-SSE: disable 一次拿全量词级时间戳;>9MB base64 自动 ffmpeg 压 32kbps mp3 再传)。百炼把整段并成单 sentence,按 words[].punctuation 句末 标点切回多 utterance,与火山返回同粒度。 - 新增 _shared/asr.py 路由入口:凭据在哪家走哪家,某家失败自动落下一家; 全缺时 error 保留 VOLC_ASR/凭证未配置 标记(cut_plan.py 以此判 exit 2)。 - 三处消费方改走路由:viral-chaser/transcriber.ts(python3 -c 内联段)、 talking-head-cut/cut_plan.py、video-producer/narration-align.py; volc_asr.py 降为路由的火山后端,文档注明勿直连。 - viral-chaser frontmatter 去掉 requires.env 硬声明 VOLC_ASR_APP_ID (纯百炼凭据实例也应 eligible),开通指引改为三凭据任选。 - 实测:火山/百炼业务空间双路径转写多句音频,utterance 切分与时间戳正确。
…复盘落地——短标题无标点约束 + 提案 P0/P1 - 短标题新硬约束:不得含标点符号只能空格分隔(content-production Step 4 + wechat-channels-publish 输入/Step 6/pitfall,含清洗规则:标点替换为空格非删除) - P0-1 封面变体标准化:Step 6.0 发布前生成 3:4/4:3 变体(模糊底嵌入法实测参数), Step 7 交付清单补变体文件 - P0-2 dna-meta 校验:Step 7 显式动作强调 + record 后核对 dna_id 非空 - P1-3 封面编辑按钮改优先 eval dispatchEvent(mousedown+mouseup+click 三连), ref click 降级备选 - P1-4 描述字数改"约 300 字建议值"(实测 409 字符平台接受,以输入框为准) - P1-5 片库实测状态更新(Caminandes 部分 404 / Coffee Run 需登录,补 Agent 327) - P1-6/P1-7 aigc-video-gen 增转场片段规范(选帧锁景别/风格对齐/帧率由生成端定) + reversal-ad 护栏 2 帧率预判 + Brief 素材清单模板补规格 - P1-8 成片修改单格式(main 侧【确认】节点)+ CP 侧改片约定 (定向重做/强制保留上一版/交付说明修改记录段)
借鉴 OpenCLI 2026-08 catchup(8271afc)的两条平台知识: - _shared/xhs-html-note.ts:新增 XhsSecurityBlockError 类型化识别 (redirect website-login/error?error_code=300017/300031 或「安全限制/ 请求太频繁」文案,仅解析失败后触达防 desc 撞词误判);命中软风控 8-18s 随机 cooldown 后单次重试(结构化上限,不可配置次数,防 hammer 升级风控),仍被挡抛 SECURITY_BLOCK 而非空成功。 - _shared/relay-sign.ts xhsFetch:软风控判定先于登录墙(软风控页也是 HTML,误归 LoginWallError 会触发无谓重登循环);error_code 强信号 + 文案仅扫 HTML 响应前段(JSON 业务文本可能撞词不扫)。 - _shared/check-session.ts pongXhs:pong 撞软风控判 UNKNOWN 放行 (同 douyin status_code=4 先例),不误判 SESSION_EXPIRED 触发重登。 - xhs-content-ops fetch_note_content.ts:软风控不触发 cookie 回退 (换 session 非恢复路径),emit SECURITY_BLOCK + exit 3;同步修 expert-xhs 打包迁移遗留的 _shared 导入深度(../../ → ../../../../)。 - SKILL.md 同步:xhs-content-ops 错误表新增 exit 3 车道; login-manager 补「软风控 ≠ 登录失效」判定规范。
吸收 OpenCLI #2307 方案(2026-08 catchup)到脚本车道,修 xiaobei 反馈的 两个取数缺口: - 播放量:公开侧 aweme/detail 的 play_count 恒为 0(仅创作者可见), 新增 _shared/douyin-web.ts douyinCreatorItem——creator 域 web/api/creator/item/list(cookie-only 无需 a_bogus,同 work_list 先例) 游标遍历按 id 匹配,view_count 是播放量唯一来源,另有 26 字段深指标 (5s 完播率/2s 跳出率/封面 CTR/粉丝占比等)经 RetroResult.deep 透传。 带 sameAwemeId 数值比较兜底(item/list 把 work id 序列化成 JSON number,IEEE-754 舍入后字符串比较必 miss)+ sc!=0 间歇鉴权重试。 - 图文(note)作品:fetch-and-update-metrics.sh 提取 content_id 支持 douyin.com/note/<mid>(此前只认 /video/,note 链接提取为空报 CANNOT_EXTRACT_CONTENT_ID);item/list 视频与图文通用,detail 端点 对 note mid 同样适用。 - 创作侧失败 graceful 降级:只缺播放量/深指标,公开侧数据不受影响。 sed 定界符改用 #(用 | 时 \| 被解析成字面管道而非 BRE alternation)。
deep 数据有处可存(用户 2026-09-18 定调:不需要增长史,最新值即够; 历史快照表与 cal_* 评分消费两个方案均按此排除)。 - init-db.sh:pub_douyin 增 deep_metrics / deep_captured_at / deep_source 三列(v4);存量库 ALTER 自愈(同 cal_* 列模式,has_col 守卫幂等)。 其余平台接 deep 数据源时按同款三列扩展。 - update-metrics.sh:新增 --deep-file <path> / --deep-source <str>——JSON 走文件 + sqlite readfile()(免引号地狱),CAST AS TEXT 防 BLOB 被 -json 渲染成 base64;deep-only 写入合法(无标量指标但有 deep 时放行); deep 列缺失时 init-db 自愈补列(同 ensure_platform_table 模式); --deep-file 路径做安全字符校验。 - fetch-and-update-metrics.sh:Step 4 把 fetch-retro-data 的 deep 字段写 临时文件(trap 清理),Step 5 经 --deep-file 透传;无标量指标但有 deep 时走 deep-only 写入而非提前退出;输出加 deep_stored 标记。 - query.sh 走 SELECT *,deep 列查询侧自动可见,无需改动。 沙箱实测:新建库写入 / 老库(无 deep 列)自愈写入 / deep-only / 标量+deep 混合 / -json 输出均为纯文本 JSON。
Add image-note publishing with music verification and note-link recovery, plus a shared publishing lock. Route content workflows by format and refresh renamed wrappers. Simplify heartbeat to the latest 30 Douyin posts and per-platform engagement tools, gated by existing platform enabled state. Preserve metric zeros and creator-side precedence, and expose fetch errors.
Fix Bailian TTS subtitle text and narration ASR integration. Make note link recovery atomic with bounded search retries, centralize regression tests under test/, and update release notes and setup guidance.
|
codes-factory-of-bg seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.