Akke 抓取优化复盘 · 评论 7d 窗口 & max_videos

技术/运营复盘 · 2026-05-30~31 · 范围:评论拉取时间窗、每号抓取深度、号源池筛选 · 数据来源 service-role 直查生产库(跨全部 org)
一句话总结:这两天做了两件提升获客线索量的事——① 评论拉取窗口从 24 小时拉到 7 天(其中"首次抓"5-28 就已部署;"说改了没生效"的是另一块——老视频复扫的 force_full_window,此前是本地未提交 WIP 没部署,已查实并真正上线、用数据验证);② 每个好号抓取深度从 10 条视频提到 20 条(实验先得 30% 收益、扩样本复验只有 18%,结论收敛为"线索主要在最新 10 条")。第三条杠杆——把每个好号"数据最好的 top10 爆款视频"纳入轮转——原计划按转赞评排序,但因蝉妈妈封号 + 自有表无互动数据,改用"自有评论/线索密度"信号,一次性复抓了 491 条(未建常驻 cron,见专题三)。配套还做了号源池大清理:去重 + 把被埋没的好号重新激活,active 号源 581 → 649,高频好号 tier1 64 → 91。这几件事都暴露同一类流程问题:"改了" ≠ "生效"、"小样本" ≠ "结论",下面分别拆解。

本轮一连串问题(按提出顺序)

蝉妈妈(号源发现工具)封号了,怎么补号源?
→ 改走"自有数据滚雪球"等零外部依赖路径;号源补给不再单点依赖蝉妈妈。
网站里号源有多少、active 怎么定义、打分机制是什么?
→ 共 2600 个,active = "开关打开、正在被自动扒评论"的号;打分 5 维满分 100,不看粉丝看"评论区能不能产装修客户"。
现在这 581 个 active 是怎么筛出来的?
→ 硬门槛=有真实 sec_uid;其余是人工开关累积,和质量分脱钩——关着的池子里埋着 93 个好号。
评论 24h→7d 之前说部署成功,今天查发现对不上,为什么?怎么规避?
→ 见「专题一」:首次抓 7d 已按时部署(5-28);没生效的是老视频复扫那块(force_full_window),当时是本地未提交 WIP、从没部署。
max_videos 怎么做实验、每小时抓的是视频还是号源?
→ 见「专题二」+「抓取逻辑全景」。

专题一 · 评论拉取窗口:24 小时 → 7 天

大白话:抓一条视频评论时有个"时间闸门",只留"距今 N 小时内"发的评论,更老的直接扔。N 默认 24(1 天)。放宽到 7 天,是为了捞回视频发布后第 2–7 天持续来的评论。

先厘清:「24h→7d」其实是两块改动,别一刀切看
首次抓 cutoff 24h→7d:已于 05-28(commit ebaad66)按时 commit + 部署,这块当时就做对了
force_full_window(refresh 复扫 7d):才是「说改了没生效」的真正缺口——此前是本地未提交 WIP、从未部署,05-307266a33 → PR #65)才补上并用数据验证。
所以下文「代码躺本地没部署 / 当时没 commit」特指 ② 这块;不是整个 7d 都没做。
人话版 · 为什么"首抓改了"还不够,"复扫"才是关键
抓一条视频的评论有两个时机首抓=刚发现这条新视频时抓第一遍;复扫=隔段时间回去把同一条视频再抓一遍,捞它新来的评论。
关键:一条视频的评论是发布后好几天陆续来的(第 2、3…7 天还在涨)。第一次抓只能抓到当下已有的;后面几天新冒出来的,只能靠"复扫"再去捞
旧"复扫"两个毛病:① 复扫时只回看 24h(不是 7d),视频发 3 天后才复扫只看得到最近一天、前面漏了;② 视频一旦掉出"主页最新 10 条"就不再复扫,第 2–7 天的评论永久丢。
force_full_window 就是修这两条:让复扫也按整 7 天全窗口抓,并回去复扫已掉出最新 10 条的老视频
所以:你把"首抓"改成 7d(✅ 5-28),以为评论窗口=7d 了;但漏采的大头在复扫,而复扫的 7d 当时还是本地没部署的 WIP → 首抓改了、库里评论总量还是上不来(p50=1 条/视频)=「说改了但没生效」。一句话:首抓管"新视频第一眼",复扫管"后面几天持续来的评论",漏主要漏在复扫。
问题现状
用户之前要求把窗口从 24h 放宽到 7d,被告知"部署成功"。但今天复查发现很不到位:一条明明有 100+ 评论的视频,库里只有 1–5 条。全库诊断曾测出 741 个视频评论数 p50=1 条/视频。
为什么出现
三层叠加,主因是"改了 ≠ 部署了"
  • ① 代码是本地未提交 WIP,从没部署(主因):放宽窗口的真正实现 force_full_window 写好了却没 commit、没 deploy,在工作区躺了约 2 天。线上跑的还是老版本,收到"按 7d 抓"的指令因部署版本无此参数直接忽略 → 改了等于没改。git status 一眼能看到。
  • ② 配置值没验证:开关 SCRAPE_RECENT_COMMENT_HOURS 设过,但只看得到指纹看不到值,可能还是 24。
  • ③ "部署成功"只看命令返回,没用真实数据验证效果。
解决路径
  1. 把未提交的 force_full_window 收尾合并(PR #65)→ CI 部署到 worker v214/215
  2. fly secrets set SCRAPE_RECENT_COMMENT_HOURS=168 重启到 v215(168 小时 = 7 天)
  3. 用数据实锤:查近 40 分钟入库的评论时间跨度
效果
已验证生效:近 40 分钟入库的 393 条评论里,最老的距今 168.0 小时(正好 7 天)91% 超过 24h——证明突破了旧的 24h 闸门。
宏观上,扩窗当天(5/30)把过去几天漏抓的旧评论一次性补了进来:新评论 5505 条(前一天 1465,约 3.8×),其中 63% 是 3 天前发布的——这是"补漏"的指纹,不是重复计算。
168h
入库评论最老跨度
▲ 旧上限 24h
91%
新评论 >24h 占比
证明窗口已放宽
5505
5/30 新评论
▲ 3.8×(含补漏)
怎么避免再犯
这类「说部署了、其实没生效」的失误,一套口径就够——分清状态、收尾验数、让它可观测:

① 分清四个状态,只有最后一个算数写了代码commit 了部署了线上真生效了。这次就是把前面某个当成了最后一个。人话比喻:文件存自己电脑 ≠ 上传到了公司共享盘,同事打开看到的还是旧版。

② 说"改好了"前,要齐三样(缺一就是没真上线)
· PR 链接(改动存档+评审,没 PR = 还在本地)
· 部署版本号/时间(如 worker v215、Vercel 部署时间)
· 一条真实数据(如"抓一条视频看评论跨度到没到 7 天 / 168h")——这条最决定性;配置类尤其要回读"生效值",不能只看命令返回成功。
下次谁说"部署成功",回一句"给我这三样"。

两个容易踩的细节:
· squash 合并会改 commit hash:个人提交走 PR squash 后被压成新 commit,原 hash 在 main 搜不到、但改动在 main 里。所以「git log 搜不到我的提交」≠「没合进去」,要核 origin/main 的代码 / PR 是否 merged,别只盯单个 hash。
· 让它可观测、别靠人偶然查:这次潜伏约 2 天,是因为没处能一眼看出"线上跑哪版、参数几"。治本="线上版本/关键参数"一眼可查 + 一个站着的产出指标(如 p50 评论/视频),没生效当天就暴露,而不是攒几天等诊断。
下一步
  • 核实 rescan-recent-videos 这条专用复扫 cron 是否被 RESCAN_RECENT_VIDEOS_ENABLED 开关 gate 成休眠(目前 7d 是靠主抓取的 refresh 路在跑,专用 cron 状态待确认)
  • 观察 3–5 天:7d 窗口实际多产了多少高/中意向线索

专题二 · 每号抓取深度:10 条 → 20 条(max_videos)

大白话:每个号每轮只抓主页"最新 N 条"视频的评论,N 默认 10。问题:抓到第 11–30 条还有没有新的高/中意向线索?值不值得多抓。

问题现状
只抓最新 10 条,怀疑第 11–30 条还藏着没被捞到的线索。
为什么出现
没有数据支撑该不该调大,需要做"视频位置 → 线索产出"衰减实验来定。
解决路径
  1. 给 worker 加 payload 可调 max_videos(向后兼容默认 10)
  2. 首批 5 个 A 级好号各抓 30 条 → 按视频位置统计近 7d 高/中意向
  3. 得 11–30 占高意向 30% → merge #66:tier1 好号深抓 20、tier0 维持 10(v216 已部署)
  4. 扩样本到 13 个号复验(用户要求"再验证一下")
效果
结论被大样本修正:首批 5 个号说 11–30 占 30%,扩到 13 个号只剩 18%,且高意向几乎全在最新 10 条。n=5 被个别爆款视频带偏了约 12 个百分点。
视频位置高意向中意向占高意向
1–10(现在抓的)6516382%
11–20710~9%
21–30735~9%

11–20 仅 7 个高意向 / 130 条视频;21–30 的 7 个还集中在某号第 21 条偶然爆。线索主要就在最新 10 条。用户知情后选择保留 #66(tier1 仅 91 个、成本有界、18% 非 0),未回滚。

下一步
  • 抓取产出类实验样本量 ≥10–15 才下结论 / 才据以改生产,先扩样本再 merge(这次顺序反了)
  • 把算力重点放回已验证有效的两个杠杆:激活的好号 + 7d 复扫

专题三 · 每号 Top 视频按数据纳入轮转(爆款持续来评论)

大白话:一个号的爆款视频会持续来新评论。想法是——把每个好号"数据最好的 top10 视频"单独纳入持续复扫,而不只抓主页最新那几条。

为什么非建不可(一句话点睛):一条爆款旧了、掉出主页前 10/20 条之后,常规抓取就不再复查它,它后续来的新评论就永久漏掉了——而这些视频恰恰是被验证过最能产装修客户的。这个 cron 专门回去盯住它们。说白了:别让赚过钱的好视频,因为变旧就没人再去收新线索。
问题现状
原始想法是按转赞评(转发/点赞/评论数)给每个号挑 top10 爆款视频,纳入抓取轮转。
为什么出现
原版的"按转赞评排序"现在没沿用——但澄清:是"没抓",不是"抓不到"。
  • 转赞评这类互动数据,之前是从蝉妈妈(第三方分析工具)现成拿——蝉妈妈已封号,这条现成聚合源断了。
  • 自有 videos 表确实没存点赞/转发/评论计数(只有 url/标题/发布时间)→ 当前无法按真实转赞评排序。
  • 但能自己抓(修正先前"做不了"的说法):抖音自己的接口(aweme detail,与我们抓评论同一套 f2 签名)就返回 digg/comment/share/collect 数;Playwright 视频页 DOM 也有。要自抓只需 ① 加调用/解析 stats 字段 ② videos 表加列存。不依赖蝉妈妈。
  • 那为什么没去自抓? 因为转赞评对获客不是最优信号——点赞高 ≠ 评论区有装修需求的人。我们手上已有更对路的信号(实际抓到的评论数/高意向数),所以直接用它排序,没为转赞评额外加抓取成本。
解决路径
改用自有信号给视频排序——不是点赞数,而是"这条视频我们实际抓到多少评论 / 多少高意向线索"(比转赞评更贴近获客目的:点赞高 ≠ 评论区有装修需求的人)。
  • 合并两份名单去重:Top70 好号各自 top10 产线索视频 + 全源历史"单条产≥3 高意向"的已验证爆款 = 491 条
  • 对这 491 条做了一次性视频级复抓(7d 全窗口)
两份名单的精确定义(口径来自生成脚本 scripts/_enqueue-hot-video-rotation.ts,非估算):

底层"自有信号":对每条视频从评论库算两个数——hi=高意向评论数、total=评论总数;视频一律按 (hi 降序, total 降序) 排,不看点赞/转赞评

① Top70 好号 · 各自 top10 产线索视频:先对每个 active 号源按 5 维打分(满分 100:主页视频数 + 近 30 天发文频率 + 评论总数 + 高意向占比≤30 分 + 高意向绝对数≤20 分,后两维即"高意向相关占 50% 权重"),取分数最高的 70 个号;每个号再把它有评论的视频按 (hi, total) 排、取前 10 条。⚠️"top10"指产线索最多的 10 条,不是主页最新 10 条(所以与常规"抓最新 10/20 条"目标错开、不重复)。

② 全源历史"单条产≥3 高意向"的已验证爆款:不限 Top70,所有 active 号源的视频里,凡单条视频累计抓到过 ≥3 个高意向评论hi>=3)的全收。"已验证"=历史上真产出过,不靠预测/点赞。

