Как настроить автоматический кросспост из Telegram в MAX за 10 минут: пошаговый гайд 2026

Как настроить автоматический кросспост из 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-рерайт), стоит дороже но иначе.