我打开 Yandex Webmaster 时,看到了一个很难忽略的数字:2,000 个页面在一夜之间从 Yandex 搜索中消失了。整个项目大约有 8,000 个页面,也就是说,约 25% 的页面不再显示为参与搜索。
我的第一反应很直接:SEO 有时候确实很残酷。但更有价值的结论需要更严谨。 “搜索中的页面”数量突然下降,只是一个观察结果,不是原因诊断。2,000 这个数字是真的;为什么会发生,仍然没有被证明。
当时我真正能确认的事实
那一刻我只有三个确定事实:Yandex Webmaster 显示少了 2,000 个页面;项目总量大约是 8,000 页;变化发生在一夜之间。至于 Yandex 是否惩罚了网站、抓取是否失败、某个具体技术改动是否导致了下降,我都没有证据。
这个区别很重要,因为 Yandex 把我们经常统称为“索引”的多个状态区分开来。一个 URL 可以已经被抓取,但仍然被排除在搜索之外。Yandex 官方文档还说明,机器人数据库里可能存在当前无法在搜索结果中展示的页面。因此,在 Webmaster 里真正值得问的,不只是“爬虫看过这个 URL 吗?”,而是“这个页面现在是否参与搜索?如果没有,是什么状态解释了它被排除?”
Yandex 在官方文档中分别说明了 参与搜索的页面 和 被排除的页面。
抓取、参与搜索、排名和流量不是一回事
这次事件再次提醒我,SEO 里很容易把四个层面混在一起:抓取、进入搜索系统、参与搜索,以及真实的排名和流量。它们有关联,但不能互相替代。
- 抓取:机器人是否请求并获取了这个 URL。
- 参与搜索:Yandex 当前是否认为页面可以出现在搜索结果中。
- 排名:页面针对具体查询会出现在什么位置。
- 流量:除了排名,还受搜索需求、摘要、CTR、季节性等多种因素影响。
所以,参与搜索的页面减少 25%,并不自动意味着流量也减少 25%。它也不能证明一定发生了抓取问题,更不能单凭这一点证明算法惩罚。
为什么 2,000 页的规模仍然值得重视
2,000 个 URL 已经足够大,应该去寻找模式,而不是当成几个随机页面。下一步更有价值的问题是:受影响的 URL 是否共享某种特征,例如同一个目录、模板、内容类型、canonical 配置、HTTP 状态码、内部链接模式或发布时间段。
这种分组比盯着一个总数更有用。如果多数被排除页面拥有同一种技术特征,调查范围会迅速缩小。如果损失分散在彼此无关的站点区域,假设就需要改变。不过,这只是调查方法,不是对我这个案例真实原因的断言。仅凭最初的观察,我无法证明原因。
在责怪算法之前,我会先检查什么
- 先确认指标。 确认真正变化的是“搜索中的页面”,然后查看被排除页面和变化日期。
- 查看排除原因。 Yandex Webmaster 可能显示低价值或低需求、non-canonical、
noindex、重定向或错误等原因。这些状态是证据;只看图表猜原因不是。 - 给受影响 URL 分组。 比较目录、模板、页面类型、语言、自动生成区域和发布时间。
- 抽样检查技术基础。 HTTP 状态码、robots 指令、canonical、重定向、页面可访问性,以及机器人实际收到的 HTML。
- 把索引变化和排名、流量变化分开。 参与搜索、展示次数、点击和 Analytics 会话回答的是不同问题。
- 最后才建立因果假设。 如果某次配置变化、部署、模板更新或内容模式与受影响页面高度吻合,它可以成为候选原因,但仍然需要证据。
Yandex 建议先查看具体排除原因,真正的问题修复后再提交页面重新抓取。这个流程比先看到一个巨大数字,再给它寻找一个故事要可靠得多。
这次事件不足以证明什么
我不会写“Yandex 惩罚了网站”,因为我没有证明这一点。我也不会说爬虫只是“变得更挑剔了”,因为这句话会把多个技术上完全不同的状态混在一起。我不会把这 2,000 个页面称为永久丢失,也不会在没看状态之前假设它们都因同一个原因消失。
这次下跌给我留下的教训
8,000 个页面里有 2,000 个一夜之间退出搜索,感觉依然很残酷。但更好的结论不是“SEO 是随机的”。真正的结论是:搜索系统存在多个状态层,在解释为什么变化之前,先要找出到底是哪一层发生了变化。
我现在更愿意遵循一个简单规则:先记录观察事实,把原因保持为未确定,再用页面级证据逐步缩小假设。确认的数字是 2,000。原因仍然是一个问题。