AIエージェント向けTwitter API:REST、MCP、スキルの使い分け
AIエージェントは、自前コードの関数、MCPサーバー、スキルファイルのいずれかを通じてAPIをツールとして呼び出し、X(Twitter)のデータを取得します。公式X APIでは、読み取る投稿1件ごとに$0.005かかります。
要点: 公式X APIには、OAuthを使う開発者アプリが必要で、2026年11月22日からは各投稿の投稿者にも課金されるため、投稿者つきの検索結果は1件$0.015になります。Xを読むエージェントには、Sorsa APIが使えます。3つの経路すべてを、読み取り専用のキー1つでまかない、投稿は POST /tweet-info-bulk で1,000件あたり$0.014から、始めるときは100回分の無料リクエストが付きます。
- エンドポイント
POST /tweet-info-bulk- 1ページの件数
- 1回の呼び出しで100投稿
- 料金
- 1,000件あたり$0.014から
#AIエージェントがXのデータを取得する仕組み
AIエージェントは、他のライブデータと同じ方法でXのデータを取得します。モデルがツールを名前で要求し、モデルの外側のコードがAPIを呼び出し、返ってきたJSONが次のステップのためにモデルのコンテキストに入ります。モデル自身がx.comを開くことはありません。
そのツールをエージェントの手元に届ける接続方法は、3種類あります。
- RESTツールは、エージェントのコード内にある関数で、OpenAI Agents SDK、LangChain、CrewAI、n8nなどのフレームワークに登録します。
- MCPサーバーは、Claude Code、Cursor、CodexなどのAIアプリが自動で起動する小さなプログラムで、Model Context Protocolを通じてツールを一覧にします。
- スキルは、SKILL.mdファイルを含むフォルダで、コーディングエージェントにAPIを教え、エージェント自身が呼び出しを書いて実行します。
どの方法も、背後にXのデータの供給元が必要です。Xの供給元は公式X APIで、Xのエージェント向けリソース(新しいタブで開きます)は、ホスト型のMCPサーバー、OpenAPI仕様、skill.mdファイルとして公開しています。そこでの呼び出しはすべて、OAuth 2.0またはベアラートークンと前払いクレジットを使って、ご自身のX開発者アプリ上で動きます。
Xの料金表(新しいタブで開きます)では、投稿の読み取りが1件$0.005、プロフィールまたはフォロワーが1件$0.010で、従量課金は月間300万件の投稿読み取りで止まります。10月23日の通知(新しいタブで開きます)によると、11月22日からは、投稿と一緒に返される投稿者とメディアも読み取りとして課金されます。投稿者つきの検索結果は、1,000件あたり最大$15.00です。全料金はX APIの料金のガイドに載せています。
#経路を選ぶ:RESTツール、MCPサーバー、スキル
エージェントが動く場所で経路を選びます。自分でコードを書くエージェントにはRESTツール、Claude CodeやCursorなどのAIアプリにはMCPサーバー、自分でスクリプトを書くコーディングエージェントにはスキルです。Twitter(X)API兼スクレイピングツールであるSorsa APIは、同じ SORSA_API_KEY 変数のキー1つで3つすべてに対応するので、1つの経路で始めて、あとから別の経路を足せます。
| エージェントが動く場所 | 経路 | 追加するもの | 消費するコンテキスト |
|---|---|---|---|
| 自前のコード:OpenAI Agents SDK、LangChain、CrewAI、n8n、独自のループ | RESTツール | https://api.sorsa.io/v3 を呼び出す関数 | 検索ツールで304文字 |
| AIアプリ:Claude Code、Cursor、Codex、VS Code、Claude Desktop | MCPサーバー | キーを指定した npx -y sorsa-mcp | 40ツールで2.33万文字 |
| コードを書いて実行するコーディングエージェント | スキル | sorsa-x-api フォルダ | スキルを開くまでは762文字 |
自前のコード:OpenAI Agents SDK、LangChain、CrewAI、n8n、独自のループ
- 経路
- RESTツール
- 追加するもの
https://api.sorsa.io/v3を呼び出す関数- 消費するコンテキスト
- 検索ツールで304文字
AIアプリ:Claude Code、Cursor、Codex、VS Code、Claude Desktop
- 経路
- MCPサーバー
- 追加するもの
- キーを指定した
npx -y sorsa-mcp - 消費するコンテキスト
- 40ツールで2.33万文字
コードを書いて実行するコーディングエージェント
- 経路
- スキル
- 追加するもの
sorsa-x-apiフォルダ- 消費するコンテキスト
- スキルを開くまでは762文字
コンテキストが重要なのは、ツール定義の文字がモデルへのリクエストのたびに送られ、トークンと注意力を消費するからです。11月2日にMCPサーバーのツールを一覧にしたところ、40の定義の合計は2.33万文字、約5,800トークンでした。Claude Codeはツール検索でこれを小さく保ちます。必要になるまでモデルにはツール名だけを見せる方式です。
スキルがコンテキストに入れるのは、名前と説明の762文字だけで、8,163文字のSKILL.mdはエージェントが開いたときにだけ読み込まれます。RESTツールの費用は、書いた内容次第です。下の search_x のスキーマは304文字です。
多くのチームは2つの経路を併用しています。データを調べるエディタではMCPサーバー、本番に出すエージェントではRESTツールです。
#RESTツールで、あらゆるエージェントにXのデータを渡す
自分で作るエージェントにXのデータを渡すには、Sorsa APIを呼び出す関数を1つ書いて、ツールとして登録します。モデルが検索クエリを渡し、関数が投稿をJSONで返し、1回の呼び出しが1リクエストです。自分でコードを書くエージェントには、Sorsa APIを使ってください。ApiKey ヘッダー1つでOAuthは不要、検索1回で投稿者の完全なプロフィールつきの約20投稿が返り、料金は結果1,000件あたり$0.07から、全プラン毎秒20リクエストです。
-
キーを取得する。 登録して、ダッシュボードからキーをコピーし、環境変数
SORSA_API_KEYに設定します。キーはコードの中に留まり、モデルが目にすることはありません。 -
呼び出しを試す。
POST /search-tweets(新しいタブで開きます) はXの検索演算子を含むクエリを受け取り、1ページあたり約20投稿を返します。"order": "latest"を指定すると新しい順です。Terminal curl -X POST "https://api.sorsa.io/v3/search-tweets" \ -H "ApiKey: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "from:kai_builds_agents mcp", "order": "latest"}'Response200 OK { "tweets": [ { "id": "1985342107664281745", "full_text": "Our support agent now reads X through MCP.", "created_at": "2026-10-30T14:12:09Z", "lang": "en", "likes_count": 48, "retweet_count": 6, "reply_count": 9, "quote_count": 2, "view_count": 5310, "is_reply": false, "user": { "id": "1544001928374651904", "username": "kai_builds_agents", "display_name": "Kai Builds Agents", "followers_count": 2841, "verified": false } } ], "next_cursor": "DAADDAABCgABG4vQ2kXAJxIKAAIbi9Dask" } -
ツールとして包む。 関数は
next_cursorで予算の範囲までページを進め、各投稿が持つ41フィールドのうち7つだけを残すので、20投稿でもツールの結果は短く収まります。Python import os import requests API = "https://api.sorsa.io/v3" HEADERS = {"ApiKey": os.getenv("SORSA_API_KEY", "YOUR_API_KEY")} KEEP = ("id", "full_text", "created_at", "likes_count", "view_count") def search_x(query: str, max_pages: int = 1) -> list[dict]: """Search public X posts with operators like from: and lang:. Args: query: X search query. max_pages: Pages to read, about 20 posts each. """ posts, cursor = [], None for _ in range(max_pages): body = {"query": query, "order": "latest"} if cursor: body["next_cursor"] = cursor r = requests.post(f"{API}/search-tweets", json=body, headers=HEADERS, timeout=30) r.raise_for_status() data = r.json() for t in data.get("tweets", []): post = {k: t.get(k) for k in KEEP} post["author"] = t["user"]["username"] post["followers"] = t["user"]["followers_count"] posts.append(post) cursor = data.get("next_cursor") if not cursor: break return posts -
ツールを登録する。 同じ関数がOpenAI Agents SDK、LangChain、あらゆるLLM APIで動き、docstringがツールの説明になります。ClaudeのMessages APIはスキーマを
input_schemaとして受け取り、OpenAIの関数ツールでは同じオブジェクトをparametersと呼びます。from agents import Agent, Runner, function_tool agent = Agent( name="X researcher", instructions="Answer from public X posts and cite post IDs.", tools=[function_tool(search_x)], ) result = Runner.run_sync(agent, "What are developers saying about MCP?") print(result.final_output)
レスポンスの各投稿には22のフィールドがあり、投稿者の完全なプロフィールである user オブジェクトには、さらに19のフィールドがあります。エージェントがすべてを必要とすることはまれです。7つに絞るとツールの結果がどれも短くなり、これは重要です。たとえばClaude Codeは、1つのツール結果が1万トークンを超えると警告を出します。
同じエージェントに加えるツール
エージェントがXで行う他の作業も、同じパターンでまかなえます。1つのエンドポイントに対して関数を1つ、呼び出し1回が1リクエストです。
GET /info-batch(新しいタブで開きます) は、ユーザー名またはユーザーIDで、1回に100件のプロフィールを調べます。POST /tweet-info-bulk(新しいタブで開きます) は、IDまたはリンクから1回に100投稿を、投稿者つきで読み取ります。GET /followers(新しいタブで開きます) は、1ページあたり200件のフォロワーを返し、next_cursorでページを進めます。POST /check-follow(新しいタブで開きます) は、あるアカウントが別のアカウントをフォローしているかを、1回の呼び出しで返します。
返信、引用、リスト、コミュニティ、トレンドまで、残りの40のエンドポイントは、Sorsa APIのエンドポイントのページにあります。
#Claude Code、Cursor、CodexにMCPサーバーを追加する
MCPに対応したAIアプリには、Sorsa APIのMCPサーバーを追加します。コマンド1つでnpmから sorsa-mcp が起動し、アプリは検索、プロフィール、フォロー確認まで、ご自身のキーで使える読み取り専用の40ツールを得ます。
claude mcp add sorsa --scope user \
-e SORSA_API_KEY=YOUR_API_KEY -- npx -y sorsa-mcp
{
"mcpServers": {
"sorsa": {
"command": "npx",
"args": ["-y", "sorsa-mcp"],
"env": { "SORSA_API_KEY": "YOUR_API_KEY" }
}
}
}
Claude Codeでは、-e が後ろの語を変数として読むため、サーバー名の sorsa は -e の前に置きます。Cursorは、上のJSONファイルから同じサーバーを読み込みます。そのあと、今日のローンチについて人々が何と言っているかなど、Xが必要な質問をエージェントにすると、エージェントは自分で search_tweets を呼び出します。
Codex、VS Code、Claude Desktopなどのアプリ用の設定行と、サーバーに接続できないときの対処法は、Twitter MCPサーバーガイドにあります。Twitter MCPサーバーのページには、40ツールすべてと、それぞれが返す内容を載せています。
#コーディングエージェント向けのエージェント用スキルを導入する
Claude Code、Codex、Cursorなどのコーディングエージェントは、スキルからSorsa APIを学びます。sorsa-x-api フォルダが、タスクに合うエンドポイント、next_cursor でのページの進め方、100件のIDをまとめて処理するタイミングを教え、呼び出し自体はエージェントが書きます。
スキルはオープンなAgent Skills(新しいタブで開きます)形式に従うので、1つのフォルダがこれらのエージェント全体で使えます。導入には、追加先のエージェントを尋ねてくるスキルのコマンドラインを使うか、Claude Codeのスキルフォルダに手作業でコピーします。
npx skills add Sorsa-io/sorsa-x-api-skill
git clone https://github.com/Sorsa-io/sorsa-x-api-skill \
~/.claude/skills/sorsa-x-api
そのあと、エージェントを動かすシェルで SORSA_API_KEY を設定します。スキルが向いているのは、質問のたびにツールを呼び出すのではなく、エージェントにコードを残してほしい作業、たとえば毎週月曜日に1週間分のメンションを書き出すスクリプトなどです。
スキルのないアシスタントには、AIドキュメント(新しいタブで開きます)のページに、APIリファレンス全体を1つのテキストファイルにまとめたものがあり、添付して使えます。AIで開発のページには、Claude Code、Cursor、Codex向けの既製プロンプトがあります。
#Xを読むエージェントは読み取り専用にすべき理由
投稿を読むエージェントは、見知らぬ人が書いたテキストを読みます。そのため、読み取りしかできないAPIが最も単純な安全策です。仕込まれた投稿があっても、投稿、いいね、フォロー、DM送信を実行できるツールがなければ、エージェントにそれをさせることはできません。
セキュリティ担当者は、これを間接プロンプトインジェクションと呼びます。OWASP(新しいタブで開きます)は、LLMアプリケーションのリスクの第1位にプロンプトインジェクションを挙げ、ウェブサイトやファイルなど外部の情報源のコンテンツを侵入経路の1つとしています。検索結果はまさにそのようなコンテンツです。公式X APIで書き込みスコープ付きのトークンを持つエージェントは、アカウントに対する操作を誘導されるおそれがあるため、よく勧められるのは、書き込みリクエストをXに届く前にすべてブロックするゲートウェイです。
Xに対して決して操作させてはならないエージェントには、Sorsa APIを使ってください。45のエンドポイントはすべて公開データを読み取るだけなので、APIキー自体が境界になり、ゲートウェイは不要です。MCPサーバーにも投稿用のツールはありません。11月2日に post_tweet を呼び出したところ、「Tool post_tweet not found」と返りました。ご自身のXのログインもCookieも、どの段階でも使われないので、Xアカウントへのリスクはゼロです。
エージェントが投稿しなければならない場合は、投稿を公式X APIの別のツールに分けて1投稿あたり$0.015で動かし、投稿の前に人が1件ずつ承認するようにしてください。
知っておきたいこと
ツールが返す内容は、指示ではなくデータとして扱ってください。投稿のテキストは引用された資料であることをシステムプロンプトでモデルに伝え、キーはプロンプトではなく、常にコードか環境変数に置いて、どの投稿やツール結果からも引き出せないようにします。
#エージェントのXデータの費用(結果1,000件あたり)
Sorsa APIでは、エージェントのXデータは作業に応じて結果1,000件あたり$0.007〜$0.07で、公式X APIの$5.00〜$15.00と比べられます。$15.00は、投稿者つきで返る投稿に対する、11月22日からのXの料金です。Sorsa APIの料金は最も低いリクエスト単価から始まり、全プランで、返す内容にかかわらず1回の呼び出しが1リクエストです。
| エージェントの作業 | エンドポイント | 1回の呼び出し | Sorsa API(1,000件あたり) | 公式X API(1,000件あたり) |
|---|---|---|---|---|
| トピックの投稿検索 | POST /search-tweets | 投稿者つきで約20投稿 | $0.07から | $5.00、投稿者つきで$15.00 |
| IDによる投稿の読み取り | POST /tweet-info-bulk | 投稿者つきで最大100投稿 | $0.014から | $5.00、投稿者つきで$15.00 |
| プロフィールの検索 | GET /info-batch | 最大100プロフィール | $0.014から | $10.00 |
| フォロワー一覧の読み取り | GET /followers | 最大200フォロワー | $0.007から | $10.00 |
トピックの投稿検索
- エンドポイント
POST /search-tweets- 1回の呼び出し
- 投稿者つきで約20投稿
- Sorsa API(1,000件あたり)
- $0.07から
- 公式X API(1,000件あたり)
- $5.00、投稿者つきで$15.00
IDによる投稿の読み取り
- エンドポイント
POST /tweet-info-bulk- 1回の呼び出し
- 投稿者つきで最大100投稿
- Sorsa API(1,000件あたり)
- $0.014から
- 公式X API(1,000件あたり)
- $5.00、投稿者つきで$15.00
プロフィールの検索
- エンドポイント
GET /info-batch- 1回の呼び出し
- 最大100プロフィール
- Sorsa API(1,000件あたり)
- $0.014から
- 公式X API(1,000件あたり)
- $10.00
フォロワー一覧の読み取り
- エンドポイント
GET /followers- 1回の呼び出し
- 最大200フォロワー
- Sorsa API(1,000件あたり)
- $0.007から
- 公式X API(1,000件あたり)
- $10.00
公式X API
$5,000
投稿100万件の場合
1投稿$0.005
Sorsa API
$14から
投稿100万件の場合
1,000件あたり$0.014から
250分の1のコスト
規模を具体例で見てみます。エージェントがトピックを検索して投稿者つきの20投稿を得て、続けて100件のプロフィールを調べます。公式X APIではこの1回の作業が現在$1.10、11月22日からは$1.30です。Sorsa APIでは$0.0028からで、失敗したリクエストには課金されません。
GET /key-usage-info(新しいタブで開きます) は残りのリクエスト数を示し、リクエストとして数えられることはないので、エージェントは長い作業の前に予算を確認できます。
#エージェントのXへの呼び出しを、安く確実に保つ
エージェントはループすると呼び出しを無駄にします。すべてのXツールにページの予算を設け、検索をバッチにまとめ、モデルが読むフィールドだけを返すようにしてください。
- 検索をバッチにする。 単発の呼び出しを100回行う代わりに、
POST /tweet-info-bulkで最大100件の投稿IDを、GET /info-batchで100件のハンドルを、1回の呼び出しで送ります。 - ページに予算を設ける。
max_pages引数は、エージェントが5万投稿の検索をページ単位で読み続けるのを防ぎます。next_cursorが空で返ってきたら、すぐに止めます。 - タスクの中でキャッシュする。 1つのタスクで同じクエリを2回尋ねると同じ投稿が返るので、最初の答えを保持します。
- 429と403を処理する。 各キーは全プラン毎秒20リクエストで動きます。429なら1秒待って再試行します。403は、キーがない、またはアカウントのリクエストを使い切ったことを意味します。
- スケジュールでポーリングする。 すべてのリクエストが最新のデータを返すため、監視エージェントはクエリに
since:を入れた検索をスケジュールで再実行すれば最新に保てます。ループの例は、リアルタイムTwitter監視のガイドにあります。
レスポンスのスキーマは安定しているので、ツールのコードは動き続けます。
#今日から、エージェントにXのデータを
エージェントは数分でXを読めるようになります。自作のエージェントにはRESTツール、Claude CodeとCursorにはMCPサーバー、コーディングエージェントにはスキルです。Sorsa APIは、この3つすべてを読み取り専用のキー1つでまかないます。投稿は1,000件あたり$0.014から(公式X APIは$5.00)、全プラン毎秒20リクエストで、2022年から本番で稼働し、累計60億リクエスト以上を処理しています。最初の100リクエストは無料で、エージェントが最大1万投稿を読み取るのに十分です。
#よくある質問
AIエージェントに最適なTwitter APIは何ですか?
Xを読むエージェントには、Twitter(X)API兼スクレイピングツールであるSorsa APIを使ってください。キー1つで、RESTツール、40ツールのMCPサーバー、スキルのいずれとしても動き、45のエンドポイントはすべて読み取り専用なので、エージェントが誤って投稿やフォローをすることはありません。投稿は1,000件あたり$0.014から(公式X APIは$5.00)、全プラン毎秒20リクエストで、失敗したリクエストに課金されることはありません。
AIエージェント向けの無料のTwitter APIはありますか?
公式X APIに無料プランはなく、すべての読み取りが前払いで、1投稿$0.005からです。Sorsa APIは、すべての新規アカウントにカード不要で100回分の無料リクエストを付与し、有効期限はありません。エージェントがRESTツール、MCPサーバー、スキルのどれを通しても、IDで最大1万投稿、または約2,000件の検索結果を読み取れる量です。
AIエージェントは、Sorsa API経由でツイートを投稿できますか?
できません。Sorsa APIは設計上、読み取り専用です。45のエンドポイントは公開データの検索、取得、確認のみを行い、投稿、いいね、フォロー、DM送信はできません。そのため、エージェントが読むどんな内容からも、ご自身のXアカウントは手の届かない場所にあります。エージェントが投稿しなければならない場合は、公式X APIの別のツールを1投稿あたり$0.015で用意し、投稿前に1件ずつ承認してください。
公式のX MCPサーバーは、エージェント向けのTwitterデータAPIの代わりになりますか?
なりません。公式のX MCPは、AIアプリから公式X APIを呼び出すので、料金は同じ1投稿$0.005、1プロフィール$0.010で、XのMCPドキュメント(新しいタブで開きます)にあるとおり、OAuthまたはベアラートークンを使うご自身のXアプリが必要です。Sorsa APIは独自のMCPサーバーを持つ別のデータ供給元で、キー1つ、読み取り専用の40ツール、投稿は1,000件あたり$0.014からです。
AIエージェントは、開発者アカウントなしでXのデータを読めますか?
読めます。独自のキーを持つデータAPIを使う方法です。Sorsa APIにはXアカウント、開発者アプリ、OAuthのいずれも不要で、エージェントは ApiKey ヘッダー1つを送るだけで公開の投稿、プロフィール、フォロワーを読み取れます。最初のリクエストは、開発者アカウントなしのTwitter APIのガイドで手順を示しています。公式X APIは、開発者アカウントとアプリができるまで、何も応答しません。
GitHubに、AIエージェント向けのオープンソースのTwitterツールはありますか?
あります。Sorsa APIのMCPサーバーであるsorsa-mcp(新しいタブで開きます)とエージェント用スキルのsorsa-x-api-skillは、どちらもGitHubにあるMITライセンスのリポジトリなので、導入前に送信するすべてのリクエストを読めます。MCPサーバーは既定で https://api.sorsa.io/v3 とだけ通信し、どちらもデータを返すにはSorsa APIのキーが必要で、最初の100リクエストは無料です。
#検証の方法
2026年11月2日に、npmからsorsa-mcp 1.0.4を導入し、プレースホルダーのキーで起動して40のツールを一覧にし、定義を2.33万文字と計測しました。さらに post_tweet を呼び出して、サーバーに投稿ツールがないことを確認しました。GitHubでエージェント用スキルのファイルを読み、スキルのコマンドラインで一覧にして、説明とSKILL.mdを計測しました。docs.x.comのXの料金と、10月23日のexpansionsに関する通知を照らし合わせ、フレームワークのコードはopenai-agents 0.24.0とLangChain 1.4.7で確認しました。テスト用のキーは使っていません。Sorsa APIのリクエストは実際のAPIリファレンスに基づいて書き、レスポンスは文書化された形に合わせた短縮版の例です。
出典
- X API pricing, docs.x.com(新しいタブで開きます)
- X API PPU expansions update, X Developers forum, October 23, 2026(新しいタブで開きます)
- X MCP, docs.x.com(新しいタブで開きます)
- Agent resources, docs.x.com(新しいタブで開きます)
- LLM01: Prompt Injection, OWASP Gen AI Security Project(新しいタブで開きます)
- Sorsa API reference (OpenAPI)
- sorsa-mcp on npm(新しいタブで開きます)
- sorsa-x-api-skill on GitHub(新しいタブで開きます)
- Tools, OpenAI Agents SDK(新しいタブで開きます)
- Tools, LangChain(新しいタブで開きます)
- Extend Claude with skills, Claude Code docs(新しいタブで開きます)