{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}

Ксурл

X/Twitter через CLI xurl: публикация, поиск, DM, медиа, v2 API.

Метаданные навыки

Источник Встроенный (установлен по умолчанию)
Путь навыки/социальные сети/xurl
Версия 1.1.1
Автор xdevplatform + openclaw + Агент Гермеса
Лицензия Массачусетский технологический институт
Платформы Linux, MacOS
Теги twitter, x, social-media, xurl, official-api

Справочник: полный SKILL.md:::информация

Ниже приведено полное определение навыков, которые Hermes загружает при его активации. Это то, что агент видит в качестве инструкций, когда навыки активны.

xurl — X (Twitter) API через официальный CLI

xurl — это официальная платформа CLI X Developer для X API. Он поддерживает сокращенные команды для выполнения основных действий и сырой локон-подобный доступ к любой конечной точке v2. Все команды возвращают JSON в стандартный вывод.

Используйте этот навык для: - публикации, атаки, цитирования, удаление постов - осмотр постов и чтение ленты/упоминаний - лайков, репостов, закладок - подписки, отписки, блокировка, отключение звука - направлять сообщения - загрузка медиа (изображений и видео) - внешний доступ к любой конечной точке X API v2 - работа с некоторыми приложениями/учетными записями

Этот навык заменяет более старые навыки xitter (который оборачивал дополнительный Python CLI). xurl обеспечивает платформу X Developer, поддерживает OAuth 2.0 PKCE с автообновлением и, следовательно, значительно увеличивает поверхность API.


Секреты безопасности (ОБЯЗАТЕЛЬНО)

Критические правила при работе внутри сессии агента/LLM:

Запрещенные флаги в команде агентов (они включают встроенные секреты): --bearer-token, --consumer-key, --consumer-secret, --access-token, --token-secret, --client-id, --client-secret

Регистрация учетных данных в приложениях и ротация учетных данных должны выполняться вручную, вне сеанса агента. После регистрации учетных данных пользователь аутентифицируется с помощью xurl auth oauth2 — также вне сеанса агента. Токены указаны в ~/.xurl в YAML. Каждое приложение содержит изолированные токены. Токены OAuth 2.0 обновляются автоматически.


Установка

Выберите метод ОДИН. В Linux проще всего использовать Shell-скрипт или go install.

# Shell-скрипт (устанавливается в ~/.local/bin, без sudo, работает на Linux + macOS)
curl -fsSL https://raw.githubusercontent.com/xdevplatform/xurl/main/install.sh | bash

# Homebrew (macOS)
brew install --cask xdevplatform/tap/xurl

# npm
npm install -g @xdevplatform/xurl

# Go
go install github.com/xdevplatform/xurl@latest

проверить:

xurl --help
xurl auth status

Если установлен xurl, но auth status не показывает приложения или токены, пользователю необходимо пройти аутентификацию вручную — см. следующий раздел.


Одноразовая настройка пользователя (пользователь выполняет это вне агента)

Эти действия следует выполнять непосредственно, НЕ агентом, поскольку они включают в себя вставку секретов. Напишите пользователя в этот блок; не выполняйте его за это.

  1. Создайте или внедрите приложение на https://developer.x.com/en/portal/dashboard.
  2. Установите URI перенаправления на http://localhost:8080/callback.
  3. Скопируйте приложения Client ID и Client Secret.
  4. Зарегистрируйте приложение локально (выполняет пользователь): bash xurl auth apps add my-app --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
  5. Аутентифицируйтесь (укажите --app, чтобы привязать токен к вашему приложению): bash xurl auth oauth2 --app my-app (Этот браузер обеспечивает поток OAuth 2.0 PKCE.)

Если X возвращает ошибку UsernameNotFound или 403 при пост-OAuth запросе /2/users/me, передайте свой дескриптор явно (xurl v1.1.0+): bash xurl auth oauth2 --app my-app YOUR_USERNAME Это привязывает токен к вашему дескриптору и пропускает сломанный вызов /2/users/me. 6. Установите приложение по умолчанию, чтобы все команды использовали его: bash xurl auth default my-app 7. Проверьте: bash xurl auth status xurl whoami После этого агент может использовать любую команду ниже без дополнительных настроек. Токены OAuth 2.0 обновляются автоматически.

Распространенная ловушка: Если вы пропустите --app my-app в xurl auth oauth2, токен OAuth сохраняется во встроенном профиле приложения default — в котором нет client-id или client-secret. Команды завершат ошибки аутентификации, даже если поток OAuth, казалось бы, прошел успешно. Если вы столкнулись с этим, повторно выполните xurl auth oauth2 --app my-app и xurl auth default my-app.


