Быстрый старт

Ниже представлена инструкция по загрузке RSS-канала в Яндекс.Вебмастер.

Шаг 1. Получение OAuth-токена

Для работы с API Турбо страниц необходимо получить авторизационный токен, например, с помощью Яндекс.Вебмастера:
  1. Перейдите на страницу Турбо-страницы → Источники.
  2. В блоке Загрузка через API нажмите кнопку Получить токен.

Полученный OAuth-токен необходимо передавать в каждом запросе в HTTP-заголовке Authorization.

Шаг 2. Получение идентификатора пользователя

Идентификатор пользователя необходим при вызове ресурсов API Турбо-страниц. Он передается в path-параметре user-id.

Чтобы получить идентификатор, используйте операцию GET /v4/user/.

Пример:
curl -X GET \
  'https://api.webmaster.yandex.net/v4/user' \
  -H 'Authorization: OAuth oauth_token'

Идентификатор пользователя возвращается в поле user-id.

Шаг 3. Получение ссылки для загрузки RSS-канала

Чтобы получить ссылку для загрузки, используйте операцию GET /v4/user/{user-id}/hosts/{host-id}/turbo/uploadAddress.
Внимание. Перед публикацией Турбо-страниц рекомендуется проверить валидность разметки и правильность отображения в режиме DEBUG. Режим задается с помощью query-параметра mode при получении адреса для загрузки. Также рекомендуется ознакомиться с ограничениями для RSS-каналов.
Пример:
curl -X GET \
  'https://api.webmaster.yandex.net/v4/user/12345678/hosts/https:example.com:443/turbo/uploadAddress?mode=DEBUG' \
  -H 'Authorization: OAuth oauth_token'

Ссылка для загрузки возвращается в поле upload_address. Ее необходимо использовать для загрузки RSS-канала.

Шаг 4. Загрузка RSS-канала

Чтобы загрузить RSS-канал, отправьте POST-запрос на адрес, который получили в предыдущем шаге. В запросе необходимо указать заголовок Content-Type: application/rss+xml и передать RSS-канал в теле запроса виде бинарного файла или в виде строки.

Пример:
curl -X POST \
  https://api.webmaster.yandex.net/v4/upload/turbo/Dz3L9xOfnCecrcgv3jdTInxCY8tMl__tDWwJV9jB1VkdUmDyqx94u-11JqUte05eXYkX49q1Z9CZAsbBgKkdIQ==/ \
  -H 'Authorization: OAuth oauth_token' \
  -H 'Content-Type: application/rss+xml' \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru">
  <channel>
    <item turbo="true">
      <title>Заголовок страницы</title>
      <link>https://example.com</link>
      <turbo:content>
        <![CDATA[
          <header>
            <h1>Ресторан «Полезный завтрак»</h1>
            <h2>Вкусно и полезно</h2>
            <figure>
              <img src="https://avatars.mds.yandex.net/get-sbs-sd/403988/e6f459c3-8ada-44bf-a6c9-dbceb60f3757/orig">
            </figure>
            <menu>
              <a href="https://example.com/page1.html">Пункт меню 1</a>
              <a href="https://example.com/page2.html">Пункт меню 2</a>
            </menu>
          </header>
          <p>Как хорошо начать день? Вкусно и полезно позавтракать!</p>
          <p>Приходите к нам на завтрак. Фотографии наших блюд ищите <a href="#">на нашем сайте</a>.</p>
          <h2>Меню</h2>
          <figure>
            <img src="https://avatars.mds.yandex.net/get-sbs-sd/369181/49e3683c-ef58-4067-91f9-786222aa0e65/orig">
            <figcaption>Омлет с травами</figcaption>
          </figure>
          <p>В нашем меню всегда есть свежие, вкусные и полезные блюда.</p>
          <p>Убедитесь в этом сами.</p>
          <button formaction="tel:+7(123)456-78-90"
            data-background-color="#5B97B0"
            data-color="white"
            data-primary="true">Заказать столик</button>
          <div data-block="widget-feedback" data-stick="false">
            <div data-block="chat" data-type="whatsapp" data-url="https://whatsapp.com"></div>
            <div data-block="chat" data-type="telegram" data-url="http://telegram.com"></div>
            <div data-block="chat" data-type="vkontakte" data-url="https://vk.com"></div>
            <div data-block="chat" data-type="facebook" data-url="https://facebook.com"></div>
            <div data-block="chat" data-type="viber" data-url="https://viber.com"></div>
          </div>
          <p>Наш адрес: <a href="#">Nullam dolor massa, porta a nulla in, ultricies vehicula arcu.</a></p>
          <p>Фотографии — http://unsplash.com</p>
        ]]>
      </turbo:content>
    </item>
  </channel>
</rss>'

Операция возвращает идентификатор задачи на загрузку RSS-канала в поле task_id. Его необходимо использовать для проверки статуса загрузи.

Шаг 5. Проверка статуса загрузки

Чтобы проверить статус загрузки RSS-канала, передайте идентификатор задачи в path-параметре task_id операции GET /v4/user/{user-id}/hosts/{host-id}/turbo/tasks/{task-id}.

Результат загрузки содержит:
  • cсылки, по которым можно посмотреть примеры отображения Турбо-страниц;
  • информацию об ошибках, если они возникают.
Примечание. Обработка RSS-канала занимает длительное время.
Пример:
curl -X GET \
  'https://api.webmaster.yandex.net/v4/user/12345678/hosts/https:example.com:443/turbo/tasks/12345e0-678f-9e' \
  -H 'Authorization: OAuth oauth_token'