VK → Telegram + MAX Автопостинг
Сервис, который автоматически зеркалит посты группы ВКонтакте в Telegram и MAX.
Проблема
Владельцу сообщества приходилось вручную копировать каждый пост ВК — текст, фото и видео — в Telegram-канал и чат MAX, теряя время и пропуская публикации.
Результат
Self-hosted сервис публикует новые посты ВК в Telegram и MAX за секунды — с защитой от дублей и автоматическими повторами.
Технологии
Обзор
VK → Telegram + MAX Автопостинг — небольшой надёжный backend-сервис, который следит за стеной сообщества ВКонтакте и публикует каждый новый пост в Telegram-канал и чат MAX. Он обрабатывает текст, фотоальбомы, видео и ссылки и работает без присмотра на VPS через Docker.
Проблема
Кросс-постинг одного и того же контента в несколько соцсетей — ровно та рутина, которую люди со временем перестают делать аккуратно. Заказчик публиковал сначала во ВКонтакте, а затем вручную перезаливал всё в Telegram и MAX. Посты выходили с опозданием, вложения терялись, а часть обновлений вовсе не доходила. Готовые мосты либо не поддерживали MAX, либо им нельзя было доверить медиа.
Решение
Сервис подписывается на Callback API ВКонтакте и реагирует на событие wall_post_new в момент появления поста — без медленного поллинга. Каждый пост нормализуется в текст и набор вложений, после чего рассылается в Telegram и MAX через их Bot API. Слой SQLite фиксирует каждый пост, чтобы ничего не публиковалось дважды, а статус partial позволяет повторить отправку только в ту сеть, где произошёл сбой, не дублируя пост целиком.
Возможности
- Режим VK Callback API (
wall_post_new) с резервным поллингом черезwall.get - Публикация текста, фотоальбомов, видео и ссылок в Telegram и MAX
- Дедупликация в SQLite со статусом
partialи автоматической повторной доставкой при сбое - Пропуск закреплённых постов и опциональный пропуск старого бэклога при первом запуске
- Структурированные логи (pino) и эндпоинт
/healthдля мониторинга - Деплой через Docker + docker-compose и CI/CD на VPS через GitHub Actions
Процесс разработки
Самым сложным были медиа: ВКонтакте, Telegram и MAX по-разному описывают вложения, а MAX требует загрузить файл до того, как на него сошлётся сообщение. Сервис скачивает медиа во временный каталог, загружает его под каждую платформу и повторяет временные ответы attachment.not.ready. Важен был и регион: Telegram Bot API не всегда доступен у российских VPS-провайдеров, поэтому деплой нацелен на VPS вне РФ.
Результаты
- Новые посты ВК появляются в Telegram и MAX за секунды, без ручного труда
- Дедупликация и повторы по каждой сети убрали и пропуски, и дубли
- Полностью контейнеризирован: одна команда
docker compose upподнимает сервис на чистом сервере - Руководство на русском для заказчика сделало систему управляемой без технических навыков
Выводы
Надёжность небольшой интеграции держится на скучных вещах: идемпотентности, обработке частичных сбоев и честном логировании. Модель «опубликовать в N целей и отслеживать каждую независимо» превратила хрупкое зеркало в сервис, который тихо делает свою работу.