MAX Autopost это мой WordPress-плагин для отправки опубликованных записей в MAX через platform-api.max.ru. Делал я его не как демонстрацию “смотрите, оно один раз отправило”, а как рабочий инструмент для живого сайта. Плагин умеет собирать публикацию в одном сообщении, работать с изображением, кнопкой, очередью, логами и обновляться через GitHub Releases без ручной переустановки каждой новой версии.
Код открыт, репозиторий проекта на GitHub: github.com/A-Krivoshen/max-autopost
Подробная документация и заметки по настройке вынесены в wiki проекта: GitHub Wiki
Что это за плагин и зачем он нужен
Если пытаться отправлять записи в MAX “в лоб”, быстро начинается привычный цирк. Где-то картинка приходит файлом. Где-то текст улетает отдельно. Где-то бот вроде есть, права вроде выданы, а API отвечает так, будто сегодня ему лучше не писать вообще.
MAX Autopost закрывает именно эту практическую боль. Запись опубликована в WordPress, значит она должна уйти в MAX предсказуемо, с понятной структурой сообщения, логами и нормальной диагностикой, а не в режиме гадания по звёздам и HTTP-кодам.
Что уже умеет плагин
На текущем этапе это уже не сырой черновик. Основной рабочий набор собран и доведён до нормального состояния.
- отправка публикации в MAX одним сообщением;
- поддержка изображения, текста и кнопки ссылки;
- очередь через WP-Cron;
- повторные попытки отправки с backoff;
- логи в админке по шагам и HTTP-кодам;
- ручная отправка и ручная постановка в очередь;
- отправка в несколько Chat ID;
- поддержка custom post types и выбранных кастомных полей;
- режимы текста plain text, formatted и excerpt plain;
- автообновление через GitHub Releases.
Как сейчас устроена отправка
Плагин собирает сообщение в том порядке, который MAX обычно переваривает спокойнее всего. Если изображение доступно и загрузилось корректно, оно идёт первым attachment. Кнопка ссылки добавляется следующим attachment. Текст уходит в поле text. Если изображения нет, upload вернул мусор или MAX отвечает криво, плагин должен не ломать всю отправку, а уходить в более безопасный сценарий.
Снаружи это выглядит просто. Внутри там хватает мест, где API MAX может неожиданно закапризничать. Поэтому в плагине и появились очередь, ретраи, диагностические логи и fallback-логика. Без этого на реальном сайте всё быстро превращается в ручную работу с грустным лицом.
Что важно понимать про MAX API
Вот это уже проверено практикой. Отправка в группы у MAX выглядит заметно стабильнее, чем отправка в каналы. Были реальные кейсы, когда один и тот же бот, тот же токен и тот же плагин спокойно отправляли сообщения в группу, но в канал MAX API стабильно отвечал HTTP 500 / internal.error.
То есть если публикация не идёт именно в канал, а в группу уходит без проблем, это не всегда означает, что сломан плагин. Иногда это баг, ограничение или нестабильность на стороне самого MAX. Я это отдельно отмечаю, чтобы не создавать ложное ощущение, будто любой канал MAX обязан работать идеально просто потому, что бот там добавлен как администратор.
Ключевой технический момент, из-за которого всё часто ломается
MAX довольно капризен к payload. Если нарушить порядок вложений или передать не тот JSON после upload, легко получить ситуацию, когда “вроде всё отправили”, а на выходе ничего полезного не произошло.
- в
image.payloadдолжен уходить валидный upload payload; - изображение должно идти первым attachment;
- кнопка, если включена, должна идти после изображения;
- если изображения нет или upload вернул невалидный payload, лучше отправить текст без вложений, чем сломать всё сообщение.
На словах это выглядит нестрашно. На практике именно здесь у многих всё и рассыпается. Плагин как раз старается эту часть сделать более предсказуемой.
Установка и обновления
Плагин ставится как обычный WordPress-плагин. Самый удобный вариант это использовать релизный ZIP из GitHub Releases. Новые версии тоже выпускаются через GitHub Releases, и WordPress уже умеет видеть обновления и ставить их штатно. Это состояние я отдельно доводил до рабочего вида, чтобы больше не жить в режиме ручного переименования папок и перекладывания файлов по FTP.
Базовая схема после установки простая: Token, основной Chat ID, при необходимости дополнительные Chat ID, затем тестовая отправка и уже после этого рабочие публикации.
Настройка Token и Chat ID
Для работы нужен бот MAX. Его нужно добавить в нужную группу или канал и выдать права там, где это требуется. Token используется для авторизации, Chat ID задаёт, куда именно отправлять сообщения. Дополнительные Chat ID можно перечислить в настройках по одному на строку.
Если не хочется хранить токен в базе WordPress, его можно вынести в wp-config.php.
define('KRV_MAX_TOKEN', 'ВАШ_BOT_TOKEN');
Очередь, логи и ручной контроль
При публикации пост попадает в очередь и дальше обрабатывается через WP-Cron. Если MAX временно отвечает ошибкой, срабатывают повторные попытки. Если проблема постоянная, запись уходит в ошибку, а в логах видно шаг, HTTP-код и короткое описание того, что произошло.
В админке есть ручной запуск очереди, ручная отправка, постановка в очередь и просмотр последних логов. Это полезно не только для отладки, но и для обычной работы, когда нужно быстро понять, почему конкретная запись не дошла.
Что стоит знать перед использованием
- в группы MAX отправка обычно работает стабильнее, чем в каналы;
- для каналов возможны ошибки на стороне самого MAX, даже при корректных правах и валидном токене;
- на низкотрафиковых сайтах WP-Cron может запускаться редко, тогда лучше использовать системный cron;
- если тест уходит, а канал нет, это ещё не означает, что виноват плагин;
- логам в админке стоит доверять больше, чем первым эмоциям после неудачной отправки.
Поддержка и доработка
Плагин распространяется как готовое решение. Базовая логика и основные функции уже собраны и работают. Если нужен индивидуальный сценарий, отдельная диагностика, доработка под проект или сопровождение интеграции, это уже отдельная работа, а не бесконечная бесплатная техподдержка на тему “а давайте ещё вот это проверим, вдруг MAX сегодня передумал”.
Если проблема воспроизводится только в одном канале MAX, а в группы и другие чаты отправка идёт нормально, в первую очередь стоит смотреть уже на поведение самого MAX, а не автоматически считать виноватым плагин.
Где посмотреть проект
По вопросам, доработкам и сопровождению: aleksey@krivoshein.site
Планы развития
Сейчас основной фокус не на украшательствах, а на стабильности. Надёжная отправка, понятные логи, корректная очередь, нормальные обновления и аккуратная доработка поведения в спорных кейсах API MAX. Если что и добавлять дальше, то то, что реально помогает в работе, а не превращает плагин в комбайн, который сам себя пугается.