Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как отправить turbo страницы в webmaster yandex?

Может я что то не правильно понял.
На вкладке с турбо-страницами написано
Загрузка через API
Для крупных сайтов. Пакетная загрузка. До 10 000 элементов item в каждой задаче, до 10 задач одновременно.

Как это понял я: получаем ссылку на api, генерируем XML с полями item и пушим всем скопом их методом POST по предоставленной ссылке. Я прав, или нет?

Начал процесс по получению ссылки, тут все ок, все сделал.

Выдернул из базы данных 10 документов и сформировал из них XML
function getItemsXML(request) {
    return xml = `<?xml version="1.0" encoding="UTF-8"?><rss xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" version="2.0"><channel>`,
        Promise.all(request.map(async (document) => {
            xml += `<item turbo="true"><link>${document.url}</link><turbo:content><![CDATA[<header><h1>Фото ${document.tags.slice(0, 3).join(', ')}</h1></header><pubDate>${document.indexAt.toUTCString()}</pubDate><figure><img src="${document.image}"><figcaption>Бесплатное фото ${document.tags.slice(-3).join(', ')}</figcaption></figure>]]></turbo:content></item>`
        })), xml + `</channel></rss>`
}

Такая же структура в обычно rss для турбо-страниц

Пытаюсь добавить эти элементы по апи
function pushYandexTurboItems(request) {
    return options.uri = request.address, options.headers['Content-type'] = 'application/rss+xml', options.FormData = request.rss,
        http.post(options).then()
}

Вываливает ошибка
body:
      { error_message: 'Expected valid xml, found: "..."',
        error_code: 'ENTITY_VALIDATION_ERROR' }


Расшифровка
ENTITY_VALIDATION_ERROR — тело запроса не прошло валидацию.


Что не так?
Пробовал массив элементов передать
return Promise.all(request.map(async (document) => {
        return `<item turbo="true"><link>${document.url}</link><turbo:content><![CDATA[<header><h1>Фото ${document.tags.slice(0, 3).join(', ')}</h1></header><pubDate>${document.indexAt.toUTCString()}</pubDate><figure><img src="${document.image}"><figcaption>Бесплатное фото ${document.tags.slice(-3).join(', ')}</figcaption></figure>]]></turbo:content></item>`
    }))


Та же самая ошибка.

Думаю может я вообще не понял предназначение данного апи?
  • Вопрос задан
  • 1423 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@developerbitrix
Тоже столкнулся с такой проблемой, дело было в кодировке. Rss должен быть в utf-8.
Ответ написан
Комментировать
@maxxi165
Фид должен начинаться с <rss
пример из доки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы