
If you're building agents that need to interact with X (Twitter), this is the cleanest path. xurl wraps the X API v2 in a CLI that handles OAuth2, posts, replies, search, DMs, media uploads, and account actions like follow/mute/block. The skill documentation is thorough about credential safety, explicitly forbidding agents from touching the ~/.xurl config file or exposing tokens in context. It supports multiple app configurations, so you can swap between dev and prod accounts cleanly. The shortcut commands (xurl post, xurl search) are more ergonomic than raw curl, and it accepts both post IDs and full URLs. Good for social monitoring bots, auto-responders, or anything that needs programmatic X access without wrestling with OAuth yourself.
$ npx -y skills add steipete/clawdis --skill xurl --agent claude-codeInstalls into .claude/skills of the current project.
Use xurl for X API work. Shortcut commands return JSON; raw mode works for any v2 endpoint.
~/.xurl holds tokens; check auth with xurl auth status instead of reading it.--verbose prints auth headers into tool output.xurl post "Hello world!"
xurl reply POST_ID "Nice."
xurl quote POST_ID "My take"
xurl delete POST_ID
xurl read POST_ID
xurl search "query" -n 20
xurl whoami
xurl user @handle
xurl timeline -n 20
xurl mentions -n 10
xurl like POST_ID
xurl unlike POST_ID
xurl repost POST_ID
xurl unrepost POST_ID
xurl bookmark POST_ID
xurl unbookmark POST_ID
xurl followers -n 20
xurl following -n 20
xurl follow @handle
xurl unfollow @handle
xurl block @handle
xurl unblock @handle
xurl mute @handle
xurl unmute @handle
xurl dm @handle "message"
xurl dms -n 10
POST_ID can be a full https://x.com/<user>/status/<id> URL.
xurl media upload image.jpg
xurl media upload clip.mp4
xurl media status MEDIA_ID
xurl post "caption" --media-id MEDIA_ID
Videos may need processing; poll media status.
xurl auth status
xurl auth apps list
xurl auth default
xurl auth default APP_NAME USERNAME
xurl auth apps remove APP_NAME
Per request:
xurl --app APP_NAME /2/users/me
xurl --auth oauth2 /2/users/me
xurl /2/users/me
xurl -X POST /2/tweets -d '{"text":"Hello world!"}'
xurl '/2/tweets/search/recent?query=openclaw&max_results=10'
Use raw mode when shortcuts do not cover the endpoint. Keep payloads in temp files for complex JSON.
xurl auth status.Sponsors