X Intel logo

X Intel

CommunityPopular
mateaix
x_intel

Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI.

Overview

Publishermateaix
Repositorymateclaw
Skill namex_intel
Stars
1.1K
Forks
337
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by mateaix on GitHub. Read the source before you install it.

Installation

Install the X Intel AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/mateaix/mateclaw/tree/dev/mateclaw-server/src/main/resources/skills/x_intel
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/mateaix/mateclaw.git /tmp/mateclaw
mkdir -p .claude/skills
cp -r /tmp/mateclaw/mateclaw-server/src/main/resources/skills/x_intel .claude/skills/x_intel
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable X Intel in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads X Intel on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so X Intel is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

x_intel — X (Twitter) information gathering

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:

  • looking up a single post by ID or URL
  • searching posts with the X search query syntax (from:user, lang:en, #hashtag, ...)
  • reading the agent operator's home timeline, mentions, bookmarks, likes
  • inspecting a user profile by handle
  • walking the social graph (who someone follows / is followed by)
  • raw read access to any X API v2 GET endpoint when the shortcuts don't fit

Credential safety (mandatory)

Critical rules when invoked inside an agent session:

  • Never read, print, parse, summarize, upload or quote ~/.xurl into chat context. It is a YAML token store.
  • Never ask the user to paste credentials/tokens into the conversation.
  • Never suggest or run the auth commands with inline secrets in an agent session.
  • Never pass --verbose / -v — it prints auth headers to stdout.
  • The only credential-touching command this skill ever runs is 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.


Install

The agent should verify, not install. Direct the user to install if missing.

bash
# 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:

bash
xurl --help
xurl auth status

User setup (user runs these, NOT the agent)

The agent must not perform these steps — they involve pasting secrets. Direct the user to this section verbatim.

  1. Open the X developer dashboard: https://developer.x.com/en/portal/dashboard
  2. In the app's User Authentication Settings, set the redirect URI to http://localhost:8080/callback and the app type to Web app, automated app or bot.
  3. Copy the app's Client ID and Client Secret.
  4. Register the app locally:
    bash
    xurl auth apps add my-app --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
  5. Authenticate (this opens a browser for OAuth 2.0 PKCE):
    bash
    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+):
    bash
    xurl auth oauth2 --app my-app YOUR_HANDLE
  6. Mark this app as the default so all commands use it:
    bash
    xurl auth default my-app
  7. Verify:
    bash
    xurl auth status
    xurl whoami

Most common mistake: omitting --app my-app from xurl auth oauth2. The OAuth token then lands in the built-in default profile, which has no client-id/client-secret, and every later read fails. Re-run xurl auth oauth2 --app my-app and xurl auth default my-app to fix.


Read-only command reference

All commands return JSON to stdout. The agent parses JSON directly; no extra tooling needed.

ActionCommand
Who is the bound accountxurl whoami
Look up a userxurl user @handle
Read one post (ID or URL)xurl read POST_ID
Search postsxurl search "QUERY" -n 10
Home timelinexurl timeline -n 20
Mentions of bound accountxurl mentions -n 20
Bookmarks listxurl bookmarks -n 20
Likes listxurl likes -n 20
Following listxurl following -n 50
Followers listxurl followers -n 50
Another user's graphxurl following --of HANDLE -n 20
Auth statusxurl auth status

Notes:

  • POST_ID accepts a full https://x.com/user/status/... URL — xurl extracts the ID.
  • Handles work with or without the leading @.

Search query language

X's search supports operators inside the quoted query string:

bash
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.


Raw v2 read access

For anything beyond the shortcuts, hit any v2 GET endpoint directly:

bash
# 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.


Common workflows

Profile a user

bash
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

Triage a trending term

bash
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

Catch up on activity

bash
xurl whoami
xurl mentions -n 20
xurl timeline -n 20
xurl bookmarks -n 10

Conversation context

bash
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

Output format

Every command emits X API v2 shape JSON to stdout:

json
{
  "data": { "id": "1234567890", "text": "Hello world!" },
  "includes": { "users": [{ "id": "...", "username": "..." }] }
}

Errors are also JSON:

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

The non-zero exit code distinguishes errors from empty results.


Agent workflow

  1. Verify prerequisites: xurl --help (the command exists) and xurl auth status (the user has at least one app with oauth2 tokens, marked ▸ as default).
  2. Parse 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.
  3. If 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.
  4. Start with the cheapest read first (xurl whoami / xurl user @handle / xurl search ... -n 3) to confirm reachability and the request shape.
  5. Treat 401 / 403 / 429 distinctly: 401 → re-auth needed, 403 → scope or plan, 429 → wait and retry (X rate-limits per-endpoint).
  6. Never paste ~/.xurl content back into the conversation, even when troubleshooting.
  7. When in doubt about cost: X's API has paid tiers and per-endpoint rate limits. Do not run unbounded loops or streams without the user's explicit confirmation.

Troubleshooting

SymptomCauseFix
auth status shows oauth2: (none) on defaultToken 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 OAuthApp type set to "Native App" in X dashboardChange to "Web app, automated app or bot"
UsernameNotFound / 403 right after OAuthX not returning username from /2/users/mexurl auth oauth2 --app my-app YOUR_HANDLE (xurl v1.1.0+)
401 on every readToken expired or wrong default appCheck xurl auth status — verify ▸ points to the app with oauth2 tokens
client-forbidden / client-not-enrolledX platform enrollmentDeveloper dashboard → Apps → Manage → Production environment
CreditsDepleted$0 balance on X APIBuy credits in Developer Console → Billing
429 on search/timelineHit per-endpoint rate limitPause, retry with smaller -n, or wait for the reset window

Notes

  • Cost: X API access is paid for meaningful usage. Many failures are plan or rate-limit problems, not skill problems.
  • Scopes: OAuth 2.0 tokens use broad scopes; a 403 on a specific read usually means the token is missing a scope — have the user re-run xurl auth oauth2.
  • Token refresh: OAuth 2.0 tokens auto-refresh; nothing to do.
  • Multiple apps: xurl --app NAME ... runs one read against a specific app without changing the default.
  • Token storage: ~/.xurl is YAML. Treat it like a private key. Never read or send it to LLM context.

Attribution

  • Underlying CLI: https://github.com/xdevplatform/xurl (X developer platform).
  • This skill wraps the CLI's read commands and documents agent-side safety rules. No code is shipped beyond this SKILL.md.

Frequently asked questions

What does the X Intel AI skill do?

Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI.

Why use X Intel on TypingMind?

Because you install it once and use it with any model. X Intel is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install X Intel in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/mateaix/mateclaw/tree/dev/mateclaw-server/src/main/resources/skills/x_intel. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use X Intel?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with X Intel?

As many as you like. As long as a model supports skills, you can use X Intel with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the X Intel AI skill free?

Yes. It is published on GitHub by mateaix under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