- skill: 素材库分块定义(00~11)、05_极致事件知识库 4 篇、08_对话风格总纲、mcn-video-prompt 提示词质量门禁与外部语料检索流程 - workbench: mcn-work-shop 新增 cli-backend.js(本地 CLI 接入)、工作台视觉交互规范;移除旧 UI 规范 - docs: 根目录极致事件/素材卡/审计方案报告与热门短视频清单入库 - memory: 补 09-14~09-29 日志与自动化任务记忆 - chore: .gitignore 排除 tools/、.tmp-chrome-*/、_k_test.cjs
22 KiB
P1 修复方案 · 短视频工作台 V1.0
依据:
技能审计报告_V1.0_20260914.md(P0=0 / P1=8 / P2=7) 范围:仅 8 条 P1。本文件是方案,未动用任何技能文件(遵守「方案与执行分离」P0) 生效前提:用户确认后方可执行;执行时按创作流程规范.md§七「逐条读取→逐条修改→逐条验证」,禁止批量读改
〇、修复原则(先定规矩,避免越修越乱)
| 原则 | 含义 | 反例(本方案禁止的做法) |
|---|---|---|
| 改源头,不打补丁 | 概念的身份/来源/去向写在产生它的环节正文;下游只引用 | 在 S7 里加"注:S6 模板A/B 其实不是场次结构表字段"的括注 |
| 单源化 | 同一规则只允许一个权威定义处,其余位置改为指向 | 在 SKILL.md 与规范里各写一遍八类35项门禁条件 |
| 删历史叙述 | 规则正文里"何时改的、以前什么样、已下线"一律删;护栏只留"禁止做什么" | 保留"09-10 起 dsh 已废弃" |
| 不动白名单 | ①工作台 API 命名空间 /api/dsh/*(与 dsh 部署环境无关)②第三方原样分发包(browser-harness / lieflat-charts / mcn-video-prompt·参考skills / nuwa-skill-main)③各文件文末「变更记录」区 |
把 /api/dsh/accounts 当 dsh 残留删掉 |
一、总览
| # | P1 问题 | 改文件数 | 改处数 | 风险 | 是否需你裁决 |
|---|---|---|---|---|---|
| 1 | S6→S7 模板骨架断链 | 1 | 2 | 低 | 否 |
| 2 | 契约表漏 2 个 AI 入口 | 2 | 5 | 低 | 否 |
| 3 | 八类35项强制 ↔ S11 可选 门禁冲突 | 3 | 4 | 中(P0 条款) | ✅ 需确认口径 |
| 4 | 钩子家族术语 4 叫法 | 2 | 8 | 低 | 否 |
| 5 | 规范内旧技能名 + 乱码 | 1 | 2 | 低 | 否 |
| 6 | S5 输出声明漏字段 | 1 | 1 | 低 | 否 |
| 7 | dou-analysis 侧 dsh 死分支 | 5+1 重写 | 6 | 中(接口语义) | ✅ 需选 A/B |
| 8 | 「dsh 已下线」历史叙述未清 | 7 | 8 | 低 | 否 |
去重后共涉及 15 个文件、36 处。 建议分 3 批(见第五节),批内可并行、批间串行验证。
二、逐条方案
P1-1 | S6→S7 模板骨架断链
现象
references/创作流程/7_生成短视频大纲.md:31:「选择模板后,从 S6 场次结构表中取对应的模板骨架(三段式参考 S6 模板A,五段式参考 S6 模板B)」references/创作流程/6_生成短视频框架.md:280:「以下模板A/B仅供知识参考,非执行指令…S6 不选择模板」
根因:一句话里塞了两个来源——"S6 场次结构表"是 S6 的输出实例(8 列 × 实际场次),不含模板骨架;真正的骨架是 S6 文件末尾的模板A/模板B 两张空表。前半个主语写错了,导致下游按"场次结构表里找模板"执行必空手。
最佳方案:只修措辞,不搬迁内容。(理由:模板A/B 是填表骨架,与 知识库/03_框架节奏/01_标准爆款结构模板.md 的方法论描述不是同一层东西——搬过去反而制造新的重复定义,违背检查点 15。)
| 位置 | 现状 | 改为 |
|---|---|---|
7_生成短视频大纲.md:31 |
> 选择模板后,从 S6 场次结构表中取对应的模板骨架(三段式参考 S6 模板A,五段式参考 S6 模板B),在此基础上展开分段结构。 |
> 选择模板后,按其场次骨架展开分段结构——三段式骨架 = 6_生成短视频框架.md 的「模板A:三段式通用框架」,五段式骨架 = 同文件「模板B:五段式爆款框架」(骨架定义在 S6 文件末尾参考区,S6 自身不选模板)。 |
7_生成短视频大纲.md:20 |
### 第一步:结构模板选择(从 S6 移入) |
### 第一步:结构模板选择(删变更动作叙述) |
验证:grep -n "从 S6 场次结构表中取" references/ 应零输出;人工通读改后一句,确认指向的是文件内的模板A/B 小节而非场次结构表。
影响面:S7 是自动/共创/开发三模式共用的执行文件,改动纯措辞,不改变产出结构。Lite1.0 无此文件,不涉及。
P1-2 | 契约表漏登记 2 个 AI 入口
现象
mcn-work-shop/docs/AI会话任务输入输出对照.md:入口表只有 1–9 行(9 为 clarify,非任务);L127 声明「前缀常量 = CREATE/EXTRACT/STORYBOARD/REVIEW + ACCOUNT」;检查清单第 1 项同样只列 5 个。- 实际
mcn-work-shop/public/data-pages.js还有两个入口:
| 入口 | 触发点 | 前缀常量 | skills | label | 代码位置 |
|---|---|---|---|---|---|
| 功能四:账号数据分析 | 账号详情「数据分析」tab 空态按钮 [data-analyze] |
SKILL_HINT_ANALYZE |
['mcn-dou-analysis'] |
分析指令 | data-pages.js:1303-1312 |
| 功能五:视频解析 / 刷新 | 视频详情「解析/刷新」 | SKILL_HINT_VIDEO_PARSE(刷新时追加 VIDEO_REFRESH_OVERRIDE) |
['mcn-dou-analysis'] |
解析指令 | data-pages.js:1719-1733 |
根因:09-02 定契约时只覆盖了当时已固化的 5 类入口;09-03/09-04 新增的功能四、功能五入口没有回填契约表 → SKILL.md 第 7 条(P0「新增/修改任何入口时先读此表」)的护栏自身漏口。
最佳方案:补登记 + 加一道"表与代码对齐"的自检动作。
| # | 位置 | 改动 |
|---|---|---|
| 1 | 对照.md 入口表 |
新增 10、11 两行,字段同现有格式:10 | 账号详情(#/account/:id)数据分析 tab 空态 | 账号数据分析 | 分析指令 | ['mcn-dou-analysis'] | SKILL_HINT_ANALYZE | 功能四;近4个月数据逐条拆解+汇总分析;带 connectorIds(缺存量解析时现场 MCP 解析) | data-pages.js ~L1303 ;11 | 视频详情(#/video/:id)解析/刷新 | 解析视频 / 重新解析 | 解析指令 | ['mcn-dou-analysis'] | SKILL_HINT_VIDEO_PARSE(刷新追加覆盖语义段) | 功能五;MCP 内容解析产 content+analysis;刷新必须整段覆盖不许判断"是否需更新" | data-pages.js ~L1719 |
| 2 | 对照.md:127 关键细节 |
常量清单补全为 SKILL_HINT_CREATE/EXTRACT/STORYBOARD/REVIEW/ANALYZE/VIDEO_PARSE/ACCOUNT,并注明权威来源 = data-pages.js / app.js 顶部实际声明(行号会漂,故不给行号,只给文件) |
| 3 | 对照.md:137 检查清单第 1 项 |
前缀对应关系补 分析=ANALYZE、视频解析=VIDEO_PARSE |
| 4 | 对照.md 新增入口检查清单 |
追加第 8 项:[ ] 表码对齐:本次新增/改动的入口已回填本表入口表行(含 skills / 前缀常量 / 代码位置),并核对 server.js BROWSER_HINT 正则不被误命中 |
| 5 | SKILL.md:81 |
(SKILL_HINT_CREATE/EXTRACT/STORYBOARD/REVIEW/ACCOUNT,分别对应 创作/提炼/分镜/复盘/账号抓取) → (SKILL_HINT_CREATE/EXTRACT/STORYBOARD/REVIEW/ANALYZE/VIDEO_PARSE/ACCOUNT,分别对应 创作/提炼/分镜/复盘/账号数据分析/视频解析/账号抓取;完整清单以 mcn-work-shop/docs/AI会话任务输入输出对照.md 为准) |
验证:
grep -c "SKILL_HINT_" mcn-work-shop/public/data-pages.js mcn-work-shop/public/app.js得到的常量名集合 = 对照表清单,一一对应无缺;- 逐个入口 grep
skills:与表内 skills 列一致。
风险:低。纯文档补登记,不改代码逻辑。
P1-3 | 八类35项「交付前强制」↔ S11「可选」门禁冲突 ✅需你裁决
现象
references/创作流程规范.md:97(P0):「无论何种模式,脚本交付(Gate-6 / 自动模式生成创作回顾)前必须完成八类35项自检;其中前3秒钩子、人设一致性、设定承接、教程完整链为一票否决项——不过禁止生成创作回顾/交付」SKILL.md:296-298:「步骤 11:脚本检查和诊断 🔶 可选步骤…S11 是可选质检,由用户决定是否执行」references/创作流程/11_脚本检查和诊断.md:20-22:八类35项扫描被放在 S11 第〇步执行
根因:清单的执行环节被放在 S11(一个可选步骤)里,但门禁强度由规范按"交付前强制"定义。执行承载者与约束强度错位 → 用户不点 S11,交付闸门就形同不存在;而按规范,不过是不许交付的。两条都是"权威"(SKILL.md 是红线层,规范是跨步骤通用机制层),互相打脸。
最佳方案:按"闸门 / 报告"拆开,各归其位,只留一处定义。
判据来自规范自己的 L183:「验收口径 = 执行约束,不是输出内容…诊断与取证过程归 S11,不进入 S9/S10 交付物」——即执行可以前置,输出仍归 S11。
| # | 位置 | 改动 |
|---|---|---|
| 1 | 创作流程规范.md:97(权威定义处,只此一处写全) |
明确执行环节与输出边界:脚本交付前必须完成八类35项自检——**执行环节 = S9 脚本产出后静默执行**(结果不进 S9 交付物,沙盒内自用;不过则按一票否决项处理,禁止进入 Gate-5/交付);S11 诊断(可选)复用该结果并追加四维度评分与专项深诊。自动模式返工上限 2 轮… |
| 2 | SKILL.md 步骤 9 段(L272-280) |
在「用户确认:Gate-5」前补一句:> 🔴 交付前强制自检:S9 脚本产出后必须静默执行八类35项自检(一票否决项不过禁止进入 Gate-5;结果不写入交付物,判定标准见知识库 09_脚本诊断/脚本质量自动检查清单_八类35项.md) |
| 3 | SKILL.md 步骤 11 段(L296-298) |
保留 🔶 可选,但把「可选」限定到报告层:🔶 S11 = **可选增强**:八类35项自检已由 S9 收尾强制完成,S11 在此基础上做四维度评分、故事成立性与最终审核报告;由用户决定是否执行。 |
| 4 | 11_脚本检查和诊断.md:20-22 |
第〇步加注:> 该扫描属交付前强制闸门(S9 收尾已执行一次);S11 执行时**复用 S9 结果**,仅当脚本在 S11 期间被修改才重跑 |
验证:三处表述互不重复定义、只指向规范;grep -n "八类35项" SKILL.md references/创作流程规范.md references/创作流程/11_*.md → 门禁条件只出现在规范 L97 一处,其余两处为引用。
⚠️ 需你确认的点:S9 静默自检 + S11 报告可选的拆分,是否符合你的原意?另一条可选口径是把 S11 整体改为强制(则与自动模式"只落最终交付物"的轻量设计冲突,不推荐)。
P1-4 | 钩子家族术语 4 叫法
权威:references/规则/概念分层与源头表述规范.md §三——「对外使用的统一总称只保留一处(开场钩子);细分概念各用职责名(开场方式=开场内容策略、「本场钩子」=留人机制);改名必须一次覆盖全链路」。
现状残留(S5 模板字段已是正确的「开场钩子」,其余为旧词):
| 位置 | 现状 | 改为 |
|---|---|---|
SKILL.md:223 |
选题方案(含切入角度/爆款逻辑/**钩子预设**/共鸣切入点) |
选题方案(含切入角度/爆款逻辑/**开场钩子**/共鸣切入点;字段完整清单以 5_生成短视频选题.md 输出模板为准) |
5_生成短视频选题.md:187 |
**4.3 开篇钩子预设(选题吸引力前置判断):** |
**4.3 开场钩子预设(选题吸引力前置判断):** |
5_生成短视频选题.md:166 |
→ 全部通过 → 进入钩子预设 |
→ 全部通过 → 进入开场钩子预设 |
5_生成短视频选题.md:229 |
- 每个方案预设的钩子策略 |
- 每个方案预设的开场钩子(开场方式 1-2 种) |
5_生成短视频选题.md:255 |
- 每个选题预设至少 1 种开篇钩子策略 |
- 每个选题预设至少 1 种开场方式(写入「开场钩子」字段) |
5_生成短视频选题.md:265 |
…和钩子预设要求 |
…和开场钩子要求 |
5_生成短视频选题.md:294 |
每个方案须预设至少 1 种开篇钩子策略。 |
每个方案须预设至少 1 种开场方式(写入「开场钩子」字段)。 |
5_生成短视频选题.md:411 |
| 已预设 ≥ 1 种钩子策略 | ✅/❌ | |
| 已选定 ≥ 1 种开场方式(已写入开场钩子字段) | ✅/❌ | |
注意:5_生成短视频选题.md:192「S6 用「本场钩子」五类留人机制」与 S6 场次表列名「本场钩子」是正确用法,不动。
验证:grep -rn "开篇钩子\|钩子预设\|钩子策略" SKILL.md references/ mcn-work-shop/ → 仅允许命中 references-add/变更日志.md(历史归档)。
P1-5 | 规范内旧技能名 + 乱码
| 位置 | 现状 | 改为 | 说明 |
|---|---|---|---|
references/创作流程规范.md:406 |
…(两目录合并检索,相对于技能根目录 \脚本创作技能/`)。` |
…(两目录合并检索,相对于技能根目录 \短视频工作台/`)。` |
09-03 已更名;且该处旧名与 SKILL.md:381 记载的旧名(「短视频脚本创作技能」)都不是同一个,属二次走形,统一用现名最稳 |
references/创作流程规范.md:408 |
> 知识库更新后,AI 直接读��最新文件内容,步骤文件无需同步修改。 |
> 知识库更新后,AI 直接读取最新文件内容,步骤文件无需同步修改。 |
单字符乱码(U+FFFD),按语义补「取」 |
验证:grep -rn "脚本创作技能" references/ SKILL.md 帮助文档.md → 零输出(变更日志豁免);grep -n "�" references/创作流程规范.md → 零输出。
P1-6 | S5 输出声明漏字段
现象:5_生成短视频选题.md:227 写「每个含:主题 / 切入角度 / 爆款逻辑 / 差异化 / 人设匹配度 / 目标体感」——漏「共鸣切入点」「开场钩子」「故事前提」,且「差异化」与模板字段名「差异化特征」也不一致;而模板(L309-321,9 字段)与规范 L431 都要求全字段。
最佳方案:不重复罗列(避免与模板二次漂移),改为指向模板 + 列全一次。
| 位置 | 改为 |
|---|---|
5_生成短视频选题.md:227 |
- 5 个选题方案(**字段完整清单以上方「选题方案输出模板」为准**:主题 / 切入角度 / 爆款逻辑 / 差异化特征 / 人设匹配度 / 目标体感 / 共鸣切入点 / 开场钩子 / 故事前提〔剧情/悬念/反转类必填〕) |
验证:人工比对 L227 字段与 L309-321 模板字段一一对应(9/9)。
P1-7 | dou-analysis 侧 dsh 死分支 ✅需你选 A/B
现象(dsh 环境 09-10 已整套下线,~/.dsh 与 D:\dshworkspace 均不存在)
| 位置 | 内容 |
|---|---|
mcn-dou-analysis/SKILL.md:160 |
「可选写库:① 环境有 MCN 插件接口(dsh)时补录 account_video_source 并提取选题;② 工作台环境…POST /api/import/account」 |
references/feature/05_解析视频.md:55 |
「若当前环境有 MCN 插件接口(/mcn/api/video/source/backfill,可用 pwsh 调用,基地址 $env:DSH_WEB_URL 或 3081/3080)…接口不可用时跳过」 |
references/接口调用/本地接口调用规范.md(整份 23 行) |
基地址判定 = $env:DSH_WEB_URL → 3080/3081;接口清单 = /mcn/api/account/videos、/mcn/api/external/import、/mcn/api/account/update |
references/铁律避坑规则/账号设定执行避坑.md:12, 25 |
规则 3 用 GET /mcn/api/account/videos 探测连通;规则 6 记载该规范的沉淀来源 |
根因:09-10 的卸载只覆盖了主技能层与路径判定层(路径配置.md、SKILL.md 数据边界),dou-analysis 的写库接口层漏了——而它是被"功能三/五执行"实际读取的活文件。
方案 A(推荐)|改写为工作台接口规范——保留沉淀价值,接口跟着平台走
| # | 位置 | 动作 |
|---|---|---|
| 1 | references/接口调用/本地接口调用规范.md |
重写为《工作台接口调用规范》:① 基地址 — 从 mcn-work-shop/config.json 的 port 读(默认 8900,server.js 支持 argv 覆盖),禁写死端口;② 写库接口 — POST /api/import/account,body {"account":"{达人昵称}"},落库映射见 dou-analysis SKILL.md:160;③ 保留「大文本用 Python urllib + json.dumps(ensure_ascii=False) 直连,禁 PowerShell ConvertTo-Json」这条铁律;④ 接口清单不另抄一份,指向 mcn-work-shop/docs/AI会话任务输入输出对照.md + server.js 路由为权威 |
| 2 | references/铁律避坑规则/账号设定执行避坑.md:12 |
探测方法改为「用 GET http://127.0.0.1:<工作台端口>/api/dsh/stats 探连通,不用写接口探测」 |
| 3 | references/铁律避坑规则/账号设定执行避坑.md:25 |
沉淀描述改为「新建 references/接口调用/本地接口调用规范.md,记录工作台接口基地址判定、写库接口与请求构造方式」 |
| 4 | feature/05_解析视频.md:55 |
整句改为「解析结果对应「原视频解析」数据:落盘后调用工作台 POST /api/import/account(body {"account":"{达人昵称}"})把 content.json 补录进 account_video_source 并提取选题(topic);工作台未启动时跳过(不影响本地保存)。」 |
| 5 | mcn-dou-analysis/SKILL.md:160 |
删「① 环境有 MCN 插件接口(dsh)…;②」序号与前半句,保留工作台单一分支述为「可选写库(工作台环境):…」 |
方案 B | 整体下线该规范文件:删除 本地接口调用规范.md,同步清理 3 处引用(账号设定执行避坑.md:12/25、SKILL.md:160),接口调用一律改为指向工作台契约文档。优点:文件更少;缺点:丢掉"大文本禁 ConvertTo-Json"这条用血换来的铁律。
我的判断:选 A。这条铁律与平台无关,是通用工程约束,值得留在技能里。
验证:grep -rn "/mcn/api\|DSH_WEB_URL\|3080\|3081" subskills/mcn-dou-analysis/ → 零输出;重写后人工确认新基地址来自 config.json 而非写死。
⚠️ 需你选 A 还是 B。
P1-8 | 「dsh 已下线」历史叙述未清
判据:09-10 已确立的处置原则——① 规则/prompt 正文里的历史叙述全删;② 陈述"不存在的事物"删;③ 禁止性护栏精简保留(去掉日期与下线经过,只留"禁止做什么");④ 文末「变更记录」区保留。
| # | 位置 | 现状 | 改为 |
|---|---|---|---|
| 1 | SKILL.md:78 |
(**dsh 侧已整套下线(09-10):\~/.dsh/mcn-plugin.db` 与 `D:\dshworkspace` 均不存在**,工作台 DB 为唯一读写副本)` |
(工作台 DB 为唯一读写副本) |
| 2 | mcn-dou-analysis/SKILL.md:42 |
…**权威台账 = 数据目录的桌面 \MCNSkill项目/达人账号表.xlsx`(开发机与用户环境同构);dsh 侧已整套下线(09-10:`D:\dshworkspace` 不存在),其遗留表不再作为任何来源**。` |
…**权威台账 = 数据目录的桌面 \MCNSkill项目/达人账号表.xlsx`(开发机与用户环境同构)**。` |
| 3 | mcn-dou-analysis/references/路径配置.md:15 |
> **09-10 起 dsh 部署环境已废弃**(…)——不再有 dsh 分支与 \D:\dshworkspace\解析任务\` 产出路径。历史条目见文末「变更记录」。` |
整行删除 |
| 4 | mcn-dou-analysis/references/路径配置.md:28 |
- ⚠️ **不存在 dsh 分支**:dsh 侧已整套下线(09-10),不要再按 \.dsh` 路径段或 `D:\dshworkspace` 做任何分支判断` |
- ⚠️ 禁止按 \.dsh` 路径段或 `D:\dshworkspace` 做分支判断`(护栏精简保留) |
| 5 | mcn-dou-analysis/references/路径配置.md:56 |
…**两者同构**,均无 dsh 分支) |
…**两者同构**) |
| 6 | mcn-dou-analysis/references/feature/06_生成账号设定卡片.md:50 |
(**无 dsh 分支**,以 … 为唯一权威) |
(以 … 为唯一权威) |
| 7 | mcn-dou-analysis/references/浏览器搜索抖音账号操作规范.md:175 |
…(主技能 \短视频工作台/subskills/browser-harness/`;09-10 起无 dsh 部署环境;如缺失可从…)` |
…(主技能 \短视频工作台/subskills/browser-harness/`;如缺失可从…)` |
| 8 | mcn-data-insight:references/规则/抖音数据规则.md:61、scripts/fetch_week_ranks.py:53、subskills/douyin-*/SKILL.md 数处 |
同类「无 dsh 分支」括注 / docstring 注脚 | 同类处置:正文括注删;代码 docstring 只留定稿日期或删(按 09-10 原则②) |
验证(一次扫净):
grep -rn "dsh 侧\|dsh 部署环境\|dsh 环境\|无 dsh 分支\|不存在 dsh" SKILL.md references/ references-add/ subskills/ --include=*.md --include=*.py --include=*.js
预期:仅 references-add/变更日志.md 与各文件「变更记录」区命中(历史归档豁免)。
⚠️ 白名单提醒:工作台 API 命名空间 /api/dsh/*(/api/dsh/accounts、/api/dsh/stats、/api/dsh/ranking…)与 dsh-data.js、isDshDeploy(后者已删)不是 dsh 部署环境残留,不可动。
三、执行顺序(依赖关系)
批次 A(口径统一,先做——后两批都要引用改后的口径)
P1-1 → P1-6 → P1-4 → P1-5 → P1-3(需你确认口径)
批次 B(dsh 收尾,独立可并行)
P1-7(需你选 A/B) → P1-8
批次 C(契约补登记,可与 A/B 并行)
P1-2
每处改完立即验证;同一文件的多处修改必须串行(09-10 曾在并行 Edit 同文件时发生写竞态导致丢改)。
四、收尾沉淀(修复完成时一并做)
| 动作 | 落点 |
|---|---|
| 记录本轮 4 类失误(断链/契约漏登记/门禁错位/术语改名未覆盖) | 失误与规避记录.md 追加条目 |
| 登记本次修复 | references-add/变更日志.md |
| 更新 frontmatter | V1.0/SKILL.md 的 updated_at + last_change |
| 审计结论回填 | 技能审计报告_V1.0_20260914.md 各条标「已修」+ 验证命令输出 |
五、等你拍板的三件事
- P1-3 口径:接受「S9 静默自检(强制闸门)+ S11 报告(可选)」这个拆法吗?
- P1-7 选型:接口规范重写为工作台版(A,推荐),还是整体下线(B)?
- 执行授权:确认后我按批次 A → B/C 逐条改、逐条验;还是你想先只做批次 A 看效果?