Использование Indexing API

Общие сведения

С помощью Indexing API можно сообщить Google, какие страницы нужно повторно проиндексировать или удалить. В запросе должен быть указан URL веб-страницы. Вы также можете с помощью этого API получать сведения о статусе уведомлений, отправленных в Google. На данный момент Indexing API поддерживает сканирование страниц со структурированными данными типов JobPosting или BroadcastEvent, которые встроены в объект VideoObject.

Отправляя запрос в Indexing API, вы должны указывать URL конкретной веб-страницы, которую необходимо обновить в индексе Google или удалить из него.

В примерах ниже приведены действия, которые можно выполнять с помощью Indexing API.

Обновление URL

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"
}
Удаление URL

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).

Поля
url

Обязательное поле

Полный URL элемента, который нужно обновить или удалить.

type

Обязательное поле

Тип отправленного уведомления.

Правила

Создавая запросы на обновление и удаление URL, соблюдайте следующие правила:

Обновление URL

Вы можете сообщать нам об изменении контента, расположенного по определенным URL, а также о появлении новых URL, которые необходимо просканировать. Вот как это сделать:

  1. Отправьте запрос POST этой конечной точке:
    Send a HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish
  2. В теле запроса укажите расположение страницы, используя следующий синтаксис:
    {
      "url": "content_location",
      "type": "URL_UPDATED"
    }
  3. В ответ на успешные запросы к Indexing API Google отправляет код HTTP 200. Код HTTP 200 в ответе означает, что Google может в ближайшее время ещё раз просканировать страницу по этому URL. В теле ответа содержится объект UrlNotificationMetadata с полями, соответствующими тем, которые были возвращены при отправке запроса статуса уведомления.
  4. Если ответ HTTP 200 не получен, изучите список ошибок, которые могут происходить при использовании Indexing API.
  5. Если контент страницы изменился, отправьте ещё одно уведомление об обновлении, чтобы наш робот повторно просканировал страницу.
  6. Возможно, вам потребуется более высокая квота по сравнению с доступной по умолчанию. Узнайте, как проверить свою квоту и запросить ее увеличение.

Удаление URL

Если вы удаляете ту или иную страницу со своего сервера или добавляете тег <meta name="robots" content="noindex" /> в раздел <head>, сообщите об этом Google, чтобы мы убрали страницу из индекса и не пытались просканировать и проиндексировать ее повторно. Перед тем как отправлять запрос на удаление URL, убедитесь, что при попытке открыть страницу возвращается код статуса 404 или 410 или же что она содержит метатег <meta name="robots" content="noindex" />.

Чтобы запросить удаление из индекса, выполните следующие действия:

  1. Отправьте запрос POST этой конечной точке:
    Send a HTTP POST request to https://indexing.googleapis.com/v3/urlNotifications:publish
  2. В теле запроса укажите URL, который вы хотите удалить. Используйте следующий синтаксис:
    {
      "url": "content_location",
      "type": "URL_DELETED"
    }

    Пример:

    {
      "url": "https://careers.google.com/jobs/google/technical-writer",
      "type": "URL_DELETED"
    }
  3. В ответ на успешные запросы к Indexing API Google отправляет код HTTP 200. Код HTTP 200 может означать, что данный URL был удален из индексации. В теле ответа содержится объект UrlNotificationMetadata с полями, соответствующими тем, которые были возвращены при отправке запроса статуса уведомления.
  4. Если ответ HTTP 200 не получен, изучите список ошибок, которые могут происходить при использовании Indexing API.
  5. Возможно, вам потребуется более высокая квота по сравнению с доступной по умолчанию. Узнайте, как проверить свою квоту и запросить ее увеличение.

Получение статуса уведомления

С помощью Indexing API можно узнать, когда сервер Google в последний раз получал уведомления каждого из типов для определенного URL. Запрос GET позволяет узнать, успешно ли был отправлен запрос, но в нем не указывается время удаления или индексирования.

Чтобы получить статус уведомления, выполните следующие действия:

  1. Отправьте запрос GET конечной точке, приведенной ниже. Указанные вами URL должны быть в кодировке 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-запрос с отдельным оператором, URL, заголовком и телом. Размер каждой части пакетного запроса не должен превышать 1 МБ.

Для более простой отправки пакетных запросов используйте клиентские библиотеки API Google. Чтобы узнать больше о создании пакетов с помощью библиотек для отдельных языков, перейдите по следующим ссылкам:

Перед тем как использовать примеры с приведенных выше страниц, добавьте в код обязательные данные, указанные в статье Получение токена доступа.

В теле сообщения пакетного запроса, приведенного ниже, содержатся уведомления об обновлении и удалении:

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==

Подробнее об отправке пакетных запросов