メインコンテンツへスキップ
このガイドでは、フィルタリングされたストリームに接続し、フィルタルールに一致する投稿をリアルタイムで受信する方法を説明します。
前提条件作業を始める前に、次のものを用意してください。
  • 開発者アカウント
  • App のベアラートークン (開発者コンソールの「Keys and tokens」で確認できます)

フィルタールールを作成する

ルールは、どの投稿を受信するかを決めます。演算子を使用して、キーワード、ハッシュタグ、ユーザーなどにマッチさせます。ルールの例: 「cat」を含み、画像付きの投稿にマッチさせる:
cat has:images

ルールを作成する

ルールの構文と演算子を学ぶ

ストリームにルールを追加する

ルールエンドポイントを使用してルールを追加します。どのルールが各ポストに一致したかを特定できるように、tag を含めてください。
cURL
curl -X POST "https://api.x.com/2/tweets/search/stream/rules" \
  -H "Authorization: Bearer $BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "add": [
      {"value": "cat has:images", "tag": "cats with images"}
    ]
  }'
レスポンス:
{
  "data": [
    {
      "id": "1273026480692322304",
      "value": "cat has:images",
      "tag": "cats with images"
    }
  ],
  "meta": {
    "sent": "2024-01-15T10:30:00.000Z",
    "summary": {
      "created": 1,
      "not_created": 0,
      "valid": 1,
      "invalid": 0
    }
  }
}

ルールを検証する

追加したルールを確認するため、すべてのアクティブなルールを一覧表示します:
cURL
curl "https://api.x.com/2/tweets/search/stream/rules" \
  -H "Authorization: Bearer $BEARER_TOKEN"

ストリームに接続する

マッチする投稿を受信するための永続的な接続を確立します:
cURL
curl "https://api.x.com/2/tweets/search/stream?\
tweet.fields=created_at,author_id&\
expansions=author_id&\
user.fields=username" \
  -H "Authorization: Bearer $BEARER_TOKEN"

受信した投稿の処理

一致した投稿ストリーム (JSONオブジェクト) :
{
  "data": {
    "id": "1234567890",
    "text": "Look at this cute cat! 🐱",
    "author_id": "9876543210",
    "created_at": "2024-01-15T10:35:00.000Z",
    "edit_history_tweet_ids": ["1234567890"]
  },
  "includes": {
    "users": [
      {
        "id": "9876543210",
        "username": "catperson"
      }
    ]
  },
  "matching_rules": [
    {
      "id": "1273026480692322304",
      "tag": "cats with images"
    }
  ]
}
matching_rules 配列には、定義したタグに基づいて、どのルールがそのポストにマッチしたかが示されます。

ルールを削除(任意)

ID を指定してルールを削除します:
cURL
curl -X POST "https://api.x.com/2/tweets/search/stream/rules" \
  -H "Authorization: Bearer $BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "delete": {
      "ids": ["1273026480692322304"]
    }
  }'

接続の管理

ストリームは 20 秒ごとに空行 (\r\n) を送信します。20 秒間、データまたはキープアライブ信号を受信しない場合は、再接続してください。
接続を閉じるには、Ctrl+C を押すか、ターミナル ウィンドウを閉じてください。
1 つの App につき接続は 1 つだけ許可されます。新しい接続を開くと、既存の接続は閉じられます。

次のステップ

ルールを作成

ルール構文について学ぶ

オペレーターリファレンス

利用可能なすべてのオペレーター

切断時の対応

スムーズに再接続する

APIリファレンス

エンドポイントの詳細なドキュメント