Как настроить автоматический кросспост из Telegram в MAX за 10 минут: пошаговый гайд 2026
Чек-лист настройки автоматического репоста из своего Telegram-канала в MAX и VK через Content Pilot. 5 токенов за пост, без LLM. Без воды.
Записал что делаю когда настраиваю кросспост клиенту. Каждый раз одно и то же, поэтому конспект.
Что это вообще
Один из трёх JTBD-режимов Content Pilot. На /start в боте видны три кнопки: 🤖 Контент-генерация, 🔁 Кросспост TG→MAX/VK, ✨ Оба. Кросспост — без LLM. Цена фиксированная: 5 токенов за пост. Один токен = один рубль.
Технически — когда в исходном TG-канале появляется новый пост, бот ловит событие channel_post, запускает per-destination dramatiq-task (один таск на каждый канал-цель, чтобы падение публикации в MAX не валило публикацию в VK), и копирует.
Перед стартом
Регистрируемся в боте @Content_pilot_auto_bot или на panel.content-pilot.io. Бот ↔ веб связаны через telegram_id, один аккаунт.
Минимальное пополнение — 200 ₽. Welcome-бонус новые юзеры получают, точная сумма не разглашается. На тесты хватает.
Берём админский доступ к TG-каналу. Полный, не наблюдатель. Бот должен быть админом канала чтобы получать channel_post.
В MAX или VK — destination-канал с правом постить от имени бота. Для MAX — добавляем бота админом канала через нативную админку, ставим галку «публиковать сообщения».
Подключение source-канала
В боте: «Мои проекты» → создаём проект (или открываем существующий) → «Каналы» → «Добавить Telegram». Веб эквивалент — panel.content-pilot.io, та же логика.
Если канал публичный и вы админ — подтягивается за 2 секунды.
Если канал приватный — нужна Telegram StringSession юзера. Подключается в боте через /start → ⚙️ Настройки → 📱 Telegram-сессия. Без сессии Content Pilot работает только с публичными каналами.
Подключение destination-канала
«Каналы» → «Добавить MAX» (или VK). MAX подключается через bot-API ключ. Класс MaxPublisher устойчив к не-JSON ответам от /uploads — это особенность их API, мы туда наелись.
Access_token канала шифруется Fernet и хранится в БД зашифрованным. В коде в открытом виде нигде не лежит. Это нормальная практика.
Правило кросспоста
Открываем настройки source-канала → «Кросс-постинг» → «Создать правило». Правило связывает один source с одним destination. Если у вас один source-TG и две destination (MAX + VK) — создаёте два правила.
Поля правила: source_channel, dest_channel, is_active, token_cost_per_post (по умолчанию 5.00, можно индивидуально менять — например, для своих юзеров поставить 3 или 0). Уникальный constraint на пару (source, dest) — не получится создать два правила между одними и теми же каналами.
В UI бота кнопка «Кросс-постинг» в меню канала. Видны все правила, можно toggle on/off, удалить.
Тест
Публикуем в source-TG любой пост с одним фото. Через несколько секунд он появляется в destination. Если не появился — открываем веб-админку → нужный проект → история кросспостов (CrossPostHistory в БД, в UI отображается).
Логи в CrossPostHistory хранят: что куда и когда репостнули. Используется для дедупа (не повторять) и для аналитики (счётчик в CrossPostRule.posts_count).
Особенности которые ловят все
Большое видео в VK/MAX. Если файл слишком большой — Content Pilot fallback'ом отправляет как document. Это лучше чем ошибка, но юзеры иногда удивляются «почему видео в посте превратилось в файл-ссылку». Это сделано осознанно.
Альбомы с медиа. Передаются медиа-группой. Передача через aiogram_file_id: префикс — мы не скачиваем медиа повторно, а используем file_id из TG напрямую через MAX/VK Bot API. Быстрее и дешевле по трафику.
TG → TG кросспост. Используется bot.copy_message для эффективности — нативный метод TG, без перезаливки.
Реакции и комментарии — параллельные миры. Не зеркалятся. У каждой платформы свой движок реакций. Это не баг.
Rate limiting. У каждой платформы свои лимиты. publishing/rate_limiter.py следит за per-channel и global limits. publishing/retry_handler.py делает retry с экспоненциальным backoff при FloodWait или 5xx. Если в очереди много постов — растягиваются по времени, не теряются.
Деньги
5 токенов за пост, фикс. Это про публикацию + обработку медиа + логирование. LLM в этом режиме не используется.
30 постов в неделю × 5 ₽ × 4 = 600 ₽/мес. На пакете 25 000 ₽ с +15% бонусом (28 750 токенов) такой расход на ~4 года вперёд. Бонусные пакеты других сумм — без бонуса.
Если на балансе 0 — публикация в очереди не пройдёт. Поведение: ставится в очередь до пополнения (нужно проверить актуальную логику в cross_post_service.py, может быть поменялась).
Что дальше
Если канал растёт и появляются комментарии — настраиваем модерацию через mini-app (отдельный материал). Если хочется чтобы посты в MAX звучали в стиле канала, а не как сухая копия TG — переходим из чистого CROSS_POST в полную генерацию через FROM_SOURCES (StyleExtractor + LLM-рерайт), стоит дороже но иначе.