Smmly

Правила и границы

Что уходит в соцсети через API, а что нет

Руками в приложении вы можете почти всё. Программе площадка отдаёт заметно меньше — и узнают об этом обычно на первом посте, который не влез. Здесь собрано, что четыре сети реально принимают снаружи: лимиты, вложения, кнопки, правка.

Опубликовано

Приложение умеет больше, чем площадка отдаёт наружу

Приложение сеть пишет для себя. Оно может опираться на внутренние методы, менять их в четверг и чинить в пятницу — никто снаружи этого не заметит. API — обязательство перед посторонними: каждый метод придётся поддерживать годами, отвечать за него и защищать от тех, кто станет слать в него мусор пачками. Поэтому наружу выходит не всё, а тот срез, который площадка готова тянуть. Иногда срез узкий по расчёту, иногда просто исторический: метод не написали, спроса не было.

Пример, на котором это видно лучше всего. У ВКонтакте на ключе сообщества загрузки фотографии на стену не существует вовсе: метод отвечает ошибкой 27, «недоступно с групповой авторизацией», и право «фотографии» тут не спасает. Человек в приложении прикладывает картинку не задумываясь, а программе с ключом сообщества стена достаётся текстовой. Обходится это входом администратора через VK ID: у живого токена право есть. Но сама разница никуда не делась.

Правка опубликованного в X существует в приложении и только по подписке, а в API её нет ни в каком виде. Телеграм разрешает боту удалить сообщение, пока тому меньше примерно двух суток; администратор-человек чистит канал на любую глубину. Ни то, ни другое не баг и не наша недоделка. Так устроен контракт площадки, и переспорить его нечем.

Что четыре сети принимают через API

Таблица ниже — не пересказ документации, а то, что мы отправляем в телеграм, ВКонтакте, MAX и X каждый день, и то, по чему пост проверяется в момент постановки в очередь. Проверка стоит именно там намеренно: узнать, что текст на триста знаков длиннее лимита, надо до того, как половина каналов уже опубликовалась.

Числа читаются так. «Текст без вложений» — предел обычного сообщения. «Текст с вложением» — сколько знаков влезет, если к посту приложена картинка. Столбцы по вложениям — сколько штук уедет за раз. Всё остальное — есть возможность или её нет.

Что отправляемтелеграмВКонтактеMAXX
Текст без вложений4096 знаков4096 знаков4000 знаков280 знаков
Текст с вложением1024 знака, дальше пост разъезжается на два сообщения4096, вложение лимит не режет4000, отдельной подписи нет280
Картинок за раз101012 вложений на сообщение4
Видео за раз101в тех же 12не отправляем
Файлы, pdf и прочее10нетне отправляемнет
Кнопки-ссылки под постомдо 8нетнетнет
Второе сообщение сразу за постомданетнетда, ответом самому себе
Правка после публикацииданетнетнет
Снос из сетида, пока посту меньше двух сутокнетнетнет

Значения — из описания возможностей в наших адаптерах площадок. У ВКонтакте предел записи выше 4096, но это безопасная граница: длинный пост стена всё равно сворачивает в «показать полностью». У X 280 знаков считаются для обычного аккаунта; у подписки предел выше, но он свойство конкретного аккаунта, а не площадки. Потолок вложений у ВКонтакте и MAX общий на картинки и видео, а не отдельный на каждый тип. «Не отправляем» — площадка такое принимает, а мы пока нет; «нет» — у площадки этого не существует.

Три места, где расхождение болит сильнее всего

Подпись к вложению в телеграме — ловушка номер один. Без картинки в сообщение влезает 4096 знаков, с картинкой подпись обрывается на 1024. Пост от этого не пропадает: текст, который не влез, уезжает отдельным сообщением следом за вложением, и в канале получается картинка, а под ней простыня. Выглядит это заметно хуже задуманного, так что 1024 и есть настоящая граница поста с картинкой. При правке та же цифра вылезает второй раз: подпись правится только до 1024 знаков, а дальше остаётся снять пост и опубликовать заново.

Одно видео в посте ВКонтакте — наше ограничение, и мы его не прячем. Стена берёт и больше, но каждый ролик — это отдельная заливка тела файла и ожидание, пока ВКонтакте его перекодирует, а вся отправка обязана уложиться в окно строки очереди, десять минут. Два ролика в одном посте это окно съедают вместе с запасом на всё остальное. Картинок при этом уходит десять, и общий потолок вложений у записи тоже десять — видео считается в ту же десятку.

Правки после публикации нет нигде, кроме телеграма. У ВКонтакте методы правки и удаления записи существуют, но наш адаптер их не реализует, и мы объявляем это честно: кнопка, ведущая в пустоту, хуже отсутствующей кнопки. У MAX и X правки нет и в самом API. Телеграм умеет и править, и сносить, но со сроком: сообщение старше двух суток бот удалить не может, и снимать такой пост придётся руками в канале.

Тумблеры: пять, три и ни одного

Тумблер поста — то, что вы переключаете на одном конкретном посте: отправить без звука, закрепить, поставить пометку «реклама». Площадка объявляет свой набор сама, редактор рисует поля по объявлению. У сети, которая не объявила ничего, блок настроек просто не появляется.

Объявить тумблер, которого API не исполняет, хуже, чем не объявить вовсе. Человек его нажмёт, отправит пост и получит в канале ровно то же, что без нажатия, — без ошибки, без предупреждения, без единого следа. Разбираться с этим он будет дольше, чем с честным «здесь такого нет». По той же причине кнопки под постом умеет только телеграм: пост с кнопками уедет во ВКонтакте без них, а не отобьётся целиком.

