一个藏了很久、不报错的盲区 —— 来龙去脉、怎么发现的、影响多大、以及最终选定的解法(小胡关注流)· 2026-06-16
这页用大白话讲清楚一件事:我们的获客靠「抓新视频的评论区 → 找刚冒头的高意向客户 → 私信」,但有一道看不见的墙,让我们永远只能看到 7 天前的视频。下面讲它是什么、怎么发现的、害处多大、以及怎么破。
抖音有个对外接口叫「按号查视频列表」(程序里叫 post_api)——给它一个博主,它返回这个博主最近发的视频。我们就是靠它发现号源发了新视频,然后去抓评论。
问题是:这个接口对外永远只给 ~7 天前的视频。博主今天、昨天发的新视频,它根本不露面,要等大约一周后才"浮"出来。
害处不是"视频丢了",而是评论金矿期已经过了:一条视频最热闹、最多人留言"想做全屋定制""给个报价"的时候,就是刚发出去的头几天。等视频一周后才到我们手上,最热的评论早就发生完了,客户也凉了。
这道墙不报错、不断流——老视频还在源源不断产生新评论,系统看起来一切正常。所以它藏了很久。真正逮到它是一路这么挖下来的:
post_api 这个面上折腾的办法(换 cookie、换 IP、换浏览器壳)都治不了——必须换一个面。
我们把近 45 天发布的 2403 个视频、11864 条高/中意向评论拉出来,按「这条评论是在视频发布后第几天发的」排了一下,看高意向客户到底集中在什么时候出现:
| 视频发布后第几天 | 高+中意向评论占比 | |
|---|---|---|
| 第 0 天(发布当天) | 19.3% | |
| 第 1 天 | 8.3% | |
| 第 2 天 | 6.3% | |
| 第 3~6 天 | 19.3% | |
| 第 7 天以后 | 46.8% |
看第一行:光"发布当天"一天,就贡献了全部高意向客户的近 1/5,是后面普通某天的 6 倍多。前 7 天加起来占了 53%——这就是"金矿期"。而这 7 天,正好是我们那道墙挡住、看不到的窗口。
这些前 7 天的评论,其实最后都进了我们的库——因为一周后视频"浮"出来时,抓评论会把它过去一周的评论连同真实发布时间一起捞回来。所以这不是"量丢了",是"晚了一周才拿到"。我们量了一下"客户留言"到"我们看到"中间隔了多久:
| 哪类评论 | 我们隔多久才看到 | 24 小时内就看到的比例 |
|---|---|---|
| 所有高/中意向评论(平均) | 中位 1.3 天 | — |
| 视频发布头 1~2 天的高意向评论(最值钱的) | 中位 5.7 天 | 只有 14.9% |
这就是这道墙的真实代价:金矿不是挖不到,是每次都迟到一周。
试过 / 排除过的方向,先列清楚省得再走回头路:
| 方向 | 结论 |
|---|---|
| 换 cookie / 换登录 / 调参数 | ❌ 无效,延迟是接口面本身的 |
| 用 Playwright 浏览器渲染 | ❌ 白搭,底层是同一个延迟接口 |
| 搬到国内 IP 渲染网页 | △ 国内 IP 能看到新鲜,但要常驻国内服务器,且"机房 IP 行不行"还没验,重 |
| 换「关注流」这个接口面 | ✅ 实测能看到 1.12 天前的新视频——没有 7 天墙 |
抖音内部拿视频其实有两套不同的「通道」,我们原来一直走第一套。所谓「换」,就是从第一套切到第二套:
| 对比 | 原来的路:按号查作品(post_api) | 新的路:关注更新流(follow feed) |
|---|---|---|
| 怎么拿到视频 | 我们主动去问抖音「这个博主最近发了啥」 | 先关注博主,抖音主动把他的新视频推进我们的「关注流」 |
| 新鲜度 | 压 ~7 天才给看 | 近实时(实测 1.12 天) |
| 能看到谁的 | 任意号,不用关注 | 只能看到「已经关注的人」 |
| 为什么是这样 | 这是对外查询接口,抖音给它加了延迟/缓存(大概率防爬) | 这是给粉丝看的时间线,必须实时否则用户体验崩 |
所以「换接口面」= 不再挨个主动去查每个号,改成 养一个号(小胡)把目标全关注上,靠刷它的关注流被动接收新视频。代价很明确:关注流只能看到已关注的人——这就是为什么必须先让小胡去关注那 113 个核心号(一次性的活,关上就长期有效)。
核心思路一句话:让一个采集号(小胡)把我们所有核心号源都「关注」起来,然后不停刷它的关注更新流,谁发了新视频立刻就知道,第一时间去抓评论金矿。
这一步是整个方案唯一的硬活。因为抖音对"关注"这个写操作管得严——程序直接调接口去关注会被反爬拦死(返回 403)。所以只能在无影云电脑上、用真人操作那样的方式(GUI)一个一个点关注,速度约 30 个/天,113 个号大约要 4 天点完。
| 这一段 | 用什么 | 为什么 |
|---|---|---|
| ① 关注新号(写) 就是上面第 1 步 | 无影 GUI 点击 (脚本 _follow_grounded.py,靠 pyautogui 控鼠标键盘 + OCR/视觉认人,在无影那台原生登录的真抖音上一个个点「关注」) | 关注是写操作,反爬最严:f2 直接调 follow 接口 → 403;Playwright 浏览器 → 被喂空白页,两条都实测走不通。只有无影里真人登录的号能天然过反爬,所以只能 GUI 点。 |
| ② 轮询拿新视频(读) 第 2 步 | f2 关注流接口 ( follow/feed,带 cookie 直接拉) | 读关注流是只读、给粉丝看的时间线,有 cookie 哪都能跑,f2 拉一下就行,机制现成。 |
小胡关注好之后,就定时刷它的关注流。这 113 个号谁发了新视频,会近实时冒出来(实测 1.12 天内就能看到,比原来快了近一周)。读取这一步只要 cookie 就能跑,机制已经现成。
逮到新视频 URL 后,后面全部不用改——还是原来那套"抓评论 → 打分 → 派单 → 私信"。区别只是:现在拿到的是发布头几天的视频,评论是新鲜的、高意向最密集的,私信能在客户还热乎的时候发出去。
能,而且大部分零件都现成。但要先说清楚一句:整条链路里有且只有一个「限速闸」——无影上点关注那一步,其余全可无人值守。
| 步骤 | 能自动吗 | 说明 |
|---|---|---|
| ① 小胡关注 113 个号 | 半自动(限速) | 无影 GUI 脚本 _follow_grounded.py 已现成,能在无影上自动点关注;但抖音反爬把「关注」这个写操作压在 ~30 个/天,这是硬天花板、代码突破不了;且要求无影开机 + 登录 |
| ② 轮询关注流逮新视频 | ✅ 全自动 | cron 定时刷,只要 cookie 就行;机制现成(潜在触达的关注流 watcher 已在用) |
| ③ 抓评论 → 打分 → 派单 → 私信 | ✅ 全自动 | 原有流程,零改动 |
tier1 不是固定名单——系统每天自动把高产新号升进 tier1(auto-promote-tier1 + cron /api/cron/auto-tier1),把死号降出去。所以小胡的关注名单必须自动对账,不能靠人维护。做法是加一个对账环节:
source_accounts 加一列 followed_by_collector_at)谁来对账:一个 Vercel 定时任务(cron),代码自动跑,没有人参与。它就是套用 Akke 现成的「Vercel cron 入队 → worker 轮询消费」骨架(跟现在 /api/cron/scrape 写任务、worker 拉任务一模一样),不是新发明。落地就三个零件:
| 零件 | 是什么 | 做什么 |
|---|---|---|
| ① 对账 cron (Vercel,每天 1 次) | 新增一条定时路由/api/cron/collector-follow-reconcile | 读「当前该关注集合」= source_accounts 里 tier=1 且 is_active 的号;读「已关注集合」= followed_by_collector_at 非空的号;两者差集(该关注但还没关注的)→ 写进关注队列(用现成的去重插入原语,重复自动跳过) |
| ② 状态 + 队列 | source_accounts 加一列 followed_by_collector_at;新建一张 collector_follow_queue | 记「小胡到底关注了谁」+「待关注名单」,让对账有据可依、能断点续 |
| ③ 无影关注 worker | 复用现成的 wuying_poll_agent.py(它已经串行跑 DM/RC/二触),加一条「关注」支线(同款开关 AKKE_COLLECTOR_FOLLOW_ENABLED) | 从队列取 pending、每天 ~30 个限速 → 跑 _follow_grounded.py 点关注 → 成功就回写 followed_by_collector_at=now()、队列行标完成;失败次数+1 |
跑起来就是一个闭环:tier1 升了新号(auto-promote 自动干)→ 次日对账 cron 发现差集、自动入队 → 无影 worker 限速关上、回写状态 → 关注流轮询自动逮它的新视频。没有任何一步需要人去维护名单。(顺带:tier 只升不降,所以关注名单基本只增、极少取关,更省心。)
videos 表增量 upsert,additive、不动现有流程)。工作量小,难点不在代码、在第①步的无影权限和限速节奏。