Search Console URL Inspection 怎么读才对

URL Inspection 告诉你 Google 存了什么、何时爬过、为什么收没收录。每个字段怎么读,外加批量检查的 API 调用(2026 年 6 月)。

URL Inspection 是 Search Console 里最有用、也最容易被误读的一个面板。「URL is not on Google」不一定是坏事;那个绿色的「URL is on Google」对勾,也并不等于页面真的在排名。下面讲清楚每个字段是什么意思、「已存快照」和「实时测试」差在哪,再给出一套能一次性检查几百个 URL 的 API 脚本。

一句话总结

  • 粘一个 URL,先读 Coverage,再点 Test live URL,然后把两者对比。
  • 已收录(已存)版本是 Google 上次爬留下的快照,可能是几周前的;实时测试是 Google 现在再爬一次会看到的样子。两者不一致的地方,就是你问题的答案。
  • 「URL is on Google」只代表已收录,不代表在排名。要真正确认排名,直接去 Google 搜这个页面(Google 官方文档也是这么说的)。
  • Request indexing 要省着用:截至 2026 年 6 月,每个 property 大约每天 10-12 个 URL,而且它只是把 URL 重新排队,并不会强制收录。
  • 超过约 20 个 URL,就改用 URL Inspection API:截至 2026 年 6 月,每个 property 每天 2,000 次、每分钟 600 次

URL Inspection 到底返回什么

对你已验证站点的任意 URL,URL Inspection 会跑两份检查:

  • 已收录版本:Google 上次爬留下的内容(coverage 状态、Google 选的 canonical、上次爬的时间)。
  • 实时测试:Google 现在再爬一次会看到什么(是否允许抓取、抓取状态、是否允许收录、当前 canonical)。

两者不一致的地方,往往就是你问题的答案。如果已存版本写着「Duplicate」、但实时测试已经显示了正确的 canonical,那就说明 bug 已经修好,只差 Google 重新爬一遍。

什么时候用它

  • 想确认某一页是否被收录,又不想去 Google 搜 site:site: 有延迟,还会漏页)。
  • 某页从搜索结果里消失了,不知道为什么。
  • 改了 canonical、robots.txt 规则或 noindex 标签,想确认 Google 看到了改动。
  • 刚发完一篇文章,想把它推进爬取队列。

开始前准备

  • Search Console 已验证 property(Domain 或 URL-prefix)。
  • URL 准备好完整版(https:// + 与站点一致的尾斜杠)。
  • 批量用:URL Inspection API 的 OAuth token。

实操步骤

  1. 完整 URL 粘到 Search Console 顶部搜索框。 用站点真实提供的形态——尾斜杠很重要。

  2. 先读 Coverage。 含义:

"URL is on Google"                          → 已收录 ✓
"URL is on Google, but has issues"          → 已收录但有警告(仍可展示)
"URL is not on Google"                      → 未收录;原因看下一行
  ├─ "Discovered – currently not indexed"   → 排队;常隐含"薄/重复"
  ├─ "Crawled – currently not indexed"      → 已爬但被弃;通常是质量问题
  ├─ "Page with redirect"                   → 301/302 生效;索引在别处
  ├─ "Duplicate without user-selected canonical" → 修 canonical
  └─ "Excluded by 'noindex' tag"            → meta robots 在挡
  1. 点 View crawled page 看 Google 存的 HTML。看 canonical、渲染后 HTML、More info 里的 console 错误。

  2. 右上角 Test live URL,立刻抓一次。首先扫这几行:

Crawl allowed?              Yes / No        ← robots.txt
Page fetch                  Successful      ← 源站返回 200
Indexing allowed?           Yes / No        ← meta robots / X-Robots-Tag
User-declared canonical     <你的 URL>
Google-selected canonical   <你的 URL 或别的> ← 不一致就是 canonical 的 bug
  1. 批量检查用 URL Inspection API。 它返回的就是你在 UI 里读到的同一个 indexStatusResult,外加几个 UI 藏起来的字段:robotsTxtStateALLOWED / DISALLOWED)、crawledAsDESKTOP / MOBILE)、referringUrls(Google 顺着爬到这一页的站内链接)。鉴权 curl:
curl -X POST "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "inspectionUrl": "https://yourdomain.com/articles/foo/",
    "siteUrl": "sc-domain:yourdomain.com",
    "languageCode": "en-US"
  }' \
  | jq '.inspectionResult | {
        verdict: .indexStatusResult.verdict,
        coverageState: .indexStatusResult.coverageState,
        userCanonical: .indexStatusResult.userCanonical,
        googleCanonical: .indexStatusResult.googleCanonical,
        lastCrawl: .indexStatusResult.lastCrawlTime
      }'

