実装ハンズオン

【Dify】X APIでソーシャルリスニング Part1:X APIの基礎と料金プラン

更新:

連載シリーズ

X APIを用いたソーシャルリスニング

全5回・X API × Dify・投稿収集からラベル付与・シート格納まで

  1. 概要:全体像と狙い
  2. X(旧Twitter) APIの基礎
  3. DifyでX APIから直近のポストを取得
  4. LLMで自動データラベル付与
  5. スプレッドシートに格納

目次

1. はじめに

この記事を読むと、以下のことができるようになります:

  • X  APIの基本的な仕組みを理解できる:X  APIの使い方や、基本的なエンドポイントについて理解できます
  • XAPIのトークンを取得できる:Difyで使うために必要なBearer Tokenを取得する手順が分かります

重要:この記事では、X APIの仕組みを理解するために、簡単なPythonコードの例を紹介します。ただし、コードを書くこと自体が目的ではありません。実際のソーシャルリスニングアプリは、次回のPart2で紹介するDifyというツールを使って作成します。

シリーズ構成

  • Part0: X APIを用いたソーシャルリスニング概要
  • Part1(本記事): X APIの基礎
  • Part2: Difyを用いてX APIから直近のポストを取得する
  • Part3: LLMを用いて自動でデータラベルを付与する
  • Part4: スプレッドシートにデータを格納する
  • Part5: Streamlitを用いたデータの可視化例

2. X APIとは?

X API(旧Twitter API)は、X(旧Twitter)のデータや機能にプログラムからアクセスするための公式インターフェースです。ソーシャルリスニングの文脈では、X APIを使うことで例えば次のようなことができます。

  • 特定のキーワードやハッシュタグを含むポスト(旧ツイート)を、条件付きでまとめて取得する
  • 定期的にポストを取得して、世論の変化や話題の盛り上がりを追いかける
  • 取得したポストをスプレッドシートやデータベースに保存し、可視化・分析に回す

X APIにアクセスするためには、「開発者としてこのAPIを使う権限がある」ことを証明するトークン(Bearer Token)が必要です。このBearer Tokenは、X Developer Portalでアプリを作成することで発行されます。Bearer Tokenの取得方法については本記事の後半で解説します。

3. X APIの料金プラン

2026年1月現在、X APIにはいくつかの料金プランがあり、それぞれで以下のような違いがあります。

  • 月間取得数の上限
  • レート制限

3-1. 主なプランの違い

以下は、X APIの代表的なプランの簡単な比較表です。プランに応じて、使えるAPIの種類やリクエスト制限、取得上限などが細かく設定されています。

X APIの有料プランを契約する際は、X APIを用いて実現したい施策が、契約予定のプランで実現可能かどうかを十分に吟味することが重要です。

プラン名 月額料金 向いている用途
Free 無料 個人の学習やプロトタイプ
Basic $200前後 小規模なビジネス用途
Pro $5,000前後 大規模な分析や本格運用
Enterprise 要問い合わせ 大企業・本番システム向け

※料金や制限は変更される可能性があります。最新情報は X Developer Platform を確認してください。

3-2. 学習・プロトタイプの観点からのおすすめ

  • 学習・検証フェーズ
    • まずはFreeプランで問題ありません。
    • 一方で15分に1回リクエストしか送れないなどの制限が厳しく、分単位で実行したい場合などには不向きです。
  • 簡単なソーシャルリスニングアプリを定期実行したくなったら
    • Freeプランだと、月間上限やレート制限にすぐ到達してしまいます。
    • 定期実行を行う用途では、Freeプランだけでは不十分です。
    • X APIを用いて実現したい内容がある程度固まってきたタイミングで、より上位のBasicプランを検討すると良いでしょう。

3-3. X APIでできること

ここでは、よく使われる代表的なエンドポイントを表形式でまとめました。これらを押さえておくと、基本的なソーシャルリスニングやボット開発がスムーズに進められます。

HTTP メソッド & パス 主な用途
ユーザーの取得 GET /2/users ユーザー ID や username を指定してユーザー情報を取得する。
特定ポストの取得 GET /2/tweets ツイート ID を指定して、1件〜複数件のツイートを取得する。
ポストの投稿 POST /2/tweets 新しいツイート(ポスト)を投稿する。
ポストの検索 GET /2/tweets/search/recent キーワードなどのクエリで、直近数日〜7日程度の公開ツイートを検索する。

X APIには他にも多様なエンドポイントが用意されています。さらに詳しく知りたい方は公式の開発者ドキュメントをご参照ください。

https://developer.x.com/en/docs/x-api

4.  X APIを実際に使ってみる

ここからは、次の3ステップで実際にX APIを動かしてみる流れを説明します。

  1. X Developerアカウントとアプリを作成する
  2. Bearer Tokenを取得する
  3. Pythonでポストを検索してみる

X APIが「どのようなリクエストを受け取り、どのようなレスポンスを返すのか」を一度体験しておくと、次回のDifyによるAPI操作がかなりスムーズになります。

