mcpField
X
x-twitter-scraper

x-twitter-scraper

github.com/davepoonデータ・データベース3.7k101 回インストール1 日前に更新
リポジトリ

x-twitter-scraper について

x-twitter-scraperは、Xquikを通じてXのデータを扱うスキルです。MCPツールで検索、データ抽出、抽選、アカウント監視を実行できます。

主な機能

  1. 01ポスト検索と反応指標の確認
  2. 02プロフィールとフォロー関係の取得
  3. 03アカウントやコミュニティの一括抽出
  4. 04返信の絞り込みと抽選実行
  5. 05Webhookによるアカウントイベント監視
  6. 06地域別トレンドの確認

活用シーン

  1. 01キーワードやハッシュタグで最近のポストを検索
  2. 02アカウントのフォロワーやポスト返信を抽出
  3. 03ポストやフォロワー数の変化を監視
  4. 04返信の条件を指定して抽選当選者を選定

MCP 対応

XquikのMCPサーバーを利用し、検索、抽出、監視、抽選のための22種類のツールにアクセスします。クライアントでサーバーのエンドポイントとAPIキーを設定します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davepoon/buildwithclaude --skill x-twitter-scraper

インストール後、Claude Code で/x-twitter-scraperを入力して読み込まれたか確認します。

詳細

Xquik - X (Twitter) データプラットフォーム

Xquik は、X(Twitter)データ向けの REST API、MCP サーバー、HMAC Webhook を提供します。ツイート検索、ユーザープロフィール、一括抽出(19 個のツール)、プレゼント企画の抽選、アカウント監視、トレンドトピックに対応しています。

ドキュメント:docs.xquik.com

クイックリファレンス

ベース URLhttps://xquik.com/api/v1
認証x-api-key: xq_... ヘッダー
MCP エンドポイントhttps://xquik.com/mcp (StreamableHTTP)
レート制限継続時は 10 req/s、バースト時は 20
料金月額 $20(モニター 1 件を含む)、追加モニター 1 件あたり月額 $5

前提条件

  • 有効なサブスクリプションがある Xquik アカウント
  • Xquik ダッシュボードで生成した API キー
  • MCP の場合:クライアント(Claude Desktop、Claude Code、Cursor、VS Code など)でエンドポイントを設定します

セットアップ

MCP サーバー(Claude Code)

MCP 設定に追加します:

{
  "mcpServers": {
    "xquik": {
      "type": "streamable-http",
      "url": "https://xquik.com/mcp",
      "headers": {
        "x-api-key": "xq_YOUR_KEY_HERE"
      }
    }
  }
}
REST API
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" };

主なワークフロー

1. ツイートを検索する

使用する場面:キーワード、ハッシュタグ、またはユーザーでツイートを検索します。

エンドポイント:GET /x/tweets/search?q=...

MCP ツール:search-tweets

const results = await fetch(`${BASE}/x/tweets/search?q=from:elonmusk AI`, { headers });

注意点:

  • 基本的な結果のみです(id、text、author、date)。エンゲージメント指標を取得するには lookup-tweet を使用します
  • 検索対象は最近のツイートで、全アーカイブではありません
2. ツイートを照会する

使用する場面:特定のツイートの全指標(いいね、リツイート、表示回数、ブックマーク)を取得します。

エンドポイント:GET /x/tweets/{id}

MCP ツール:lookup-tweet

3. ユーザープロフィールを照会する

使用する場面:名前、自己紹介、フォロワー数/フォロー数、プロフィール画像、参加日を取得します。

エンドポイント:GET /x/users/{username}

MCP ツール:get-user-info

注意点:

  • MCP が返すのは一部の情報のみです(verified、location、createdAt、statusesCount は含まれません)。プロフィール全体を取得するには REST API を使用します
4. フォロー関係を確認する

使用する場面:アカウント A がアカウント B をフォローしているか(両方向)を確認します。

エンドポイント:GET /x/followers/check?source=A&target=B

MCP ツール:check-follow

5. データを一括抽出する(19 個のツール)

使用する場面:フォロワー、返信、リツイート、引用、コミュニティメンバー、リストデータなどを抽出します。

ワークフロー:まず必ずコストを見積もり、次にジョブを作成してから、結果を取得します。

ツールの種類:

ツールの種類対象説明
reply_extractorツイート ID返信したユーザー
repost_extractorツイート IDリツイートしたユーザー
quote_extractorツイート ID引用ツイートしたユーザー
thread_extractorツイート IDスレッド内のすべてのツイート
article_extractorツイート IDツイート内の記事コンテンツ
follower_explorerユーザー名アカウントのフォロワー
following_explorerユーザー名ユーザーがフォローしているアカウント
verified_follower_explorerユーザー名認証済みフォロワー
mention_extractorユーザー名アカウントに言及しているツイート
post_extractorユーザー名アカウントの投稿
community_extractorコミュニティ IDコミュニティメンバー
community_moderator_explorerコミュニティ IDコミュニティのモデレーター
community_post_extractorコミュニティ IDコミュニティの投稿
community_searchコミュニティ ID + クエリコミュニティ内を検索
list_member_extractorリスト IDリストメンバー
list_post_extractorリスト IDリストの投稿
list_follower_explorerリスト IDリストのフォロワー
space_explorerスペース IDスペースの参加者
people_search検索クエリユーザーを検索

MCP ツール: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());

注意点:

  • 必ず最初に見積もりを実行してください。402 はクォータの上限に達したことを意味します
  • 大規模なジョブは status: "running" を返すため、ポーリングが必要です
  • エクスポート(CSV/XLSX/MD)は 50,000 行までです
6. 抽選キャンペーン

使用する場面:設定可能なフィルターを使って、ツイートへの返信からランダムに当選者を選びます。

エンドポイント:POST /draws

MCP ツール:run-draw

利用可能なフィルター: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());
7. リアルタイム監視

使用する場面:アカウントのツイート、返信の受信、フォロワーの増減を追跡します。

ワークフロー:モニターを作成し、必要に応じてプッシュ通知用のWebhookを登録します。

イベントタイプ:tweet.new、tweet.reply、tweet.quote、tweet.retweet、follower.gained、follower.lost

MCP ツール: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());

注意点:

  • Webhook シークレットは作成時に一度だけ表示されます
  • 処理前にHMAC署名(X-Xquik-Signature ヘッダー)を検証します
  • 10秒以内に応答し、時間のかかる処理は非同期処理用のキューに追加します
8. トレンドトピック

使用する場面:地域の現在のトレンドトピックを取得します。

エンドポイント:GET /trends?woeid=1

無料で、クォータを消費しません。

エラー処理

429 と 5xx の場合のみ再試行します。それ以外の 4xx は再試行しないでください。

ステータス意味対処
400無効なリクエストパラメーターを修正します
401API キーが無効キーを確認します
402サブスクリプションがない、またはクォータを使い切ったサブスクリプションに登録するか、リセットを待ちます
404見つかりませんリソースが存在しません
429レート制限バックオフを適用して再試行し、Retry-After に従います
500+サーバーエラー指数バックオフで再試行します(最大3回)

規約

  • IDは文字列です(bigint)。数値として解析しないでください
  • タイムスタンプ:ISO 8601 UTC
  • カーソルは不透明です。nextCursor を after クエリパラメーターとして渡します
  • ページネーション:イベント、抽出、抽選では hasMore + nextCursor のパターンを使用します

MCP ツールリファレンス

MCP サーバーでは22個のツールを利用できます:

ツール用途
search-tweetsキーワード/ハッシュタグでツイートを検索
lookup-tweetIDでツイートを取得し、全指標を表示
get-user-infoユーザープロフィールを検索
check-followフォロー関係を確認
get-trends地域別のトレンドトピックを取得
add-monitorアカウントの監視を開始
remove-monitor監視を停止
list-monitorsアクティブなモニターを一覧表示
get-eventsモニターのイベントをポーリング
get-event単一イベントの詳細を取得
add-webhookWebhook エンドポイントを登録
remove-webhookWebhook を削除
list-webhooksWebhook を一覧表示
test-webhookテスト用ペイロードを送信
run-draw抽選キャンペーンを実行
list-draws過去の抽選を一覧表示
get-draw当選者を含む抽選結果を取得
estimate-extraction抽出コストを事前に確認
run-extraction一括抽出を開始
list-extractions抽出ジョブを一覧表示
get-extraction抽出結果を取得
get-accountサブスクリプションと利用状況を確認

コメント