- V1.0/subskill/ → V1.0/subskills/(browser-harness/mcn-dou-analysis/mcn-script-review/mcn-video-prompt,git 识别 R100 纯重命名保留历史) - 路径说明同步:V1.0/SKILL.md(96/105行)、Lite1.0/SKILL.md(66行)、mcn-dou-analysis/SKILL.md 红线行、操作规范.md 159/175行、mcn-work-shop app.js SKILL_HINT_ACCOUNT - 用户环境 ~/.workbuddy/skills/短视频脚本创作/ 与源仓库 V1.0 同 inode(junction),自动同步无需单独改 - mcn-dou-analysis 内部 subskills/nuwa-skill-main 为正常结构不受影响
3.6 KiB
3.6 KiB
视频列表获取执行避坑(功能二)
与
浏览器搜索抖音账号操作规范.md配合使用;本文记录功能二(获取视频列表)执行中踩过的坑与纠正。
一、数据提取方法优先级(2026-08-31 纠正)
坑 1:逐条打开视频页抓字段 = 爬虫特征 + 低效(严重)
现象:俊希全流程测试 TC-04 时,发现列表页逐卡片 awemeInfo 拿不到 createTime(undefined 被 JSON.stringify 省略),于是改成逐条 goto_url("https://www.douyin.com/video/{id}") 打开视频页抓「发布时间」文本。结果:15 次连续跳转明显是爬虫特征,且耗时极长、方法退化。
根因:08-26 旧梦留声机已验证的 defaultDataList 方法(一次拿全含 createTime)没有固化到技能文件,本次执行时凭记忆退化。
正确方法(实测通过):
| 数据 | 来源 | 说明 |
|---|---|---|
| createTime / stats / desc | 列表组件 Fiber defaultDataList(首选) |
从 #root 的 __reactContainer$/__reactFiber$ 键沿 child/sibling 链遍历,找 memoizedProps.defaultDataList;136 条全含 createTime |
| duration(毫秒) | 卡片 Fiber awemeInfo(兜底) |
awemeInfo.video.duration;defaultDataList 里可能为 null,两者按 awemeId 合并 |
| 其余统计字段 | 两来源均可 | 驼峰式:diggCount/commentCount/shareCount/collectCount/playCount,非 snake_case |
执行要点:
- 主页滚动加载(
.route-sc容器,随机节奏,≥60 条或加载不出即停) - 一次 Fiber 提取全量 → 合并 → 生成 13 列 Excel(发布时间列 =
createTime转YYYY-MM-DD) - 再走
excel_tool.py select-top6筛选(依赖「发布时间」列)
坑 2:访问账号主页直接构造地址(严重)
现象:直接 goto_url("https://www.douyin.com/user/{sec_uid}") 跳转主页,页面加载异常(标题缺昵称、无视频链接、无 .route-sc 容器);且真实链接带完整参数后缀(如 ...brjmRxiM9i),构造缺后缀地址访问异常。
正确方法:
- 先
goto_url("https://www.douyin.com/search/{账号ID}?type=user")走搜索页 - 搜索结果中定位目标用户卡片(用 innerText 匹配 抖音号/粉丝数 特征,如
JJX0827+281.9万) - 模拟点击进入主页:CDP
Input.dispatchMouseEvent(mouseMoved → mousePressed → mouseReleased)或click_at_xy;点击后可能新开标签页(target=_blank),从Target.getTargets找新主页标签页继续操作 - 禁止直接构造
/user/{sec_uid}地址跳转
二、数据校验速查表
| 检查项 | 标准 | 异常处理 |
|---|---|---|
| 发布时间列填充率 | 100%(defaultDataList 全含 createTime) | 若大量为空 → 检查是否用了逐卡片 awemeInfo 而非 defaultDataList |
| 时长填充率 | 100%(卡片 awemeInfo.duration 毫秒) | 合并逻辑遗漏 → 按 awemeId 补合并 |
| 视频条数 | ≥60 条(SKILL.md 唯一权威参数) | 滚动加载未触发 → 检查 .route-sc 容器定位 |
| 统计字段 | 驼峰式(diggCount 等) | 若全 0 → 检查字段名是否误用 snake_case |
三、浏览器行为准则速记
- ✅ 标签页复用:已有抖音标签页直接 goto_url 导航,不 new_tab
- ✅ 访问主页走搜索 → 模拟点击;不构造直达地址
- ✅ 数据提取一次 Fiber 拿全;不逐条开视频页
- ✅ 适度访问:随机停留/滚动节奏,不连续快速跳转
- ❌ 禁止:new_tab 堆积、直达
/user/{sec_uid}、逐条/video/{id}、无间隔连跳