Про два тумблера ВКонтакте скажем отдельно. «От имени сообщества» включён по умолчанию, потому что в группу так и пишут; выключите — и под постом появится подпись того администратора, чьим входом подключён канал. «Пометка реклама» уходит в запись отдельным полем при отправке, ровно как если бы вы поставили галочку руками. Что за этой галочкой стоит по закону — разговор отдельный и не про API.

ТумблертелеграмВКонтактеMAXX
Без звукаданетнетнет
Закрепитьдаданетнет
Запретить пересылкуданетнетнет
Без карточки ссылкиданетнетнет
Карточка ссылки над текстомданетнетнет
От имени сообществанетда, включён по умолчаниюнетнет
Пометка «реклама»нетданетнет

У MAX и X набор пустой: их API на сообщение таких полей не принимает.

Что происходит с жирным, курсивом и ссылками

Разметка у поста одна на замысел: вы оформляете текст один раз, а как его показать, решает уже адаптер площадки. Телеграм и MAX принимают HTML, но разными наборами тегов: у MAX нет спойлера и моноширинного блока. Тег, которого площадка не знает, снимается перед отправкой, а текст внутри остаётся — пост уезжает в MAX без спойлера, но уезжает. Отбивать из-за одного оформительского приёма публикацию во все каналы было бы дороже, чем потерять приём в одном.

ВКонтакте и X разметки не понимают вовсе и получают голый текст. Единственное, что там выживает, — ссылка, и та превращается в «подпись (адрес)»: потерять адрес значило бы потерять то, ради чего пост писали. У X есть и своя особенность со ссылками — пост со ссылкой обходится владельцу аккаунта дороже обычного, поэтому по умолчанию мы их не пропускаем и предлагаем либо разрешить ссылки в настройках канала, либо дать адрес вторым сообщением.

Отдельная история — поломанная разметка. Незакрытый тег или чужой вроде div площадка отобьёт в момент отправки, когда в остальные каналы пост уже ушёл. Поэтому разбор идёт заранее, при постановке в очередь, вместе с одиночным знаком «меньше» в тексте: «5 < 7» телеграм читает как начало тега и сообщение не принимает.

Планируйте по самой бедной площадке из своих

Практический вывод из таблицы один. Если вы ведёте телеграм и X, длина поста у вас 280 знаков, а не 4096: всё, что длиннее, придётся переписывать под X отдельно, и это не разовая правка, а работа на каждый пост. Есть в списке ВКонтакте — видео в посте одно. Телеграм с картинкой — текст до 1024 знаков. Выбирать площадки удобнее до того, как эти границы начнут переписывать за вас контент-план.

И второе, менее заметное. Версии поста разъезжаются молча: он не падает с ошибкой оттого, что во ВКонтакте не уехали кнопки, а в MAX пропал спойлер, — он просто выглядит в каждой сети по-своему. Увидеть это можно, только открыв свои каналы подряд после публикации. Разница между «я могу это руками» и «это может программа», с которой мы начали, в итоге упирается именно сюда: проще один раз собрать замысел под самую скупую из ваших сетей, чем потом сверять четыре версии глазами.

Коротко

  • Картинка в телеграме режет текст с 4096 до 1024 знаков — дальше пост разъезжается на два сообщения.
  • Править и сносить опубликованное можно только в телеграме, и снос работает, пока посту меньше двух суток.
  • Тумблеры есть у телеграма и ВКонтакте; у MAX и X их нет вовсе, и объявлять несуществующее мы не будем.
  • Длину и состав поста считайте по самой бедной из своих площадок, иначе версии разойдутся молча.

Источники

Частые вопросы

Можно ли отредактировать опубликованный пост через API?

В телеграме — да, текст и подпись правятся. Состав вложений при правке не меняется, а подпись к вложению правится только до 1024 знаков: на длинном тексте остаётся снять пост и опубликовать заново. У ВКонтакте методы правки есть, но наш адаптер их не реализует. У MAX и X правки через API нет вовсе.

Сколько картинок влезает в один пост?

Десять в телеграме и во ВКонтакте, двенадцать в MAX, четыре в X. У ВКонтакте и MAX потолок общий на все вложения сразу: десять и двенадцать соответственно, и видео считается в это же число.

Почему в пост ВКонтакте уходит только одно видео?

Это наше ограничение. Каждый ролик заливается отдельно и ждёт перекодирования на стороне ВКонтакте, а вся отправка должна уложиться в десятиминутное окно строки очереди. Два ролика это окно съедают.

Уйдёт ли жирный шрифт во ВКонтакте?

Нет. ВКонтакте и X разметку не понимают и получают текст без тегов; ссылка при этом превращается в «подпись (адрес)», чтобы адрес не потерялся. Телеграм и MAX принимают HTML, но у MAX набор тегов уже — спойлер и моноширинный блок он не покажет.

Почему кнопки под постом есть только в телеграме?

Кнопки-ссылки умеет только его inline-клавиатура, до восьми штук. Остальные сети такого поля не принимают, и пост уезжает туда без кнопок — отбивать из-за них публикацию было бы хуже.

Читайте также

Smmly — сервис, который держит телеграм, ВКонтакте, MAX и X в одном окне и публикует посты по расписанию. 7 дней за 10 ₽, отмена в один клик. Подключить каналы