Smmly

Прямого постинга не существует · прямого постинга нет: публикуем в телеграм-канал, Дзен забирает оттуда сам

Постить в Дзен из Codex CLI

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

Что сказать Codex CLI, чтобы пост ушёл в Дзен

канала «Дзен» у меня нет — постим в телеграм-канал с ярлыком «дзен», это он зеркалится

Обычный smmly_post в телеграм-канал: ярлык — единственный адрес, который тут работает. Сказать это агенту заранее дешевле, чем разбирать последствия: в поле выбора по площадке у инструмента перечислены телеграм, ВК и MAX, и providers: ["dzen"] будет отказом ПО СХЕМЕ — ошибкой протокола, а не понятным текстом от нас. В интерактивной сессии Codex переспросит и поправится, в прогоне по расписанию шаг просто умрёт на этой строке.

первой строкой — короткий заголовок с точкой, до 140 знаков; поле title не заполняй, телеграм его не читает

Вторая половина просьбы выглядит странно ровно до первого прогона. У инструмента есть поле заголовка, и агент, которого попросили «сделать статью в Дзене», тянется именно к нему — а телеграм заголовков не различает вовсе, поле уедет в никуда. Заголовком в Дзене становится первое предложение поста: всё до первой точки, восклицательного или вопросительного знака. Длиннее 140 знаков — отказ с числом: «первая фраза 212 знаков — в Дзене заголовок обрежется на 140».

скриншот приложи, но весь текст держи в тысяче знаков — на этом канале зеркало

Здесь зеркало и кусается. В канал без галочки такой пост уходит спокойно: вложение первым сообщением, текст следом ответом. Дзен забирает ОДНО сообщение, второго для него не существует, поэтому на зеркальном канале мы отбиваем пост заранее — «с вложением в Дзен уйдёт только первые 1024 знака». Отказ приходит до записи и на весь вызов: если тем же замыслом вы шли ещё во ВКонтакте и MAX, не создастся ни одной строки, и повторять надо весь вызов с исправленным текстом.

если пост уже вышел — правь текст по groupId, а стирать из канала не пробуй

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

Что нужно, чтобы это заработало

  1. Опишите сервер в config.toml

    Codex ходит на удалённые MCP-серверы сам, а ключ берёт из переменной окружения — в конфиге лежит только её имя. Готовый блок и главная засада (переменная нужна той сессии, откуда запускается codex) — на странице клиента.

    Подключение Codex CLI →
  2. Включите зеркало с обеих сторон — руками

    Канал должен быть публичным: бот Дзена читает его как обычный подписчик. В кабинете на карточке телеграм-канала стоит галочка «Зеркалить в Дзен» — она и включает строгие правила, о которых вся эта страница. Вторая половина на стороне площадки: @zen_sync_bot администратором того же канала. Инструментов настройки канала у агента нет ни одного, так что попросить Codex «включи зеркало» не выйдет — ни в разговоре, ни из скрипта.

    Как работает зеркало Дзена →
  3. Повесьте ярлык «дзен» и зашейте его в скрипт

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

Что доезжает в Дзен

API публикации у Дзена
его нет — ни у нас, ни у кого
Как пост попадает в Дзен
зеркалом из вашего публичного телеграм-канала
Заголовок статьи
первое предложение поста, до 140 знаков
Пост с вложением
в Дзен уедут только первые 1024 знака
Удаление
не зеркалится — снимать придётся в двух местах
Считается ли каналом
нет: это галочка на телеграм-канале

Канала «Дзен» в smmly_channels не бывает и не появится — агент постит в телеграм-канал, у которого включена галочка «Зеркалить в Дзен». Зато у такого канала строже валидатор: первая фраза длиннее 140 знаков и пост с вложением длиннее 1024 знаков отбиваются с объяснением, а не уезжают обрубленными.

Обо что спотыкается эта пара

Слово «дзен» в вызове ломается тремя разными способами

Агент, который сам собирает тело вызова, пробует поставить площадку туда, где ей место, — и получает три разных исхода вместо одного понятного. В поле выбора по площадке значение «dzen» не предусмотрено схемой: приходит ошибка протокола, которую Codex показывает как поломку инструмента, а не как «так нельзя». В поле текстов по площадкам такой ключ схему проходит и молча выбрасывается — вариант «для Дзена» не уедет никуда, а канал получит общий текст; если общего не передали, придёт отказ «пустой пост», и понять из него причину невозможно. В карте тумблеров тот же ключ валит весь замысел словами «среди выбранных каналов нет такой площадки». Вывод для шаблона скрипта простой: площадка в этом вызове ровно одна и называется телеграмом, а Дзен — свойство канала.

