ワンクリックで
x-intel
Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Test fixture for SkillBundleMaterializer.
跨平台比价与购物推荐 / Cross-platform price comparison. 淘宝 / 京东 / 天猫 / 拼多多商品聚合搜索 + 拍图识物。需要先启用 ckjia-shopping MCP server 并配置 CKJIA_MCP_KEY 才能用。
根据一句业务需求,自动规划并创建一组分工明确的数字员工(Agent),再把他们编排成一条工作流,无需逐个手工创建。
Debug Node.js via --inspect + Chrome DevTools Protocol CLI.
Author SKILL.md skills: frontmatter, validator limits, structure.
Dark-themed SVG architecture/cloud/infra diagrams as HTML.
| name | x_intel |
| description | Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI. |
| nameZh | X 情报采集 |
| nameEn | X Intel |
| version | 1.0.0 |
| icon | 🐦 |
| author | MateClaw |
| optional | true |
| tags | ["x","twitter","social-media","research","xurl"] |
| platforms | ["linux","macos"] |
| dependencies | {"commands":["xurl"],"tools":["execute_shell_command"]} |
x_intel lets an agent pull posts, search results, timelines and user profiles from X (Twitter) through xurl, the X developer platform's official CLI. This skill is read-only by design — it intentionally omits posting, replying, deleting, DM-sending and any other write surface. For a separate publishing skill, see follow-up work.
Use this skill for:
from:user, lang:en, #hashtag, ...)Critical rules when invoked inside an agent session:
~/.xurl into chat context. It is a YAML token store.--verbose / -v — it prints auth headers to stdout.xurl auth status (status only, no secrets).Forbidden flags in any agent-issued command (each accepts inline secrets):
--bearer-token, --consumer-key, --consumer-secret, --access-token, --token-secret, --client-id, --client-secret.
App registration and the OAuth 2.0 PKCE flow must be performed by the user outside the agent session (see "User setup" below). Tokens persist in ~/.xurl (YAML); OAuth 2.0 refreshes automatically.
The agent should verify, not install. Direct the user to install if missing.
# Shell script (Linux + macOS, installs to ~/.local/bin, no sudo)
curl -fsSL https://raw.githubusercontent.com/xdevplatform/xurl/main/install.sh | bash
# Homebrew (macOS)
brew install --cask xdevplatform/tap/xurl
# Go (cross-platform)
go install github.com/xdevplatform/xurl@latest
Verify:
xurl --help
xurl auth status
The agent must not perform these steps — they involve pasting secrets. Direct the user to this section verbatim.
http://localhost:8080/callback and the app type to Web app, automated app or bot.xurl auth apps add my-app --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
xurl auth oauth2 --app my-app
If X returns UsernameNotFound or a 403 on the post-OAuth /2/users/me lookup, pass the handle explicitly (xurl v1.1.0+):
xurl auth oauth2 --app my-app YOUR_HANDLE
xurl auth default my-app
xurl auth status
xurl whoami
Most common mistake: omitting
--app my-appfromxurl auth oauth2. The OAuth token then lands in the built-indefaultprofile, which has no client-id/client-secret, and every later read fails. Re-runxurl auth oauth2 --app my-appandxurl auth default my-appto fix.
All commands return JSON to stdout. The agent parses JSON directly; no extra tooling needed.
| Action | Command |
|---|---|
| Who is the bound account | xurl whoami |
| Look up a user | xurl user @handle |
| Read one post (ID or URL) | xurl read POST_ID |
| Search posts | xurl search "QUERY" -n 10 |
| Home timeline | xurl timeline -n 20 |
| Mentions of bound account | xurl mentions -n 20 |
| Bookmarks list | xurl bookmarks -n 20 |
| Likes list | xurl likes -n 20 |
| Following list | xurl following -n 50 |
| Followers list | xurl followers -n 50 |
| Another user's graph | xurl following --of HANDLE -n 20 |
| Auth status | xurl auth status |
Notes:
POST_ID accepts a full https://x.com/user/status/... URL — xurl extracts the ID.@.X's search supports operators inside the quoted query string:
xurl search "from:elonmusk -is:retweet" -n 20
xurl search "#buildinpublic lang:en since:2026-01-01" -n 25
xurl search "OR" -n 10 # literal OR — must be quoted
xurl search "(rust OR go) lang:en" -n 10
xurl search "to:NASA -is:reply" -n 10
Common operators: from:, to:, @, #, is:retweet, is:reply, is:quote, lang:, since:, until:, has:media, has:links. See the X search syntax docs for the full list.
For anything beyond the shortcuts, hit any v2 GET endpoint directly:
# Public user fields
xurl /2/users/by/username/elonmusk?user.fields=public_metrics,description,verified
# Single tweet with metrics + author expansion
xurl /2/tweets/1234567890?tweet.fields=public_metrics,created_at&expansions=author_id
# Recent search with extra fields (paid tier)
xurl /2/tweets/search/recent?query=langchain&tweet.fields=created_at,public_metrics&max_results=25
# Full URLs also work
xurl https://api.x.com/2/users/me
Streaming endpoints are auto-detected; force with -s if needed. Streaming endpoints can be expensive — do not start one without confirming intent with the user.
xurl user @handle
xurl /2/users/by/username/handle?user.fields=public_metrics,description,verified,created_at
xurl following --of handle -n 20 # who they pay attention to
xurl search "topic lang:en -is:retweet" -n 25
# Pick interesting IDs from the JSON, then drill in:
xurl read 1234567890
xurl user @ORIGINAL_POSTER
xurl whoami
xurl mentions -n 20
xurl timeline -n 20
xurl bookmarks -n 10
xurl read https://x.com/user/status/1234567890
# Conversation expansion via raw v2
xurl /2/tweets/search/recent?query=conversation_id:1234567890&max_results=25
Every command emits X API v2 shape JSON to stdout:
{
"data": { "id": "1234567890", "text": "Hello world!" },
"includes": { "users": [{ "id": "...", "username": "..." }] }
}
Errors are also JSON:
{ "errors": [ { "message": "Not authorized", "code": 403 } ] }
The non-zero exit code distinguishes errors from empty results.
xurl --help (the command exists) and xurl auth status (the user has at least one app with oauth2 tokens, marked ▸ as default).auth status output before any other command. If the default app shows oauth2: (none) but a non-default app has valid tokens, instruct the user to run xurl auth default <that-app> — this is the most common config glitch and does not require a re-login.auth status shows no apps or no tokens, stop. Tell the user to follow the "User setup" section. Do not attempt to register apps or run any auth flow yourself.xurl whoami / xurl user @handle / xurl search ... -n 3) to confirm reachability and the request shape.~/.xurl content back into the conversation, even when troubleshooting.| Symptom | Cause | Fix |
|---|---|---|
auth status shows oauth2: (none) on default | Token saved to built-in default profile (no client-id/secret) | Re-run xurl auth oauth2 --app my-app then xurl auth default my-app |
unauthorized_client during OAuth | App type set to "Native App" in X dashboard | Change to "Web app, automated app or bot" |
UsernameNotFound / 403 right after OAuth | X not returning username from /2/users/me | xurl auth oauth2 --app my-app YOUR_HANDLE (xurl v1.1.0+) |
| 401 on every read | Token expired or wrong default app | Check xurl auth status — verify ▸ points to the app with oauth2 tokens |
client-forbidden / client-not-enrolled | X platform enrollment | Developer dashboard → Apps → Manage → Production environment |
CreditsDepleted | $0 balance on X API | Buy credits in Developer Console → Billing |
| 429 on search/timeline | Hit per-endpoint rate limit | Pause, retry with smaller -n, or wait for the reset window |
xurl auth oauth2.xurl --app NAME ... runs one read against a specific app without changing the default.~/.xurl is YAML. Treat it like a private key. Never read or send it to LLM context.