使用 Indexing API

概览

您可以使用 Indexing API 通知 Google 更新或移除 Google 索引中的网页。 发送请求时必须指定网页的位置。对于已发送给 Google 的通知,您还可以获取其状态。目前,Indexing API 只能用于抓取包含 JobPostingBroadcastEvent(嵌套于 VideoObject的网页。

当您向 Indexing API 发送请求时,请指定独立网页的位置,以通知 Google 可以抓取此网页或从索引中移除此网页。

以下示例演示了您可以使用 Indexing API 执行的操作:

更新网址

Send the following HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish endpoint
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_UPDATED"
}
移除网址

Send the following HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish endpoint
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_DELETED"
}
获取通知状态

Send a HTTP GET request to https://indexing.googleapis.com/v3/urlNotifications/metadata endpoint

参数

下表介绍了所有方法所需的字段(更新和移除网址):

字段
url

必需

要更新或移除内容的完全限定位置。

type

必需

您提交的通知的类型。

准则

以下准则适用于更新和移除网址请求。

  • 所有对 https://indexing.googleapis.com/v3/UrlNotifications:publish 的调用都必须使用“application/json”作为 Content-Type 标头。
  • 只能在更新请求的正文中提交一个网址,或者如发送批量索引编制请求中所述,批量整合最多 100 个请求。
  • 这些示例中的请求正文是访问令牌示例中使用的 content 变量的值。

更新网址

要将需抓取的新网址告诉 Google,或通知 Google 之前提交网址的内容已更新,请按以下步骤操作:

  1. POST 请求提交到以下端点:
    Send a HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish
  2. 在请求的正文中,使用以下语法指定网页的位置:
    {
      "url": "content_location",
      "type": "URL_UPDATED"
    }
  3. Google 会对成功的 Indexing API 调用做出 HTTP 200 响应。HTTP 200 响应意味着 Google 可能很快会尝试重新抓取此网址。响应的正文包含一个 UrlNotificationMetadata 对象,其字段对应通知状态请求返回的字段。
  4. 如果没有收到 HTTP 200 响应,请参见与 Indexing API 相关的错误
  5. 如果网页内容发生变化,请另外提交一个更新通知,这会触发 Google 重新抓取该网页。
  6. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

移除网址

当您从服务器中删除网页或在给定网页的 <head> 部分添加 <meta name="robots" content="noindex" /> 标记后,请通知 Google,以便我们从索引中移除该网页,不再尝试抓取并将其编入索引。在请求移除之前,网址必须返回 404 或 410 状态代码,或者网页包含 <meta name="robots" content="noindex" /> meta 标记。

如需请求从我们的索引中移除网页,请按以下步骤操作:

  1. POST 请求提交到以下端点:
    Send a HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish
  2. 使用以下语法在请求的正文中指定要移除的网址:
    {
      "url": "content_location",
      "type": "URL_DELETED"
    }

    例如:

    {
      "url": "https://careers.google.com/jobs/google/technical-writer",
      "type": "URL_DELETED"
    }
  3. Google 会对成功的 Indexing API 调用做出 HTTP 200 响应。HTTP 200 响应意味着 Google 可能会从索引中移除此网址。响应的正文包含一个 UrlNotificationMetadata 对象,其字段对应通知状态请求返回的字段。
  4. 如果没有收到 HTTP 200 响应,请参见与 Indexing API 相关的错误
  5. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

获取通知状态

您可以使用 Indexing API 查看 Google 上次针对特定网址收到每种通知的时间。GET 请求不会告知您 Google 何时将网址编入索引或移除网址;它只返回请求提交后的状态。

要获取通知的状态,请按以下步骤操作:

  1. GET 请求提交到以下端点。您指定的网址必须经过 URL 编码。例如,将 :(冒号)替换为 %3A,并将 /(正斜杠)替换为 %2F
    Send a HTTP GET request to https://indexing.googleapis.com/v3/urlNotifications/metadata?url=url-encoded_url

    例如:

    GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=https%3A%2F%2Fcareers.google.com%2Fjobs%2Fgoogle%2Ftechnical-writer
    
  2. Indexing API 做出 HTTP 200 消息响应,其负载包含有关通知的详细信息。以下示例显示了有关更新通知和删除通知的响应正文:
    {
      url: "http://foo.com",
      latest_update: {
        type: "URL_UPDATED",
        notify_time: "2017-07-31T19:30:54.524457662Z"
      },
      latest_remove: {
        type: "URL_DELETED",
        notify_time: "2017-08-31T19:30:54.524457662Z"
      }
    }
    
  3. 如果没有收到 HTTP 200 响应,请参见与 Indexing API 相关的错误
  4. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

发送批量索引编制请求

要减少客户端需要创建的 HTTP 连接数,您可以将最多 100 个 Indexing API 调用整合到单个 HTTP 请求中。此操作可以通过多部分请求(批量请求)执行。

向 Indexing API 发送批量请求时,请使用以下端点:

https://indexing.googleapis.com/batch

批量请求的正文包含多个部分。每个部分本身都是一个完整的 HTTP 请求,拥有自己的动词、网址、标头和正文。批量请求中每个部分的大小不能超过 1MB。

为了方便您发送批量请求,Google 的 API 客户端库支持批量处理功能。若要详细了解如何使用客户端库进行批量处理,请参阅以下特定语言的网页:

如果您使用这些网页上的批量处理示例代码,则可能需要根据获取访问令牌中所述的实现要求更新代码。

以下批量请求的正文示例包含了更新通知和移除通知:

POST /batch HTTP/1.1
Host: indexing.googleapis.com
Content-Length: content_length
Content-Type: multipart/mixed; boundary="===============7330845974216740156=="
Authorization: Bearer oauth2_token

--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>

POST /v3/urlNotifications:publish [1]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/42", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+1>

POST /v3/urlNotifications:publish [2]
Content-Type: application/json
accept: application/json
content-length: 75

{ "url": "http://example.com/widgets/1", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+3>

POST /v3/urlNotifications:publish [3]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/43", "type": "URL_DELETED" }
--===============7330845974216740156==

如需了解详情,请参阅发送批量请求