为什么我们只能抓到「7 天前」的视频

一个藏了很久、不报错的盲区 —— 来龙去脉、怎么发现的、影响多大、以及最终选定的解法(小胡关注流)· 2026-06-16

能看到的最新视频恒定卡 ~7 天前
高意向 lead 集中在视频前 7 天
最值钱的 day0 评论我们晚 ~6 天才拿到
解法换「关注流」这个面

这页用大白话讲清楚一件事:我们的获客靠「抓新视频的评论区 → 找刚冒头的高意向客户 → 私信」,但有一道看不见的墙,让我们永远只能看到 7 天前的视频。下面讲它是什么、怎么发现的、害处多大、以及怎么破。

一、问题:一道「7 天硬墙」

抖音有个对外接口叫「按号查视频列表」(程序里叫 post_api)——给它一个博主,它返回这个博主最近发的视频。我们就是靠它发现号源发了新视频,然后去抓评论。

问题是:这个接口对外永远只给 ~7 天前的视频。博主今天、昨天发的新视频,它根本不露面,要等大约一周后才"浮"出来。

一句话 不是某个号坏了、不是网络问题、也不是登录没登好。是抖音这个接口本身就压了一周的"可见延迟"。我们能看到的所有视频,都是一周前的"旧闻"。

害处不是"视频丢了",而是评论金矿期已经过了:一条视频最热闹、最多人留言"想做全屋定制""给个报价"的时候,就是刚发出去的头几天。等视频一周后才到我们手上,最热的评论早就发生完了,客户也凉了。

二、怎么发现的(排查过程)

这道墙不报错、不断流——老视频还在源源不断产生新评论,系统看起来一切正常。所以它藏了很久。真正逮到它是一路这么挖下来的:

运营反馈:拉不到新鲜的 lead,每天可派的客户越来越少
  ↓ 顺着查"为什么没新鲜评论"
