MAX Autopost: автопостинг из WordPress в MAX одним сообщением (картинка + текст + кнопка)

MAX Autopost это мой WordPress-плагин для отправки опубликованных записей в MAX через platform-api.max.ru. Делал я его не как демонстрацию “смотрите, оно один раз отправило”, а как рабочий инструмент для живого сайта. Плагин умеет собирать публикацию в одном сообщении, работать с изображением, кнопкой, очередью, логами и обновляться через GitHub Releases без ручной переустановки каждой новой версии.

Код открыт, репозиторий проекта на GitHub: github.com/A-Krivoshen/max-autopost

Подробная документация и заметки по настройке вынесены в wiki проекта: GitHub Wiki

MAX Autopost: автопостинг из WordPress в MAX одним сообщением (картинка + текст + кнопка)

Что это за плагин и зачем он нужен

Если пытаться отправлять записи в 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, а не автоматически считать виноватым плагин.

MAX Autopost: автопостинг из WordPress в MAX одним сообщением (картинка + текст + кнопка)

Где посмотреть проект

MAX Autopost на GitHub

Документация в GitHub Wiki

По вопросам, доработкам и сопровождению: aleksey@krivoshein.site

Планы развития

Сейчас основной фокус не на украшательствах, а на стабильности. Надёжная отправка, понятные логи, корректная очередь, нормальные обновления и аккуратная доработка поведения в спорных кейсах API MAX. Если что и добавлять дальше, то то, что реально помогает в работе, а не превращает плагин в комбайн, который сам себя пугается.


blank
Обзор конфиденциальности

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