Постинг в X из OpenClaw
OpenClaw — агент, которого вы запускаете сами и с которым говорите из своих мессенджеров. Добавьте MCP-сервер X (Twitter) от calmposts в его Gateway, и сообщение вроде «запости это в X завтра утром» станет запланированным постом для X и Bluesky, ждущим вашего одобрения.
- Подключение
- Удалённый MCP-сервер по Streamable HTTP: ничего не нужно устанавливать
- Вход
- API-ключ в заголовке Authorization
- Адрес сервера
https://calmposts.com/mcp- Где настраивается
- ~/.openclaw/openclaw.json, openclaw mcp set или Settings → MCP
Что OpenClaw умеет с calmposts
Gateway OpenClaw держит MCP-подключения и отдаёт их инструменты вашим агентам, из какого бы мессенджера вы к ним ни обращались. С подключённым calmposts можно отправить с телефона ссылку или мысль, и агент сделает из неё пост или тред, подогнанный под каждую соцсеть, в вашей очереди calmposts.
Инструменты calmposts проходят через профили инструментов и политику инструментов OpenClaw, как и любые другие, а инструкции, которые calmposts отправляет при подключении, OpenClaw передаёт агенту: сначала посмотреть аккаунты, предпочитать очередь или черновик, никогда не отвечать, не подписываться и не писать в личку.
MCP-сервер для X (Twitter) даёт OpenClaw 11 инструментов — тех же, что и любому другому клиенту:
| Инструмент | Что делает |
|---|---|
list_accounts | ваши каналы и правила каждой соцсети; customer_id — каналы одного клиента |
list_customers | клиенты агентства с id их каналов |
get_limits | расход тарифа, часовой пояс рабочего пространства, лимиты соцсетей |
create_post | пост или тред для выбранных аккаунтов, свой текст для каждого, картинки по URL; when: draft, queue, at или now |
list_posts | посты по статусу, аккаунту, клиенту и периоду |
get_post | один пост с его каналами, статусом и версией |
update_post | изменить или перенести; что не указано, остаётся |
delete_post | отменить и удалить |
get_next_slot | куда when=queue поставит пост |
retry_post | снова отправить невышедшие каналы |
get_post_metrics | цифры вышедшего поста по каждому каналу через 1 ч, 24 ч и 7 дней (тарифы с аналитикой); только чтение |
Настройка calmposts в OpenClaw
Сначала проверьте ключ
Создайте ключ в calmposts в разделе «API и MCP» (он показывается один раз) и запросите у сервера список инструментов. Список из 11 инструментов значит, что адрес и ключ верны; 401 — ключ неверный или отправлен без «Bearer ».
curl -s https://calmposts.com/mcp \
-H "Authorization: Bearer cp_live_…" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# 200 {"jsonrpc":"2.0","id":1,"result":{"tools":[…]}}Способ 1: openclaw mcp set, ключ в .env
Две команды на машине, где работает Gateway.
Создайте ключ в calmposts в разделе «API и MCP» и положите его в ~/.openclaw/.env — OpenClaw читает этот файл при запуске:
CALMPOSTS_API_KEY=cp_live_…Сохраните сервер со ссылкой на ключ, а не с самим ключом. Не убирайте transport: без него OpenClaw использует SSE.
openclaw mcp set calmposts '{"url":"https://calmposts.com/mcp","transport":"streamable-http","headers":{"Authorization":"Bearer ${CALMPOSTS_API_KEY}"}}'Проверьте вживую: doctor проверит запись, подключится и покажет 11 инструментов calmposts.
openclaw mcp doctor calmposts --probe
Способ 2: Прямо в openclaw.json
Та же запись в файле настроек; Gateway подхватит изменение на лету.
Добавьте calmposts в mcp.servers в ~/.openclaw/openclaw.json:
{ "mcp": { "servers": { "calmposts": { "url": "https://calmposts.com/mcp", "transport": "streamable-http", "headers": {"Authorization": "Bearer ${CALMPOSTS_API_KEY}"} } } } }Выполните openclaw mcp doctor calmposts --probe. В Control UI сервер теперь виден в Settings → MCP, где его можно выключить или удалить.
Вход: ключ или OAuth
OpenClaw отправляет статические заголовки в каждом запросе, и заголовок Authorization несёт ключ calmposts. Пишите его как Bearer ${CALMPOSTS_API_KEY}: OpenClaw подставит переменную при чтении конфига, а doctor не ругается на ссылку так, как ругается на токен, записанный буквально.
Имена переменных должны быть в верхнем регистре — как CALMPOSTS_API_KEY. Отсутствующая переменная остаётся неподставленной, OpenClaw предупреждает, а calmposts отвечает 401.
OpenClaw поддерживает и OAuth для HTTP-серверов (auth: "oauth" и openclaw mcp login), и тогда статические заголовки Authorization игнорируются. Здесь используется ключ — с ним страница и проверена.
Как проверить, что всё работает
- openclaw mcp doctor calmposts --probe сообщает, что сервер доступен, и показывает 11 инструментов.
- openclaw mcp status --verbose показывает calmposts включённым, с его URL и транспортом.
- Спросите агента «Какие у меня сегодня лимиты в calmposts?» — он вызовет get_limits.
- Попросите черновик и найдите его в разделе «Посты» calmposts, с источником mcp.
Что попросить
Просите своими словами — агент сам выберет инструменты. Хорошо работают такие просьбы:
- «Поставь эту ссылку в мою очередь X на завтрашнее утро с комментарием в одну строку».
- «Сделай версии для X и Bluesky из заметки, которую я только что прислал, и сохрани обе черновиками в calmposts».
- «Что запланировано в calmposts на этой неделе? Прочитай мне список».
- «Набросай короткий тред-итог того, что я постил на этой неделе, и оставь его мне на одобрение».
Соцсети, треды и одобрение
Посты уходят в X и Bluesky. В X и Bluesky тред выходит цепочкой ответов. Скоро: Threads и LinkedIn.
Пишете один раз — выходит везде: агент передаёт один текст для всех выбранных аккаунтов. Если текст длиннее, чем разрешает соцсеть, calmposts публикует его там тредом из постов, каждый из которых помещается: делит по абзацу, затем по предложению, затем по пробелу, ничего не нумерует и не добавляет. Правила каждой соцсети и квоты тарифа проверяются до сохранения поста, а ошибка возвращается с указанием поля, так что агент может поправить текст и повторить.
По умолчанию посты агента ждут вас: они возвращаются со статусом pending_approval, и вы одобряете или отклоняете каждый в приложении, в Telegram или из письма calmposts. Владелец рабочего пространства может разрешить агентам публиковать самим; для этого и пространство, и API-ключ должны быть переключены на публикацию. X ждёт, что у аккаунта, который постит автоматически, стоит метка Automated (Settings → Your account → Account information → Automation).
Лимиты и стоимость
- Агентам нужен платный тариф: на Free нет API-ключей и нельзя одобрить подключение приложения. API-ключей по тарифам: Pro 3 · Advanced 10 · Agency 25.
- Посты агента считаются так же, как ваши. Постов в день: Pro 20 · Advanced 100 · Agency 300. Постов со ссылкой в месяц: Pro 30 · Advanced 300 · Agency 600. Каждый пост треда считается отдельно.
- Ссылки считаются отдельно, потому что X берёт с каждого приложения $0,015 за пост и $0,20 за пост со ссылкой. Плата X входит в тариф: свой аккаунт разработчика X и свой счёт за X API не нужны.
- Попробовать: 7 дней бесплатно. Нужна карта. 5 постов со ссылкой за пробный период.
- Каждый ключ может сделать 60 запросов в минуту, MCP и REST вместе; дальше сервер отвечает 429 с Retry-After.
Что важно знать про OpenClaw
- transport: "streamable-http" обязателен: без него OpenClaw подключается по SSE, а SSE у calmposts нет.
- Не храните ключ в openclaw.json: doctor предупреждает о чувствительных заголовках, записанных буквально, а ссылка вроде ${CALMPOSTS_API_KEY} после префикса Bearer проходит.
- Чтобы дать агенту только часть инструментов, добавьте toolFilter.include, например ["list_*", "get_*", "create_post"], или запретите отдельные инструменты для сессии в + → Connectors → Tool access.
- Если calmposts недоступен, OpenClaw повторяет попытки в фоне: сначала через 30 секунд, затем вдвое дольше, до 10 минут; ходы вашего агента этого не ждут.
Без MCP: REST API
Всё, что делают инструменты, доступно и обычными REST-запросами к /api/v1 с тем же ключом. Это удобно для скрипта или шага, который умеет только HTTP. calmposts публикует через своё одобренное приложение X, поэтому ключи X API для запроса не нужны.
export CALMPOSTS_API_KEY=cp_live_…
curl -H "Authorization: Bearer $CALMPOSTS_API_KEY" https://calmposts.com/api/v1/accounts
curl -X POST https://calmposts.com/api/v1/posts \
-H "Authorization: Bearer $CALMPOSTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"parts":[{"text":"Calm posts, scheduled."}],"targets":[{"account_id":"ACCOUNT_ID"}],"schedule":{"mode":"queue"}}'Если что-то не работает
В журнале «authentication refused (401)»
Ключ не дошёл. Проверьте, что в ~/.openclaw/.env есть CALMPOSTS_API_KEY и что Gateway перезапущен или перезагружен после этого.
Ошибка SSE или 405 от calmposts
transport не указан или стоит sse, поэтому OpenClaw открывает GET-поток, на который calmposts отвечает 405. Укажите transport streamable-http.
doctor подключается, но инструментов нет
Проверьте toolFilter.include и toolFilter.exclude у сервера.
Изменение не доходит до работающего агента
openclaw mcp reload обновляет только среду самого CLI; Gateway, запущенному в другом месте, нужна своя перезагрузка или перезапуск.
401 missing_api_key
Запрос пришёл без ключа или без «Bearer » перед ним. Отправляйте Authorization: Bearer cp_live_… — с пробелом.
401 invalid_api_key, api_key_revoked или api_key_inactive
Ключ набран с ошибкой, отозван или его создатель больше не состоит в рабочем пространстве. Создайте новый ключ в «API и MCP» и замените старый.
401 invalid_token
Токен доступа OAuth-подключения истёк или подключение отключили. Клиенты обновляют токен сами; если не вышло, войдите заново.
402 quota_exceeded
Исчерпан лимит тарифа, поле field называет какой: api_keys — на тарифе нет агентов (Free); posts_per_day и link_posts_per_month освобождаются на следующий день или в следующем месяце либо с тарифом побольше.
403 insufficient_scope
У ключа нет права, нужного инструменту; field называет его (posts:write для создания постов). Создайте ключ с этим правом.
429 rate_limited
С этого ключа пришло больше 60 запросов в минуту. Подождите столько секунд, сколько указано в Retry-After.
Инструмент отвечает duplicate_recent
Тот же текст уже уходил в тот же аккаунт за последние 7 дней. Попросите другую формулировку.
Пост в статусе pending_approval
Это не ошибка: пост ждёт вашего «да» в calmposts. Одобрите его там или разрешите агентам публиковать (владелец включает это в пространстве и в ключе).
Аккаунт в статусе needs_reconnect
Соцсеть отозвала доступ calmposts. Подключите аккаунт заново в разделе «Аккаунты» приложения.
Вопросы
Где OpenClaw держит подключение?
В Gateway — он держит MCP-подключения всех ваших агентов: добавляйте calmposts на машине, где он работает.
Нужна ли OpenClaw программа calmposts-mcp?
Нет. OpenClaw подключается к хостинговому серверу по Streamable HTTP; запись stdio не нужна.
Что видит агент?
Всё в рабочем пространстве, которому принадлежит ключ, в пределах прав ключа. Чтобы работать только с каналами одного клиента, попросите передавать customer_id.
Может ли OpenClaw опубликовать без меня?
Только если и пространство, и ключ разрешают агентам публиковать. Иначе его посты ждут вашего одобрения в calmposts, в Telegram или в письме.
Агент может отвечать, подписываться или писать в личку?
Нет. Таких инструментов нет: X запрещает это автоматизировать, а calmposts только пишет и планирует ваши собственные посты.
Нужны ли мне свои ключи X API?
Нет. calmposts публикует через своё одобренное приложение X, а плата X за посты входит в цену тарифа.
Документация OpenClaw, по которой написана страница
- OpenClaw docs: Connect MCP servers
- OpenClaw docs: Transports and OAuth
- OpenClaw docs: MCP client registry
- OpenClaw docs: Environment variables
calmposts — независимый сервис, он не связан с создателями OpenClaw и не одобрен ими. Названия продуктов принадлежат их владельцам.
Пусть OpenClaw спокойно постит за вас
Начните пробный период, подключите аккаунты, создайте ключ и дайте OpenClaw адрес сервера.
Попробовать бесплатно