发现全库最新的视频都是 ~7 天前的(30,797 条视频里,发布不到 2 天的 = 0 条
  ↓ 怀疑是不是登录/IP/参数没弄对
本机亲手拉 5 个核心号:5 个全是 6.8~9.3 天前的视频
  ↓ 换"带真登录的 cookie" vs "不登录" 各拉一遍
两者结果逐字节一模一样 → 不是登录、不是 IP,是接口面本身压了延迟
  ↓ 那换个浏览器(Playwright)去渲染页面行不行?
白搭——浏览器底层拿的还是同一个延迟接口,已实测否决
  ↓ 必须找一个"真正不同的接口面"
找到了:关注流(follow feed)是唯一没有这道墙的面
关键判断 墙是"接口面"级别的,不是"我们用得不对"。所以任何还在 post_api 这个面上折腾的办法(换 cookie、换 IP、换浏览器壳)都治不了——必须换一个面。

三、影响有多大(45 天数据的大白话版)

我们把近 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%

举个真实例子(一看就懂)

博主「Ly•🏠」6 月 9 号中午 12:17 发了条全屋定制的视频。第二天就有人在评论区留言:
💬 「想要个清单,马上装修了[流泪]」 ——6/10 16:24 发的(视频发布后 1 天,明确高意向)
但因为那道 7 天墙,我们直到 6/15 才"发现"这条视频、才去抓它评论
结果:这位「马上装修」的客户,在评论区晾了 5 天我们才看到。等运营去私信,人家可能早被同行捞走、或者自己定下来了。视频整体我们比发布晚了 6.2 天才抓上。

这就是这道墙的真实代价:金矿不是挖不到,是每次都迟到一周。

四、解决方案(推荐与最终选择)

试过 / 排除过的方向,先列清楚省得再走回头路:

方向结论
换 cookie / 换登录 / 调参数❌ 无效,延迟是接口面本身的
用 Playwright 浏览器渲染❌ 白搭,底层是同一个延迟接口
搬到国内 IP 渲染网页△ 国内 IP 能看到新鲜,但要常驻国内服务器,且"机房 IP 行不行"还没验,重
换「关注流」这个接口面实测能看到 1.12 天前的新视频——没有 7 天墙
最终选择:关注流(follow feed)方案 抖音 App 里你「关注」的人发了新视频,会进你的「关注更新流」——这是一个和 post_api 完全不同的接口面,没有那道 7 天墙。实测用采集号拉关注流,能冒出 1.12 天前的新视频。这是目前唯一被验证能拿到 day-0 新视频的路。

「换接口面」到底换的是什么?

抖音内部拿视频其实有两套不同的「通道」,我们原来一直走第一套。所谓「换」,就是从第一套切到第二套:

对比原来的路:按号查作品(post_api)新的路:关注更新流(follow feed)
怎么拿到视频我们主动去问抖音「这个博主最近发了啥」先关注博主,抖音主动把他的新视频推进我们的「关注流」
新鲜度压 ~7 天才给看近实时(实测 1.12 天)
能看到谁的任意号,不用关注只能看到「已经关注的人」
为什么是这样这是对外查询接口,抖音给它加了延迟/缓存(大概率防爬)这是给粉丝看的时间线,必须实时否则用户体验崩

所以「换接口面」= 不再挨个主动去查每个号,改成 养一个号(小胡)把目标全关注上,靠刷它的关注流被动接收新视频。代价很明确:关注流只能看到已关注的人——这就是为什么必须先让小胡去关注那 113 个核心号(一次性的活,关上就长期有效)。

打个比方:post_api 像「你每天打电话挨个问朋友'最近发朋友圈没',但只能问到一周前的动态」;follow feed 像「你先把他们加成好友,他们一发朋友圈就直接出现在你的信息流里,实时」。我们换的就是这个——从「挨个打电话查旧的」换成「加好友等推送新的」。

为什么选它(而不是搬国内服务器)

五、小胡方案:具体怎么做

核心思路一句话:让一个采集号(小胡)把我们所有核心号源都「关注」起来,然后不停刷它的关注更新流,谁发了新视频立刻就知道,第一时间去抓评论金矿。

1采集号「小胡」去关注 113 个 tier-1 核心号源

这一步是整个方案唯一的硬活。因为抖音对"关注"这个写操作管得严——程序直接调接口去关注会被反爬拦死(返回 403)。所以只能在无影云电脑上、用真人操作那样的方式(GUI)一个一个点关注,速度约 30 个/天,113 个号大约要 4 天点完。

关注那一步用什么技术发的?——不是 f2、也不是 Playwright,是「GUI 点击」 方案里有两段技术,写(关注)和读(轮询)用的是完全不同的两套,容易混,这里点清楚:
这一段用什么为什么
① 关注新号(写)
就是上面第 1 步
无影 GUI 点击
(脚本 _follow_grounded.py,靠 pyautogui 控鼠标键盘 + OCR/视觉认人,在无影那台原生登录的真抖音上一个个点「关注」)
关注是写操作,反爬最严:f2 直接调 follow 接口 → 403Playwright 浏览器 → 被喂空白页,两条都实测走不通。只有无影里真人登录的号能天然过反爬,所以只能 GUI 点。
② 轮询拿新视频(读)
第 2 步
f2 关注流接口
follow/feed,带 cookie 直接拉)
读关注流是只读、给粉丝看的时间线,有 cookie 哪都能跑,f2 拉一下就行,机制现成。
一句话:小胡那台云电脑要干的活(关注号源)= GUI 点击,因为这是唯一能过反爬的写法;f2 只负责后面读关注流轮询新视频那一步。所以别把它叫成「Playwright 关注」——Playwright 那条已实测否决。

2轮询小胡的关注更新流,逮新视频

小胡关注好之后,就定时刷它的关注流。这 113 个号谁发了新视频,会近实时冒出来(实测 1.12 天内就能看到,比原来快了近一周)。读取这一步只要 cookie 就能跑,机制已经现成。

3抓到的新视频走原有流程,吃下评论金矿期

逮到新视频 URL 后,后面全部不用改——还是原来那套"抓评论 → 打分 → 派单 → 私信"。区别只是:现在拿到的是发布头几天的视频,评论是新鲜的、高意向最密集的,私信能在客户还热乎的时候发出去。

