先日、とある案件のミーティングにて、
ディレクター「仁木さん、Twitterで特定のキーワードが含まれたツイートのタイムラインをホームページに埋め込みたいんだけれど、出来るかな?」
仁木「なるほど。(Twitterならウィジェット機能でそういうのあるだろうし簡単に出来るでしょ、知らんけど)大丈夫ですよ。」
というやりとりがありました。
Twitterはもう13年も続いている長者SNSです。そのTwitterがそんな需要の高そうな機能を用意していないはずがない。
そんな風に考えていた時期が僕にもありました。
実はTwitterは2018年5月にこれまでのタイムラインウィジェットのサポートを廃止しており、新しくpublish.twitter.comでタイムラインウィジェットを作成するように仕様が変更されていました。
2018年5月以前のタイムラインウィジェットは、条件を指定して一致したツイートのタイムラインを作成するウィジェット機能で、まさに今回の要望にピッタリの機能です。
しかし、新しくなったタイムラインウィジェットでは、キーワードで抽出されたタイムラインは作成できなくなってしまっていたのです。
新しいタイムラインウィジェットを作成できる「Twitter Publish」。タイムラインのURLを入力することでウィジェットを作成できる。
仁木「なんと…。これだとウィジェットを作れないじゃないか…。」
タイムラインウィジェットが使えないとなると、別の手段を考えなければなりません。
そこでディレクターと相談し、「Botサービスの自動RT機能を使って、RTするアカウントのタイムラインを表示させよう」という方法に切り替えることにしました。
仁木「Botサービスを使ったら設定するだけで簡単に動く。ウィジェットもアカウントのタイムラインならTwitter Publishで出せるし、余裕。」
TwitterのBotサービスを検索するとたくさんのサービスがありましたが、その中で「MAKEBOT」が良さげでした。
時間指定の呟きや特定のキーワードが含まれるツイートの自動RT、自動お気に入りなど、豊富な機能が無料で利用できる「MAKEBOT」
MAKEBOTの使い方を調べてみると、どうやらアカウントとBotを連携させるためにTwitterのデベロッパーサイトからアプリケーションを登録してAPI KeyとSecret KeyをMAKEBOT側に設定しないといけないようでした。
つまり、
MAKEBOT「Twitterでアプリを申請・登録して、発行されたキーを登録してくれないと私は動かないですからね。」
ということでした。
仁木「わざわざアプリ登録しないといけないの?なんか大げさだし英語だし出来るなら避けたい…。けれど他に方法が見つからない…。」
今回MAKEBOTで必要なキーは、API KeyとAPI Secret Keyの2つです。これらのキーはアプリケーションを作成するとペアで発行されます。
アプリはTwitterの開発者サイトから作成できます。
まずは、画面右上の「Sign In」からTwitterにログインします。Twitterアカウントを持っていない人はアカウントを作成します。
「Twitter Developer Platform」、右上にある「Sign In」からTwitterのアカウントでログインできます。
ログインできたら、右上の「App」のリンクをクリックして作成済みアプリケーションのリストが出るページへ遷移します。
まだアプリを作成していないので、リストには何も表示されていませんが「Create an app」ボタンからアプリの作成へ進みます。
ここからアプリ作成者の情報を入力していき、アプリをTwitterへ申請します。
しかし、基本的に全ての入力項目は英語で選択・入力しなければいけません。
英語が苦手な人は逃げ出したくなると思いますが、翻訳ツールを駆使して入力していきましょう。
まず、最初にアプリ作成で利用するTwitterアカウントの確認です。
これは現在ログイン中のアカウントが選ばれているので、問題なければ「Continue」を選択します。
個人利用か法人利用か、当てはまる方を選ぶと下記に詳細の入力が表示されるので入力していきます。
今回、僕は法人の方を選択しました。法人の場合は、法人名、コーポレートサイトのURL、国、業種などを入力してきます。
今回作成するアプリケーションがどういった目的で作成されるのか、またアプリケーションがどういったサービスを提供するのかなどを入力します。
アプリの作成手順の中で、おそらくココが一番重要になるので2番目の入力項目は出来るだけ具体的に説明しましょう。
最後は、Twitter APIの利用規約になるので同意をします。
完了するとアプリ申請が完了し、Twitter社に審査されます。
審査期間は遅いと1〜2週間程かかる場合があるそうですが、僕の場合は2〜3日で申請が完了しAPI Keyが発行されました。
その間に一度「アプリケーションの詳細についてもっと詳しく書いて」という内容のメールがきたので、最初に書いていた内容に肉付けするような感じで文章を書き足してメールを返信しました。ちなみにメールはTwitterに登録しているメールアドレス宛に届きます。
仁木「やっとアプリ作成できた…。この後何するんだっけ…。」
Botとの連携のことなど、とうに忘れ去ってしまいました。
MAKEBOTではまずアカウントの登録をします。
登録方法とBot作成方法については今回割愛させていただきます。
Botの作成が完了したのち、Botの設定画面で「つぶやき元の設定」という項目があります。
ここに先ほどのアプリ作成で発行したAPI keyとAPI secret keyとcallback URLを設定します。
アプリが無事に作成できたら、デベロッパーページにログインして画面右上のナビゲーションから「Apps」を選択します。
ここから利用するアプリの「Details」ボタンを選択して、詳細へ進みます。
3つのタブメニューから「Details」を選択すると、項目の中にcallback URLがあるので、ここのURLをMAKEBOTにコピペします。
3つのタブメニューから「Keys and tokens」を選択すると、API keyとAPI secret keyがあるので、ここもMAKEBOTにコピペします。
API keyとAPI secret keyをそれぞれコピペします
MAKEBOT側で「設定を保存」するとTwitterアカウントとの連携認証の画面にリダイレクトするので許可しましょう。
最後は自動RTの設定です。MAKEBOTの「リツイート設定」で自動RTの設定をしましょう。(設定方法は今回割愛させていただきます。)
仁木「これであとはRTされるのを待つだけ。」
数日間、しばらくBotの様子を見ていると全くRTされていないことがわかりました。
MAKEBOTのつぶやき機能などは正常に動作するので、Botとの連携自体は出来ているようですが、肝心のリツイート機能だけ動いてくれない。
仁木「キーワードを変えても、動作時間の間隔を変えても動かない…。詰んだ…。」
最後の手段でPHPで直接APIを呼び出して検索&リツイートすることにしました。
TwitterのAPIをPHPで呼び出すにはPHPライブラリの「twitteroauth」が必要になります。
composerでライブラリをインストールします。
1 |
composer require abraham/twitteroauth |
PHPファイルを作成して、autoload.php経由でtwitteroauthを読み込みましょう。
1 2 |
require "vendor/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; |
さらに、APIを呼び出すためにはConsumer key、Consumer secret key、Access token、Access token secretが必要になります。
これらのキーはTwitterデベロッパーサイトのアプリの詳細に記載されています。
Consumer key、Consumer secret keyはMAKEBOTの時に出てきていた、API keyとAPI secret keyのことです。
今回はMAKEBOTの時に作ったアプリをそのまま使用しました。
Access tokenとAccess token secretが記載されていない場合は「create」をクリックするとキーが生成されます。
以下のコードのCONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secretにそれぞれのキーを割り当てます。
1 |
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret); |
API呼び出しまでをかけたら、次はツイートの検索・取得のコードを書きます。
1 2 3 |
$query = "ここに検索クエリを書きます"; $tweets_params = ['q' => $query,'count' => '5']; $tweets = $connection->get('search/tweets', $tweets_params)->statuses; |
TwitterのAPIですが、プランが3つあり、プランのグレードによってAPIで利用できる機能や増えたりツイート検索の品質が向上したりします。
グレードの高いプランを利用すると呼び出し量に応じて課金が発生するので、無料で利用したい場合は一番下のStandardプランを利用することになります。プランは設定しなければ基本Standardが適用されます。
Standardではツイート検索の精度が完璧ではなく、一部取得できないツイートも出てくるようです。
ツイートを取得できたら、今度はこれらのツイートをリツートしていきます。
取得ツイートは配列で格納されているのでループで繰り返し処理します。
1 2 3 4 5 6 7 |
if($tweets) { foreach($tweets as $tweet) { # 取得したツイートをリツイート $tid = $tweet->id; $retweetStatus = $connection->post("statuses/retweet/${tid}"); } } |
これまでのコードをまとめたのが以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php require("vendor/autoload.php"); # https://twitteroauth.com/ use Abraham\TwitterOAuth\TwitterOAuth; $connection = new TwitterOAuth("consumerKey", "consumerSecretKey", "accessToken", "accessTokenSecret"); # 検索クエリ生成 $query = "ここに検索クエリを書きます"; # 検索結果のツイート取得 $tweets_params = ['q' => $query,'count' => '5']; $tweets = $connection->get('search/tweets', $tweets_params)->statuses; if($tweets) { foreach($tweets as $tweet) { # 取得したツイートをリツイート $tid = $tweet->id; $retweetStatus = $connection->post("statuses/retweet/${tid}"); } } ?> |
このPHPを実行するとキーワードの含んだツイートをリツイートしてくれます。
ちなみにTwitterアカウントとの紐付けですが、アプリを作成したアカウントと既に紐づいているようで、ツイッターのアプリ側で連携の認証は必要ありませんでした。
最後に、先ほど用意したPHPファイルをサーバーにアップし、サーバーのcronで定期実行するようにしました。
仁木「長かった…。」
というわけで、今回はTwitterのAPIを使ってアカウントを操作する方法を実例をあげてご紹介しました。
英語の得意でない僕にとって、アプリの作成が一番ハードルが高かったです。
Google翻訳にはとてもお世話になりました。
今後、僕と同じような状況になった人の参考になればと思い、記事にしてみました。