返回样例:

{
  "verdict": "PASS",
  "coverageState": "Indexed, not submitted in sitemap",
  "userCanonical": "https://yourdomain.com/articles/foo/",
  "googleCanonical": "https://yourdomain.com/articles/foo/",
  "lastCrawl": "2026-05-20T14:02:00Z"
}
  1. 对一批 URL 循环 triage:
while read url; do
  curl -sX POST "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect" \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    --data "$(jq -nc --arg u "$url" --arg s "sc-domain:yourdomain.com" \
              '{inspectionUrl:$u, siteUrl:$s, languageCode:"en-US"}')" \
    | jq -r --arg u "$url" '[$u, .inspectionResult.indexStatusResult.verdict, .inspectionResult.indexStatusResult.coverageState] | @csv'
  sleep 1   # 注意限流
done < urls.txt > inspection-report.csv
  1. 已存版本和实时测试都正确,才申请收录。 慎用,每个重要 URL 申请一次就够。

  2. 改过的页面:先跑实时测试确认 Google 看到了改动,再申请收录。

关掉标签页前:5 项快速核对

  • 检查的 URL 是你的 canonical 形态(尾斜杠、语言前缀、没有 utm_ 参数)。
  • Coverage 状态和 Google 选的 canonical 跟你预期一致。
  • 实时测试里 Crawl allowed 和 Indexing allowed 都通过。
  • 一批超过约 20 个 URL,已经改走 API。
  • 每次点 Request indexing 都记一笔(日期 + 原因),别浪费每天约 10-12 个的额度。

几天后要复查什么

  • 新 URL:申请收录 1-3 天后重跑 inspect,应从「URL is not on Google」翻成「URL is on Google」(除非质量问题还在)。
  • canonical 修复:Google-selected canonical 现在和你声明的 user-declared canonical 一致。
  • 解屏(robots / noindex):实时测试显示 Indexing allowed = Yes。

容易踩的坑

  • 看到「URL is on Google」就走了,没看下一行。页面可能被收录在另一个 canonical 下面。
  • 把「已收录版本」和「实时测试」搞混。已收录版本是一个快照,可能几周前的。
  • 同一个 URL 一天点好几次 Request indexing。Google 会忽略,还可能临时限流。
  • 带着 tracking 参数去 inspect。粘进去之前先把 ?utm_* 删掉,参数版对 Google 是另一个 URL。
  • 忽略实时测试里「Crawl allowed?」「Indexing allowed?」这两行。robots.txtnoindex 在挡你,这两行马上能看出来。
  • 猛刷 API 却不看额度。截至 2026 年 6 月,每个 property 的上限是每天 2,000 次、每分钟 600 次;超了 API 会返回 HTTP 429,直到窗口重置才解锁。记个计数器,调用之间 sleep 一下。

FAQ

  • 为什么「URL is not on Google」有时候没写原因?: 通常意味着 Google 根本没爬过这个 URL。先确认它在 sitemap 里、站内有链接指过去,然后申请收录。
  • Request indexing 一天能点几次?: 截至 2026 年 6 月,UI 里每个 property 大约每天 10-12 个 URL。Google 不公布确切数字,会随站点历史和爬取活跃度浮动。量大就改用更新 sitemap + 加强站内链接。
  • 「URL is on Google」是不是代表在排名了?: 不是。它只代表 URL 已收录、有资格出现。Google 官方帮助页明确说这个工具不会检查所有排名条件;要确认,直接去 Google 搜这个页面。
  • 申请收录后一定会被收录吗?: 不一定。它只是把 URL 推进 Google 的复查队列。如果页面薄、重复、或被屏蔽,照样不会被收录。
  • 为什么实时测试的 canonical 和已存版本不一样?: 因为 Google 上次爬是在你改之前。确认实时测试的内容正确后再申请收录,已存版本几天内会跟上。
  • API 能 Request indexing 吗?: 不能。URL Inspection API 是只读的。另一个 Indexing API 只支持两类内容:带 JobPostingBroadcastEvent 结构化数据的页面;Google 的 John Mueller 多次警告,别拿它去推普通博客或商品页。

相关阅读

标签: #独立开发 #SEO #Google #Search Console #收录 #排查