Постинг в X из Claude Code
Claude Code работает в терминале, рядом с вашим кодом. Добавьте MCP-сервер X (Twitter) от calmposts, и он сможет превратить то, что вы только что выпустили, в пост или тред для X и Bluesky — черновиком или в очередь, чтобы вы одобрили.
- Подключение
- Удалённый MCP-сервер по Streamable HTTP: ничего не нужно устанавливать
- Вход
- API-ключ в заголовке Authorization
- Адрес сервера
https://calmposts.com/mcp- Где настраивается
- claude mcp add или .mcp.json в проекте
Что Claude Code умеет с calmposts
Claude Code и так читает ваш репозиторий, диффы и историю коммитов. С calmposts он может рассказать о них там, где это увидят люди: тред о релизе по списку изменений, короткий пост об исправленной ошибке, неделя постов в духе build in public по git log.
Он вызывает list_accounts, чтобы увидеть ваши каналы и правила каждой соцсети, get_limits — сколько постов осталось на сегодня и какой часовой пояс у пространства, и create_post — чтобы сохранить черновик, поставить пост в очередь или на время. Потом через list_posts и get_post он проверит, что вышло, а на тарифах с аналитикой прочитает get_post_metrics.
MCP-сервер для X (Twitter) даёт Claude Code 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 в Claude Code
Сначала проверьте ключ
Создайте ключ в 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: Одна команда с ключом
Самый быстрый способ: Claude Code запомнит адрес и заголовок для этого проекта.
В calmposts откройте «API и MCP», создайте ключ с нужными агенту правами и скопируйте его: он показывается один раз.
Добавьте сервер, подставив свой ключ вместо cp_live_…:
claude mcp add --transport http calmposts https://calmposts.com/mcp \ --header "Authorization: Bearer cp_live_…"Проверьте подключение; статус должен быть ✔ Connected:
claude mcp get calmpostsВ сессии /mcp показывает calmposts и его 11 инструментов:
/mcp
Способ 2: Общий .mcp.json для команды, ключ в окружении
Для общего репозитория: в файле только имя переменной, а ключ у каждого свой.
Каждый кладёт свой ключ в окружение, из которого запускает Claude Code, например в ~/.zshrc:
export CALMPOSTS_API_KEY=cp_live_…Закоммитьте .mcp.json в корень проекта:
{ "mcpServers": { "calmposts": { "type": "http", "url": "https://calmposts.com/mcp", "headers": {"Authorization": "Bearer ${CALMPOSTS_API_KEY}"} } } }Запустите claude в проекте и одобрите calmposts, когда Claude Code спросит; после этого claude mcp list покажет, что сервер подключён.
Вход: ключ или OAuth
Claude Code отправляет ключ заголовком в каждом запросе, больше ничего не нужно: ни браузера, ни страницы согласия. Поэтому всё работает и в запусках без интерфейса (claude -p), где нет панели /mcp для входа.
Дайте ключу только то, что нужно агенту: ключу, который пишет черновики, не нужно media:write. Отзовите ключ в «API и MCP» — и Claude Code потеряет доступ на следующем же вызове.
Claude Code умеет входить на удалённые серверы и через OAuth. Если calmposts уже подключён коннектором в вашем аккаунте claude.ai, Claude Code, вошедший под этим аккаунтом, подхватит его и покажет в /mcp. Для сервера, добавленного через claude mcp add, эта страница проверена с ключом.
Как проверить, что всё работает
- claude mcp get calmposts показывает ✔ Connected; при ошибке есть строка Issue с HTTP-статусом и ошибкой calmposts.
- /mcp в сессии показывает calmposts и его 11 инструментов.
- Спросите: «Что calmposts говорит про мои лимиты?» — Claude Code вызовет get_limits и перескажет тариф, остаток постов на сегодня и часовой пояс.
- Попросите черновик и откройте «Посты» в calmposts: он там, с источником mcp и именем вашего ключа в авторе.
Что попросить
Просите своими словами — агент сам выберет инструменты. Хорошо работают такие просьбы:
- «Прочитай CHANGELOG.md и напиши тред про v2.3 для X и Bluesky. Сохрани в calmposts черновиком».
- «Посмотри коммиты с пятницы и набросай три поста в духе build in public; поставь их в очередь calmposts».
- «Сколько постов у меня осталось на сегодня и когда ближайший свободный слот для моего аккаунта X?»
- «Покажи запланированные посты на следующую неделю и перенеси вторничный на среду, 09:30».
- «Вчерашний пост о релизе вышел везде? Если какой-то канал не прошёл, сначала скажи почему, потом повторяй».
Соцсети, треды и одобрение
Посты уходят в 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.
Что важно знать про Claude Code
- claude mcp add по умолчанию пишет в локальную область: сервер загружается только в том проекте, где вы выполнили команду, а ключ лежит в ~/.claude.json. Добавьте --scope user, чтобы calmposts был во всех проектах.
- Claude Code спрашивает разрешение перед вызовом инструмента, для которого нет правила. Правила вроде mcp__calmposts__list_accounts или mcp__calmposts__get_* разрешают читающим инструментам работать без вопроса; create_post и delete_post оставьте с подтверждением.
- В .mcp.json называйте переменную как угодно, кроме собственных учётных данных Claude Code: CALMPOSTS_API_KEY подставится, а заголовок из ANTHROPIC_API_KEY или ANTHROPIC_AUTH_TOKEN уйдёт пустым. Незаданная переменная остаётся текстом ${…}, и claude mcp list об этом предупреждает.
- list_posts по умолчанию возвращает 20 постов, максимум 100. Claude Code предупреждает, когда ответ инструмента длиннее 10 000 токенов; попросите меньше постов или период покороче.
Без 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"}}'Если что-то не работает
claude mcp get показывает ✘ Failed to connect
Прочитайте строку Issue: 401 с missing_api_key или invalid_api_key — дело в ключе. Проверьте написание заголовка, пробел после «Bearer» и что ключ начинается с cp_live_.
Leading or trailing whitespace in: headers.Authorization
В скопированном ключе пробел или перенос строки. Выполните claude mcp remove calmposts и добавьте сервер заново.
⏸ Pending approval
Сервер из .mcp.json ждёт вашего одобрения: запустите claude в проекте и одобрите calmposts.
MCP server calmposts already exists
Сервер с таким именем уже есть в этой области. Удалите его через claude mcp remove calmposts или добавьте новый с другим --scope.
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. Подключите аккаунт заново в разделе «Аккаунты» приложения.
Вопросы
Нужна ли Claude Code программа calmposts-mcp?
Нет. Claude Code подключается к хостинговому серверу по HTTP; кроме самого Claude Code ничего ставить не нужно.
Где Claude Code хранит ключ?
claude mcp add записывает его в ~/.claude.json — для этого проекта (локальная область) или для всех (--scope user). С .mcp.json и ${CALMPOSTS_API_KEY} в файле только имя переменной, а ключ остаётся в вашем окружении.
Может ли Claude Code опубликовать сразу?
Только если вы попросите опубликовать сейчас и и пространство, и ключ разрешают агентам публиковать. Иначе пост ждёт вашего одобрения, а сервер советует агентам выбирать очередь или черновик.
Работает ли это в claude -p и скриптах?
Да, с ключом: запуск без интерфейса не может войти через OAuth, а заголовку вход не нужен. Действует лимит ключа — 60 запросов в минуту.
Агент может отвечать, подписываться или писать в личку?
Нет. Таких инструментов нет: X запрещает это автоматизировать, а calmposts только пишет и планирует ваши собственные посты.
Нужны ли мне свои ключи X API?
Нет. calmposts публикует через своё одобренное приложение X, а плата X за посты входит в цену тарифа.
Документация Claude Code, по которой написана страница
calmposts — независимый сервис, он не связан с создателями Claude Code и не одобрен ими. Названия продуктов принадлежат их владельцам.
Пусть Claude Code спокойно постит за вас
Начните пробный период, подключите аккаунты, создайте ключ и дайте Claude Code адрес сервера.
Попробовать бесплатно