采集短视频数据
创作者后台只显示当前的累计值,看不到昨天是多少。每天在同一时间存一份快照,才能算出每天新增多少、某次改动之后有没有变化。
采集通过 playwright-cli 接到用户已登录的 Chrome,打开自己的标签页读后台页面加载的数据,读完关掉。只读,不点任何按钮,不改任何设置。
准备
- playwright-cli 和它配套的 Chrome 扩展;Chrome 里已登录要采的平台。定时采集时,Chrome 要开着、电脑不能睡眠。
- 在视频项目的根目录放一个
video-data.json(照video-data.example.json改):
| 字段 | 默认 | 说明 |
|---|---|---|
time | "12:10" | 每天采集的时间,HH:MM,按本机时区 |
timezone | 本机时区 | 决定快照文件用哪一天的日期 |
platforms | 三个都采 | douyin、weixin、xiaohongshu 里选 |
outDir | data/snapshots | 快照目录,相对项目根目录 |
时间选在发布时间以后、每天固定的一个点。各平台后台的数据有延迟,晚上发的视频,第二天中午采比较稳。
采集
在项目根目录运行(<skill> 是本 skill 的目录):
node <skill>/scripts/collect.mjs # 采配置里的全部平台
node <skill>/scripts/collect.mjs douyin # 只补采一个平台
- 输出
<outDir>/<日期>.json。同一天重跑会合并:采到的覆盖旧的,失败的平台保留当天已有的那份。 - 每采完一个平台就写一次文件,中途被打断也不丢已采到的。
- 有平台失败时退出码是 1,终端里写着哪个平台、什么错。
not_logged_in是登录过期,请用户在 Chrome 里重新登录;其他错误先手动重跑一次,抖音偶尔会临时失败。 - 用户在 Chrome 里填着还没发布的表单时不要跑:采集会打开新的标签页,可能把焦点从表单上抢走。
定时
node <skill>/scripts/schedule.mjs 按 time 打印 cron 表达式和一行 crontab,只打印,不改系统设置。改时间就改 video-data.json,再重建定时任务。二选一:
- agent 自带的定时任务(推荐):用打印出来的 cron 表达式建一个定时任务,提示词写"在 <项目路径> 运行 video-data 采集,失败的平台重跑一次,报告每个平台的作品数和粉丝数"。agent 能读报错、补采。
- 系统 crontab:用户自己把打印出来的那一行加进
crontab -e。日志写在快照目录的collect.log。
建定时任务、改 crontab 前,先把时间和命令给用户看。
快照里有什么
每个平台一段:account(昵称、粉丝),works[](每条作品的 id、desc、publishedAt、durationSec、metrics),以及 error 或 warning。比例统一是小数(0.55 表示 55%)。
| 平台 | 额外的数据 | 限制 |
|---|---|---|
| 抖音 | 近 30 天作品(最多 12 条)的流量来源、章节点击率、搜索词、留存曲线 | 作品列表最多读 5 页 |
| 视频号 | 账号每日播放、点赞、转发、关注的趋势,按来源拆分 | 作品列表只读第一页,多于一页时写 warning |
| 小红书 | 曝光、封面点击率、2 秒跳出、5 秒完播 | 只采近 30 天的视频笔记(最多 12 条);观看不足 100 时没有来源分析 |
口径不同的指标不能直接比:抖音和小红书的开头流失是"2 秒跳出率",视频号是"快速划走率"(fast_flip_rate)。
看数据
node <skill>/scripts/stats.mjs 把所有快照按作品排成表:每天的播放、新增播放、平均播放秒、完播率、开头流失、互动和涨粉,再附上最新一次的流量来源、搜索词和留存曲线。
样本少的时候,结论标成"样本不足"。比较两条视频时,先看发布后同样的小时数,再看改了什么。
交付时要说明的
- 采了哪些平台、每个平台几条作品、粉丝数,哪个平台失败了以及原因。
- 快照文件路径。
- 设置定时时:cron 表达式、触发时间对应的时区、用的是哪种定时方式。