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

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

Правила

При работе с Indexing API вы должны соблюдать следующие требования:

  • Контент, отправляемый с помощью Indexing API, должен соответствовать нашим правилам в отношении спама.
  • При каждом вызове URL https://indexing.googleapis.com/v3/UrlNotifications:publish в заголовке Content-Type необходимо использовать "application/json".
  • В теле запроса обновления должно быть не более одного URL. При этом вы можете объединять до 100 запросов и отправлять их вместе. Не пытайтесь обойти наши ограничения на отправку (например, за счет использования нескольких аккаунтов).
  • Тело запроса в этих примерах – значение переменной content, которая используется в примерах токена доступа.

Возможности API

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

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

Примеры
Обновление URL

Отправьте указанный ниже HTTP-запрос POST конечной точке https://indexing.googleapis.com/v3/urlNotifications:publish. Пример:

{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_UPDATED"
}
Удаление URL

Отправьте указанный ниже HTTP-запрос POST конечной точке https://indexing.googleapis.com/v3/urlNotifications:publish. Пример:

{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_DELETED"
}
Получение статуса уведомления

Отправьте HTTP-запрос GET конечной точке https://indexing.googleapis.com/v3/urlNotifications/metadata.

Параметры

В таблице ниже описаны поля, обязательные для всех перечисленных действий (обновления и удаления URL).

Поля
url

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

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

type

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

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

Обновление URL

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

  1. Отправьте HTTP-запрос POST следующей конечной точке:
    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. В Indexing API предусмотрена квота по умолчанию для тестирования. Чтобы использовать API, запросите одобрение и квоту.

Удаление URL

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

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

  1. Отправьте запрос POST этой конечной точке:
    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 предусмотрена квота по умолчанию для тестирования. Чтобы использовать API, запросите одобрение и квоту.

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

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

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

  1. Отправьте запрос GET этой конечной точке: Указанные вами URL должны быть в кодировке URL. Например, знак : (двоеточие) нужно заменить на %3A, а знак / (косую черту) – на %2F.
    https://indexing.googleapis.com/v3/urlNotifications/metadata?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. В Indexing API предусмотрена квота по умолчанию для тестирования. Чтобы использовать API, запросите одобрение и квоту.

Отправка пакетных запросов индексирования

Чтобы уменьшить количество 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==

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