Twitter PowerTrack API を使ってツイートを取得する

[Twitter PowerTrack API](https://developer.twitter.com/en/docs/tweets/filter-realtime/overview/powertrack-api) を利用することで、大量のリアルタイムツイートから、自分の指定する条件にマッチしたツイートだけを取得することができます。このページでは、Twitter PowerTrackの仕組み、指定できる条件、返ってくるデータ形式について解説しています。a

[Twitter PowerTrack API](https://developer.twitter.com/en/docs/tweets/filter-realtime/overview/powertrack-api) は、Twitterの法人プランを契約している開発者のみが利用できます。Twitter PowerTrack APIを使ったお仕事のご依頼、ご相談については、[@ts_3156](https://twitter.com/ts_3156) までお気軽にご連絡ください。

このページでは、PowerTrack APIを紹介しています。Historical PowerTrack APIについては [Historical PowerTrack API を使ってツイートを取得する](https://qiita.com/ts-3156/items/47090b045a168bfdd5db) をご参照ください。

## Twitter PowerTrack API とは

Twitter社が提供する、「全てのツイートから、関心のあるツイートのみをフィルタリングする機能」のことです。この機能を使うことで、大量のリアルタイムツイートから、指定した条件にマッチするツイートだけをAPIを介して取得することができるようになります。フィルタリングには、ユーザー属性、地理的位置、言語、その他多くの属性を使うことができます。

※Twitter PowerTrack APIは、Twitterの法人プランを契約している開発者のみが利用できます。

## Twitter PowerTrack API のコアコンポーネント

Twitter PowerTrack APIは主に下記の2つのエンドポイントから構成されています。

### ルールエンドポイント

GET、POSTメソッドを使って、ルールベースのツイート取得を可能にするエンドポイントのこと。ツイート取得に利用するルールは、数千のルールの中から自分に必要なものだけを選ぶことができる。

### ストリームエンドポイント

GETメソッドを使って、HTTPストリーミング接続を介してツイートを取得するエンドポイントのこと。ストリーミングエンドポイントについてもルールエンドポイントと同様に、ツイートを取得するためのルールを指定することができる。

### ルールタグ

PowerTrackストリームを使ってデータを取得する際に、どのルールがマッチしたのかを後から確認することができます。この機能を利用することで、どのようなトピック、会話、その他の何かしらのルールにマッチしたのかをビジネスに有効活用することができます。

PowerTrack APIはリアルタイムデータの取得に特化しています。過去の指定した日時のツイートデータを活用したい場合は、Twitter Search APIを利用することもできます。

## Twitter PowerTrack APIで利用できるルール

Twitter PowerTrack APIで利用できるルールは下記の通りです。

- keyword
    - キーワード
- emoji
    - 絵文字
- "exact phrase match"
    - 正確なフレーズ
- "keyword1 keyword2"~N
    - 単語の近接検索。例：「赤いりんご」を検索して「赤りんご」や「赤く実ったりんご」にマッチ
- contains:
    - 部分文字列
- from:
    - ツイートしたユーザーの指定
- to:
- url:
    - ツイートをに含まれるURL
- url_title:
    - ツイートに含まれるURLのページタイトル
- url_description:
    - ツイートの含まれるURLの説明文
- url_contains:
    - ツイートに含まれるURLの本文
- has:links
- sample:
- #
- point_radius:[lon lat radius]
    - 位置情報を緯度経度と半径で指定
- bounding_box:[west_long south_lat east_long north_lat]
    - 位置情報を矩形で指定
- @
- $
- bio:
    - プロフィール
- bio_name:
    - ユーザー名
- retweets_of:
- lang:
    - 言語
- bio_location:
    - ロケーション
- statuses_count:
    - ツイート数
- followers_count:
    - フォロワー数
- friends_count:
    - フォロー数
- listed_count:
    - リストされている数
- is:verified
    - 認証済みアカウントかどうか
- source:
- place:
    - 場所
- place_country:
    - 国
- has:geo
    - 地理情報付きかどうか
- has:mentions
    - メンションされているかどうか
- has:hashtags
    - ハッシュタグがあるかどうか
- has:images
    - 画像が添付されているかどうか
- has:videos
    - 動画が添付されているかどうか
- has:media
    - メディアが添付されているかどうか
- has:symbols
- is:retweet
    - リツイートかどうか
- is:reply
    - リプライかどうか
- is:quote
- retweets_of_status_id:
- in_reply_to_status_id:
- has:profile_geo
- profile_point_radius:[long lat radius]
- profile_bounding_box:[west_long south_lat east_long north_lat]
- profile_country:
    - プロフィールの国
- profile_region:
    - プロフィールの地域
- profile_locality:
- profile_subregion:

## Twitter PowerTrack API を使った仕事のご依頼について

[Twitter PowerTrack API](https://developer.twitter.com/en/docs/tweets/filter-realtime/overview/powertrack-api) は、Twitterの法人プランを契約している開発者のみが利用できます。Twitter PowerTrack APIを使ったお仕事のご依頼、ご相談については、[@ts_3156](https://twitter.com/ts_3156) までお気軽にご連絡ください。

具体的に何をするのかが決まっていない場合であっても、御社のニーズとこのAPIで出来ることのご相談から承っております。

[Twitter PowerTrack API を使ってツイートを取得する](https://qiita.com/ts-3156/items/18faf070d5038ef7f3b5)
[Twitter Historical PowerTrack API を使ってツイートを取得する](https://qiita.com/ts-3156/items/47090b045a168bfdd5db)
[Twitter Engagement API を使ってツイートを取得する](https://qiita.com/ts-3156/items/6a31452e680a445811de)
[Twitter Premium Search API を使ってツイートを取得する](https://qiita.com/ts-3156/items/62d2b89a24ea6cfcab8e)

## Twitter PowerTrack APIと類似するその他のAPI

### リアルタイム

リアルタイムにデータを取得することができる。

- [PowerTrack API](https://developer.twitter.com/en/enterprise#modal-powertrackapi)
    - リアルタイムなデータにルール/フィルタを適用したツイートを取得するAPI。
- [Decahose stream](https://developer.twitter.com/en/enterprise#modal-decahosestream)
    - リアルタイムデータからサンプリングされた10%のツイートを取得するAPI。キーワード等でのフィルタリング機能はない
- [Account Activity API](https://developer.twitter.com/en/enterprise#modal-accountactivityapi)
    - 指定したアカウントの活動を取得するためのAPI。例：ツイート、メンション、リツイート、フォロー、DMの送受信

### ヒストリカル

過去の全ツイートから指定した条件にマッチするツイートのみを取得することができる。

- [30-Days Search API](https://developer.twitter.com/en/enterprise#modal-30daysearchapi)
    - 過去30日の完全なツイートから条件にマッチしたツイートを取得するAPI
- [Full-Archive Search API](https://developer.twitter.com/en/enterprise#modal-fullarchivesearchapi)
    - 過去の全期間のツイートから条件にマッチしたツイートを取得するAPI
- [Historical PowerTrack API](https://developer.twitter.com/en/enterprise#modal-historicalpowertrackapi)
    - 過去の全期間のツイートに対してバッチジョブ形式でツイート取得を行うAPI

### インサイト

ツイートに対するユーザーからの反応を取得することができる。例：ツイートのインプレッション、エンゲージメント、お気に入り、リツイート、リプライ、ビデオビュー

- [Engagement API](https://developer.twitter.com/en/enterprise#modal-engagementapi)
    - 自分のツイートのインプレッション、エンゲージメント、全てのツイートのお気に入り、リツイート、リプライ、ビデオビューを取得するAPI

## Twitter APIのRubyクライアント

RubyからTwitter APIへアクセスするクライアントにはいくつかの種類がある。

### twitter gem

非公式のTwitter REST APIクライアント。通常のREST APIであればほとんど全てを網羅している。

[twitter gem](https://github.com/sferik/twitter)

### search-tweets-ruby

公式のPremium Search API、Enterprise Search APIに対応したライブラリ。gemではなく、通常のRubyコードとして提供されている。

[
search-tweets-ruby](https://github.com/twitterdev/search-tweets-ruby)

### twitter-ads gem

公式のTwitter Ads APIクライアント。

[twitter-ads gem](https://github.com/twitterdev/twitter-ruby-ads-sdk)

## 関連リンク

[Filter realtime Tweets](https://developer.twitter.com/en/docs/tweets/filter-realtime/overview/powertrack-api)
[Get batch historical Tweets](https://developer.twitter.com/en/docs/tweets/batch-historical/overview)
[Get Tweet engagement](https://developer.twitter.com/en/docs/metrics/get-tweet-engagement/overview)
[Rules and filtering](https://developer.twitter.com/en/docs/tweets/rules-and-filtering/guides/using-premium-operators)
[Twitter Enterprise](https://developer.twitter.com/en/enterprise)