x

Access X (Twitter) via API v2: user profiles, timelines, threads, search, bookmarks, likes, and posting. Use when asked to: (1) get user info or profile, (2) fetch someone's tweets/timeline, (3) extract conversation threads, (4) search for tweets about a topic, (5) retrieve bookmarks, (6) get liked tweets, (7) post tweets, or (8) lookup tweets by ID or URL.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "x" with this command: npx skills add odrobnik/x-api-v2

X (Twitter) API

Interact with X via API v2. Pure Python stdlib — no dependencies.

Features

Public data (bearer token):

  • User profiles (bio, followers, tweets count)
  • User timelines (with filters: exclude retweets/replies)
  • Conversation threads (self-threads by same author)
  • Search recent tweets (last 7 days)
  • Single/batch tweet lookup
  • Tweet metrics (likes, retweets, replies)

User context (OAuth 2.0):

  • Bookmarks
  • Liked tweets
  • Post tweets

Setup

See SETUP.md for credentials setup (bearer token + optional OAuth 2.0).

Usage

User Info

# Get user profile (bio, followers, verification status)
python3 {baseDir}/scripts/x.py user steipete
python3 {baseDir}/scripts/x.py user elonmusk

Timeline

# Get user's recent tweets
python3 {baseDir}/scripts/x.py timeline steipete --max 50

# Exclude retweets
python3 {baseDir}/scripts/x.py timeline steipete --max 100 --exclude retweets

# Exclude both retweets and replies
python3 {baseDir}/scripts/x.py timeline steipete --max 100 --exclude retweets,replies

Threads

# Get conversation thread (self-thread by same author)
python3 {baseDir}/scripts/x.py thread https://x.com/steipete/status/123456
python3 {baseDir}/scripts/x.py thread 123456789

# Note: Only searches last 7 days (recent search). For older threads, need full-archive search.

Search

# Search recent tweets (last 7 days)
python3 {baseDir}/scripts/x.py search "OpenClaw" --max 20
python3 {baseDir}/scripts/x.py search "from:steipete OpenAI" --max 50

# Advanced search operators work (from:, to:, -filter:retweets, etc.)

Tweet Lookup

# Single tweet
python3 {baseDir}/scripts/x.py tweet 2025504475100614695
python3 {baseDir}/scripts/x.py tweet https://x.com/steipete/status/2025504475100614695

# Multiple tweets (batch)
python3 {baseDir}/scripts/x.py tweets 123456 789012 345678

Bookmarks (OAuth Required)

# One-time auth setup
python3 {baseDir}/scripts/x.py auth

# Get your bookmarks
python3 {baseDir}/scripts/x.py bookmarks --max 100

Likes (OAuth Required)

# Get user's liked tweets (requires OAuth)
python3 {baseDir}/scripts/x.py likes steipete --max 50

Posting (OAuth Required)

# Post a tweet
python3 {baseDir}/scripts/x.py post "Hello from OpenClaw! 🦞"

# Note: 280 character limit enforced by API

Output Format

All commands output clean, readable text:

👤 Peter Steinberger 🦞 (@steipete)
   ID: 25401953
   Bio: Polyagentmorous ClawFather...
   👥 382,854 followers · 2,241 following · 135,096 tweets
   https://x.com/steipete

🐦 @VictorKnox99 I think my stance on using AI here is pretty clear.
   📅 2026-02-22 09:34:33
   ❤️  5  🔁 0  💬 0
   https://x.com/steipete/status/2025504475100614695

Common Use Cases

Research user activity:

# Get someone's recent thoughts on a topic
python3 {baseDir}/scripts/x.py timeline steipete --max 100 --exclude retweets | grep -i openai

Monitor discussions:

# Search for OpenClaw mentions
python3 {baseDir}/scripts/x.py search "OpenClaw" --max 100

Extract threads:

# Get full thread for analysis
python3 {baseDir}/scripts/x.py thread <tweet_url> > thread.txt

Archive bookmarks:

