Автопостинг в VK через RSS feed

Заметили в настройках сообщества в VK интересную настройку, связанную с фидами. И понеслось.

Автопостинг в VK через RSS feed
Дата публикации
21.05.24
Дата обновления
16.05.26
Время чтения
4 мин.

Заметили в настройках сообщества в VK интересную настройку Импорт RSS.

А так как мы недавно добавили RSS фид, то мы сразу же решили её опробовать.

То как VK обрабатывает фид - тайна за семью печатями. В документации мы не нашли никаких подробностей. Там даже описания этой функции нет.

Настройка просто есть, кому надо - тот разберётся.

Нам надо, мы начали разбираться 🙂

Тестируем настройку

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

Настройка импорта RSSНастройка импорта RSS

Теперь выкладываем фид и ждём.

Через несколько минут получаем результат!

Первый результатПервый результат

На этом можно было бы и остановиться, но...

Что там было про "Публиковать в виде статьи"?

Тестируем настройку "Публиковать в виде статьи"

Меняем настройки:

"Настройка \"Публиковать в виде статьи\""Настройка "Публиковать в виде статьи"

И получаем следующий результат:

Первый результат со статьёйПервый результат со статьёй

При этом если кликнуть на статью, то она пустая внутри:

Пустая статьяПустая статья

Добавляем содержимое статьи

Статья пустая внутри, потому что я не пишу в RSS фид содержимое статьи.

Это легко исправить. Добавляем в код для генерации фида содержимое:

allPosts.forEach((post) => {
  console.log(`Adding rss item for post ${post.slug}`);
  feed.addItem({
    // ...
    content: post.content,
  });
});

Снова проверяем результат:

Результат со статьёйРезультат со статьёй

Кажется что-то пошло не так. А что с содержимым статьи?

Содержимое статьи в формате markdownСодержимое статьи в формате markdown

Становится очевидно что причина в том, что markdown не поддерживается

Значит попробуем добавлять в фид HTML разметку.

Снова меняем код генерации фида:

for (const post of allPosts) {
  console.log(`Adding VK item for post ${post.slug}`);

  const content = await markdownToHtml(post.content);

  feed.addItem({
    //..
    content: content,
  });
}

Проверяем результат:

Результат со статьёй в формате HTMLРезультат со статьёй в формате HTML

А что с содержимым статьи?

Содержимое статьи в формате HTMLСодержимое статьи в формате HTML

Видимо VK не поддерживает якорные ссылки...

А что ещё он не поддерживает?

Добавляем ещё больше разного содержимого в статью:

  • Изображения с относительным путём;
  • Изображения с абсолютным путём;
  • Блоки кода;

Результат:

Содержимое статьи c картинками и кодомСодержимое статьи c картинками и кодом

Выводы

Выводы:

  • Изображения с относительным путём - работают;
  • Изображения с абсолютным путём - работают;
  • Блоки кода - не работают;

С этим можно жить 🙂

На этом всё, примеры автопостинга, вы всегда можете посмотреть в нашем сообществе во Вконтакте! 🎉

Расскажите о вашем проекте

Связаться иначе

Часто задаваемые вопросы

VK периодически забирает RSS-фид по указанному URL и создаёт записи в сообществе — обычные посты или статьи (если включена опция «Публиковать в виде статьи»). Подробной официальной документации по формату мало; поведение лучше проверять на своём фиде.

Без опции в ленту попадает короткая запись с заголовком и ссылкой. С опцией VK создаёт статью во ВКонтакте — но тело будет пустым, если в RSS не передать поле content (см. ниже).

Чаще всего в RSS отдаётся только заголовок и ссылка, без content. Нужно добавить в feed.addItem полный текст поста. Пример генерации фида для Next.js — в статье Добавляем RSS-фид.

Нет. Если в content передать сырой Markdown, VK покажет его как текст с разметкой. Нужно конвертировать в HTML (в статье — через markdownToHtml) перед добавлением в фид.

По нашим тестам: изображения с относительным и абсолютным URL — да; блоки коданет; якорные ссылки внутри HTML, похоже, не поддерживаются. Итоги могут отличаться при обновлениях VK.

URL фида должен быть доступен по HTTPS для серверов VK. В нашем случае фид заливают в Yandex Object Storage — см. Хостинг в S3 от Яндекса.

Точный интервал в документации не описан. В эксперименте новые элементы появлялись через несколько минут после публикации обновлённого фида — закладывайте задержку, а не мгновенный кросспост.

Вам может быть интересно

Добавляем RSS-фид к статическому Next.js приложению
Добавляем RSS-фид к статическому Next.js приложению

Добавляем RSS-фид к статическому Next.js приложению

5 мин.

Инструкция по добавлению RSS фида к статическому Next.js приложению...

Пост#nextjs#фиды
Добавляем Яндекс Турбо-страницы к блогу на Next.js
Добавляем Яндекс Турбо-страницы к блогу на Next.js

Добавляем Яндекс Турбо-страницы к блогу на Next.js

5 мин.

Для того чтобы красиво отображаться в поисковой выдаче Яндекса решили добавить Яндекс Турбо-страницы к блогу...

Пост#nextjs#yandex
Хостинг в S3 от Яндекса
Хостинг в S3 от Яндекса

Хостинг в S3 от Яндекса

6 мин.

Рассказываем как использовать Yandex Object Storage для хостинга статического сайта...

Пост#yandex
Добавляем рекомендации постов и блок "Поделиться в соц. сетях"
Добавляем рекомендации постов и блок "Поделиться в соц. сетях"

Добавляем рекомендации постов и блок "Поделиться в соц. сетях"

4 мин.

Изучали различные блоги, аналогичные нашему и решили добавить блок "Поделиться в соц. сетях", а так же простейший механизм рекомендаций статей. Вот что из этого вышло...

Пост#туториалы
Добавляем поддержку MDX в Next.js приложение
Добавляем поддержку MDX в Next.js приложение

Добавляем поддержку MDX в Next.js приложение

3 мин.

Инструкция по добавлению поддержки MDX в Next.js приложение...

Пост#nextjs
Добавляем поиск по тегам в статический блог на Next.js
Добавляем поиск по тегам в статический блог на Next.js

Добавляем поиск по тегам в статический блог на Next.js

5 мин.

Инструкция по добавлению простейшего поиска по тегам в статическом Next.js блоге...

Пост#туториалы#nextjs
Добавляем sitemap.xml в Next.js приложение
Добавляем sitemap.xml в Next.js приложение

Добавляем sitemap.xml в Next.js приложение

9 мин.

Инструкция по добавлению sitemap.xml в Next.js приложение...

Пост#nextjs#seo
Подключение счётчика Яндекс Метрики к Next.js приложению
Подключение счётчика Яндекс Метрики к Next.js приложению

Подключение счётчика Яндекс Метрики к Next.js приложению

13 мин.

Инструкция по добавлению счётчика Яндекс Метрики к Next.js блогу...

Пост#nextjs#yandex
UTM-генератор
UTM-генератор

UTM-генератор

Соберите UTM-метки для ссылки за минуту: пресеты, сохранение существующих параметров и кнопка копирования.

Инструмент#seo#utm