Краткий справочник

Действие Команда
Опубликовать xurl post "Привет, мир!"
Ответить xurl ответ POST_ID "Хороший пост!"
Процитировать xurl цитата POST_ID "Мое мнение"
Удалить пост xurl удалить POST_ID
Прочитать пост xurl читать POST_ID
Поиск постов xurl search "QUERY" -n 10
Кто я xurl whoami
Найти пользователя пользователь xurl @handle
Домашняя лента xurl timeline -n ​​20
Упоминания xurl упоминает -n 10
Лайк / Отменить лайк xurl как POST_ID / xurl как POST_ID
Репост / Отменить xurl repost POST_ID / xurl unpost POST_ID
Закладка / Удалить xurl закладка POST_ID / xurl снять закладку POST_ID
Список закладок / лайков xurl bookmarks -n 10 / xurl нравится -n 10
Подписаться / Отписаться xurl следовать за @handle / xurl отписаться от @handle
Подписки / Подписчики xurl Follow -n 20 / xurl Followers -n 20
Заблокировать / Разблокировать xurl заблокировать @handle / xurl разблокировать @handle
Выключить звук / Включить xurl отключить звук @handle / xurl включить звук @handle
Отправить в Директ xurl dm @handle "сообщение"
Список DM xurl dms -n 10
Загрузить медиа путь загрузки мультимедиа xurl/to/file.mp4
Статус медиа xurl медиа-статус MEDIA_ID
Список приложений список приложений для аутентификации xurl
Удалить приложение приложения xurl auth удаляют ИМЯ
Установить приложение по умолчанию xurl auth default APP_NAME [ИМЯ ПОЛЬЗОВАТЕЛЯ]
Приложение для одного запроса xurl --ИМЯ приложения /2/users/me
Статус аутентификации статус аутентификации xurl