合并:①∪②去重(一条视频若既在某 Top70 号的 top10、又 hi≥3,只算一次),并剔除离题视频(topic_status=rejected)与 0 评论视频 → 当日快照 491 条hi/total 随评论积累每天浮动,491 是 5-31 快照值。

效果
491 条历史高产视频一次性复抓完成(已验证做了):复抓后 491 条里 121 条收到新评论,共新增 1013 条评论、24 个高意向线索,已折进 5/30 的线索 surge。
产新线索 top 源:西安老王聊装修 +6 高意向 / 罗哥讲装修 +4 / 灿哥聊装修 +102 评论 / 设计师阿爽 +80 评论。最强单条历史产 40+ 高意向。
已建常驻 cron 在你拍板后,已把"每日复扫历史爆款"做成显式 cron/api/cron/hot-video-rotation,PR #67,每日 04:45):每天重算"每号 top10 已产 lead 且近 14d 仍活跃的视频 → 全局 top200"复扫。与 rescan 互补(rescan 管新视频<7d、本 cron 管老视频但仍活跃的常青爆款),dedup 防重复。#67 已 merged,Vercel 部署后每日 04:45 首跑。本地干跑选片逻辑已验证:491 经"近 14d 仍活跃"过滤 + 上限收敛后 → 每天约复扫 120 条(量合理、不失控)。
下一步
  • 已做:显式"每日复扫历史爆款"cron 已建并 merged(PR #67),Vercel 部署后每日 04:45 首跑(约 120 条/天);下一步观察它每日实际捞回多少新线索
  • 若要"真转赞评"信号:自抓 aweme detail stats + 给 videos 表加互动列,把排序从"评论密度"升级为"互动 + 评论密度"双信号(评估:转赞评对获客增益有限,优先级低)

效果实测 · 线索产出按天(7d 修复前后)

前面专题的"效果"多用采集量;这里补线索维度(高/中意向才是真线索)。口径:按评论入库时刻分天,service-role 直查生产库跨全部 org。

238
5/30 高意向(线索)
▲ ~10×(5/29 仅 23)
729
5/30 中意向
▲ ~12×(5/29 仅 61)
967
5/30 当日线索(高+中)
▲ 11.5×(5/29 仅 84)
83%
5/30 是 >24h 补漏
一次性捞回,非新增需求
日期入库总高意向中意向线索(高+中)无关>24h 补漏%
5/26161374986140%
5/2740247169216184%
5/28395551532081555%
5/292202361842527%
5/30 · 7d 修复当天8130238729967644183%
5/31(到下午)214254139193180865%
怎么读这张表(诚实口径):

配套工作 · 号源池从 2600 到 649 的清理

蝉妈妈封号促使重新审视号池。核心发现:"开/关"和"质量分"本来是脱钩的——active 池 80% 是 0 线索的 D 级号,而关着的池子里埋着 93 个产过线索的好号。这轮按质量重新对齐了开关。

全部号源
2600
有真实 sec_uid(可抓)
~2426 (174 个占位号永久排除)
开工前 active
581
去重后
578 (6 组重复合并)
+激活埋没好号
625 (核心 47)
+激活待定好号
649 (个人/工种/材料 24)
581→649
active 号源
▲ +68 净增(按质量补)
64→91
tier1 高频好号
▲ Top70 升级
93
关着的好号被发现
71 个已重开
491
历史爆款一次性复抓
按线索产出排序

号源打分标准(不看粉丝,看"评论区能否产装修客户")

维度满分大白话
已有视频数15号活跃度
近 30 天更新频率15还在不在更
评论总数20评论区热不热
高意向占比30评论里多少是真要装修的(占一半权重)
高意向绝对数20实打实产了多少线索

评级:A≥70 / B≥50 / C≥30 / D<30。注:业务范围筛是叠加的硬门槛——打分高但属门窗/涂料/家具贴膜等范围外的号,不激活、不升频。

Top70 好号名单 · 为什么是它们

为什么 Top70 = 这 70 个:就是用上面那套「号源打分」(5 维满分 100,高意向相关占 50% 权重)给 702 个 active 号实时算分后,分数最高的前 70 名本批分数区间 65 ~ 95。它们也是 scrape-hot 每小时高频轮抓(tier1)+ 爆款复扫 cron 的主力覆盖对象。

怎么读这张表:分数高 ≠ 粉丝多,而是评论区持续产装修线索。看两列就懂为什么上榜——高意向(实打实产了多少线索)和占比%(评论里多少是真要装修的)。例:「一起装修网」高意向 121 / 占比 55.8% 是占比王;「小刘厂长」高意向 91、「海哥」872 条评论是体量王;占比低但体量大的(如「装修帮」640 评论 / 5.9%)靠绝对量上榜。
#号源名质量分高意向评论数高意向占比类型
1装修帮95386405.9%知识号
2小刘厂长美式家具909147719.1%本地号
3奇才木作903910636.8%本地号
4灿哥聊装修904439111.3%知识号
5米凌设计师_胡设计903714924.8%本地号
6海哥—用心讲装修90698727.9%知识号
7旭东聊装修853130610.1%知识号
8恋巢哥 | 南宁全屋定制工厂85318636%工厂号
9一起装修网8512121755.8%平台号
10设计师·十一85111626.8%知识号
11吴名I设计师851613811.6%本地号
12设计师__巴丽852211818.6%本地号
13设计师阿爽85313588.7%知识号
14设计师_郭工80107313.7%本地号
15设计师_鹿鹿80288632.6%本地号
16锐哥聊装修801210311.7%知识号
17米凌设计师_涂设计80185334%本地号
18万荣索菲亚整家定制80101258%品牌号
19宜宾王幺叔说装修 III8081465.5%全屋定制
20西安老王聊装修806325824.4%本地号
21爱吃猫的鱼_软装中_7792014.5%本地号
22德州居饰达小张聊装修7543710.8%全屋定制
23设计师陈陈_接全国设计_7543212.5%本地号
24设计师凌叙_接全国设计_7587011.4%本地号
25欢喜锅聊装修建材75111407.9%知识号
26Ly__752826110.7%本地号
27吴先生设计师7563218.8%本地号
28意式轻奢_设计师八八7584517.8%本地号
29久辉不锈钢家具定制工厂75111955.6%工厂号
30设计师文文7564314%本地号
31设计师_大鱼753506%本地号
32武汉全屋定制工厂|金艺家居官方号75205536.4%工厂号
33苏等等的家752724011.3%本地号
34罗哥讲装修751913314.3%知识号
35深度空间装饰王工704666.7%本地号
36太和聚艺装饰万华无醛整装体验馆7052321.7%本地号
37设计师_美嘉705885.7%本地号
38幺哥全瓷橱柜7071546.7%工厂号
39武汉洗衣柜定制君妹儿70144431.8%本地号
40天津莎莎讲装修 | 信日702395.1%全屋定制
41糖果家🏠软装中707907.8%本地号
42瑾瑾钰钰的__软装中_7071146.1%本地号
43老诚讲装修7061155.2%知识号
44小王装修日记704517.8%知识号
45设计师阿辽工作室709919.9%工厂号
46卖板材的小姐姐7031816.7%本地号
47千年舟-老梁讲装修706718.5%品牌号
48广州装修范工70101662.5%本地号
49实木仿古大门定制707987.1%本地号
50卜总聊装修(西安)7064015%全屋定制
51上海设计师Rigo睿哥7098710.3%全屋定制
52南昌全屋定制李哥+南昌兔宝宝7096114.8%本地号
53苏州四哥聊装修703368.3%本地号
54张师傅讲装修6672033.4%-
55曲靖钱师傅中固门业锁业全屋定制官方号651425%本地号
56索菲亚设计师_索长651812.5%品牌号
57三门峡豪匠装饰柏总馆家居整装官方号6522010%工厂号
58西安王哥讲装修(塞纳春天)6521118.2%全屋定制
59成都全屋定制工厂-金柏莱赵美丽6561250%工厂号
60设计师_代欣6586612.1%本地号
61小薇的家_656708.6%本地号
62老包讲装修652922.2%本地号
63花与财全屋定制(樟树店)651250%本地号
64老邱讲装修653913.3%本地号
65永乐佳65115022%本地号
66溪彤家__硬装中___652395.1%本地号
67姑娘姓朱_装修中_6531421.4%本地号
68歆笛的装修日记654757.1%知识号
69皇家背景墙壁龛_岛台官方号652728.6%本地号
70堂堂的新家_6552062.4%本地号

注:分数实时计算、随评论积累每天变动;本表为 2026-05-31 快照。tier1 现 91 个(Top70 + 业务范围筛后的其余高分号),享每小时 scrape-hot 高频轮抓。

抓取逻辑全景 · 每小时在抓什么

队列里只有两类活:号源级 scrape_source(去一个号主页发现最新 N 条视频、逐条抓评论)和 视频级 scrape_video(抓指定一条视频)。小时级主力是号源级。

时刻任务级别抓谁
每小时 :00scrape-hot号源级tier1 好号(91 个)全量轮抓,每号最新 20 条,优先级最高
每小时 :10scrape号源级tier0 号里最久没抓的一批(受容量限制),每号最新 10
每 2 小时 :40rescan-recent-videos视频级tier1 号里发布<7 天的视频,反复 7d 复扫(满 7 天退休)
每 5 分钟analyze给新评论打意向标签(高/中意向 = 线索)

⚠️ 注:"数据最好的爆款"目前不是常驻小时任务——491 条是一次性复抓;持续覆盖靠"它们多属 tier1 好号、被高频路径捎带"。若要"每天专门复扫历史爆款"的显式循环,需另建 cron(待用户拍)。

cron 派活
scrape_source(号)
worker 抓
发现最新10/20条
7d 窗口抓评论
本轮改这里
analyze
打意向标签
运营触达
claim → DM/反评

两条流程教训(本轮各踩一次)

① "改了" ≠ "生效":评论 7d 那次,代码改在本地却没提交/没部署就报了"部署成功"。规避:改完走三连——git status 确认已 commit → fly releases 确认真部署 → 抓一条真实数据验证效果。没查到数据前只说"待验证",不说"成功"。
② 别在薄样本上行动:max_videos 用 5 个号就下了 30% 的结论并 merge,13 个号复验只有 18%。规避:抓取产出类衰减实验 n≥10–15 才据以改生产,先扩样本再 merge。

下一步汇总

  1. 核实 rescan-recent-videos cron 是否被开关休眠(7d 专用复扫路是否真在跑)
  2. 观察 3–5 天:新激活的 71 个好号 + 7d 窗口实际增产多少线索(可做激活前后对比)
  3. 是否要给"历史高产爆款"建显式每日复扫 cron(现靠 tier1 高频间接覆盖)
  4. active 池里仍有一批 0 线索的 D 级号占算力,是否批量降级/关停(待定标准)
  5. 号源补给:蝉妈妈封号后落地"自有数据滚雪球"作为不依赖外部的发现源
Akke 内部技术/运营复盘 · 生成于 2026-05-31 · 数据为当日快照,service-role 直查生产库 · 涉及 PR #65(7d 评论覆盖)/ #66(max_videos)/ 号源去重·激活·tier 调整(直接生产库操作,可逆)。