Smmly

Площадка работает · постим в аккаунт сами, 280 знаков и до четырёх картинок

Постить в X из Cursor

Cursor публикует в ваш аккаунт X, не выходя из редактора: собрал строку про релиз — отправил. Всё остальное в этой паре — про тесноту. 280 знаков, до четырёх картинок, ссылка в тексте по умолчанию не пропускается, а правки у X нет вовсе: ни у нас, ни у самого API. Ниже фразы, которые работают, и то, на чём эта пара спотыкается чаще всего.

Что сказать Cursor, чтобы пост ушёл в X

запости в аккаунт с ярлыком «твиттер»: «Вышла 1.4.0 — теперь конфиг читается из проекта». Ссылку на релиз дай вторым сообщением

Cursor зовёт smmly_post с tags и полем firstComment. Ярлык здесь обязателен: в поле providers у инструмента только telegram, vk и max, и просьба «запости в X» без ярлыка обычно кончается отказом по схеме. Второе сообщение уходит ответом на ваш же пост — это штатный приём X и единственный способ дать ссылку, не поднимая цену самой публикации.

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

Полезная привычка именно для X: 280 знаков — предел площадки, и мы считаем по нему всех, без скидки на премиум. Текст, который агент собрал из строки коммита или заголовка PR, обычно длиннее, и отказ приходит на этапе постановки в очередь, строкой вида «текст 341 знак при пределе 280». Показ до отправки экономит круг: агент видит настоящую длину, а не «примерно влезет».

убери из текста переменные окружения, X считает их тикерами

Звучит дико, пока не наступишь. Всё, что стоит после доллара — `$PATH`, `$HOME`, `$SMMLY_MCP_TOKEN`, — читается как биржевой тикер, а больше одного за пост X не принимает. Текст, скопированный из README про переменные окружения, отбивается с прямой строкой «тикеров через доллар 3, X принимает только один». Проще всего переписать переменные словами или убрать доллар.

приложи скриншот из docs/img и запости

Файл в репозитории публичного адреса не имеет, поэтому Cursor кладёт его через smmly_upload_media и передаёт ответ полем media. Картинок в пост влезает до четырёх, каждая не тяжелее 5 МБ — больше X принимает только чанковой загрузкой, которой мы не делаем. Видео в X мы не отправляем вовсе: пост с роликом уедет текстом и картинками, ролик просто не поедет.

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

  1. Подключите Cursor к Smmly

    Адрес и заголовок в mcp.json, перезапуск редактора. Где лежит файл, чем глобальный отличается от проектного и почему envFile для удалённого сервера бесполезен — на странице клиента.

    Подключение Cursor →
  2. Подключите аккаунт X — двумя способами

    В кабинете, в разделе каналов: «Войти через X» — экран согласия, право писать посты, возврат, аккаунт уже в списке, ключей вы не видите вовсе. Запасной путь — своё приложение на developer.x.com: права «Read and write», тип «Web App, Automated App or Bot», четыре ключа сюда. Разница не в удобстве, а в том, кто платит за публикации: у X с февраля 2026 нет бесплатного тарифа, и на своих ключах счёт идёт вам, а не нам.

    Подключить каналы →
  3. Повесьте на аккаунт ярлык — без него никак

    X не адресуется по площадке: в поле providers инструмента его нет, там только телеграм, ВК и MAX. Остаются ярлык и точечный id, и ярлык удобнее — «запости в твиттер» агент понимает сразу. Ставится в кабинете или той же фразой: «повесь на аккаунт X ярлык твиттер».

Что доезжает в X

Длина поста
280 знаков — считаем по обычному аккаунту, не по премиуму
Картинки
до 4, каждая до 5 МБ
Видео
не отправляем
Второе сообщение
есть — уходит ответом на ваш же пост
Правка и снос
нет: правки постфактум у API X не существует вовсе
Ключи
своё приложение X или вход кнопкой

🔴 В поле providers X нет: инструмент знает там telegram, vk и max, и providers: ["x"] будет отказом по схеме. Аккаунты X адресуются ЯРЛЫКОМ или channelIds. Остальное упирается в 280 знаков: агент, который пишет пост «как обычно», почти всегда получает отказ валидатора ещё до очереди.

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