Примечания: - POST_ID также принимает полные URL-адреса (например, https://x.com/user/status/1234567890) — xurl извлекает идентификатор. - Имена пользователей работают с ведущим @ или без него.


Детали команда

Публикация

xurl post "Hello world!"
xurl post "Check this out" --media-id MEDIA_ID
xurl post "Thread pics" --media-id 111 --media-id 222

xurl reply 1234567890 "Great point!"
xurl reply https://x.com/user/status/1234567890 "Agreed!"
xurl reply 1234567890 "Look at this" --media-id MEDIA_ID

xurl quote 1234567890 "Adding my thoughts"
xurl delete 1234567890

Чтение и поиск

xurl read 1234567890
xurl read https://x.com/user/status/1234567890

xurl search "golang"
xurl search "from:elonmusk" -n 20
xurl search "#buildinpublic lang:en" -n 15

Пользователи, лента, отзывы

xurl whoami
xurl user elonmusk
xurl user @XDevelopers

xurl timeline -n 25
xurl mentions -n 20

Вовлеченность

xurl like 1234567890
xurl unlike 1234567890

xurl repost 1234567890
xurl unrepost 1234567890

xurl bookmark 1234567890
xurl unbookmark 1234567890

xurl bookmarks -n 20
xurl likes -n 20

Социальный граф

xurl follow @XDevelopers
xurl unfollow @XDevelopers

xurl following -n 50
xurl followers -n 50

# Граф другого пользователя
xurl following --of elonmusk -n 20
xurl followers --of elonmusk -n 20

xurl block @spammer
xurl unblock @spammer
xurl mute @annoying
xurl unmute @annoying

Прямые сообщения

xurl dm @someuser "Hey, saw your post!"
xurl dms -n 25

Загрузка медиа

# Автоопределение типа
xurl media upload photo.jpg
xurl media upload video.mp4

# Явный тип/категория
xurl media upload --media-type image/jpeg --category tweet_image photo.jpg

# Видео требуют обработки на сервере — проверьте статус (или опрашивайте)
xurl media status MEDIA_ID
xurl media status --wait MEDIA_ID

# Полный рабочий процесс
xurl media upload meme.png                  # возвращает media id
xurl post "lol" --media-id MEDIA_ID

Сырой доступ к API

Сокращения охватывают массовые операции. Для всего остального используйте сырой Curl-подобный режим для любой конечной точки X API v2:

# GET
xurl /2/users/me

# POST с JSON-телом
xurl -X POST /2/tweets -d '{"text":"Hello world!"}'

# DELETE / PUT / PATCH
xurl -X DELETE /2/tweets/1234567890

# Пользовательские заголовки
xurl -H "Content-Type: application/json" /2/some/endpoint

# Принудительная потоковая передача
xurl -s /2/tweets/search/stream

# Полные URL также работают
xurl https://api.x.com/2/users/me

Глобальные флаги

Флаг Короткий Описание
--приложение Использовать конкретное зарегистрированное приложение (переопределяет умолчание)
--аутентификация Принудительный тип аутентификации: oauth1, oauth2 или app
--имя пользователя Какую учетную запись использовать OAuth2 (если существует несколько)
--verbose -v Запрещено на сессиях агента — раскрывает заголовки аутентификации
--трассировка Добавить заголовок трассировки X-B3-Flags: 1

Потоковая передача

Конечные точки потоковой передачи развиваются автоматически. К числу известных относятся:

Принудительная потоковая передача на любой конечной точке с помощью -s.


Формат

Все команды возвращают JSON в стандартный вывод. Структура соответствует X API v2:

{ "data": { "id": "1234567890", "text": "Hello world!" } }

Ошибки также в JSON:

{ "errors": [ { "message": "Not authorized", "code": 403 } ] }

Типичные рабочие процессы

Публикация с изображением

xurl media upload photo.jpg
xurl post "Check out this photo!" --media-id MEDIA_ID

Ответ в разговоре

xurl read https://x.com/user/status/1234567890
xurl reply 1234567890 "Here are my thoughts..."

Поиск и взаимодействие

xurl search "topic of interest" -n 10
xurl like POST_ID_FROM_RESULTS
xurl reply POST_ID_FROM_RESULTS "Great point!"

Проверка своей активности

xurl whoami
xurl mentions -n 20
xurl timeline -n 20

Несколько приложений (учетные данные предварительно настроены вручную)

xurl auth default prod alice               # prod приложение, пользователь alice
xurl --app staging /2/users/me             # разовый запрос к staging

Обработка ошибок


Рабочий процесс агента

  1. Проверьте предварительные требования: xurl --help и xurl auth status.
  2. Проверьте, есть ли у приложения по умолчанию учетные данные. Разберите вывод auth status. Приложение по умолчанию помечено . Если приложение по умолчанию показывает oauth2: (none), но другое приложение имеет действительного пользователя oauth2, скажите пользователю выполнить xurl auth default <that-app>, чтобы исправить это. Это самая распространенная ошибка настройки — пользователь добавил приложение с пользовательским именем, но никогда не устанавливал его по умолчанию, поэтому xurl продолжает пытаться использовать пустой профиль default.
  3. Если аутентификация полностью отсутствует, остановитесь и направьте пользователя в раздел «Одноразовая настройка пользователя» — НЕ пытайтесь регистрировать приложения или передавать секреты самостоятельно.
  4. Начните с дешевого чтения (xurl whoami, xurl user @handle, xurl search... -n 3), чтобы подтвердить доступность.
  5. Подтвердите целевой пост/пользователя и намерение пользователя перед любым действием записи (пост, ответ, лайк, репост, DM, подписка, блокировка, удаление).
  6. Используйте вывод JSON напрямую — каждый ответ уже структурирован.
  7. Никогда не вставляйте содержимое ~/.xurl обратно в разговор.

Устранение неполадок

Симптом Причина Исправление
Ошибки аутентификации после успешного потока OAuth Токен сохранен в приложение default (нет client-id/secret) вместо вашего именованного приложения xurl auth oauth2 --app my-app затем xurl auth default my-app
unauthorized_client во время OAuth Тип приложения установлен на «Native App» в панели X Измените на «Web app, automated app or bot» в настройках аутентификации пользователя
UsernameNotFound или 403 на /2/users/me сразу после OAuth X ненадежно возвращает имя пользователя из /2/users/me Повторно выполните xurl auth oauth2 --app my-app YOUR_USERNAME (xurl v1.1.0+), чтобы передать handle явно
401 на каждом запросе Срок действия токена истек или неправильное приложение по умолчанию Проверьте xurl auth status — убедитесь, что указывает на приложение с токенами oauth2
client-forbidden / client-not-enrolled Проблема с регистрацией на платформе X Панель → Apps → Manage → Переместить в пакет «Pay-per-use» → Production environment
CreditsDepleted Нулевой баланс на X API Купите кредиты (мин. $5) в Developer Console → Billing
media processing failed при загрузке изображения Категория по умолчанию — amplify_video Добавьте --category tweet_image --media-type image/png
Два значения «Client Secret» в панели X Баг интерфейса — первое на самом деле Client ID Подтвердите на странице «Keys and tokens»; ID заканчивается на MTpjaQ

Примечания


Атрибуция