1. 目录 mcn-work-shop -> mcn-workshop(空间分组名取会话 cwd 的目录名,只改字符串无效,必须真改名) 2. 全仓替换 mcn-work-shop -> mcn-workshop:37 文件 121 处;历史日志按沿革句规矩保留当时目录名 3. 任务进度可见:/api/run/status 产出 已运行时长/工具调用/最近动作/停滞判定(读会话日志尾部),前端新增右下角常驻面板,四处任务入口接入 4. 会话归属目录配置化:新增 config.sessionCwd(留空=工作台自身目录),现指向 D://AI技能//mcn-workshop,使任务显示为命名分组而非「未分组任务」 5. 修前端轮询静默缺陷:连续 3 次查询失败即提示服务断开(原逻辑静默空转到 15 分钟超时,用户零感知)
255 lines
26 KiB
Markdown
255 lines
26 KiB
Markdown
# 测试用例:俊希全流程(获取账号数据 → 提取账号设定 → AI 选题写脚本)
|
||
|
||
> **用例编号**:TC-20260831-01
|
||
> **用例名称**:达人「俊希」完整链路测试——从获取账号数据(有就刷新)→ 提取账号设定 → AI 参考最新视频选题 → 写脚本
|
||
> **测试账号**:俊希(MCN 账号,亲子 Vlog 方向)
|
||
> **执行场景**:**首次执行**(俊希不在达人账号表、产出目录无账号设定/视频表格 → 走首次获取;已存在数据时走「有就刷新」分支)
|
||
> **测试日期**:2026-08-31
|
||
> **预估耗时**:约 60~90 分钟(含 MCP 解析等待 3-5 分钟/条)
|
||
|
||
---
|
||
|
||
## 一、测试目标与链路总览
|
||
|
||
验证 mcn-dou-analysis 技能(功能一→二→三→六)与 MCN 工作台 AI 写脚本、脚本创作技能 S1-S11 的**端到端贯通**,覆盖:
|
||
|
||
| # | 环节 | 所属技能/功能 | 产出物 |
|
||
|---|------|--------------|--------|
|
||
| 1 | 账号表登记 | 功能一 Step 1.0 | `达人账号表.xlsx` 新增俊希行(账号ID 70014) |
|
||
| 2 | 获取账号信息(有就刷新) | 功能一 | 账号表 15 列补齐 + 更新时间 |
|
||
| 3 | 获取视频列表 | 功能二 | `短视频表格.xlsx`(13 列,≥60 条) |
|
||
| 4 | 筛选 TOP 视频 | 功能三 Step 3 | top 视频清单(最近三个月 + ≤15min + 点赞+分享降序,TOPn) |
|
||
| 5 | MCP 视频解析 | 功能三 Step 4 | 每条视频 content + analysis |
|
||
| 6 | 保存解析结果 | 功能三 Step 5 | `视频分析/{标题}_标签1_标签2/` content.json + analysis.json |
|
||
| 7 | 生成人设卡(12 段) | 功能三 Step 6 | `俊希账号设定.md` |
|
||
| 8 | 自动生成账号设定卡 | 功能六(Step 7 自动联动) | `俊希账号设定卡.svg` |
|
||
| 9 | AI 参考最新视频选题 | MCN 工作台「AI写脚本」→ AI 选题 | 3 个选题方向 |
|
||
| 10 | AI 写脚本(S1-S11 完整流程) | 脚本创作技能 | `脚本1/` 系列产物 + S9 完整脚本 |
|
||
| 11 | 收尾验证 | 全链路 | 文件齐全 + grep 一致性 + git 提交 |
|
||
|
||
**数据流**:`达人账号表.xlsx` → 浏览器抓取(browser-harness)→ `短视频表格.xlsx` → 筛选 → MCP 解析(upload → wait → detail)→ JSON 落盘 → 账号设定 md → 设定卡 SVG → 工作台 /api/ai/topics 选题 → 创作任务(automations)→ 脚本落盘。
|
||
|
||
---
|
||
|
||
## 二、前置检查清单
|
||
|
||
| # | 检查项 | 判定标准 | 本用例实际状态 |
|
||
|---|--------|---------|---------------|
|
||
| P1 | 达人账号表是否含「俊希」 | 有 → 走「有就刷新」分支;无 → Step 1.0 登记 | **无**(仅小咪橘座 70010 / 旧梦留声机 70013)→ 首次登记 70014 |
|
||
| P2 | 产出目录 `MCNSkill项目/俊希/` 现有内容 | 有账号设定/视频表格 → 刷新覆盖;无 → 全新创建 | **仅 `提示词01/` 子目录**(分镜技能产出,与本次链路不冲突),无账号分析产出 → 全新 |
|
||
| P3 | browser-harness 是否可用(功能一/二红线) | 可执行文件存在(Win `~/.local/bin/browser-harness.exe` / mac `~/.local/bin/browser-harness`)或 `where`/`command -v` 有输出 | 执行前检测,未装则按红线提醒/安装 |
|
||
| P4 | MCP 服务(myai-mcp-production)可用 | 当前会话 MCP 工具列表含 `upload_douyin_video`/`short_video_detail` 或 `~/.workbuddy/mcp.json` 含该服务配置 | 执行前检测,未装按 MCP 规范提醒 |
|
||
| P5 | MCN 工作台服务(端口 8899) | `http://localhost:8899` 可访问 | **运行中(200)**;未启动则先启动(`node server.js`,自动避让端口) |
|
||
| P6 | 浏览器 9223 调试实例 | `http://localhost:9223/json` 可访问(界面模拟点击测试用) | **运行中**;未启动则按浏览器操作规范启动调试 Chrome |
|
||
| P7 | 输出路径权威配置 | 读 `references/路径配置.md` | 开发机 → 桌面 `MCNSkill项目/`,`俊希/` 账号层直挂 |
|
||
|
||
## 二·补、前置数据检查与清理判定(本次实测 2026-08-31)
|
||
|
||
> 测试前先判断**项目文件夹**与**数据库**是否已有俊希数据,决定是否需要清除,避免测试污染/误判。
|
||
|
||
### 检查结果(本次实测)
|
||
|
||
| 数据源 | 检查项 | 实测结果 | 是否需清除 |
|
||
|-------|-------|---------|-----------|
|
||
| 项目文件夹(桌面 `MCNSkill项目/俊希/`) | 账号设定/视频表格/脚本 | **仅 `提示词01/`**(分镜产出,属短视频分镜提示词技能) | **否**(本链路产出全新创建;提示词01 保留) |
|
||
| 达人账号表.xlsx | 俊希行 | **无** | 否(首次登记 70014) |
|
||
| 工作台 mcn-plugin.db(`…\mcn-workshop\`,自有副本) | hot_accounts 俊希 | **有**(id=3,含完整账号信息 + content 账号设定文本、douyin_id=JJX0827、sec_uid、278.7万粉、source_dir=`D:\dshworkspace\账号解析\俊希` 为**旧路径残留**,目录已不存在) | **否**(见下判定) |
|
||
| 同上 | account_videos 俊希 | **有 108 条**(source_dir=`D:\dshworkspace\抖音账号分析\俊希` 旧路径) | 否 |
|
||
| 同上 | account_persona 俊希 | **无**(5 行均为 1627-1630 测试占位,无 account_id=3) | 否 |
|
||
| 同上 | rewrite_log 俊希 | **有 3 条**(2026-08-19 AI 写脚本记录,id=12/15/16,topic 含完整选题) | 否 |
|
||
| dsh 原库(`~/.dsh/mcn-plugin.db`) | 俊希数据 | 与工作台副本一致(hot_accounts/videos/rewrite_log + account_video_source 2 条) | **否(.dsh 单向只读红线,绝不写)** |
|
||
| 旧目录 `D:\dshworkspace\账号解析\俊希`、`抖音账号分析\俊希` | 文件 | **已不存在**(数据库 source_dir 为历史残留) | 无需处理 |
|
||
|
||
### 清理判定逻辑(结论)
|
||
|
||
1. **文件层面**:桌面 `MCNSkill项目/俊希/` 无本链路产出 → **无需清除**,全新创建;已有产出时(有就刷新)→ 覆盖更新 `短视频表格.xlsx`、新增/更新设定与脚本,**不删除旧产出**(保留可追溯)
|
||
2. **数据库层面(工作台 mcn-plugin.db 自有副本)**:俊希有历史数据但**不影响本测试**——关键判定 `account_persona` 无俊希 → 工作台 `confirmAiScript` 的 hasPersona=false → 弹窗走「先进行账号设定分析」分支,**首次场景成立**(hot_accounts.content 的旧设定文本不会被界面读取,界面只读 account_persona)。因此**无需清除**;若追求「完全干净」需用户明确授权后选择性清除(hot_accounts id=3 及其 videos/rewrite_log 行),且只动工作台自有副本
|
||
3. **dsh 原库**:**红线只读,绝不写**(清理不适用)
|
||
4. **工作台副本与 dsh 原库的数据同步**:工作台读自有副本(`mcn-workshop/mcn-plugin.db`),与 `~/.dsh/mcn-plugin.db` 隔离;测试新增数据(rewrite_log 第 4 条等)只落工作台副本,不影响 dsh 原库
|
||
|
||
### 清除操作(如用户要求执行,需先备份)
|
||
|
||
```bash
|
||
# 仅工作台自有副本;先 cp 备份 mcn-plugin.db 再操作
|
||
# 清除俊希:DELETE FROM rewrite_log WHERE account_id=3; DELETE FROM account_videos WHERE account_id=3; DELETE FROM hot_accounts WHERE id=3;
|
||
# 注意:达人账号表/桌面产出/dsh 原库一律不动
|
||
```
|
||
|
||
---
|
||
|
||
## 三、详细测试步骤
|
||
|
||
### TC-01 账号表登记(前置)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 打开 `达人账号表.xlsx`(15 列:账号ID/达人昵称/抖音号/抖音ID/抖音地址/粉丝数/解析状态/人设卡/更新时间/获赞数/关注数/作品数/IP属地/简介/备注),新增「俊希」行 |
|
||
| 预期 | 账号ID 自增 = **70014**;抖音号/抖音ID(sec_uid)/抖音地址存**文本格式**(防科学计数法);其余字段(粉丝数/解析状态/更新时间等)留空待补;表中仅新增俊希一行,不改动已有行 |
|
||
| 验证点 | ① 表格结构仍 15 列;② 70014 行号正确;③ 抖音号列显示完整无 `E+` 变形 |
|
||
| 通过标准 | 俊希已登记且格式合规;已有 2 行(小咪橘座/旧梦留声机)数据未受影响 |
|
||
|
||
### TC-02 获取账号信息(功能一,有就刷新分支)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | ① 检查表中俊希「更新时间」:**首次无更新时间** → 直接抓取(无需提示刷新);**若已有且近 1 个月内** → 提示用户判断是否仍需刷新,用户确认后再抓;② 检测 browser-harness(P3);③ 读 `浏览器搜索抖音账号操作规范.md` 全文;④ browser-harness 打开抖音网页版 → 适度访问(50% 概率先浏览首页 3~8 秒)→ 搜索「俊希」→ 进达人主页提取 昵称/抖音号/抖音ID(sec_uid)/抖音地址/粉丝数/获赞数/关注数/作品数/IP属地/简介 |
|
||
| 预期 | 主页信息完整提取;**sec_uid 失效处理**:若用三方提供的抖音地址访问报「用户不存在」,改搜索昵称/抖音号重新定位,回填正确 sec_uid 与抖音地址 |
|
||
| 验证点 | ① 15 列字段逐项有值(无数据的列留空不编造);② 抖音地址为 `https://www.douyin.com/user/{sec_uid}` 完整格式;③ 粉丝数/获赞数等为网页实时数值;④ 「更新时间」回填 `YYYY-MM-DD HH:MM` |
|
||
| 通过标准 | 账号表俊希行 15 列信息登记完毕;数据来源为浏览器优先(非 MCP 内部库;若兜底用 MCP 须在备注注明) |
|
||
|
||
### TC-03 获取视频列表(功能二)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 进入俊希主页 → 滚动加载视频列表(每次间隔随机 1~3 秒,`.route-sc` 容器)→ **≥60 条即停止**(或滚动到底加载不出也停,两条件先到者为准)→ 保存为 `MCNSkill项目/俊希/短视频表格.xlsx`(13 列标准格式) |
|
||
| 预期 | Excel 13 列:序号/视频ID/视频标题/视频地址/点赞数/点赞(显示)/评论数/分享数/收藏数/播放量/视频时长/发布时间/标签;行数 ≥60 |
|
||
| 验证点 | ① 表头与 13 列标准完全一致;② 行数 ≥60;③ 视频地址可访问(抽查 3 条);④ 点赞/分享/时长/发布时间为数值且单位正确 |
|
||
| 通过标准 | `短视频表格.xlsx` 落盘且数据完整;**若表已存在(有就刷新)** → 重新抓取覆盖旧表,验证新表行数/时间范围更新 |
|
||
|
||
### TC-04 筛选 TOP 视频(功能三 Step 3)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 用 `scripts/excel_tool.py select-top6 短视频表格.xlsx --output top6.json` 筛选:① 发布时间在最近三个月内;② 时长 ≤15 分钟;③ 按 点赞数+分享数 降序;④ 取前 N 条 |
|
||
| 预期 | N 按 SKILL.md「视频筛选标准」唯一权威参数:**上限 6,实际满足条件不足 6 条时按实际条数取(TOPn = 实际解析条数)**;top6.json 列出候选视频(含标题/链接/双率) |
|
||
| 验证点 | ① 筛选后条数 n 明确(n ≤ 6);② 排序依据 = 点赞(列5)+分享(列8) 降序,可人工抽查核对;③ 无 >15 分钟、超三个月视频混入 |
|
||
| 通过标准 | top6.json 生成,n 与后续「账号内容基因·TOPn」板块数一致(**n=解析条数,不写死 6**) |
|
||
|
||
### TC-05 MCP 视频解析(功能三 Step 4)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 对每条入选视频:`upload_douyin_video`(传视频 URL `https://www.douyin.com/video/{id}`)→ 返回 detailId → **等待 3-5 分钟**(`sleep 180` 后批量查询)→ `short_video_detail` 查询 |
|
||
| 预期 | 每条视频返回 content(分镜头表:镜头/景别/时长/画面/表情/字幕口播)+ analysis(结构化 JSON:赛道/核心人设/差异化壁垒/情绪设计/通用框架等) |
|
||
| 验证点 | ① detailId 均成功返回;② content 已出;③ 部分视频 content 已出但 analysis 未完成 → 稍后重试(2-3 分钟);④ 返回「解析中」→ 等 2-3 分钟再查;⑤ **解析失败/无法解析 → 按视频补充规则取下一位(点赞+分享降序)补齐至 n 条** |
|
||
| 通过标准 | n 条视频全部拿到 content + analysis,无缺失(或已按补充规则补足) |
|
||
|
||
### TC-06 保存解析结果(功能三 Step 5)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 用 `scripts/json_tool.py`:`create-content --detail-id {id} --title "标题" --output-dir "视频分析/文件夹"` + `create-analysis`;文件夹命名 `视频标题(去特殊符号)_标签1_标签2`(去掉账号名标签和 #);最后 `verify-folders --base-dir "视频分析"` 批量验证 |
|
||
| 预期 | 每个视频独立文件夹,含 `content.json` + `analysis.json`(JSON 格式,非 Markdown);目录结构符合 `解析结果格式规范.md` |
|
||
| 验证点 | ① json 可被 `json_tool.py inspect` 正常读取;② analysis 为简化格式(自动修复未转义双引号);③ 文件夹命名规则合规 |
|
||
| 通过标准 | 全部 n 条视频 JSON 落盘,verify-folders 无缺失 |
|
||
|
||
### TC-07 生成人设卡(功能三 Step 6)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 综合**两个技能库**生成:① 脚本创作技能源技能 references(结构骨架:`创作流程/4_账号设定解析和确认.md` + `3_对标视频账号拆解.md` + `知识库/01_账号设定/` + `08_对话风格/`);② 女娲造人术 `subskills/nuwa-skill-main/`(深度分析)。产出 `俊希账号设定.md`,统一 **12 段结构** |
|
||
| 预期 | 12 段齐全:账号核心定位 → 账号内容基因(**板块数 = n 条解析 = TOPn**)→ 类型库(按账号类型适配,亲子 Vlog)→ 情绪结构 → 视听风格 → 内容打法 → 内容规则 → 系列内容规划 → 差异化壁垒 → 红线清单 → 当前需解决的问题 → 设定分析说明;聚焦内容创作,不含商业化变现路径 |
|
||
| 验证点 | ① 12 段标题逐一存在;② 赛道键归一(亲子赛道在 29 枚举内);③ 内容基因板块数 = 解析条数 n;④ 人设卡内容有账号级「如果…则…」内容规则(事前约束,非事后验收) |
|
||
| 通过标准 | `俊希账号设定.md` 落盘于 `MCNSkill项目/俊希/`,12 段完整、TOPn 与解析条数一致 |
|
||
|
||
### TC-08 自动生成账号设定卡(功能六联动)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 设定 md 落盘后**无需用户开口自动触发**功能六:读设定 → 读模板样例 → 模块映射 → SVG 手绘 → 产出 `俊希账号设定卡.svg`(同目录) |
|
||
| 预期 | SVG 长图(680×~1716),模块名统一为「叙事结构」「内容标签」「**内容基因·TOPn**」(n=实际解析条数);底色按账号调性选色系(亲子 Vlog 偏明快 → 浅色系或按俊希既有风格定),**同一账号固定色系**;背景上直接书写的文字随背景深浅提亮 |
|
||
| 验证点 | ① 卡片 TOPn 与设定 md 内容基因板块数一致(**n 不写死 6**);② 双向联动一致性:交付前 **grep 校验**两文件关键术语一致(模块名「叙事结构」「内容标签」「内容基因·TOPn」等),零残留后再交付;③ 卡片内容与设定 md 内容级一致 |
|
||
| 通过标准 | `俊希账号设定卡.svg` 生成;grep 校验通过(模块名/TOPn 两文件一致) |
|
||
|
||
### TC-09 工作台 AI 参考最新视频选题(**界面模拟点击**)
|
||
|
||
> **本环节用可执行脚本模拟真实点击测试**,脚本:`mcn-workshop/cdp-test-junxi.mjs`
|
||
> 用法:`node cdp-test-junxi.mjs`(安全模式:验证到选题生成,不触发任务);`node cdp-test-junxi.mjs --confirm`(继续确认执行,真实触发创作任务)
|
||
> 机制:连接浏览器 9223 调试实例 → 新开标签页打开 `#/accounts` → `Runtime.evaluate` 模拟点击 → 轮询弹窗/AI 选题 → 自动关闭标签页(不干扰用户页面)。脚本复用 cdp-verify-*.mjs 的 CDP 模式。
|
||
|
||
**两条「AI写脚本」入口差异(重要)**:
|
||
|
||
| 入口 | 位置 | 行为 | 本用例用途 |
|
||
|------|------|------|-----------|
|
||
| 账号列表「AI写脚本」 | `#/accounts` 每行(`[data-create]`) | `confirmAiScript` → 弹窗:手输选题 **或 点 AI 按钮结合人设生成选题**(`POST /api/ai/topics`,基于账号设定+最新视频提炼 3 个方向) | **主链路**(AI参考最新视频选题) |
|
||
| 视频列表「AI写脚本」 | `#/rewrites` 每行(`[data-rewrite]`) | `confirmRun` 改写脚本:「基于视频《Y》改写全新 S9 故事脚本(不复刻原视频)」 | 次链路(基于单条视频改写,可选回归) |
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作(脚本自动执行) | ① 脚本新开标签页打开 `#/accounts` → 定位俊希行「AI写脚本」按钮(`[data-create='俊希']`)→ **模拟点击**;② 轮询等待弹窗出现(`.modal-mask:not([hidden])` 含 `#aiTopicGen`,排除 index.html 隐藏的 `#settingsModal` 干扰);③ 读取弹窗标题/文案 → 验证分支;④ **模拟点击 `AI` 按钮**(#aiTopicGen)→ `POST /api/ai/topics` → 轮询选题输入框(最长 100s,Dify 约 50s)→ 读取 3 个选题方向;⑤ 安全模式点「取消」关闭弹窗;`--confirm` 模式点「确认执行」触发任务 |
|
||
| 预期 | 弹窗标题「AI写脚本」;文案分支 = **「先进行账号设定分析,再生成完整脚本」**(account_persona 无俊希 → hasPersona=false → 首次场景);AI 选题返回 **3 个贴合俊希亲子 Vlog 人设的方向**(参考最新视频内容提炼,如职场探班/闺蜜聚会/病号特权等暖萌治愈向);toast「✅ 已生成 3 个选题方向」 |
|
||
| 验证点 | ① 弹窗结构齐全(#aiTopicInput/#aiTopicGen/[data-ok]);② 文案分支正确;③ 选题数量 ≥3 且与俊希人设相关(非泛泛);④ 选题可编辑;⑤ 脚本 Step1-4 全 PASS |
|
||
| 通过标准 | 脚本输出 `Step1 定位俊希按钮: PASS / Step2 弹窗结构: PASS / Step3-4 AI 选题: PASS`(**已实测通过 2026-08-31**:选题=突击妈妈公司送便当/替妈妈筹备周末闺蜜聚会/打工人妈妈病号特权日) |
|
||
|
||
### TC-10 AI 写脚本(S1-S11 完整流程)
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | ① 选定一个选题方向(保留在输入框)→ 点「确认执行」(TC-09 脚本 `--confirm` 模式自动完成)→ `executeTask()` `POST /api/run` 写入 `~/.workbuddy/workbuddy.db` automations(once+now,cwds=`D:\AgentSkill\mcn-workshop`)→ WorkBuddy 自动执行创建会话(左侧会话栏 mcn-workshop 空间可见);② 轮询 `GET /api/run/status?id=`(5s 间隔,30min 上限)观察任务状态 running → done |
|
||
| 预期 | 创作会话按脚本创作技能执行 **S1-S11 完整流程**(三态创作默认自动模式=静默执行、只落最终交付物):S1 理解需求 → S2 检索对标 → S3 确定选题 → S4 素材库 → S5 极致事件 → S6 情绪规划 → S7 结构搭建 → S8 大纲 → S9 脚本(分镜)→ S10 可选细粒度分镜 → S11 诊断复盘;prompt 带「选题方向:{topic}」 |
|
||
| 验证点 | ① 任务状态流转正常(IN_PROGRESS → DONE/COMPLETED);② 脚本落盘 `MCNSkill项目/俊希/脚本1/`(产物链:05_故事选题 → 06_短视频框架 → 07_短视频大纲 → 09_短视频脚本,禁跳步);③ S9 脚本质量门禁:开场钩子绝对时长 3-7 秒(硬上限 10 秒,不看占比);④ 数字账取证(禁心算);⑤ 画面标注 5 字段【景别|环境|光线|场景|场景元素】;⑥ 人物标注格式统一;⑦ 交付物只含输出模板字段(验收口径=执行约束,不在正文自证) |
|
||
| 通过标准 | 脚本全流程完成落盘;S9 脚本完整可拍;工作台任务状态 done;按钮恢复 |
|
||
|
||
### TC-11 收尾验证
|
||
|
||
| 项 | 内容 |
|
||
|---|------|
|
||
| 操作 | 全链路产物盘点 + 一致性校验 + git 提交 |
|
||
| 预期 | ① 文件齐全:账号表俊希行 / 短视频表格.xlsx / top 解析 JSON / 俊希账号设定.md / 俊希账号设定卡.svg / 脚本1/ 产物;② grep 校验:设定 md ↔ 卡片 SVG 关键术语一致,无「TOP6」残留于俊希产出(除非实际解析 6 条);③ 达人账号表 15 列仅按用户要求增改;④ 源技能与 .dsh 副本同步状态无意外差异 |
|
||
| 验证点 | 逐项核对(见「四、数据校验标准」);git:源仓库 mcnskills push + dsh_MCNProject(若有技能变更)push,跟踪引用正常 |
|
||
| 通过标准 | 所有验收项 ✅;无未授权修改 |
|
||
|
||
---
|
||
|
||
## 四、数据校验标准(逐项核对)
|
||
|
||
| 校验对象 | 标准 |
|
||
|---------|------|
|
||
| 达人账号表.xlsx | 15 列结构不变;俊希行 70014;抖音号/抖音ID/抖音地址文本格式;更新时间 `YYYY-MM-DD HH:MM`;仅用户要求增改 |
|
||
| 短视频表格.xlsx | 13 列表头一致;≥60 条;点赞/分享/时长/发布时间数值正确 |
|
||
| top6.json | n ≤ 6;最近三个月 + ≤15min + 点赞+分享降序;n=后续 TOPn |
|
||
| 解析 JSON | 每视频文件夹 content.json + analysis.json;JSON 可读;文件夹名 `标题_标签1_标签2` |
|
||
| 俊希账号设定.md | 12 段齐全;内容基因板块数 = n(TOPn);赛道归 29 枚举;账号级内容规则 |
|
||
| 俊希账号设定卡.svg | 模块名「叙事结构」「内容标签」「内容基因·TOPn」;n=实际解析条数;同账号固定色系 |
|
||
| 一致性 grep | `叙事结构|内容标签|内容基因·TOP` 在 md 与 SVG 中一致;俊希产出无「TOP6」残留(n≠6 时) |
|
||
| 脚本产物 | 脚本1/ 目录;产物链 05→06→07→09 顺序;S9 开场钩子 3-7s;数字账取证;5 字段画面标注 |
|
||
| 版本标签(若有技能变更) | 源 SKILL.md `updated_at`/`last_change` 更新;dsh 副本 `deployed_at` 同步 |
|
||
|
||
---
|
||
|
||
## 五、异常分支与处理预案
|
||
|
||
| 异常 | 处理 |
|
||
|-----|------|
|
||
| browser-harness 未安装(P3 不通过) | 按红线提醒用户(可跳过:改用三方 API/MCP 兜底数据源)→ 同意则 `uv tool install --python 3.12 --upgrade --force browser-harness` → `browser-harness doctor` 验三要素(工具/daemon/Chrome) |
|
||
| MCP 未安装/不可用(P4 不通过) | 按 MCP 规范「首次提问」轻量提醒(可跳过、不打断创作);同意则部署预检(Node/Python → npm 缓存权限仅 macOS 查 → npm 源)→ 写入 mcp.json + 引导 Trust |
|
||
| sec_uid 失效(主页「用户不存在」) | 改用抖音搜索昵称/抖音号重新定位主页,回填正确 sec_uid 与抖音地址 |
|
||
| 账号表已有俊希(非首次) | 走「有就刷新」:检查更新时间近 1 个月 → 提示用户判断是否刷新;用户确认后重新抓取覆盖 |
|
||
| 视频解析中/analysis 未出 | content 已出 analysis 未出 → 稍后重试;「解析中」→ 等 2-3 分钟再查 |
|
||
| 解析失败/无法解析 | 按视频补充规则取下一位(点赞+分享降序)补齐至 n 条 |
|
||
| 弹登录窗口 | 暂停操作,提示用户登录后继续 |
|
||
| 工作台任务长时间 running(>30min) | 检查 automations 状态与 cwds 配置;必要时人工介入会话 |
|
||
| 设定 md 与卡片 TOPn 不一致 | 以实际解析条数为准修正两文件(改设定→卡片重生成;改卡片→设定同步),grep 复验 |
|
||
|
||
---
|
||
|
||
## 六、验收汇总表(执行后填写)
|
||
|
||
| 环节 | 用例 | 结果(✅/❌/⚠️) | 备注 |
|
||
|-----|------|----------------|------|
|
||
| 账号表登记 | TC-01 | ✅ | 俊希 70014 已登记,15 列结构不变,已有行未受影响(09-01 复核) |
|
||
| 获取账号信息 | TC-02 | ✅ | 15 列补齐:JJX0827/sec_uid/地址/粉丝281.9w/获赞3658.9w/作品136/IP广西,更新时间 2026-08-31 18:05(浏览器实时抓取) |
|
||
| 获取视频列表 | TC-03 | ✅ | `短视频表格.xlsx` 13 列 136 行(≥60) |
|
||
| 筛选 TOP | TC-04 | ✅ | top6.json 6 条(n=6,最近三个月+≤15min+点赞+分享降序) |
|
||
| MCP 解析 | TC-05 | ✅ | 6 条全部 ACCEPTED(33021/29596/15729/21514/20164/33022),09-01 凌晨调度器拾取并行执行 |
|
||
| 保存解析 | TC-06 | ✅ | 6/6 目录各含 content.json+analysis.json,JSON 全部可读(verify 通过) |
|
||
| 人设卡 12 段 | TC-07 | ✅ | `俊希账号设定.md` 12 段齐全,内容基因板块数=6(TOP6) |
|
||
| 设定卡自动生成 | TC-08 | ✅ | `俊希账号设定卡.svg` 生成;grep 一致性通过(叙事结构/内容标签/内容基因·TOP6 两文件一致) |
|
||
| AI 选题 | TC-09 | ✅ | **界面模拟点击实测 PASS**(cdp-test-junxi.mjs --port 8900):定位/弹窗/选题 3 方向全 PASS(穷鬼大餐/手绘拼音菜单/菜场散心) |
|
||
| AI 写脚本 | TC-10 | ✅ | 09-01 实测:--confirm 触发 → automations 写入(+5s 调度)→ 调度器拾取 → 会话 cd064941 完成 → `脚本01/09_脚本正文.md` + 创作回顾 HTML。S9 质量门禁:6 场 420s 数字账一致、5 字段画面标注、人物标注统一、开场钩子 3-7s 达标 |
|
||
| 收尾验证 | TC-11 | ✅ | 全链路产物 12 项齐全;账号表仅按需增改 3 行;调度机制修复(next_run_at+并发锁)验证通过 |
|
||
| **整体结论** | | **✅ 通过** | 09-01 全链路复测:修复后调度链路完整跑通(含并行解析 6 条 + 创作会话) |
|
||
|
||
---
|
||
|
||
## 附:本次执行的环境事实(2026-08-31 调研记录)
|
||
|
||
- 达人账号表当前仅 2 行:小咪橘座(70010,已解析/已生成)、旧梦留声机(70013,已生成)→ 俊希首次登记为 70014
|
||
- `MCNSkill项目/俊希/` 现有仅 `提示词01/` 子目录(分镜产出,属短视频分镜提示词技能),无账号分析产出
|
||
- **工作台 mcn-plugin.db 俊希历史数据**:hot_accounts id=3(完整账号信息 + content 设定文本,source_dir=`D:\dshworkspace\账号解析\俊希` **旧路径已不存在**)、account_videos 108 条(source_dir=`D:\dshworkspace\抖音账号分析\俊希` 旧路径)、rewrite_log 3 条(2026-08-19,海鲜大餐主题);**account_persona 无俊希** → hasPersona=false → 弹窗走「先进行账号设定分析」分支,首次场景成立,无需清除
|
||
- dsh 原库(~/.dsh/mcn-plugin.db)俊希数据与副本一致(.dsh 只读红线不写)
|
||
- **界面模拟点击测试脚本**:`mcn-workshop/cdp-test-junxi.mjs`(2026-08-31 实测通过:账号列表定位俊希 PASS / AI写脚本弹窗结构 PASS / AI 选题 3 个方向 PASS);注意 `.modal` 选择器会被 index.html 隐藏的 `#settingsModal` 干扰,须限定 `:not([hidden])` 且含 `#aiTopicGen`
|
||
- MCP 解析单条视频需等待 3-5 分钟;已解析过的视频可直接查询
|
||
- 工作台 #/reviews「AI脚本诊断」复盘按钮明确按 **mcn-script-review(脚本复盘)技能**执行(本用例主链路不含复盘,如需回归可追加)
|
||
- 产出根目录:开发机 → 桌面 `MCNSkill项目/{达人昵称}/`(`references/路径配置.md` 权威)
|