Площадка работает · постим на стену сообщества сами, вместе с картинками
Постить в ВК из Codex CLI
Codex ставит записи на стену сообщества прямо из терминала: текст, картинки, время публикации. Пока вы сидите в той же сессии, ВК ведёт себя как все. Разница вылезает, когда агента запускают без вас — в скрипте или по расписанию: ВКонтакте единственный из ваших каналов умеет отвалиться так, что вернуть его может только человек с браузером.
Что сказать Codex CLI, чтобы пост ушёл в ВК
сначала покажи мои каналы. если у сообщества ВК стоит needsReauth — ничего не постим, скажи и остановись
smmly_channels отдаёт по каналу площадку, название, ярлыки и два флага: disabled и needsReauth. Второй у ВК значит, что вход через VK ID умер и постить туда нечем. Просьба «остановись» здесь важнее самой проверки: без неё агент честно отправит пост, наш отправщик честно уронит строку ВК, и в терминале это будет выглядеть как успешная публикация — потому что в телеграм она и правда ушла.
поставь запись в сообщество с ярлыком «релизы» через пятнадцать минут, ключ повтора возьми из тега v2.4.0
Уходит smmly_schedule_post с publishAt и вашим ключом повтора. Ключ из тега, а не случайная строка: он вечный, и вызов с ним второй раз вернёт duplicate: true даже через неделю. Пятнадцать минут — окно, в которое запись ещё стоит в очереди и снимается целиком; после публикации во ВКонтакте не правится и не сносится ничего.
обложку не загружай файлом — дай публичной ссылкой на неё
Агент передаёт адрес в mediaUrls, и картинку скачиваем мы. Для скрипта это заметно лучше загрузки: адрес — стабильная строка, и повторный вызов после обрыва выглядит для нас тем же самым запросом. Загрузка файла каждый раз выдаёт новый ключ вложения, и защита от дубля на нём спотыкается. Файл, которого в интернете нет — свежий скриншот, собранная картинка, — всё равно идёт через smmly_upload_media: стена не принимает вложение ссылкой, ВК берёт только уже загруженную к нему фотографию.
дай ссылку на запись во ВКонтакте и проверь, что она открывается
smmly_post_status по groupId вернёт строку на канал и адрес вида vk.com/wall-123456_789. У ВК ссылка есть всегда — здесь это не украшение, а способ отличить «пост ушёл» от «пост создан»: в неинтерактивном прогоне никто не смотрит в сообщество глазами, и ссылка остаётся единственным доказательством.
Что нужно, чтобы это заработало
Опишите сервер в config.toml
Codex сам ходит на удалённые MCP-серверы, а ключ берёт из переменной окружения — в конфиг он не пишется. Блок конфига и главная засада (переменная нужна той сессии, откуда запускается codex) — на странице клиента.
Подключение Codex CLI →Заведите сообщество каналом
ВК подключается входом администратора через VK ID: вы входите, выбираете сообщество из списка своих. Ключ сообщества мы больше не принимаем — на нём ВК не даёт грузить фотографии на стену.
Как подключить ВКонтакте →Повесьте ярлык и научите скрипт его спрашивать
Ярлык — то, чем пост адресуется словами: «запости в релизы». Для неинтерактивного прогона у него есть второе назначение: смотреть на каналы по ярлыку агент будет каждый раз заново, а значит увидит и флаг needsReauth. Ярлык ставится в кабинете или просьбой к самому агенту.
Что доезжает в ВК
- Длина поста
- до 4096 знаков; вложение лимит не режет
- Картинки
- до 10 — грузим их в ВК в три хода, ссылкой стена вложение не берёт
- Видео
- одно на запись, до 50 МБ — наш потолок, ждём перекодирование до минуты
- Кнопки и второе сообщение
- у записи на стене их нет
- Правка и снос в группе
- нет — со стены запись убираете вы сами
- Тумблеры поста
- от имени сообщества, пометка «реклама», закрепить
Адресуется как providers: ["vk"] или ярлыком. Разметку стена не понимает вовсе: format: "html" доедет текстом без тегов, ссылка развернётся в «подпись (адрес)». Тумблеры кладутся в options: {"vk": {"fromGroup": false}} — fromGroup включён по умолчанию. Править и сносить опубликованное ВК не даёт: на smmly_edit_post по строке ВК придёт отказ.
Обо что спотыкается эта пара
Мёртвый ключ роняет одну строку, а не весь пост — и делает это тихо
Два разных отказа легко перепутать. Отказ по лимитам приходит громко и на весь замысел: не проходит текст по одной площадке — не создаётся вообще ничего. А протухший вход во ВКонтакте вылезает позже, уже в отправщике: строки замысла созданы, телеграм опубликовался, строка ВК помечена ошибкой и повторов не получает — это терминальный отказ, не «попробуем ещё раз». Для скрипта разница решающая: первый случай он заметит сразу, второй — никогда, если не читает статус построчно. И починить второй агент не может ни одной командой: нужен ваш вход через VK ID в браузере.
Долгая заливка, автономный повтор — и второй пост, который не снять
Стена не берёт вложение ссылкой: на каждую фотографию уходит три запроса подряд, и грузятся они по очереди — параллельные заливки ВК режет по частоте. Пост с альбомом уезжает заметно дольше телеграмного, а неинтерактивный шаг терпелив не бесконечно. Дальше начинается самое неприятное: повтор оборвавшегося вызова безопасен, только если аргументы те же до буквы. Автоматическая защита от дубля считает отпечаток по телу запроса, а каждая загрузка файла выдаёт НОВЫЙ ключ вложения — перезалив картинку перед повтором, агент отправит для нас другой запрос, и на стене появится вторая запись. Убрать её из сообщества мы не можем вовсе, удалять придётся руками во ВКонтакте. Лечится двумя привычками: свой ключ повтора на каждый пост и картинки ссылкой там, где это возможно.
Тумблеры проверяются против сегодняшнего набора каналов
У записи на стене есть свои переключатели — от имени сообщества, пометка «реклама», закрепить, — и в скрипте их удобно зашить в шаблон раз и навсегда. Ловушка в том, что карта тумблеров проверяется не сама по себе, а против каналов, которые сегодня нашлись по ярлыку. Прислали в шаблоне и телеграмный блок, а ярлык в этот раз совпал только с сообществом ВК — придёт отказ «среди выбранных каналов нет такой площадки», и не уйдёт ничего. То же с опечаткой в имени тумблера: неизвестный ключ это отказ, а не тихий пропуск — иначе опечатка в silent стоила бы уведомления всем подписчикам. В шаблоне скрипта держите тумблеры только тех площадок, которые в этом вызове точно есть.
Пока пост отправляется, его нельзя ни снять, ни поправить
Пост, который отправщик уже взял в работу, отвечает отказом и на правку, и на снятие: «пост уже отправляется, дождитесь результата». У телеграма это мгновение, у ВК с альбомом — самое долгое окно из ваших площадок, как раз из-за трёх запросов на картинку. Агент, который привык действовать цепочкой «опубликовал → спросил статус → сразу поправил», в этом окне получит отказ и, если его не остановить, начнёт повторять. Правильная реакция одна: подождать и спросить статус ещё раз, а не отправлять заново.
Частые вопросы
Что делать скрипту, когда сообщество ушло в «требует повторного подключения»?
Ровно одно: остановиться и сказать вам. Продолжать нельзя — записи во ВКонтакте просто не будут выходить, а остальные площадки создадут ощущение, что всё работает. Восстановление живёт только в кабинете и только за вашим входом через VK ID: у агента нет ни команды на это, ни ключа от вашей учётной записи ВК. Поэтому в скрипте флаг проверяется до отправки, а не после.
Можно ли поручить Codex ежедневную сводку в сообщество?
Да, и это самый честный сценарий для этой пары. Две вещи сделайте сразу: свой ключ повтора, собранный из даты или id события, — иначе перезапуск того же дня выложит сводку второй раз, и снять её будет нечем; и предполётная проверка каналов. Отложенное время лучше мгновенной публикации: пост полежит в очереди, и у вас останется минута, чтобы его снять.
Codex нарисовал картинку. Она дойдёт до стены?
Да. Такой картинки нет в интернете, поэтому агент кладёт её нам через отдельный инструмент загрузки и передаёт ответ в пост как есть — на стену уедет настоящий файл. Картинок в одну запись влезает до десяти. Видео мы тоже отправляем, но одно на пост — это наш потолок, а не ограничение ВК: ролик грузится отдельным телом и ждёт перекодирования на стороне площадки, а неинтерактивный прогон это ожидание не всегда переживает спокойно.
Разметка из терминала доедет до стены?
Нет, и это стоит зашить в инструкцию агента отдельной строкой. Codex размечает текст по привычке — жирные подзаголовки, ссылка словом. Телеграм это покажет, стена получит тот же текст без тегов, а ссылка развернётся в «подпись (адрес)» и будет выглядеть как случайные скобки. Когда пост идёт сразу в несколько сетей, просите отдельный текст под ВК: у инструмента есть поле для варианта на каждую площадку, и одним вызовом уходят оба.
Запись появится от имени сообщества или от моего?
От имени сообщества — так стоит по умолчанию, хотя подключено оно вашим личным входом. Обратное включается тумблером на канале или на конкретном посте. В скрипте безопаснее не трогать его вовсе: тумблер, переданный без нужды, — лишний ключ в карте, а именно на ней и спотыкается неинтерактивный прогон, когда сегодняшний ярлык совпал не с теми каналами.
из Codex CLI в другие площадки
- Постить в Телеграм из Codex CLIпостим в канал сами, поле поста доезжает целиком
- Постить в MAX из Codex CLIпостим в канал сами, через нашего бота-администратора
- Постить в X из Codex CLIпостим в аккаунт сами, 280 знаков и до четырёх картинок
- Постить в Дзен из Codex CLIпрямого постинга нет: публикуем в телеграм-канал, Дзен забирает оттуда сам
Постить в ВК из других агентов
Конфиг подключения, пути к файлам и грабли самого клиента — на странице постинга из Codex CLI. Лимиты площадки, подключение канала и что умеет сам ВК — на его посадочной. Общая инструкция по MCP — здесь, поля инструментов и коды ошибок — в технической справке.
Пусть посты ставит агент
7 дней полного доступа за 10 ₽ — подключите каналы, возьмите ключ и проверьте на своих постах.
Попробовать за 10 ₽