出海SEO实战:给网站做一套死链巡检,自动跑
对一个靠 SEO 吃流量的站来说,死链是慢性病。

对一个靠 SEO 吃流量的站来说,死链是慢性病。
用户点击发现 404 会直接走人,Google 抓到一堆指向 404 的出站链接,也不会给你好印象。麻烦的是它不会报警,自己要是没有发现,就一直在那儿。
发现死链先手动处理掉止血。省心的做法是写个脚本定期跑,把库里的 URL 挨个请求一遍,明确死掉的自动下线,再发个飞书告警。
总结了几条,做类似的事可以直接参考。
别把"反爬"当成"死"
很多正常站点会拦爬虫。
你用脚本去请求,像 GPT、Grafana 这类站会返回 403,有的干脆超时。要是把这些都当死链下线,一批好好的站就被误杀了。
判定要保守。只有 HTTP 404、410,或者跟着重定向落到明确的 404 页,才下线。403、429、超时、5xx 这些只标成"可疑",记录下来人工再看,不自动处理。
拿不准的时候宁可放过。
死链巡检判定逻辑:404/410 下线,403 和超时只记为可疑,活的回写检查时间滚动轮查
别每天全量扫
最顺手的写法是每晚把全部链接扫一遍。能跑,但浪费。大部分链接是稳定的,天天扫没必要。
建议是滚动复查:给每条链接记一个"上次检查时间",每次只挑最久没查的,加上从没查过的新链接,分摊到几天轮完一遍。
负载能降一大截,而新进来的内容因为没有检查记录会排在最前面优先扫,新内容恰恰最容易混进坏链接。
死链发现从"当天"放宽到"几天内",对 SEO 和体验都够用。
源头不堵,扫多少遍都白搭
扫描和下线都是下游打扫。如果坏链接是某个数据源源源不断送进来的,只在下游清理就是一边擦地一边漏水。
有的抓取源给的根本不是真实地址,而是一层跳转短链,解析不出落地页,这种存量你清得再勤也架不住它每天又灌一批进来。
得回到入库那一步加校验,把脏数据挡在门外,质量太差的源干脆停掉。
让它自动跑起来
脚本写好了,得让它自己定时跑,常见三种。
一是 serverless 定时任务,比如 Vercel Cron。跟着项目一起部署,不用单独维护机器,配置最省事。
代价是函数有执行时长上限,全量长任务会被掐断。
二是客户端自带的自动化。像 Codex 这类客户端内置了定时能力,你本来就在用的话,挂个任务进去就行,适合跑在自己电脑上的轻量活。
三是放在一台 7×24 不关机的机器上跑,配 cron 或 launchd。一台常年开着的 Mac mini、小 VPS 或 NAS 都行。没有时长限制、完全自己掌控。