# Export bookmarks to file
python3 {baseDir}/scripts/x.py bookmarks --max 100 > bookmarks.txt

Rate Limits

X API enforces rate limits per 15-minute window:

EndpointApp-Only (Bearer)User Context (OAuth)
User lookup900900
User timeline~1,500~900
Search450300
Tweet lookup900900
BookmarksN/A~180
LikesN/A~75

Headers in responses:

  • x-rate-limit-limit — max requests allowed
  • x-rate-limit-remaining — requests left in window
  • x-rate-limit-reset — Unix timestamp when limit resets

Design tips:

  • Cache results locally (deduplication helps but isn't guaranteed)
  • Add delays between requests (avoid hitting limits)
  • Use batch endpoints when possible (tweets for multiple IDs)

Billing & Costs

Pay-per-usage model:

  • Buy credits in Developer Console
  • Charged per unique tweet/user returned
  • 24-hour deduplication — same tweet fetched twice in a UTC day = charged once
  • Set spending limits to control costs
  • Monitor usage: /2/usage/tweets endpoint or console

What's billable:

  • Tweet lookups
  • Search results
  • Timeline requests
  • Bookmarks retrieval

What's NOT billable:

  • Failed requests (4xx/5xx errors)
  • Re-fetching same tweet within 24h UTC window (deduplicated)

See references/pricing.md for detailed pricing info.

Search Operators

X API search supports advanced operators:

OperatorExampleDescription
from:from:steipeteTweets from user
to:to:steipeteReplies to user
--from:steipeteExclude user
-filter:-filter:retweetsExclude retweets
filter:filter:verifiedOnly verified users
lang:lang:enLanguage filter
since:since:2026-02-01After date
until:until:2026-02-20Before date

Example:

# OpenClaw tweets from verified users, excluding retweets
python3 {baseDir}/scripts/x.py search "OpenClaw filter:verified -filter:retweets" --max 50

Limitations

Recent search only:

  • search and thread commands only cover last 7 days
  • Full-archive search requires Pro tier ($5,000/mo) or pay-per-usage

Bookmarks/likes require OAuth:

  • Bearer token alone can't access private user data
  • Need OAuth 2.0 user context (one-time setup)

No Watch Later equivalent:

  • X API doesn't expose "Watch Later" or similar lists
  • Use bookmarks as alternative

Rate limits still apply:

  • Pay-per-usage removes monthly caps but rate limits per 15-min window remain
  • Design for retries with exponential backoff

Troubleshooting

403 Forbidden:

  • Check credentials file exists and has valid bearer_token
  • Ensure endpoint doesn't require OAuth (bookmarks, likes, posting need OAuth)

429 Too Many Requests:

  • Hit rate limit — wait until x-rate-limit-reset time
  • Reduce --max values
  • Add delays between requests

No results found:

  • Recent search only covers 7 days — thread/search may miss older content
  • User may have no tweets or privacy settings blocking access

Authentication errors (OAuth):

  • Ensure oauth2.json has correct client_id/client_secret
  • Re-run x.py auth to refresh tokens
  • Check scopes in Developer Portal match required scopes

Notes

  • Pure stdlib — no pip dependencies, uses urllib + json
  • Works offline — caches nothing, always fetches fresh data
  • Thread-safe — stateless CLI, safe for parallel invocations
  • Deduplication — X API deduplicates within 24h UTC day (soft guarantee)
  • Output encoding — UTF-8, handles emoji and international characters

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Ai Competitor Analyzer

提供AI驱动的竞争对手分析,支持批量自动处理,提升企业和专业团队分析效率与专业度。

Registry SourceRecently Updated
General

Ai Data Visualization

提供自动化AI分析与多格式批量处理,显著提升数据可视化效率,节省成本,适用企业和个人用户。

Registry SourceRecently Updated
General

Ai Cost Optimizer

提供基于预算和任务需求的AI模型成本优化方案,计算节省并指导OpenClaw配置与模型切换策略。

Registry SourceRecently Updated