Ссылка на релиз — это отказ, а не опечатка

Пост со ссылкой стоит у X примерно в тринадцать раз дороже обычного, поэтому по умолчанию мы такие не пропускаем и объясняем почему. Для Cursor это встречается в первый же день: строка про релиз без ссылки на тег или PR почти не пишется. Рабочих путей два. Первый — дать ссылку вторым сообщением: оно уходит ответом на ваш пост, лежит там же и стоит как обычный. Второй — включить на канале галочку «Разрешить ссылки», если вы согласны с ценой. Учтите, что ссылкой мы считаем и голый домен: `smmly.ru` в тексте сработает так же, как полный адрес.

280 знаков считаются по обычному аккаунту

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

Повтор после таймаута в X опаснее, чем везде

У создания поста в X нет ни ключа идемпотентности, ни дешёвого способа переспросить «а он создался?». Поэтому неизвестный исход мы объявляем окончательным: если запрос ушёл, а ответ не вернулся, пост помечается ошибкой и НЕ повторяется — иначе в ленте оказались бы два одинаковых поста, оплаченных дважды. В ответе агенту так и будет написано: проверьте ленту. Cursor же после долгой паузы склонен позвать инструмент ещё раз; в пределах пяти минут это безопасно — точно такая же просьба вернёт уже созданный замысел, — а дальше это будет второй пост, и снять его мы не сможем.

Опубликованное в X не правится и не удаляется

Тут даже говорить не о чем: правки постфактум у API X не существует вовсе, кнопка Edit живёт только в приложении и только у премиума, а снос мы не реализуем. Поэтому smmly_edit_post и smmly_cancel_post по строке X отвечают отказом — и в том же ответе телеграм из соседней строки может спокойно переписаться, это нормально. Единственная страховка — отложка: поставьте пост на несколько минут вперёд и вычитайте его в календаре, пока он ещё замысел, а не запись в ленте.

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

Почему «запости это в X» не срабатывает?

Потому что агент честно кладёт в поле providers значение "x", а инструмент такого значения не знает: там перечислены телеграм, ВК и MAX, и приходит отказ по схеме. Это не поломка подключения — аккаунт X виден в списке каналов и постить в него можно, просто адресуется он ярлыком или точечным id. Скажите «запости в твиттер», где «твиттер» — ярлык, который вы повесили на аккаунт.

Кто платит за публикации в X?

Зависит от того, как подключён аккаунт. Вход кнопкой идёт через наше приложение — за эти посты платим мы. Свои четыре ключа с developer.x.com означают ваше приложение и ваш счёт. Разница заметна как раз на постах со ссылкой: они примерно в тринадцать раз дороже обычных, и именно поэтому по умолчанию заперты.

Как отправить в X кусок кода?

Никак осмысленно. Разметки X не понимает ни в каком виде — теги мы снимаем перед отправкой, иначе в ленте окажется `<b>` буквами, — а 280 знаков не оставляют места сниппету. Если код нужен, отдавайте его картинкой (до четырёх, каждая до 5 МБ) или ссылкой на gist во втором сообщении.

Один пост в X и в телеграм — одной фразой?

Да, если на аккаунте и на канале стоит общий ярлык. Только текст разводите сразу: то, что нормально читается в телеграме, в X почти наверняка не влезет, а проверка идёт по всем площадкам до записи — не прошло по одной, не создаётся ничего. Поле textByProvider для этого и заведено, и Cursor умеет отдать два варианта одним вызовом.

Ссылка на опубликованный пост придёт?

Да, вида x.com/ваш_ник/status/… — ник мы запоминаем при подключении, потому что по внутреннему id адрес в X не собирается. Спросите «что с последним постом»: в ответе будет состояние по каждому каналу и адрес опубликованного. Метрики поста мы тоже снимаем — показы, лайки, репосты и ответы, — но их видно в кабинете, а не в переписке с агентом.

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

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

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

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

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

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