当前卡点(执行层,不是方案层) 方案已验证、已设计、已写交接文档。真正卡住的是第 1 步要用无影云电脑去关注 113 个号——这需要无影操作权限。fanny 本人没有无影权限,这步要交接给有权限的同事来点。一旦关注铺满,后面就近实时自动跑。

预期效果

六、能全自动吗?tier1 变了怎么办

能,而且大部分零件都现成。但要先说清楚一句:整条链路里有且只有一个「限速闸」——无影上点关注那一步,其余全可无人值守。

步骤能自动吗说明
① 小胡关注 113 个号半自动(限速)无影 GUI 脚本 _follow_grounded.py 已现成,能在无影上自动点关注;但抖音反爬把「关注」这个写操作压在 ~30 个/天,这是硬天花板、代码突破不了;且要求无影开机 + 登录
② 轮询关注流逮新视频✅ 全自动cron 定时刷,只要 cookie 就行;机制现成(潜在触达的关注流 watcher 已在用)
③ 抓评论 → 打分 → 派单 → 私信✅ 全自动原有流程,零改动

tier1 会变,关注名单怎么自动跟上?

tier1 不是固定名单——系统每天自动把高产新号进 tier1(auto-promote-tier1 + cron /api/cron/auto-tier1),把死号出去。所以小胡的关注名单必须自动对账,不能靠人维护。做法是加一个对账环节:

每天一个对账 cron:拉「当前 tier1 集合」 vs 「小胡已关注集合」
  ↓ 算差集
新升进 tier1、还没关注的号 → 自动写进关注队列
  ↓
无影关注 worker 从队列里取,每天 ~30 个限速点关注 → 成功的把「已关注」状态回写到表里(如在 source_accounts 加一列 followed_by_collector_at
  ↓
降出 tier1 的号 → 可选自动取关(保持名单干净),不取关也不影响新鲜度

「谁来对账」「怎么自动」——具体落地

谁来对账:一个 Vercel 定时任务(cron),代码自动跑,没有人参与。它就是套用 Akke 现成的「Vercel cron 入队 → worker 轮询消费」骨架(跟现在 /api/cron/scrape 写任务、worker 拉任务一模一样),不是新发明。落地就三个零件:

零件是什么做什么
① 对账 cron
(Vercel,每天 1 次)
新增一条定时路由
/api/cron/collector-follow-reconcile
读「当前该关注集合」= source_accountstier=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 只升不降,所以关注名单基本只增、极少取关,更省心。)

结论 「次日对账自动入队」里的「对账」= Vercel cron 这段代码,每天定时自己跑,不是人。全程不用人手维护关注名单。唯一的人工 / 环境依赖是「无影得开着 + 接受 ~30 个/天 的铺号速度」。代价是新升级的号有 ~1 天「上架延迟」(升级当天可能还没被小胡关注上、要等对账 + 限速排到它),但相比原来那道 7 天墙,已经好太多。
还没现成、要搭的那一点点 零件大多有了,缺的是把它们串起来的「对账 cron + 关注队列 + 已关注状态列」这层胶水,外加把②的关注流 watcher 从「潜在触达专用」改造成「发现新视频入库」(往 videos 表增量 upsert,additive、不动现有流程)。工作量小,难点不在代码、在第①步的无影权限和限速节奏。
诊断与数据:本机实测 post_api 5/5 卡 6.8–9.3 天、登录 vs 匿名逐字节相同;45 天 2403 视频 / 11864 高中意向评论 by-day 分布;捕获延迟实测(day0-1 高意向中位 5.7 天 / 24h 内仅 14.9%);真实例子博主 Ly•🏠 6/9 发布、6/15 入库。关注流实测 1.12 天新鲜(采集号小胡)。
相关记忆:project_akke_7day_post_api_wall_and_followfeed(2026-06-14)· 交接文档 docs/requirements/2026-06-14-突破7天天花板-换面拉新视频.md · issue #350
生成 2026-06-16 · Akke