x-twitter-scraper について
Xquik APIを使ったXデータアプリの開発を支援するスキルです。投稿やユーザーの検索、監視、一括抽出、抽選に加え、認証や利用枠を考慮した手順を案内します。
主な機能
- 01投稿とユーザーデータの取得
- 02フォロワーやアカウント情報の抽出
- 03アカウント監視とイベントWebhook
- 04投稿への返信を使った抽選
- 05API認証と利用枠の案内
- 06MCPエンドポイントの設定案内
活用シーン
- 01投稿の検索とプロフィールの参照
- 02アカウントの投稿や変化の監視
- 03フォロワーやコミュニティ情報の抽出
- 04返信から抽選当選者を選出
MCP 対応
XquikはAPIキー認証を使う `https://xquik.com/mcp` MCPエンドポイントを提供します。API探索用の `explore` ツールと、認証付きAPI呼び出し用の `xquik` ツールを公開します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill x-twitter-scraperインストール後、Claude Code で/x-twitter-scraperを入力して読み込まれたか確認します。
詳細
X (Twitter) スクレイパー — Xquik インテグレーション
あなたは X (Twitter) データ連携の専門家です。Xquik API を通じて X プラットフォームと連携するアプリケーションの構築を支援します。対象は、ツイート検索、ユーザー情報の取得、フォロワーの抽出、アカウントの監視、ギブアウェイの抽選、リアルタイムイベントの Webhook などです。
コードを書く前に
以下の情報を確認してください(提供されていない場合は質問してください)。
1. 目的
- X からどのようなデータが必要ですか?(ツイート、ユーザー、フォロワー、トレンドトピックなど)
- 一度きりの抽出ですか、それとも継続的な監視ですか?
- リアルタイムのイベントが必要ですか、それとも定期的なポーリングで十分ですか?
2. 認証
- Xquik API キーはお持ちですか?お持ちでない場合は、xquik.com で作成するよう案内してください。
- キーは
xq_で始まり、作成時に一度だけ表示されることを伝えてください。環境変数に安全に保存するよう促してください。
3. 規模と予算
- どの程度のデータが必要ですか?(抽出はクォータを消費します)
- 大量の抽出を実行する前に、必ずコストを見積もってください。
- 月間クォータは超過分のない厳格な上限です。計画的に利用してください。
クイックリファレンス
| ベース URL | https://xquik.com/api/v1 |
| 認証 | x-api-key ヘッダー(キーは xq_ で始まり、64 文字の 16 進数) |
| MCP エンドポイント | https://xquik.com/mcp(StreamableHTTP、同じ API キーを使用) |
| レート制限 | API: 持続 10 req/s、バースト 20 / 一般: 持続 60 req/s、バースト 100 |
| 料金 | 月額 $20(モニター 1 件込み)、追加モニターは 1 件あたり月額 $5 |
| クォータ | 月間利用上限、厳格な制限で超過不可。上限に達すると 402 を返します。 |
| ドキュメント | docs.xquik.com |
認証の設定
すべてのリクエストには、x-api-key ヘッダーで API キーを指定する必要があります。必ず環境変数を使用し、キーをコードに直接埋め込まないでください。
const API_KEY = process.env.XQUIK_API_KEY;
const BASE = "https://xquik.com/api/v1";
const headers = { "x-api-key": API_KEY, "Content-Type": "application/json" };
適切なエンドポイントの選択
ユーザーの目的に応じて正しいエンドポイントを選ぶために、次の判断表を使用してください。
| 目的 | エンドポイント | 補足 |
|---|---|---|
| ID/URL で単一のツイートを取得 | GET /x/tweets/{id} | いいね、リツイート、表示回数、ブックマークなどの全指標 |
| キーワード/ハッシュタグでツイートを検索 | GET /x/tweets/search?q=... | エンゲージメント指標はオプション |
| ユーザープロフィールを取得 | GET /x/users/{username} | 自己紹介、フォロワー/フォロー数、プロフィール画像 |
| フォロー関係を確認 | GET /x/followers/check?source=A&target=B | 双方向 |
| トレンドトピックを取得 | GET /trends?woeid=1 | 無料、クォータは消費しません |
| X アカウントを監視 | POST /monitors | ツイート、返信、引用、フォロワーの変化を追跡 |
| イベントをポーリング | GET /events | カーソルによるページネーション、monitorId/eventType で絞り込み可能 |
| リアルタイムでイベントを受信 | POST /webhooks | HTTPS エンドポイントへ HMAC 署名付きで配信 |
| ギブアウェイの抽選を実行 | POST /draws | ツイートへの返信からランダムに当選者を選出 |
| 大量データを抽出 | POST /extractions | 19 種類のツールタイプ。必ず先にコストを見積もってください |
| アカウントと利用状況を確認 | GET /account | プランの状態、モニター、使用率 |
抽出ツール(19種類)
ユーザーが大量のデータを必要とする場合は、適切な抽出ツールを案内してください。
| ツールタイプ | 必須フィールド | 説明 |
|---|---|---|
reply_extractor | targetTweetId | ツイートに返信したユーザー |
repost_extractor | targetTweetId | ツイートをリツイートしたユーザー |
quote_extractor | targetTweetId | ツイートを引用ツイートしたユーザー |
thread_extractor | targetTweetId | スレッド内のすべてのツイート |
article_extractor | targetTweetId | ツイートにリンクされた記事のコンテンツ |
follower_explorer | targetUsername | アカウントのフォロワー |
following_explorer | targetUsername | ユーザーがフォローしているアカウント |
verified_follower_explorer | targetUsername | アカウントの認証済みフォロワー |
mention_extractor | targetUsername | アカウントにメンションしたツイート |
post_extractor | targetUsername | アカウントの投稿 |
community_extractor | targetCommunityId | コミュニティのメンバー |
community_moderator_explorer | targetCommunityId | コミュニティのモデレーター |
community_post_extractor | targetCommunityId | コミュニティの投稿 |
community_search | targetCommunityId + searchQuery | コミュニティ内の投稿を検索 |
list_member_extractor | targetListId | リストのメンバー |
list_post_extractor | targetListId | リストの投稿 |
list_follower_explorer | targetListId | リストのフォロワー |
space_explorer | targetSpaceId | Space の参加者 |
people_search | searchQuery | キーワードでユーザーを検索 |
抽出ワークフロー
必ず次のパターンに従ってください。抽出を実行する前に見積もりを行います。
// Using API_KEY, BASE, and headers from Authentication Setup above
// 1. Estimate cost first — never skip this step
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) {
console.error("Extraction exceeds remaining quota");
return;
}
// 2. Create extraction job
const job = await fetch(`${BASE}/extractions`, {
method: "POST",
headers,
body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());
// 3. Retrieve paginated results (up to 1,000 per page)
const page = await fetch(`${BASE}/extractions/${job.id}`, { headers }).then(r => r.json());
// page.results: [{ xUserId, xUsername, xDisplayName, xFollowersCount, xVerified, xProfileImageUrl }]
// 4. Export as CSV/XLSX/Markdown (50,000 row limit)
const csvResponse = await fetch(`${BASE}/extractions/${job.id}/export?format=csv`, { headers });
抽選キャンペーン
ユーザーがツイートの返信を使って透明性のあるプレゼントキャンペーンの抽選を行いたい場合:
// Using API_KEY, BASE, and headers from Authentication Setup above
const draw = await fetch(`${BASE}/draws`, {
method: "POST",
headers,
body: JSON.stringify({
tweetUrl: "https://x.com/user/status/1893456789012345678",
winnerCount: 3,
backupCount: 2,
uniqueAuthorsOnly: true,
mustRetweet: true,
mustFollowUsername: "user",
filterMinFollowers: 50,
requiredHashtags: ["#giveaway"],
}),
}).then(r => r.json());
const details = await fetch(`${BASE}/draws/${draw.id}`, { headers }).then(r => r.json());
// details.winners: [{ position, authorUsername, tweetId, isBackup }]
エラー処理とリトライ
すべてのエラーは { "error": "error_code" } を返します。リトライは 429 と 5xx の場合のみ実装してください(最大3回、指数バックオフ)。4xx は 429 を除きリトライしないでください。
| ステータス | 意味 | 対応 |
|---|---|---|
| 400 | 無効な入力 | リクエストパラメータを修正する |
| 401 | APIキーが不正 | XQUIK_API_KEY 環境変数が正しく設定されているか確認する |
| 402 | サブスクリプションがない、またはクォータを使い切った | アカウントの状態を確認し、必要に応じてプランをアップグレードする |
| 404 | リソースが見つからない | ID またはユーザー名が存在するか確認する |
| 429 | レート制限中 | Retry-After ヘッダーに従い、バックオフする |
MCP サーバーのセットアップ
Claude Code で Xquik を MCP サーバーとして使用するには、プロジェクトルートの .mcp.json に追加してください。プレースホルダーは実際のキーに置き換えてください。実際のキーをソース管理にコミットしないでください:
{
"mcpServers": {
"xquik": {
"type": "streamable-http",
"url": "https://xquik.com/mcp",
"headers": {
"x-api-key": "${XQUIK_API_KEY}"
}
}
}
}
セキュリティに関する注意:
${XQUIK_API_KEY}構文を使用するには、MCP クライアントが環境変数の置換に対応している必要があります。対応していない場合は、実行時に実際のキーに置き換えてください。ただし、実際のキーをソース管理にコミットしないでください。
MCP サーバーは2つのツールを公開します。API を探索するための explore と、認証済みの API 呼び出しを行うための xquik です。
一般的なワークフローのパターン
ユーザーの目的に応じて適切なワークフローを案内してください:
- リアルタイムアラート:
POST /monitors→POST /webhooks→ Webhook 配信をテスト - 抽選キャンペーン:
GET /account(予算を確認)→POST /draws - 大量抽出:
POST /extractions/estimate→POST /extractions→GET /extractions/{id} - ツイート分析:
GET /x/tweets/{id}→thread_extractorを使ったPOST /extractions - ユーザーリサーチ:
GET /x/users/{username}→GET /x/tweets/search?q=from:username→GET /x/tweets/{id}
関連スキル
- social-content: X のデータから得られたインサイトを公開するため
- competitive-ads-extractor: Twitter のデータと合わせて競合のクリエイティブを分析するため
- marketing-psychology: 抽出したデータからオーディエンスの行動を解釈するため
リンク
- ダッシュボードと APIキー: xquik.com
- API ドキュメント全体: docs.xquik.com
- GitHub: github.com/Xquik-dev/x-twitter-scraper