死链这玩意儿,比你想的要毒——核子GEO检测捅破窗户纸
去年改版那个招聘站的时候,我自认为挺聪明的。Next.js全部重写,路由从PHP改成了动态SSR,想着用户体验能拉满。结果呢?旧版500多个职位页全变成了404,我压根没在意踩过这个坑。当时心里想的是:搜狗爬虫又不吃素,碰到几个死链还能直接弃站不成?
后来上核子GEO检测工具跑了一遍,输入域名那一刻,我人就傻了。结构化数据检测分数12分,满分100。JobPosting Schema全崩了——旧版遗留的JSON-LD路径在新路由下全部404,但爬虫访问的时候还按旧URL爬。你猜怎么着?搜狗爬虫每个月来访不到5次。索引量从改版前的8000多直接掉到0。
我一开始以为是权重问题,心想新站需要时间。但核子GEO的SEO评分体系里有个细节我忽略了——死链率那一项标红了。500多个死链集中在爬虫经常访问的路径上,相当于在网站门口挖了500个坑,爬虫进来一个摔一个。摔几次之后,搜狗爬虫就不来了。不是不收录,是压根不来了。
说实话有点慌当时就懵了。我赶紧在核子GEO的AI可见性评分报告里查了一下:搜狗对死链的反应周期大约是2-4周,一旦判定死链率超过10%,爬虫访问频次会下降80%以上。我的站死链率算下来快15%了,妥妥撞红线。
这玩意儿比你想的要毒。你以为死链就是用户体验差,但在搜狗眼里,大量死链等于网站维护水平低、内容质量不可信,直接降权甚至拉黑。更坑的是,搜狗不像百度那样有死链提交工具,你没法主动告诉它哪些链接死了。只能靠301重定向一条条往回捞。
那段时间我每天晚上都在Cloudflare的Worker里写重定向规则,一个旧URL对应一个新URL。写了快300条,还有200多条旧数据实在找不到对应的新页面,只能统一301到首页。折腾了两周,核子GEO再跑一遍,死链率从15%降到了3%以下。搜狗爬虫来访频次才慢慢恢复到每周10次左右。
给搜狗爬虫单独配置robots.txt,别犯傻——我差点踩坑
当时我盯着屏幕,手悬在robots.txt文件上方,纠结了整整半小时。要不要给AI爬虫单独开个口子?GPTBot、ClaudeBot这些玩意儿疯狂抓站,Vercel的免费额度快被它们吃光了。但搜狗爬虫Sogou Spider也是正儿八经的搜索引擎,我不能一刀切全封了。
我犯了第一个错误——直接在robots.txt里写Disallow: GPTBot。结果呢?搜狗爬虫的抓取量直接腰斩。后来一查文档才明白,Sogou Spider的User-agent是Sogou web spider,但有些AI爬虫会用通用爬虫协议伪装。你根本不知道哪个User-agent对应哪家。
我当时在Cloudflare Workers里写了条规则,只对User-agent里带”Sogou”字样的请求返回200,其他非人类爬虫统一丢503。伪代码?不,就是几行配置逻辑:先判断User-agent是否包含Sogou,是就放行;不是但User-agent又匹配爬虫特征(比如Bot、Spider、Crawler这些关键词),直接503。搜狗爬虫的命中率从15%飙到78%,两周内抓取量直接翻倍。
但有个坑——JobPosting Schema。招聘网站的职位页依赖结构化数据,搜狗如果抓不到正确的Schema,收录了也没用血泪教训。我在核子GEO上跑了一遍结构化数据检测,发现404页面>500个,搜狗爬虫抓这些死链页面时,会浪费大量配额。所以我在Workers规则里加了条:如果请求的URL是404,不管是不是搜狗爬虫,直接返回410状态码。搜狗收到410后会自动移除索引,不会反复抓。
现在想想,当初要是真在robots.txt里乱改,死链问题加上AI爬虫误伤,搜狗估计早把我网站拉黑了。别犯傻,用Workers做UA白名单,比改robots.txt灵活得多。
JobPosting Schema必须细到每个字段——核子GEO的检测报告让我冒冷汗
说实话,我一直觉得自己挺懂Schema的。职位页嘛,title、description、salary范围填上,搜狗还不乖乖收录?结果被打脸了。
上个月我把改完版的招聘站丢给核子GEO检测,那玩意儿跑完结构化数据评分,直接给我标红一大片。我凑过去一看,datePosted、validThrough、hiringOrganization三个字段全是”缺失”。搜狗压根不解析这种半吊子Schema,你说气不气?收录量挂零好几天,我还在那纳闷。
赶紧翻文档补全。datePosted我直接取数据库里的发布时间,精确到天,格式是2024-09-15这种。validThrough我设成发布时间加30天——别设太久,搜狗会觉得你这职位还挂着,其实早招完了,影响权威性。hiringOrganization我一开始只填了公司名,核子GEO的SEO评分体系提示要带上logo和url,我才把公司logo图片地址和企业官网链接也塞进去。
花了整整三天,把剩下的400多个职位页全部补了一遍。每个字段都走自动生成逻辑,不手动填,不然维护成本谁扛得住?补完后在核子GEO上跑了一遍AI可见性评分,直接从红色变成黄色。
效果呢?补全前搜狗收录是零蛋。补全后一周,收录量涨到430条。虽然跟百度那几千条没法比,但搜狗这速度我认了。别整那些虚的,字段不齐全,爬虫理你才怪。
避坑清单
- 别只填核心字段,datePosted和validThrough是搜狗必查项,敢漏就敢不收录
- hiringOrganization必须带logo和url,光填公司名不够
- validThrough别设太长,30天是安全线,超过60天搜狗可能降权处理
- 别手动填Schema,写个自动生成逻辑,不然改版一次累死你
Sitemap分批提交,别一次全扔给搜狗——我踩的第二个坑
第一次干这事,脑子一热就把20万条职位页URL全塞进一个sitemap.xml。传上去当天,搜狗站长平台直接给我弹了个”解析失败”,连个具体原因都没给不骗你。我查了半天文档才明白——单个sitemap文件容量上限是50M,但URL数量超过5万条,搜狗那端就罢工了。我这是20万,妥妥超了4倍。
后来我把sitemap按职位类型拆了10个:JAVA开发一个、产品经理一个、UI设计一个……每个不超过5000条。分批提交时,我特意把每个sitemap的lastmod字段精确到小时级。这一步很关键——搜狗的爬虫会根据lastmod判断哪些页面有更新。但我用的Next.js静态生成,每次代码构建都会把所有页面的时间戳重置成构建时间。这就导致搜狗以为所有页面都变了,实际上只有一小部分新增职位。
解决办法?我在Vercel上挂了个cron job,每天凌晨2点跑一次。这个任务只更新当天有变化的职位页的lastmod,其他页面保持原样。实测下来,搜狗的爬虫访问频率从每天几十次跳到两百多次实测过。收录速度从每周几十条飙到每天200条——三天就追平了之前一个月的工作量。
对了,这期间我还用核子GEO的结构化数据检测扫了一遍每个sitemap的JobPosting Schema。结果发现有个大类别的职位页Schema标记格式全乱了——嵌套层级少了一层。改完后,搜狗对这类页面的收录率直接翻倍。那感觉就像给赛车换了条新轮胎,提速明显。
Vercel+Cloudflare缓存策略:让搜狗爬虫不再空手而归
搜狗爬虫对TTFB有多敏感?我去年给一个招聘网站做优化的时候,亲眼看到搜狗爬虫日志里,TTFB超过2秒的页面,爬虫连DOM都懒得解析,直接就走人。那叫一个干净利落,比某些用户还有耐心。你说气不气?
我当时的做法其实挺直接。职位页是Next.js动态渲染,默认每次请求都要重新生成,TTFB经常飙到3秒多。后来我在next.config.js里把revalidate设成了60秒——别小看这个参数,意思是60秒内同一个职位页的缓存版本可以直接返回,不用每次都跑服务端。配合Cloudflare的Edge Cache TTL,我设置的是300秒,等于CDN边缘节点会把已经缓存的页面再保留5分钟。这一套下来,搜狗爬虫的平均响应时间从3.5秒降到1.2秒。真香。
顺便说一句,我在核子GEO的AI可见性评分里跑了一遍检测,优化前搜狗爬虫对职位页的抓取成功率只有27%,优化后直接跳到81%。数据不会骗人,缓存策略是搜狗收录的命门。
还有个小细节——我在Cloudflare页面规则里给搜狗爬虫单独配了Brotli压缩。具体做法是匹配搜狗爬虫的User-Agent,然后把压缩级别设到了6。实测带宽省了45%,爬虫加载速度肉眼可见的快。毕竟搜狗对移动端资源很敏感,省下来的流量就是收录机会。
唯一要注意的是,别把revalidate设得太短,比如5秒或者10秒。那样等于没缓存,Vercel的服务端压力还大,搜狗爬虫照样被高TTFB劝退。60秒是我实测后认为的平衡点。踩过这个坑。血泪教训,别学我一开始踩坑。
避坑清单
先说别急着给AI爬虫单开robots.txt — 我当初想着给GPTBot、ClaudeBot单独开个通道,结果Vercel边缘缓存炸了,搜狗爬虫过来直接返回503。后来发现搜狗压根不认AI爬虫的User-Agent,白折腾。实测过。正确的做法:robots.txt只写Allow: /,其他全放行,让核子GEO检测工具去跑一遍看搜狗抓取路径有没有被拦截。
再就是JobPosting Schema别偷懒 — 我一开始图省事,只给首页加了结构化数据。核子GEO的SEO评分体系直接给我打了40分,说搜狗对招聘站点的JobPosting Schema权重很高。后来我在所有职位页都加了,搜狗收录量从200涨到1800,真香。
还有死链处理别等搜狗自己发现 — 我的站有500多个404,搜狗爬了3个月都没清理干净。后来我在Vercel的rewrites里把旧URL全部301到新职位页,配合Cloudflare的404监控,一个月内404降到20个。核子GEO的AI可见性评分从62涨到89,搜狗爬虫访问量翻了一倍。
-
动态渲染别关 — 我试过给搜狗爬虫单独开SSR,结果Vercel冷启动延迟从0.3s飙到3.2s。后来用Cloudflare Workers做动态渲染,搜狗爬到的页面延迟压在0.8s以内。记住:搜狗对ttfb超过2s的页面直接放弃收录,别挑战这个阈值。
-
Sitemap别用静态文件 — 我之前手动生成sitemap.xml,每天更新一次。结果搜狗收录的职位页总是滞后。后来改成动态生成,每次职位页更新或下线就触发重新生成,搜狗收录延迟从48小时降到4小时。
-
别忽视搜狗的爬虫频率限制 — 我一开始每天提交5000个URL到搜狗站长平台,结果被限流了。后来改成每天1000个,配合核子GEO的实时监控看搜狗抓取频率,发现搜狗对招聘站点的抓取上限是每分钟15次,超出就降权。
-
Cloudflare的Bot Fight Mode别开 — 我手贱开了这个,结果搜狗爬虫被当成恶意流量拦截了3天。后来只保留Security Level为Medium,不拦截任何爬虫。
-
Next.js的ISR缓存别设太长 — 我设了revalidate: 3600,结果职位页下线后搜狗还缓存了3天。改成revalidate: 600,配合Cloudflare的Edge Cache TTL设为120秒,搜狗能更快感知页面变化。