定型文をツイートするTwitter botが必要になったので作る。以下覚え書き。
Twitter botとは
ボット(bot)とは
Twitter の機能を使って作られた、機械による自動発言システム。語源はロボットから来ている。特定の時間に自動ツイートする bot、ユーザーの bot 宛の発言にリプライする bot、特定のキーワードに反応する bot 等、様々な bot が存在する。
Twitter「ボット(bot)とは」とは?|ツイッター用語 – ツイナビ
http://twinavi.jp/guide/section/twitter/glossary/%E3%83%9C%E3%83%83%E3%83%88%EF%BC%88bot%EF%BC%89%E3%81%A8%E3%81%AF
今回作るbotは、あらかじめ用意した文章を決まったタイミング(たとえば毎時零分)でツイートするもの。
参考サイト
Twitterは途中からアカウント認証方式がOAuthに変更されている。ネットを検索するとTwitter bot開発の記事がたくさんヒットするけど、旧認証方式を使った古い記事も多い。いくつかの記事を読んでみた結果、以下の記事が簡潔でわかりやすかったので、この記事をお手本にして作業を進める。
PHP + OAuthで Twitter botをつくってみよう – PHP入門 – Webkaru
http://webkaru.net/php/twitter-bot/
Twitterアカウントを作る
まずは当然のこととしてTwitterアカウントが必要なので普通に作る。
開発者サイトにログイン
Twitter開発者サイトに自分のTwitterアカウントでログインする。
Twitter Developers
https://dev.twitter.com/
Twitter Appの作成
以下はTwitter開発者サイトでの作業。
- 画面右上の自分のアイコンをクリックして[My applications]を選択する。
- [Twitter Apps]ページで[Create New App]ボタンを押下する。
- [Create an application]ページで[Application details]に必要事項を入力する。
[Name*] Twitter Appの名前(必須)
[Description*] Twitter Appの説明(必須)
[Website*] ウェブサイト(必須)
[Callback URL] 認証に成功した後にジャンプするURL。今回作成するBotには必要なさそうなので空白 - [Developer Rules of the Road]の規則に目を通して Yes, I agree.にチェックする。
- [Create your Twitter application]ボタンを押下する。
すると、以下のメッセージが表示されてアプリケーションが作成される。
1 |
Your application has been created. Please take a moment to review and adjust your application's settings. |
アクセスレベルの変更
Botのアクセスレベルを設定する。デフォルトはRead onlyだけど、これはTwitterアカウントが受け取ったツイートを読み取るだけの権限のようなので、Botからツイート(書き込み)できるようにアクセスレベルを変更する必要がある。
- Twitter Appの[API Keys]タブをクリック。
- [Application settings]エリアの[Access level]を[Read-only]から[Read and Write]に変更する。
Twitterアカウントによっては、アカウントに電話番号が紐付けされていないと書き込み権限が付与できない場合がある。2つのアカウントで試したところ、1年近く運営しているアカウント(フォロワー数は1,000超)だとすんなり書き込み権限を付与できたけど、1週間ほど前に作成したアカウント(フォロワー数は百以下)で書き込み権限を付与しようとしたら、アカウントに電話番号を登録するように言われた。電話番号を登録した後は、問題なく書き込み権限を付与できた。
Twitter Help Center | Adding your mobile number to your account
https://support.twitter.com/articles/110250-adding-your-mobile-number-to-your-account-via-web#
アクセストークンの作成
次はアクセストークンを作成する。アクセストークンは見ず知らずのBotが成りすまして自分のアカウントにツイートするのを防ぐために必要なのだろう。ボタンを押すだけなので難しいことはない。
1 |
Your access token You haven't authorized this application for your own account yet. By creating your access token here, you will have everything you need to make API calls right away. The access token generated will be assigned your application's current permission level. |
- Twitter Appの[API Keys]タブをクリックする。
- ページの下のほうの[Your access toke]エリアにスクロール。
- [Create my access token]ボタンを押下する。
これでTwitter Appの設定は完了。画面に表示されている情報のうち、Bot運営に必要なのは以下の4項目。
- API key
- API secret
- Access token
- Access token secret
Botソフトの作成
参考サイトに紹介されていた以下のPHPコードを使うとメチャ楽だ。
abraham/twitteroauth · GitHub
The first PHP Library to support OAuth for Twitter’s REST API
https://github.com/abraham/twitteroauth
サブディレクトリtwitteroauthを作成して以下のファイルを配置しておく。
- twitteroauth/OAuth.php
- twitteroauth/twitteroauth.php
Botは以下のように簡単に書ける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php require_once('twitteroauth/twitteroauth.php'); $api_key = "xxxxxxxxxxxxxxxxxxxxxxxxx"; $api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; $access_token = "xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; $access_token_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; $message = "test message"; $connection = new TwitterOAuth($api_key, $api_secret , $access_token, $access_token_secret); $req = $connection->OAuthRequest("https://api.twitter.com/1.1/statuses/update.json", "POST", array("status"=> $message )); ?> |
この例では固定テキストメッセージをツイートしているが、ファイルやデータベースにあらかじめメッセージを用意しておくことで、都度ロードしてバラエティに富んだ内容をツイートすることも可能だろう。動作確認したらcronに登録して自動運転させれば完成。
さらに参考サイト
以下のサイトは説明が詳細で参考になる。
Twitterを100倍楽しむためのbot開発基礎講座:連載|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/twitterbot
PHP+OAuthでTwitter – SDN Project
http://www.sdn-project.net/labo/oauth.html
PHP+OAuthでTwitterのBotを作ってみる – SDN Project
http://www.sdn-project.net/labo/twitter_bot.html