4-1. X Developerアカウントとアプリの作成

ステップ1X Developer Portalにアクセスする

  1. X Developer Portal にアクセスします。
  2. 無料アカウントの作成へと進みます。
XDeveloperPortal

ステップ2:利用目的や規約へのチェックボックスに承諾をつけます。X APIに関する詳しい説明を知りたい場合は、公式ドキュメントを参照してください。

X APIはAPI制限もそうですが、利用規約にも細かいルールが存在します。論文情報のように広く提供されるデータではありません。
X APIを用いて実現したいご自身の目的が、利用規約に反していないかを詳細に検討してからX APIに登録されることを強く推奨します。

利用目的や規約

4-2. Bearer Tokenを取得する

続いて、X APIにアクセスするための鍵であるBearerTokenを取得します。

  1. 作成したアプリの詳細画面を開き、鍵マークをクリックします。
詳細画面
  1. 「Generate」もしくは「Regenerate」ボタンを押します。
詳細画面
  1.  以下のような画面が出てくるので、コピーボタンを押してTokenをコピーします。

重要:
・Bearer Tokenは一度しか表示されないことが多いです。
・必ずどこか安全な場所にコピーして保管してください。
・もし紛失した場合は、新しいTokenを再発行する必要があります。

Bearer Token

■ 安全な場所への保管方法

例えば次のような方法で保管しておくと安心です。

  • パスワード管理ツールに保存する
  • ローカルPCの安全なテキストファイルに保存する
  • 後でDifyの「環境変数」や「シークレット」に登録して使う

この記事では後ほど、Pythonコードの例の中で、環境変数からBearer Tokenを読み込む方法も紹介します。

4-3. Google Colabを用いてポストを取得する

ここでは、Google Colab を使って、X API の Recent Search エンドポイントから実際にポストを取得してみます。

  • ブラウザだけで完結する
  • 無料で使える
  • すぐにコードを試して壊してやり直せる

といった理由から、初回の「まず触ってみる環境」として Colab は相性が良いです。

X公式のGitHubリポジトリでもAPIの叩き方について解説されています。Pythonコードを読むことに抵抗がない方は、公式のサンプルも合わせてご参照ください。

https://github.com/xdevplatform/samples/blob/main/python/posts/search_recent.py

ただし、公式サンプルはAPIへの複数リクエストを前提としており、Freeプランではそのまま実行するとレート制限でエラーになる可能性があります。

本記事のサンプルは、Google Colabに簡単なコードを貼り付けるだけでAPIリクエストを体験できるように調整しており、Freeプランでも問題なく動かせる想定です。ぜひご自身の環境で試してみてください。

ここからは次の流れで進めます。

  1. Colab  ノートブックを開く
  2. Bearer Token を安全にノートブックに読み込む
  3. Python で Recent Search エンドポイントを叩く
  4. 取得したポストのテキストと作成日時を表示してみる

Google Colab を開く

  1. ブラウザで Google Colab にアクセスします。

  2. Google アカウントでログインします。

  3. 右上の「新しいノートブック」をクリックします。

これで、ブラウザ上で Python コードを実行できる空のノートブックが用意できました。

Google Colab

Colab に Bearer Token を安全に読み込む

X API を叩く際、X Developer Portal で先ほど発行した Bearer Token を利用します。ここでは、コードに直書きせずに Colab の「環境変数」として読み込む方法を紹介します。

  1. Colab の先頭セルに、次のコードを貼り付けて実行します。
"""
step1. X APIのDeveloper PortalからBEARER_TOKENを設定する
"""
import os

# 環境変数としてX APIのBEARER_TOKENを設定する
os.environ['BEARER_TOKEN'] = input('表示される箇所に、先ほど取得したX API用のBEARER TOKENを貼り付けてください')

# もし未入力であればエラーで処理を中断する
if not os.environ['BEARER_TOKEN']:
  raise ValueError('BEARER_TOKENが入力されていません')

# 環境変数として設定した値を、変数に格納する
bearer_token = os.environ['BEARER_TOKEN']
print('正しく設定できましたので、次のステップを実行してください')
  1. セルを実行すると、ノートブックに入力欄が表示されます。
  2. X Developer Portal でコピーした Bearer Token をそこに貼り付けて Enter を押します。
Colab画面

一度実行して先ほど取得した Bearer Token を貼り付けてからEnterを押します。赤い文字でエラーが表示されなければ次のステップに進めます。もしエラーが表示された場合は、 Bearer Token の入力ができていない可能性があるため、再度再生ボタンからセルを実行し、値をペーストし直してください。

■ Recent Search エンドポイントを叩く Python サンプル

ここまで準備ができたら、いよいよ X API を叩いてみます。以下は、Recent Search を使って、特定キーワードを含む直近のポストを取得する最小限のコード例です。

import requests

# Recent Search エンドポイントのURL
url = "https://api.x.com/2/tweets/search/recent"

# 認証情報をヘッダーに設定
headers = {
  "Authorization": f"Bearer {bearer_token}"
}

