キーワードにマッチする Tweet を Retweet する bot 作った


前回の 自動Retweet bot 作った のに続き、今度はあるキーワードにヒットした Tweet を 自動 Retweet する bot を作った。

自分のブログ hirofukami.com について Tweet されたものを自分のフォロワーにもアピールしたいかなと思ったのがきっかけ。 評価はポジティブでもネガティブでも問わないという、オープンスタンスで。

tweet id 情報を手元に置きたくないのでまずは Retweet して、すでに Retweet していた場合はエラーで逃げてしまうように。

今回も Ruby の gem twitter を使って簡単 Ruby スクリプト。 手元の MacBook の cron で動かしています。

環境

  • MacBook 12inch Retina OS X El Capitan
  • Ruby 2.0.0 (rvm)

以下、gist ソース

解説

Twitter REST APIs から search/tweets を使って、最近のキーワードにヒットしたtweetを取得する。

tweet が自分自身以外だった場合(screen_name で引っ掛けた)にその tweet を Retweet する。 すでに Retweet していた場合はエラー扱いになるので、 begin ~ rescue で逃げれるようにしてメッセージだけ出力して終了。

使い方

事前準備

  1. $ gem install twitter
  2. ~/.bash_profile に Twitter consumer key, access token などを追記
## Twitter API
export CONSUMER_KEY="SET YOUR KEY"
export CONSUMER_SECRET="SET YOUR SECRET"
export ACCESS_TOKEN="SET YOUR TOKEN"
export ACCESS_TOKEN_SECRET="SET YOUR SECRET"

自分のものに置き換えてください。

これらの情報は Twitter Application Management でアプリ追加をした時に発行されます。

cron に仕込む

$ crontab -e

10 * * * * cd $HOME/Development/Twitter-bot && $HOME/.rvm/wrappers/ruby-2.0.0-p353/ruby search-retweet-bot.rb

ruby は rvm を使っているためパスの指定が必要でした。毎時10分の時に実行されます。

MacBook を閉じてしまっている時は実行されないので、実質実行時間は自分がPCに向かっている間だけということになります。

結果

ということで、以下の様な tweet に対して自動 Retweet していますと。

自分もやりたい!けど、敷居が高い。と思った方はついでに動かすことはできるので相談ください。