Заголовка нет как поля, и разметкой его не сделать

Поле заголовка у инструмента есть, телеграм его не читает — ни одна наша площадка не различает заголовок отдельно от текста. В Дзене заголовок при этом настоящий, и берётся он из первого предложения поста. Codex, который весь день имеет дело с разметкой, честно пробует выделить его тегами — не поможет: обе проверки зеркала считают видимый текст, теги в 140 знаков не входят и границей предложения не служат. Хуже другое: если в первой фразе вообще нет точки — а заголовок вида «Релиз 2.4.0: что поменялось» её и не предполагает, — первым предложением считается вся первая строка целиком, вместе с тем, что вы за ней написали. Просить надо буквально: короткая первая строка, точка в конце, дальше пустая строка и текст.

Правила канала живут в кабинете, а скрипт — в репозитории

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

Второй пост из Дзена не убрать вообще ничем

Оборвавшийся вызов повторить безопасно: одинаковый пост в те же каналы в пределах пяти минут вернёт признак «уже создан». Окно короткое намеренно — оно закрывает ретрай после таймаута, а не осознанный повтор. Codex работает автономно и подолгу, из пяти минут выпадает легко, и тогда в телеграме появляется второе сообщение. На обычном канале это неприятность на минуту: снять из канала телеграм боту даёт. На зеркальном к этому моменту оба поста уже уехали в Дзен, и там останутся оба — удаление не зеркалится, а своего интерфейса публикации, через который можно было бы дотянуться, у площадки нет. Убирать придётся руками в студии. Лечится одним: свой ключ повтора на каждый пост, собранный из чего-то устойчивого — тега релиза, даты сводки, — он действует бессрочно.

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

Как в скрипте адресовать Дзен, если такого канала не существует?

Ярлыком телеграм-канала, на котором включено зеркало. Ставить площадку «dzen» в выбор по площадкам нельзя — там перечислены телеграм, ВК и MAX, и любое другое значение отбивается схемой ещё до нашего кода. Точечный выбор по id тоже возможен, но для скрипта хуже: переподключили канал — id сменился, а ярлык остался. Заодно ярлык остаётся единственным местом, где вообще написано, что этот канал зеркалится.

Можно отдать Дзену свой текст, а телеграму другой?

Нет, и попытка выйдет тихой. Варианты текста раскладываются по площадкам, а площадка у зеркального канала одна — телеграм; ключ «dzen» в такой карте ни с чем не совпадёт и просто пропадёт. Пост в Дзене — это ровно то, что ушло в телеграм-канал, других вариантов у него нет. Развести можно только соседей по вызову: телеграму с зеркалом свой текст, ВК и MAX — свой.

Может ли скрипт включить или выключить зеркало сам — хотя бы через ваш HTTP-API?

Нет ни через инструменты агента, ни через веб. Инструментов настройки канала в наборе нет вовсе: ключ даёт право вести каналы, а не менять их. Настройки канала правит только его владелец из кабинета, за своим входом, — ключ туда не пускает. Полезный побочный эффект: агент, который перебирает варианты после отказа, не сможет «решить проблему», выключив зеркало. Если сегодня нужен длинный пост со скриншотом — галочку снимаете вы, руками.

Стоит ли пускать Codex по расписанию на канал с зеркалом?

Стоит, если принять два правила. Первое: свой ключ повтора на каждый пост — здесь цена дубля выше, чем где-либо ещё, потому что из Дзена его не снять. Второе: ставить пост на несколько минут вперёд, а не публиковать мгновенно. Пока пост в очереди, он правится и снимается целиком, и в Дзен ещё ничего не уехало; после публикации остаётся только правка текста. И заведите отдельный канал под первые прогоны — с той же галочкой, иначе он не проверит ничего.

Пост отбился в прогоне без человека. Его можно вернуть в очередь?

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

из Codex CLI в другие площадки

Постить в Дзен из других агентов

Конфиг подключения, пути к файлам и грабли самого клиента — на странице постинга из Codex CLI. Лимиты площадки, подключение канала и что умеет сам Дзен — на его посадочной. Общая инструкция по MCP — здесь, поля инструментов и коды ошибок — в технической справке.

Пусть посты ставит агент

7 дней полного доступа за 10 ₽ — подключите каналы, возьмите ключ и проверьте на своих постах.

Попробовать за 10 ₽