Работает без обёрток · сервер в config.toml, ключ — переменной окружения
Постинг в соцсети из Codex CLI
Codex ходит на удалённые MCP-серверы сам и умеет собирать заголовок авторизации из переменной окружения — ключ в конфиг писать не надо вовсе. Две строки в config.toml, одна переменная в оболочке, и агент в терминале публикует посты в ваши каналы.
Нужен аккаунт с подключёнными каналами · 7 дней доступа за 10 ₽
Подключение за 4 шага
Возьмите ключ в кабинете
Раздел «Ключи доступа» → «Создать ключ». Показывается один раз, начинается с smk_. Если потеряли — удалите и выпустите новый, удалённый перестаёт работать сразу.
Опишите сервер и положите токен в окружение
Раздел в config.toml и одна строка экспорта. Префикс «Bearer» дописывать не нужно — Codex соберёт заголовок сам из значения переменной. Если вам нужен заголовок без принудительного префикса, у Codex есть отдельное поле env_http_headers, но нам оно ни к чему: мы ждём именно Bearer.
config.toml — серверtomlКлюча здесь нет намеренно: указано только имя переменной, из которой Codex его возьмёт.
[mcp_servers.smmly] url = "https://smmly.ru/api/mcp" bearer_token_env_var = "SMMLY_MCP_TOKEN"Токен — в оболочкетерминалСтроку стоит положить в ~/.zshrc или ~/.bashrc: заданная разово, она пропадёт вместе с окном терминала.
export SMMLY_MCP_TOKEN="smk_ВАШ_КЛЮЧ"- macOS и Linux:
~/.codex/config.toml
- macOS и Linux:
Запустите codex из той же оболочки
Переменная видна только процессам, запущенным из сессии, где вы её задали. Запустили codex из другого окна или из ярлыка — переменной там нет, и сервер ответит отказом. Ради этого строку и кладут в профиль оболочки.
Проверьте связку
Спросите агента про каналы — фраза ниже. Если Codex ругается на неизвестное поле url при старте, значит сборка старая: обновите codex, раньше для удалённых серверов требовался отдельный флаг, сейчас он не нужен.
Как понять, что получилось
покажи мои каналы в smmly
Список: площадка, имя канала, ярлыки. Дальше говорите словами — «запости в релизы», «поставь на понедельник в 10 утра по Москве».
Отказ про авторизацию — переменной нет в этой сессии либо ключ удалён. Ошибка вида «missing field command» при старте — сборка Codex старая, обновите её.
Грабли Codex CLI
Переменная нужна той сессии, откуда запускается codex
Самая частая причина отказа. Задали export в одном окне терминала, а codex запустили в другом или из внешнего запускалки — переменной там нет, и Codex отправит запрос с пустым токеном. Наш сервер требует ключ на любом запросе, включая первый, поэтому связка не соберётся вовсе. Кладите строку в профиль оболочки.
Старые сборки не знали удалённых серверов
Раньше Codex умел только локальные серверы, которые запускаются командой, и на поле url отвечал ошибкой «missing field command»; лечилось это отдельным флагом клиента. В актуальном описании конфига такого флага для нашего случая нет — похоже, он больше не нужен. Точного порога версии мы не проверяли, поэтому правило простое: ругается на url — обновите codex.
Команда codex mcp add существует, но конфиг надёжнее
Добавить сервер одной командой Codex в принципе умеет. Мы не даём её точный синтаксис намеренно: он у нас не проверен, а неверная команда молча запишет в конфиг не то. Файл config.toml — путь, который видно глазами и легко починить.
Длинный прогон выпадает из окна защиты
Оборвавшийся вызов безопасно повторить: одинаковая просьба в те же каналы в пределах пяти минут вернёт уже созданный пост. Но Codex работает автономно и подолгу — вернувшись к задаче через полчаса, он выпадет из этого окна, и пост выйдет вторым. Для таких прогонов просите агента задавать свой ключ повтора: он действует бессрочно. И заведите тестовый канал с отдельным ярлыком, прежде чем пускать агента в боевые.
Время публикации называйте городом
Отложенный пост принимает время со смещением часового пояса. Если смещения нет, время читается как всемирное и пост уходит на три часа раньше московского. Скажите «завтра в 9 утра по Москве» — агент подставит смещение сам.
Частые вопросы
Почему ключ не пишется прямо в config.toml?
Потому что Codex так устроен: в конфиге указывается имя переменной окружения, а значение он берёт из оболочки и сам собирает заголовок авторизации. Это удобнее, чем кажется — конфиг можно спокойно показывать и переносить, ключа в нём нет.
Нужно ли писать «Bearer» в переменной?
Нет, в переменной лежит только сам ключ, начинающийся с smk_. Префикс Codex добавит сам. Если когда-нибудь понадобится заголовок без принудительного префикса, для этого есть отдельное поле env_http_headers — но нашему серверу нужен именно Bearer, так что оно не пригодится.
Codex ругается на поле url. Что делать?
Обновить codex. В старых сборках удалённые серверы либо не поддерживались вовсе, либо включались отдельным флагом, и конфиг с url разбирался с ошибкой про отсутствующее поле команды. В актуальных сборках описание сервера ровно такое, как в примере выше.
Могу ли я постить из Codex, не выходя из работы над кодом?
Ровно за этим связка и нужна. Собрали релиз — тут же попросили агента рассказать о нём в канале, приложив картинку из репозитория. Замысел поста при этом приносите вы: сам придумывать, о чём написать, агент не станет, а руки для публикации у него теперь есть.
Что агент точно не сможет сделать моим ключом?
Подключить или отключить канал, поменять тариф, заплатить, выдать или удалить ключ, прочитать токены площадок. Всё это живёт только в кабинете, за паролем. Ключ даёт право вести каналы — публиковать, ставить на время, править и снимать свои посты.
Как безопасно проверить всё на живом аккаунте?
Подключите канал, который не жалко, и повесьте на него отдельный ярлык — например «тестовый». Дальше говорите «проверь на тестовом, боевые не трогай». Ярлык агент умеет повесить и сам, если попросить.
Постить в конкретную площадку из Codex CLI
- Постить в Телегрампостим в канал сами, поле поста доезжает целиком
- Постить в ВКпостим на стену сообщества сами, вместе с картинками
- Постить в MAXпостим в канал сами, через нашего бота-администратора
- Постить в Xпостим в аккаунт сами, 280 знаков и до четырёх картинок
- Постить в Дзенпрямого постинга нет: публикуем в телеграм-канал, Дзен забирает оттуда сам
Другие клиенты
- ClaudeClaude Code — одной командой, Desktop — через локальный мост
- Cursorадрес и заголовок прямо в mcp.json, обёртки не нужны
- ChatGPTключ нечем передать: в коннекторах только OAuth или «без авторизации»
Обзор всего блока — на странице про постинг из ИИ-агента. Общая инструкция по подключению — MCP-сервер, поля инструментов и коды ошибок — техническая справка, постинг из своего кода — API.
Пусть посты ставит агент
7 дней полного доступа за 10 ₽ — подключите каналы, возьмите ключ и проверьте на своих постах.
Попробовать за 10 ₽