Найти в Дзене

Автопостинг сообщений в группу в вк и телеграм

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

Для начала я хочу объяснить зачем это делается. С самого начала, когда я задумывал этот блог, мне стало понятно, что на сайт необходимо будет откуда-то генерировать трафик, т.к. вкладываться в раскрутку я не мог по финансам и не было желания, то мною было принято решение брать этот трафик из социальных сетей и мессенджеров. Плюсом этого способа является то, что он работает в долгую. Что я имею ввиду под этим? Здесь имеется ввиду, то что, чем дольше и чаще я пишу, тем быстрее ко мне придут постоянные читатели, чем больше мною будет сделано попыток, тем быстрее я найду свою аудиторию.

Настройка автопостинга в вк

Начну с того, что настроить сам автопостинг было тяжело, потому что в документации все указано запутанно. У меня ушло два или три дня на то, чтобы разобраться в самой документации. В самой документации мне удалось разобраться с помощью вчитывания в саму документацию и сторонних статей. Оставался вопрос, что выбрать для реализации автопостинга на стороне бекенда.

На момент написания статьи есть javascript sdk под названием vk.io. На его основе для фреймворка nest был разработан модуль. Мне в работе он не очень понравился, по этой причине я отказался от его использования и для работы написал свой модуль, с помощью которого публикую статьи.

На картинке «Пример реализации модуля для автопостинга записей в группу вконтакте» хочу обратить внимание, что для успешной реализации модуля и передачу экземпляра класса для работы с вк в сервис необходимо использовать useFactory. В связи с чем это связано я не знаю, но если применить useValue, то в консоли выводится ошибка с кодом 3 — это обозначает, что вызывается неизвестный метод, хотя хороший откуда в этом месте вызываться какому-либо методу.

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

Пример реализации модуля для автопостинга записей в группу вконтакте
Пример реализации модуля для автопостинга записей в группу вконтакте

Отдельно хочется написать про получение access token для работы апи с вконтакте. Следующий алгоритм покажет, каким образом мною был реализован автопостинг постов в группу вконтакте:

  • создаем Standalone-приложение, в настройках включаем Open API, чтобы было можно отправлять запросы от вконтакте от имени приложения;
  • посылаем запрос из браузера по следующему урлу https://oauth.vk.com/authorize?client_id=id приложения&display=page&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos&response_type=code

Здесь давайте разберем, за что отвечает каждый параметр:

  • id приложения — это id, которое выдается вконтакте после создания standalone-приложения;
  • display — указывает вид авторизации, для консольного приложения необходимо указать параметр page;redirect_uri — переадресация после того, как будет получен параметр code;
  • scope — набор прав для работы с группой вконтакте. Offline — это бессрочный access token, для работы с консольными приложениями; wall — работа со стеной в сообществе или группой; response_type — тип ответа, который необходимо получить;

После выполнения запроса в ответе будет параметр code, который необходим для получения уже самого access token. Для получения токена необходимо выполнить еще один запрос из браузера https://oauth.vk.com/access_token?client_id=1&client_secret=H2Pk8htyFD8024mZaPHm&redirect_uri=http://mysite.ru&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a, где:

  • client_id — id приложения;
  • client_secret — секрет приложения, можно посмотреть в настройках самого приложения;
  • redirect_uri — адрес, на который будет перенаправлен ответ после выдачи токена
  • code — код, который был получен в результате прошлого запроса

В результате выполнения запроса будет получен access token, с помощью которого можно работать с апи вконтакте через консольное приложение.

Настройка автопостинга в телеграм

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

Если посмотреть со стороны кода, то готового модуля для nestjs не нашел, поэтому пришлось написать свой на основе готового решения апи телеграма. На картинке «Пример реализации модуля для работы с апи телеграм» мы инициализируем класс с апи телеграмом и передаем его в сервис для дальнейшей работы. Пример реализации автоматического постинга можно увидеть на картинке «Пример работы с апи телеграм для автопостинга сообщений в публичный канал или группу».

Пример реализации модуля для работы с апи телеграм
Пример реализации модуля для работы с апи телеграм
Пример работы с апи телеграм для автопостинга сообщений в публичный канал или группу
Пример работы с апи телеграм для автопостинга сообщений в публичный канал или группу

Настройка метатегов и нарезка картинок для автопостинга

Для работы сайтов с социальными сетями и месенджерами, такими как телеграм, был разработана специальная разметка open graph. Изначально ее себе сделал facebook (запрещенная в России организация), но потом эта разметка стала эталоном для распространения сайта. Иногда такие теги могут быть специфическими для какой-то социальной сети, например как для твитера, но для вконтакте и телеграм подходит стандартная разметка. Пример разметки в моем блоге вы можете увидеть на скрине «Пример использования мета тегов open graph».

Пример использования мета тегов open graph
Пример использования мета тегов open graph

Как видим ничего сложного здесь нет. Давайте разберем за что отвечает каждый тип тега:

  • og: type - тип объекта, в своей практике использую только website. Другие типы я не использовал, поэтому ничего за них сказать не могу.
  • og:title — заголовок сайта.
  • og:image и ему подобные — ссылка на картинку, для вк и телеграм желательный размер картинки 512х512, для других социальных сетей размер может меняться.
  • og:description — короткое описание страницы сайта.

Есть и другие мета теги, но эти являются базой для создания и их знать обязательтно. Во время публикации постов в телеграм метатеги у меня подтягивались автоматически после публикации поста. Во вконтакте у меня не сразу получилось настроить автоматическую публикацию, потому что изначально я отправлял ссылку на посты в виде текста, из-за метатеги не подтягивались. После очередного прочтения документации у меня получилось настроить публикацию, чтобы вк подтягивал метатеги. Оказывается, что вместо message, нужно было отправлять attachment и сообщение в этом случае публикуется как ссылка, соответственно после этого будут подтянуты и метатеги.Также у вк есть особенность: он не подтягивает описание из вышеописанных метатегов.

Результат публикация в группе в телеграм
Результат публикация в группе в телеграм
Результат публикации вконтакте
Результат публикации вконтакте

Вывод

По итогу написания статьи мы имеем понимание для чего мне нужна публикация в социальных сетях и у вас появилось понимание для чего это делают другие люди, имеющие такие группы в социальных сетях. Также в статье было рассмотрено как публиковать во вконтакте и телеграм. Надеюсь мой опыт публикации в социальный сетях вам был интересен.

Больше статей в моем блоге. Спасибо, что дочитали и до новых встреч в следующих статьях.