# 検索パラメータ
params = {
  # 日本語のポストのみ、リポストは除外
  "query": "X APIとは lang:ja -is:retweet",
  # 取得件数を設定
  "max_results": 10,
  # 取得したいフィールドを明示(作成日時など)
  "tweet.fields": "created_at"}

# X API にリクエストを送信
response = requests.get(url, headers=headers, params=params)

# レスポンスの処理
if response.status_code == 200:
  data = response.json()

  # "data"の中に取得したポストの一覧が入っている想定
  posts = data.get("data", [])

  if not posts:
    print("条件に合致するポストが見つかりませんでした。クエリを変えて試してみてください。")
    print("429エラーが出た場合は、レート制限に引っかかっているため、最後のリクエストから15分時間を空けてください。")
  else:
    for post in posts:
    text = post.get("text", "")
    created_at = post.get("created_at", "")
    print("-" * 50)
    print("テキスト:", text)
    print("作成日時:", created_at)
    print("-" * 50)
else:
  print(f"エラーが発生しました: {response.status_code}")
  print(response.text)
コード

■ コードの要点を解説(簡単に)

Bearer Token の扱い

  • bearer_token = os.environ.get(“BEARER_TOKEN”)
  • 前のセルでos.environ[“BEARER_TOKEN”] = input(…) としているため、ノートブックの中でos.environ.get(“BEARER_TOKEN”)で安全に参照できます。

 認証ヘッダー

  • headers = {“Authorization”: f”Bearer {bearer_token}”}
    • HTTP ヘッダーにAuthorization: Bearer … を付与することで、X API に対して「このユーザーとしてアクセスする」ことを示しています。

検索クエリ

  • params[“query”] が検索条件を表す文字列です。例えば次のように書くことで、用途に応じたソーシャルリスニングができます。
    • “ソーシャルリスニング lang:ja”
      • 日本語のポストのみを対象に、「ソーシャルリスニング」を含むものを取得
    • “子宮頸がんワクチン -is:retweet lang:ja”
      • 指定キーワードを含み、リポストを除外し、日本語のみを対象にするクエリ

レスポンスとエラーハンドリング

  • response.status_code == 200 のときが「リクエスト成功」です。
  • それ以外のステータスコード( 401429 など)の場合は、
    • 認証エラー(Token 設定ミス)
    • レート制限超過
      などの可能性があるため、response.text をそのまま表示して原因を確認します。

4-4. このサンプルで体験できること

ここまでの Colab + Python のサンプルを一度でも動かしてみると、

  • BearerToken を使って認証する
  • query パラメータで検索条件を指定する
  • JSONで返ってきた結果をPythonで処理する

という X API 利用の基本パターンを一通り体験できます。

実際のソーシャルリスニングアプリでは、ここで行っている処理とほぼ同じことを、次回紹介する Dify のワークフロー上で組み立てていきます。

5.  まとめ

5-1. 本記事で学んだこと

本記事(Part1)では、以下の内容を学びました:

  • XAPIとは:Xのデータや機能にプログラムからアクセスするためのインターフェース
  • Bearer Tokenの取得方法:X Developer Portalでアプリを作成し、Bearer Tokenを取得する手順
  • RecentSearchエンドポイント:過去7日間のツイートを検索できるエンドポイント
  • 料金プラン:まずはFreeプランから始めることをおすすめ

5-2. Difyを用いたローコード開発

今回、Pythonコードを直接書いてX APIからツイートを取得する方法を紹介しました。これは、X APIの仕組みを理解するうえで重要なステップです。

ただし、実際のソーシャルリスニングアプリを構築する際は、Difyのようなワークフロー自動化ツールを活用することで、次のようなメリットがあります:

  • 直感的なブロック操作:ブロックを配置していくことで処理を実装可能
  • 定期実行の自動化:スケジュールトリガーで定期的にツイートを取得
  • LLMとの連携:取得したツイートに対して、LLMで自動的に感情分析やラベリングを実行

次回のPart2では、Difyを用いてX APIから最新のツイートを自動取得する方法について詳しく解説します。具体的には、次のようなテーマを扱う予定です:

  • Difyのワークフローエディタの使い方
  • HTTPリクエストノードでX APIを呼び出す方法
  • スケジュールトリガーによる定期実行の設定
  • データの整形と後続処理への受け渡し

シリーズ構成

  • Part0. X APIを用いたソーシャルリスニング概要
  • Part1. X(旧Twitter) APIの基礎(本記事)
  • Part2. Difyを用いてX APIから直近のポストを取得する(←次の記事)
  • Part3. LLMを用いて自動でデータラベルを付与する
  • Part4. スプレッドシートにデータを格納する
  • Part5. Streamlitを用いたデータの可視化例

連載シリーズ

X APIを用いたソーシャルリスニング

全5回・X API × Dify・投稿収集からラベル付与・シート格納まで

  1. 概要:全体像と狙い
  2. X(旧Twitter) APIの基礎
  3. DifyでX APIから直近のポストを取得
  4. LLMで自動データラベル付与
  5. スプレッドシートに格納