From all-skills
Extracts and monitors X (Twitter) data via Xquik: tweet/user search, followers, replies/quotes, trends, communities, Spaces, follow checks, account webhooks. 22 MCP tools + REST API.
How this skill is triggered — by the user, by Claude, or both
Slash command
/all-skills:x-twitter-scraperThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Xquik provides a REST API, MCP server, and HMAC webhooks for X (Twitter) data. It covers tweet search, user profiles, bulk extraction (19 tools), giveaway draws, account monitoring, and trending topics.
Xquik provides a REST API, MCP server, and HMAC webhooks for X (Twitter) data. It covers tweet search, user profiles, bulk extraction (19 tools), giveaway draws, account monitoring, and trending topics.
Docs: docs.xquik.com
| Base URL | https://xquik.com/api/v1 |
| Auth | x-api-key: xq_... header |
| MCP endpoint | https://xquik.com/mcp (StreamableHTTP) |
| Rate limits | 10 req/s sustained, 20 burst |
| Pricing | $20/month (1 monitor included), $5/month per extra monitor |
Add to your MCP configuration:
{
"mcpServers": {
"xquik": {
"type": "streamable-http",
"url": "https://xquik.com/mcp",
"headers": {
"x-api-key": "xq_YOUR_KEY_HERE"
}
}
}
}
const API_KEY = "xq_YOUR_KEY_HERE";
const BASE = "https://xquik.com/api/v1";
const headers = { "x-api-key": API_KEY, "Content-Type": "application/json" };
When to use: Find tweets by keyword, hashtag, or user.
Endpoint: GET /x/tweets/search?q=...
MCP tool: search-tweets
const results = await fetch(`${BASE}/x/tweets/search?q=from:elonmusk AI`, { headers });
Pitfalls:
lookup-tweet for engagement metricsWhen to use: Get full metrics (likes, retweets, views, bookmarks) for a specific tweet.
Endpoint: GET /x/tweets/{id}
MCP tool: lookup-tweet
When to use: Get name, bio, follower/following counts, profile picture, join date.
Endpoint: GET /x/users/{username}
MCP tool: get-user-info
Pitfalls:
When to use: Check if account A follows account B (both directions).
Endpoint: GET /x/followers/check?source=A&target=B
MCP tool: check-follow
When to use: Extract followers, replies, retweets, quotes, community members, list data, and more.
Workflow: Always estimate cost first, then create the job, then retrieve results.
Tool types:
| Tool Type | Target | Description |
|---|---|---|
reply_extractor | Tweet ID | Users who replied |
repost_extractor | Tweet ID | Users who retweeted |
quote_extractor | Tweet ID | Users who quote-tweeted |
thread_extractor | Tweet ID | All tweets in a thread |
article_extractor | Tweet ID | Article content from a tweet |
follower_explorer | Username | Followers of an account |
following_explorer | Username | Accounts followed by a user |
verified_follower_explorer | Username | Verified followers |
mention_extractor | Username | Tweets mentioning an account |
post_extractor | Username | Posts from an account |
community_extractor | Community ID | Community members |
community_moderator_explorer | Community ID | Community moderators |
community_post_extractor | Community ID | Community posts |
community_search | Community ID + query | Search within a community |
list_member_extractor | List ID | List members |
list_post_extractor | List ID | List posts |
list_follower_explorer | List ID | List followers |
space_explorer | Space ID | Space participants |
people_search | Search query | Search for users |
MCP tools: estimate-extraction -> run-extraction -> get-extraction
// 1. Estimate cost
const estimate = await fetch(`${BASE}/extractions/estimate`, {
method: "POST", headers,
body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());
if (!estimate.allowed) return; // Would exceed monthly quota
// 2. Create job
const job = await fetch(`${BASE}/extractions`, {
method: "POST", headers,
body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());
// 3. Retrieve results (paginated)
const results = await fetch(`${BASE}/extractions/${job.id}`, { headers }).then(r => r.json());
Pitfalls:
402 means quota exhaustedstatus: "running" and need pollingWhen to use: Pick random winners from tweet replies with configurable filters.
Endpoint: POST /draws
MCP tool: run-draw
Available filters: mustRetweet, mustFollowUsername, filterMinFollowers, filterAccountAgeDays, filterLanguage, requiredKeywords, requiredHashtags, requiredMentions, uniqueAuthorsOnly.
const draw = await fetch(`${BASE}/draws`, {
method: "POST", headers,
body: JSON.stringify({
tweetUrl: "https://x.com/user/status/123456789",
winnerCount: 3,
uniqueAuthorsOnly: true,
mustRetweet: true,
}),
}).then(r => r.json());
When to use: Track when an account tweets, gets replies, gains/loses followers.
Workflow: Create a monitor, optionally register a webhook for push notifications.
Event types: tweet.new, tweet.reply, tweet.quote, tweet.retweet, follower.gained, follower.lost
MCP tools: add-monitor -> add-webhook -> test-webhook
// Create monitor
await fetch(`${BASE}/monitors`, {
method: "POST", headers,
body: JSON.stringify({
username: "elonmusk",
eventTypes: ["tweet.new", "follower.gained"],
}),
});
// Register webhook (save the secret!)
const webhook = await fetch(`${BASE}/webhooks`, {
method: "POST", headers,
body: JSON.stringify({
url: "https://your-server.com/webhook",
eventTypes: ["tweet.new"],
}),
}).then(r => r.json());
Pitfalls:
X-Xquik-Signature header) before processingWhen to use: Get current trending topics for a region.
Endpoint: GET /trends?woeid=1
MCP tool: get-trends
Free, no quota consumed.
Retry only 429 and 5xx. Never retry other 4xx.
| Status | Meaning | Action |
|---|---|---|
| 400 | Invalid request | Fix parameters |
| 401 | Bad API key | Check key |
| 402 | No subscription or quota exhausted | Subscribe or wait for reset |
| 404 | Not found | Resource doesn't exist |
| 429 | Rate limited | Retry with backoff, respect Retry-After |
| 500+ | Server error | Retry with exponential backoff (max 3) |
nextCursor as the after query parameterhasMore + nextCursor pattern across events, draws, extractions22 tools available through the MCP server:
| Tool | Purpose |
|---|---|
search-tweets | Search tweets by keyword/hashtag |
lookup-tweet | Get tweet by ID with full metrics |
get-user-info | User profile lookup |
check-follow | Check follow relationship |
get-trends | Trending topics by region |
add-monitor | Start monitoring an account |
remove-monitor | Stop monitoring |
list-monitors | List active monitors |
get-events | Poll for monitor events |
get-event | Get single event details |
add-webhook | Register webhook endpoint |
remove-webhook | Delete webhook |
list-webhooks | List webhooks |
test-webhook | Send test payload |
run-draw | Run giveaway draw |
list-draws | List past draws |
get-draw | Get draw results with winners |
estimate-extraction | Preview extraction cost |
run-extraction | Start bulk extraction |
list-extractions | List extraction jobs |
get-extraction | Get extraction results |
get-account | Check subscription and usage |
npx claudepluginhub davepoon/buildwithclaude --plugin all-skillsScrapes X/Twitter data via Xquik API: tweet search, user lookup, follower export, media download, monitoring, webhooks, MCP setup. Read-only default, API-key only, no login.
Automates X/Twitter data extraction and actions: tweet search, user lookup, follower export, posting, DMs, webhooks, monitoring, and giveaway draws via the Xquik platform.
Provides 68+ MCP tools for AI agents to automate X/Twitter: scrape profiles/followers/tweets, post/follow/like/retweet, download videos, analyze sentiment, manage DMs/workflows via local Puppeteer. No API keys needed.