メインコンテンツへスキップ

はじめに

recent search endpoint では、過去7日間に公開された Posts のみを取得できますが、user Post timeline と user mention timeline の各 endpoint を使用すると、認可済みユーザー(user ID を使用)について、7日より前の Posts やメンションも取得できます。開発者はこれらの endpoint を用いて、ユーザーのタイムラインやメンションに含まれるトピック、エンティティ、感情を分析できます。本チュートリアルでは、user Tweet timeline および user mention timeline の各 endpoint を使用して、特定ユーザーの Posts とメンションを探索する方法を紹介します。  

前提条件

  • ユーザーの Tweet タイムラインおよびユーザーのメンションタイムラインの endpoint を使用するには、有効なデベロッパーアカウントが必要です。
  • Project を作成している必要があります。
  • デベロッパーアカウントに登録し、新しい developer portal エクスペリエンスを有効化している必要があります。
  • developer portal で作成した Project に紐づく 開発者用 App の有効なキーおよびトークンが必要です。
  • X developer portal 上の App から取得した Bearer Token。
  • 承認済みのデベロッパーアカウントがない場合は、申請できます

承認済みのデベロッパーアカウント

まだお持ちでない場合は、こちらから申請してください

Project を作成し、App を接続する

developer portal で「Create a new Project」をクリックします。
名前を設定し、該当するユースケースを選択して、Project の説明を入力します。次に、新しい App を作成するか、既存の App を接続します(App は、X API への HTTP リクエストに必要な API キーを保持するコンテナです)。
「create a new App instead」をクリックし、App 名を入力して新しい App を作成します。
「Complete」をクリックすると、API Key と Bearer Token が発行され、X API v2 の新しい endpoint に接続する際に使用できます。
API Key、API Secret Key、Bearer Token の横にある (+) をクリックし、これらの値をローカル環境の安全な場所にコピーしてください。次の手順で API を呼び出す際に必要になります。 Note: 上のスクリーンショットではキーは非表示になっていますが、ご自身の developer portal では API Key、API Secret Key、Bearer Token の実際の値を確認できます。  

ユーザーのTweetタイムラインおよびユーザー言及タイムラインendpointで使用するユーザーIDの取得方法

ユーザーのTweetタイムラインとユーザー言及タイムラインのendpointでは、ユーザーIDを使ってPostsを取得できます。ユーザー名からユーザーIDを取得するには、新しい user lookup endpoint v2 を使用します。USER_NAME には任意のユーザー名を、XXXX には上で取得した自身の Bearer Token を指定してください
  curl --request GET 'https://api.x.com/2/users/by/username/USER_NAME --header 'Authorization: Bearer XXXXXX'
レスポンスには、以下のとおりユーザーのidが含まれます。
{
   "data": {
       "id": "2244994945",
       "name": "開発者",
       "username": "XDevelopers"
   }
}

ユーザーのTweetタイムラインおよびユーザーメンションタイムラインendpointへの接続

ユーザーのTweetタイムラインを取得するには、ターミナルで次のcurlコマンドを実行してください(USER_ID は取得対象のユーザーのユーザーIDに、XXXX は上で取得した自身の Bearer Token に必ず置き換えてください)
curl --request GET 'https://api.x.com/2/users/USER_ID/tweets' --header 'Authorization: Bearer XXXXXX'
これらのリクエストのJSONレスポンスには、既定でPostsのidとテキストが含まれます(例は以下を参照)。
{
   "id": "1334200897081987072",
   "text": "👀 X API v2が初めての方は、最初のリクエストを作成するためのステップバイステップガイドをご確認ください https://t.co/4rZqThpSbp"
}
レスポンスで追加の fields(例:ユーザー情報や、context annotations などの追加の Tweet fields)を返したい場合は、それらの fields を明示的に指定する必要があります。詳しくは、fields と expansions の使用ガイドをご覧ください。 任意のプログラミング言語を使ってこれらの Posts を取得することも可能です。ユーザーの Tweet タイムラインおよびユーザーのメンションタイムラインの endpoint 向けの Python、Node(JavaScript)、Java、Ruby のサンプルコードは、GitHub リポジトリをご覧ください。

ユーザーの Posts を探索する

ユーザーの Tweet タイムラインとユーザーのメンションタイムラインの endpoint を使って Posts を取得する方法を把握したら、そのユーザーの Posts を探索し始めることができます。たとえば、ユーザーのメンションに含まれる一般的な固有表現を特定したい場合は、次のようにします。 API リクエストで、Tweet のレスポンスに context_annotations オブジェクトが返されるように指定します。
curl --request GET 'https://api.x.com/2/users/USER_ID/mentions?tweet.fields=context_annotations' --header 'Authorization: Bearer XXXXXX'
レスポンスでは、メンションに名前付きエンティティが含まれているかどうかを確認できます。例を次に示します:
{
   "domain": {
       "id": "47",
       "name": "Brand",
       "description": "ブランドおよび企業"
   },
   "entity": {
       "id": "783214",
       "name": "X"
   }
}
メンションにどの人気エンティティが含まれているかを確認したい場合は、メンション内の各Tweetを解析し、人気エンティティの出現回数を集計できます。 タイムライン内でメディアを含むすべてのPostsについてプレビュー画像のURLを調べたい場合は、次のようにします。 APIリクエストで、tweet.media の fields に preview_image_url を、attachments.media_keys の expansions を指定します
curl --request GET 'https://api.x.com/2/users/2244994945/mentions?max_results=100&media.fields=preview_image_url&expansions=attachments.media_keys' --header 'Authorization: Bearer XXXXXX'
レスポンスでは、以下のように includes オブジェクト内に preview_image_url が含まれます。
{
   "includes": {
       "media": [
           {
               "media_key": "16_1334657439640121344",
               "preview_image_url": "https://pbs.twimg.com/tweet_video_thumb/EoWn3rqU8AAtFWL.jpg",
               "type": "animated_gif"
           }
       ]
   }
}
ユーザーのPostsのナビゲーション方法を理解したら、他のAPIやサービスを活用してPostsでさらに多くのことができます。以下は、ユーザーのTweetタイムラインおよびユーザーのメンションタイムラインのendpointを使用する際に参照すると便利なリソースです。

リソース

I