Правила и границы
Что уходит в соцсети через API, а что нет
Руками в приложении вы можете почти всё. Программе площадка отдаёт заметно меньше — и узнают об этом обычно на первом посте, который не влез. Здесь собрано, что четыре сети реально принимают снаружи: лимиты, вложения, кнопки, правка.
Опубликовано
Приложение умеет больше, чем площадка отдаёт наружу
Приложение сеть пишет для себя. Оно может опираться на внутренние методы, менять их в четверг и чинить в пятницу — никто снаружи этого не заметит. API — обязательство перед посторонними: каждый метод придётся поддерживать годами, отвечать за него и защищать от тех, кто станет слать в него мусор пачками. Поэтому наружу выходит не всё, а тот срез, который площадка готова тянуть. Иногда срез узкий по расчёту, иногда просто исторический: метод не написали, спроса не было.
Пример, на котором это видно лучше всего. У ВКонтакте на ключе сообщества загрузки фотографии на стену не существует вовсе: метод отвечает ошибкой 27, «недоступно с групповой авторизацией», и право «фотографии» тут не спасает. Человек в приложении прикладывает картинку не задумываясь, а программе с ключом сообщества стена достаётся текстовой. Обходится это входом администратора через VK ID: у живого токена право есть. Но сама разница никуда не делась.
Правка опубликованного в X существует в приложении и только по подписке, а в API её нет ни в каком виде. Телеграм разрешает боту удалить сообщение, пока тому меньше примерно двух суток; администратор-человек чистит канал на любую глубину. Ни то, ни другое не баг и не наша недоделка. Так устроен контракт площадки, и переспорить его нечем.
- Подключение ВКонтакте — почему канал заводится входом через VK ID
- Публикация в X — что умеет ключ аккаунта
Что четыре сети принимают через API
Таблица ниже — не пересказ документации, а то, что мы отправляем в телеграм, ВКонтакте, MAX и X каждый день, и то, по чему пост проверяется в момент постановки в очередь. Проверка стоит именно там намеренно: узнать, что текст на триста знаков длиннее лимита, надо до того, как половина каналов уже опубликовалась.
Числа читаются так. «Текст без вложений» — предел обычного сообщения. «Текст с вложением» — сколько знаков влезет, если к посту приложена картинка. Столбцы по вложениям — сколько штук уедет за раз. Всё остальное — есть возможность или её нет.
| Что отправляем | телеграм | ВКонтакте | MAX | X |
|---|---|---|---|---|
| Текст без вложений | 4096 знаков | 4096 знаков | 4000 знаков | 280 знаков |
| Текст с вложением | 1024 знака, дальше пост разъезжается на два сообщения | 4096, вложение лимит не режет | 4000, отдельной подписи нет | 280 |
| Картинок за раз | 10 | 10 | 12 вложений на сообщение | 4 |
| Видео за раз | 10 | 1 | в тех же 12 | не отправляем |
| Файлы, pdf и прочее | 10 | нет | не отправляем | нет |
| Кнопки-ссылки под постом | до 8 | нет | нет | нет |
| Второе сообщение сразу за постом | да | нет | нет | да, ответом самому себе |
| Правка после публикации | да | нет | нет | нет |
| Снос из сети | да, пока посту меньше двух суток | нет | нет | нет |
Значения — из описания возможностей в наших адаптерах площадок. У ВКонтакте предел записи выше 4096, но это безопасная граница: длинный пост стена всё равно сворачивает в «показать полностью». У X 280 знаков считаются для обычного аккаунта; у подписки предел выше, но он свойство конкретного аккаунта, а не площадки. Потолок вложений у ВКонтакте и MAX общий на картинки и видео, а не отдельный на каждый тип. «Не отправляем» — площадка такое принимает, а мы пока нет; «нет» — у площадки этого не существует.
- Счётчик символов — посчитать текст под лимит площадки
Три места, где расхождение болит сильнее всего
Подпись к вложению в телеграме — ловушка номер один. Без картинки в сообщение влезает 4096 знаков, с картинкой подпись обрывается на 1024. Пост от этого не пропадает: текст, который не влез, уезжает отдельным сообщением следом за вложением, и в канале получается картинка, а под ней простыня. Выглядит это заметно хуже задуманного, так что 1024 и есть настоящая граница поста с картинкой. При правке та же цифра вылезает второй раз: подпись правится только до 1024 знаков, а дальше остаётся снять пост и опубликовать заново.
Одно видео в посте ВКонтакте — наше ограничение, и мы его не прячем. Стена берёт и больше, но каждый ролик — это отдельная заливка тела файла и ожидание, пока ВКонтакте его перекодирует, а вся отправка обязана уложиться в окно строки очереди, десять минут. Два ролика в одном посте это окно съедают вместе с запасом на всё остальное. Картинок при этом уходит десять, и общий потолок вложений у записи тоже десять — видео считается в ту же десятку.
Правки после публикации нет нигде, кроме телеграма. У ВКонтакте методы правки и удаления записи существуют, но наш адаптер их не реализует, и мы объявляем это честно: кнопка, ведущая в пустоту, хуже отсутствующей кнопки. У MAX и X правки нет и в самом API. Телеграм умеет и править, и сносить, но со сроком: сообщение старше двух суток бот удалить не может, и снимать такой пост придётся руками в канале.
Тумблеры: пять, три и ни одного
Тумблер поста — то, что вы переключаете на одном конкретном посте: отправить без звука, закрепить, поставить пометку «реклама». Площадка объявляет свой набор сама, редактор рисует поля по объявлению. У сети, которая не объявила ничего, блок настроек просто не появляется.
Объявить тумблер, которого API не исполняет, хуже, чем не объявить вовсе. Человек его нажмёт, отправит пост и получит в канале ровно то же, что без нажатия, — без ошибки, без предупреждения, без единого следа. Разбираться с этим он будет дольше, чем с честным «здесь такого нет». По той же причине кнопки под постом умеет только телеграм: пост с кнопками уедет во ВКонтакте без них, а не отобьётся целиком.
Про два тумблера ВКонтакте скажем отдельно. «От имени сообщества» включён по умолчанию, потому что в группу так и пишут; выключите — и под постом появится подпись того администратора, чьим входом подключён канал. «Пометка реклама» уходит в запись отдельным полем при отправке, ровно как если бы вы поставили галочку руками. Что за этой галочкой стоит по закону — разговор отдельный и не про API.
| Тумблер | телеграм | ВКонтакте | MAX | X |
|---|---|---|---|---|
| Без звука | да | нет | нет | нет |
| Закрепить | да | да | нет | нет |
| Запретить пересылку | да | нет | нет | нет |
| Без карточки ссылки | да | нет | нет | нет |
| Карточка ссылки над текстом | да | нет | нет | нет |
| От имени сообщества | нет | да, включён по умолчанию | нет | нет |
| Пометка «реклама» | нет | да | нет | нет |
У MAX и X набор пустой: их API на сообщение таких полей не принимает.
- Публикация в MAX — что площадка принимает на сообщение
Что происходит с жирным, курсивом и ссылками
Разметка у поста одна на замысел: вы оформляете текст один раз, а как его показать, решает уже адаптер площадки. Телеграм и MAX принимают HTML, но разными наборами тегов: у MAX нет спойлера и моноширинного блока. Тег, которого площадка не знает, снимается перед отправкой, а текст внутри остаётся — пост уезжает в MAX без спойлера, но уезжает. Отбивать из-за одного оформительского приёма публикацию во все каналы было бы дороже, чем потерять приём в одном.
ВКонтакте и X разметки не понимают вовсе и получают голый текст. Единственное, что там выживает, — ссылка, и та превращается в «подпись (адрес)»: потерять адрес значило бы потерять то, ради чего пост писали. У X есть и своя особенность со ссылками — пост со ссылкой обходится владельцу аккаунта дороже обычного, поэтому по умолчанию мы их не пропускаем и предлагаем либо разрешить ссылки в настройках канала, либо дать адрес вторым сообщением.
Отдельная история — поломанная разметка. Незакрытый тег или чужой вроде div площадка отобьёт в момент отправки, когда в остальные каналы пост уже ушёл. Поэтому разбор идёт заранее, при постановке в очередь, вместе с одиночным знаком «меньше» в тексте: «5 < 7» телеграм читает как начало тега и сообщение не принимает.
- Форматирование текста — какие приёмы оформления где работают
Планируйте по самой бедной площадке из своих
Практический вывод из таблицы один. Если вы ведёте телеграм и X, длина поста у вас 280 знаков, а не 4096: всё, что длиннее, придётся переписывать под X отдельно, и это не разовая правка, а работа на каждый пост. Есть в списке ВКонтакте — видео в посте одно. Телеграм с картинкой — текст до 1024 знаков. Выбирать площадки удобнее до того, как эти границы начнут переписывать за вас контент-план.
И второе, менее заметное. Версии поста разъезжаются молча: он не падает с ошибкой оттого, что во ВКонтакте не уехали кнопки, а в MAX пропал спойлер, — он просто выглядит в каждой сети по-своему. Увидеть это можно, только открыв свои каналы подряд после публикации. Разница между «я могу это руками» и «это может программа», с которой мы начали, в итоге упирается именно сюда: проще один раз собрать замысел под самую скупую из ваших сетей, чем потом сверять четыре версии глазами.
- Выбор площадок — с чего начать, если сетей несколько
- Отложенный постинг — как пост попадает в очередь
Коротко
- Картинка в телеграме режет текст с 4096 до 1024 знаков — дальше пост разъезжается на два сообщения.
- Править и сносить опубликованное можно только в телеграме, и снос работает, пока посту меньше двух суток.
- Тумблеры есть у телеграма и ВКонтакте; у MAX и X их нет вовсе, и объявлять несуществующее мы не будем.
- Длину и состав поста считайте по самой бедной из своих площадок, иначе версии разойдутся молча.
Источники
- Telegram Bot API — лимиты сообщения и подписи, правка и удаление
- Документация VK API — методы стены и загрузка вложений
- Документация MAX Bot API — лимит текста и вложений сообщения
- X API — создание поста, загрузка картинок, ответы
Частые вопросы
Можно ли отредактировать опубликованный пост через API?
В телеграме — да, текст и подпись правятся. Состав вложений при правке не меняется, а подпись к вложению правится только до 1024 знаков: на длинном тексте остаётся снять пост и опубликовать заново. У ВКонтакте методы правки есть, но наш адаптер их не реализует. У MAX и X правки через API нет вовсе.
Сколько картинок влезает в один пост?
Десять в телеграме и во ВКонтакте, двенадцать в MAX, четыре в X. У ВКонтакте и MAX потолок общий на все вложения сразу: десять и двенадцать соответственно, и видео считается в это же число.
Почему в пост ВКонтакте уходит только одно видео?
Это наше ограничение. Каждый ролик заливается отдельно и ждёт перекодирования на стороне ВКонтакте, а вся отправка должна уложиться в десятиминутное окно строки очереди. Два ролика это окно съедают.
Уйдёт ли жирный шрифт во ВКонтакте?
Нет. ВКонтакте и X разметку не понимают и получают текст без тегов; ссылка при этом превращается в «подпись (адрес)», чтобы адрес не потерялся. Телеграм и MAX принимают HTML, но у MAX набор тегов уже — спойлер и моноширинный блок он не покажет.
Почему кнопки под постом есть только в телеграме?
Кнопки-ссылки умеет только его inline-клавиатура, до восьми штук. Остальные сети такого поля не принимают, и пост уезжает туда без кнопок — отбивать из-за них публикацию было бы хуже.
Читайте также
Smmly — сервис, который держит телеграм, ВКонтакте, MAX и X в одном окне и публикует посты по расписанию. 7 дней за 10 ₽, отмена в один клик. Подключить каналы