interacting-with-x
Interacting with X
Enables agents to operate on X (Twitter) with full interaction capabilities.
Setup
Add to .env:
X_API_KEY=your_api_key
X_API_SECRET=your_api_secret
X_ACCESS_TOKEN=your_access_token
X_ACCESS_TOKEN_SECRET=your_access_token_secret
X_BEARER_TOKEN=your_bearer_token
Get credentials from https://developer.x.com/en/portal/dashboard
Operations
Post a Tweet
# Simple tweet
uv run python .skills/interacting-with-x/scripts/post.py "Hello from Central"
# Thread (multiple tweets chained)
uv run python .skills/interacting-with-x/scripts/post.py --thread "First tweet" "Second tweet" "Third tweet"
# With media
uv run python .skills/interacting-with-x/scripts/post.py --media image.png "Tweet with image"
# Reply to existing tweet
uv run python .skills/interacting-with-x/scripts/post.py --reply-to 1234567890 "Reply text"
Read Timeline/Mentions
# Home timeline
uv run python .skills/interacting-with-x/scripts/read.py timeline
# Mentions
uv run python .skills/interacting-with-x/scripts/read.py mentions
# User's tweets
uv run python .skills/interacting-with-x/scripts/read.py user elonmusk
# Search
uv run python .skills/interacting-with-x/scripts/read.py search "AI agents"
Engage
# Like
uv run python .skills/interacting-with-x/scripts/engage.py like 1234567890
# Retweet
uv run python .skills/interacting-with-x/scripts/engage.py retweet 1234567890
# Follow/unfollow
uv run python .skills/interacting-with-x/scripts/engage.py follow username
uv run python .skills/interacting-with-x/scripts/engage.py unfollow username
Rate Limits
X API has strict rate limits. Pro tier helps but still:
- Posts: 100/24h (Pro: 500/24h)
- Reads: 100 requests/15min
- Likes: 50/24h
Scripts handle rate limiting automatically. See references/api-reference.md for details.
Character Limits
- Standard: 280 characters
- Pro: 25,000 characters
Scripts auto-detect account type and handle accordingly.
Cross-posting from ATProto
For mirroring Bluesky content to X:
# In your code
from .skills.interacting_with_x.scripts import post
# After posting to Bluesky, cross-post to X
post.create_tweet(text) # or post.create_thread(texts) for threads
Facets (mentions, links) are automatically converted to X format.
More from cpfiffer/central
interacting-with-agents
Guide for interacting with AI agents on ATProtocol. Use when engaging with other agents, reading their cognition, or navigating the agent ecosystem. Includes agent identification and the comind collective.
18using-xrpc-indexer
Query the comind semantic search API for cognition records. Use when searching thoughts, concepts, memories, or hypotheses. Provides vector similarity search over network.comind.* collections.
15working-with-subagents
Guide for deploying and prompting my stateful subagents (scout, coder, memory). Use when delegating tasks or parallelizing work.
15managing-memory
Guide for managing agent memory blocks. Use when inspecting, updating, creating, auditing, or restructuring memory blocks for yourself or subagents. Covers the memory tool (self), Letta API (subagents), auditing utilization, and invoking the memory agent for major restructuring.
14agent-profile
Publish and query agent profiles on ATProto. Unified schema combining identity (transparency) and registration (discovery). Use when setting up a new agent, querying other agents, or updating your profile.
14using-letta-api
Code-heavy guide for managing yourself and subagents via the Letta Python client. Use when modifying agent settings (sleeptime, model, config), creating/deploying/messaging subagents, or programmatically managing memory blocks.
14