Twitter でアカウントを作りはじめたころ、誰もフォローしてくれない日々。。。
誰しも一度は「めちゃくちゃフォロワー欲しい!」って思いませんでした?
そんなある日私は Python というプログラミングで Twitter 上に Bot をつくり
「3か月間、自動でどれくらいフォロワーが増えるのか?」検証してみました!
その検証結果がこれ!↓
割と育っとる。。
たぶん読者の中には「どこかでみた安っぽい Botだな」と思われた方もいるかもしれません。
しかし 3か月間完全放置で 0フォロワー → 500 フォロワーまで育ちました!!!!
書くのを忘れてた上に、3か月完全放置していたらフォロワーが456に減りました・・・
ポンコツすぎてすみません。。。
この Bot の機能ですが、これだけです!!
- 毎日の自動ツイート
- 指定した「検索ワード」にヒットするユーザを自動フォロー
- 指定した「検索ワード」にヒットするツイートを自動リツイート
- フォローしてくれた人を自動リフォロー
- フォロバになれなかった人を自動リムーブ
たぶん上記の機能だけで Twitter Bot としては必要な機能は一通り満たしていると思っています。
また今回下記機能についてはわざと追加しませんでした。
- 「自動いいね」・・・ Twitter 上では禁止されているので実現していません。
- フォロー返しのDMメッセージ(フォローしてくれてありがとうってメッセージを送る)・・・ダイレクトメッセージを送ることが送信先アカウントの同意が必要らしく DM を勝手に送りまくると違反行為になるらしい(同意があれば送信可)ので実現しませんでした。
せっかく BOT つくったのにアカウント停止になったら悲しいので上記の機能はやめておきました。
※ 参考:Twitterルール
この記事では作成した Python というプログラミング言語をつかって自作した Twitter Bot の作り方~動かし方まですべてをご紹介します。
よければぜひ見ていってください。
Twitter Bot を作るための手順まとめ
Twitter Bot を作成する上での手順はこんな感じです。
- Twitter Bot 用のアカウントを作成する
- Twitter 公式ページへ API 利用申請する
- API 申請許可が通ったら API を利用するための「Consumer Keys」 と「Authenications Tokens」を取得
- Python で Twitter API をつかって Twitter Bot を作成する
こんな感じの流れです。
これを順に説明していきます。
Twitter Bot 用のアカウントを作成する
まずは Twitter Bot 用のアカウントを新たに作ります。
これは説明不要と思いますが、Twitter 公式ページからアカウントを作成するだけです。
アカウントには特段難しい設定はいらず、普通のアカウントでOKです。
ただしアカウント作成にはメールアドレスが必要なので Gmail で作成することをおススメします。
Twitter 公式ページへ API 利用申請する(例文も記載)
つぎに Twitter で自動でツイートしたりするための機能(API)を利用するために Twitter 公式ページ に 申請をします、
これが結構めんどくさいです。
※ やり方は別ページにしています。必要な方はぜひ見てください。
Twitter API の「Consumer Keys」 と「Authenications Tokens」を取得
「Consumer Keys」 と「Authenications Tokens」とは Twitter API を利用するための認証キーとアクセストークンのことです。
- Consumer Keys ・・・ Twitter API 用の認証キー(Twitter 自動化ツールごとに1つあればOK)
- Authenications Tokens ・・・ ユーザ用のアクセストークン情報(アカウントごとに1つあればOK)
Twitter API の承認が通っていれば Twitter Developer ページにアクセスし、「Project & Apps 」から「Consumer Keys」 と「Authenications Tokens」が確認できます。
この「Consumer Keys」 と「Authenications Tokens」をどこかにメモしておきます。
これらは Twitter API を使う際に後で使います。
これでようやくここから Twitter Bot を作成する準備はOKです。
Python で Twitter API をつかって Twitter Bot を作成する
Twitter Bot を作成する上で今回実装する機能です。
Botというのは、いわばこれら↓の処理を毎日繰り返しループさせればOKです。
- 毎日の自動ツイート
- 指定した「検索ワード」にヒットするユーザを自動フォロー
- 指定した「検索ワード」にヒットするツイートを自動リツイート
- フォローしてくれた人を自動リフォロー
- フォロバになれなかった人を自動リムーブ
Twitter API が簡単に扱える tweepy パッケージをインストール
Twitter API を簡単に扱える tweepy パッケージを インストールします。
コマンドライン(Windowsならコマンドプロンプト、Mac なら Terminal)で下記を入力すればOKです。
1 |
pip install tweepy |
このコマンドが正常終了すればOKです。
あとは tweepy パッケージをつかって Twitter Bot を作成していきます。
Twitter Bot の大枠(処理概要)
まずはじめに Twitter Bot の処理の大枠をつくっていきます。
Twitter Developer ページで取得した「Consumer Keys」 と「Authenications Tokens」を
consumer_key、consumer_secret、access_token_key、access_token_secret にそれぞれあてはめます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import tweepy import random def main(): consumer_key = 'XXXXXXXXXXXXXXXXXXX' consumer_secret = 'XXXXXXXXXXXXXXXXXXX' access_token_key = 'XXXXXXXXXXXXXXXXXXX' access_token_secret = 'XXXXXXXXXXXXXXXXXXX' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token_key, access_token_secret) api = tweepy.API(auth) # ~ここより下にTwitter上で実行したい処理を書く~ if __name__ == "__main__": main() |
インポートするパッケージについては「tweepy」と「random」とします。
「random」は乱数を出力するパッケージで、ランダムな数だけツイート数やリツイート数するように調整しています。
Twitter Bot で自動ツイート
まずは Twitter Bot で自動ツイートする方法です。
これは tweepy というパッケージの update_status メソッドでツイートができます。
update_status の引数にツイートする内容を指定すればOKです。
1 2 |
# ツイート api.update_status(msg) |
たとえば update_status('おはよう') とやれば Twitter上で「おはよう」とツイートできます。
Twitter Bot で「検索ワード」にヒットするアカウントを自動フォロー
Twitter では下記画像のように「検索機能」があります。
その検索にヒットしたアカウントを自動フォローする機能について説明します。
これには二つの機能が必要です。
-
Twitter のキーワード検索した結果を取得する ・・・ tweepy の search() メソッド
- 検索した結果から得られたアカウントをフォローする・・・ tweepy の create_favorite() メソッド
Twitter のキーワード検索した結果を取得する方法ですが、下記のように search() メソッドを使います。
search() には引数として「キーワード」と「検索結果数」を指定でき、その指定した値から得られた検索結果を取得できます。
1 2 3 4 |
# 検索結果を取得 search_results = api.search(q='キーワード', count=検索結果数) api.update_status(msg) |
またアカウントをフォローする方法は下記のように create_favorite() メソッドを使います。
1 2 |
# アカウントをフォローする api.create_friendship(user_id) |
なお user_id とは search() メソッドで得られた ユーザID を示します。
Twitter Bot で「検索ワード」にヒットするツイートを自動リツイート
これは先程と同様 Twitter の検索機能を使い検索した結果にヒットしたツイートを自動でリツイートする方法です。
これには二つの機能が必要です。
-
Twitter のキーワード検索した結果を取得する ・・・ tweepy の search() メソッド
- 検索した結果から得られたツイートをリツイートする・・・ tweepy の retweet() メソッド
これは前章での内容と同じです。
Twitter のキーワード検索した結果を取得する方法ですが、下記のように search() メソッドを使います。
search() には引数として「キーワード」と「検索結果数」を指定でき、その指定した値から得られた検索結果を取得できます。
1 2 3 4 |
# 検索結果を取得 search_results = api.search(q='キーワード', count=検索結果数) api.update_status(msg) |
またアカウントをフォローする方法は下記のように retweet() メソッドを使います。
1 2 |
# アカウントをフォローする api.retweet(tweet_id) |
なお tweet_idとは search() メソッドで得られた ツイートID を示します。
Twitter Bot でフォローしてくれたアカウントを自動リフォロー
自分のアカウントをリフォロー(フォロー返し)する方法ですが、
- フォロワー とフォローの差分を取得 → フォロワーにしかいないアカウントを取得
- ① で取得したアカウントを順にフォロー
まずは自分のアカウントのフォロワーとフォローを下記のように取得し、その差分を取ります。
1 2 3 4 5 6 7 8 9 10 11 12 |
#フォロワー数とフォロー数を格納するリストを用意 follower_list = [] friend_list = [] #ユーザ情報からフォロワー数を取得、格納 follower_list = api.followers_ids(my_user_id) #ユーザ情報からフォロー数を取得、格納 friend_list = api.friends_ids(my_user_id) # 差分を取得 result_list = list(set(follower_list) - set(friend_list))) |
そのフォロワーとフォローの差分を result_list のようにリストにし
そのリストに含まれるアカウントを順にフォローしていけばOKです!
1 2 3 4 5 6 |
for user_id in result_list: cnt = cnt + 1 try: if cnt < maxReq : api.create_friendship(user_id) except Exception as e: print(e) |
なお Twitter のフォロー処理は tweepy の create_friendship メソッドで処理できます。
Twitter Bot でフォロバになれなかった人を自動リムーブ
自分のアカウントをフォローしてくれない人をリムーブ(フォローをはずす)する方法ですが、
- フォロワー とフォローの差分を取得 → フォローにしかいないアカウントを取得
- ① で取得したアカウントを順にリムーブ
さきほどとは違い、今度はフォローにしかいないアカウントを取得することがポイントです。
まずは自分のアカウントのフォロワーとフォローを下記のように取得し、その差分を取ります。
1 2 3 4 5 6 7 8 9 10 11 12 |
#フォロワー数とフォロー数を格納するリストを用意 follower_list = [] friend_list = [] #ユーザ情報からフォロワー数を取得、格納 follower_list = api.followers_ids(my_user_id) #ユーザ情報からフォロー数を取得、格納 friend_list = api.friends_ids(my_user_id) # 差分を取得 result_list = list(set(follower_list) - set(friend_list))) |
そのフォロワーとフォローの差分を result_list のようにリストにし
そのリストに含まれるアカウントを順にフォローしていけばOKです!
1 2 3 4 5 6 |
for user_id in result_list: cnt = cnt + 1 try: if cnt < maxReq : api.destroy_friendship(user_id) except Exception as e: print(e) |
なお Twitter のリムーブ処理は tweepy の destroy_friendship メソッドでできます。
Twitter Bot の完成形
下記すべてを合わせた完成形がソースコード全体がこちらです。
- 毎日の自動ツイート
- 指定した「検索ワード」にヒットするユーザを自動フォロー
- 指定した「検索ワード」にヒットするツイートを自動リツイート
- フォローしてくれた人を自動リフォロー
- フォロバになれなかった人を自動リムーブ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
import tweepy import random def main(): consumer_key = 'XXXXXXXXXXXXXXXXXX' consumer_secret = 'XXXXXXXXXXXXXXXXXX' access_token_key = 'XXXXXXXXXXXXXXXXXX' access_token_secret = 'XXXXXXXXXXXXXXXXXX' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token_key, access_token_secret) api = tweepy.API(auth) my_user_id = api.me().id_str msg = "ブログ" keyword = ["#Python"] # ツイート api.update_status(msg) # いいね do(api,"GOOD",keyword) # リツイート do(api,"RETWEET",keyword) # フォロー do(api,"FOLLOW",keyword) # リフォロー reFollow(api,my_user_id) # リムーブ removeFollow(api,my_user_id) # タイムライン検索 def do(api,action,keyword,maxReq=3,maxTimeLine=10): for q in keyword: cnt = 0 actCnt = random.randint(1,maxReq) search_results = api.search(q=q, count=maxTimeLine) for result in search_results: tweet_id = result.id user_id = result.user._json['id'] try: if cnt < actCnt: if action == "GOOD" : api.create_favorite(tweet_id) if action == "RETWEET" : api.retweet(tweet_id) if action == "FOLLOW" : api.create_friendship(user_id) else: break cnt = cnt + 1 except Exception as e: print(e) # フォロー返し def reFollow(api,my_user_id,maxReq=3): cnt = 0 #フォロワー数とフォロー数を格納するリストを用意 follower_list = [] friend_list = [] #ユーザ情報からフォロワー数を取得、格納 follower_list = api.followers_ids(my_user_id) #ユーザ情報からフォロー数を取得、格納 friend_list = api.friends_ids(my_user_id) result_list = list(set(follower_list) - set(friend_list)) for user_id in result_list: cnt = cnt + 1 print(user_id) try: if cnt < maxReq : api.create_friendship(user_id) except Exception as e: print(e) # リムーブ def removeFollow(api,my_user_id,maxReq=50): cnt = 0 #フォロワー数とフォロー数を格納するリストを用意 follower_list = [] friend_list = [] #ユーザ情報からフォロワー数を取得、格納 follower_list = api.followers_ids(my_user_id) #ユーザ情報からフォロー数を取得、格納 friend_list = api.friends_ids(my_user_id) result_list = list(set(friend_list) - set(follower_list)) for user_id in result_list: cnt = cnt + 1 try: if cnt < maxReq : api.destroy_friendship(user_id) except Exception as e: print(e) if __name__ == "__main__": main() |
上記のプログラミングを毎日繰り返し処理をすれば Twitter Bot として実行できます。
作成した Twitter Bot を定期的に実行させる方法
上記で作成した Twitter Bot プログラムを繰り返し毎日実行すればOKです。
ここでおそらくこのプログラムを「どこで」「どうやって」実行すればいいだろう?とそんな疑問もわいてくると思います。
そんな疑問に順番に解決していきます。
Twitter Bot を「どこで」実行すればいいのか?
Twitter Bot を「どこで」実行し続けるか?
下記の二つが候補に挙げられます。
- Twitter Bot を自分のパソコンで実行する ← 本当にやめておいたほうがいい
- Twitter Bot を VPS サーバーを借りて実行する ← 1番おススメ
先に結論からいいますが、一番おススメが「 VPS サーバーを借りる」です。
※ VPS とは普通のレンタルサーバー(エックスサーバーなど)とは異なり、OS からアプリまですべて管理するサーバです。
Twitter Bot を「自分のパソコンで実行する」
まず Twitter Bot を「自分のパソコンで実行する」方法についてですが、メリット・デメリットそれぞれこんなのがあります。
- メリット・・・お金が全くかからない(パソコンの電気代くらい)
- デメリット・・・ずっとパソコンを立ち上げないといけない
わたしは最初この方法で実装していましたが、自分のパソコンを24時間365日ずっと稼働させることが不可能ということに気づいてやめました。
もちろん、お金をかけたくない人はこれでいいと思います。
しかし「自分のパソコンで実行する」方法では Twitter Bot プログラムを動作させることによってパソコンが重くなったり
パソコンを再起動させるたびにプログラムを実行しなおさないといけないというものすごくめんどくさいことが多々あります。
私はそんなめんどくさいならばお金をだしてでもサーバを借りて Bot を動かそうと思いました。
Twitter Bot を「レンタルした VPS サーバーで実行する」(一番おススメ!)
まず Twitter Bot を「レンタルしたVPSサーバーで実行する」方法についてですが、メリット・デメリットそれぞれこんなのがあります。
- メリット・・・Twitter Bot が安定して稼働できる
- デメリット・・・お金がかかる(月500円から多くて1000円) + ある程度知識が必要
結局一番これが良かったです。
自分のパソコンが処理で重くならないし、なにより Twitter Bot が安定して稼働するというのが本当によかったです。
ただお金が必要とありますが、安い VPS サーバーなら 500 円 ~ 600 円くらいです。
わたしのオススメはさくら VPS サーバです。これの一番安いやつで OK です。
Twitter Bot を「どうやって」実行すればいいのか?
つぎにTwitter Bot を「どうやって」実行し続けるか?
これは Windows、Mac、Linux といった OS ごとにやり方が異なります。
- Windows・・・Bot をタスクスケジューラで実行
- Mac、Linux・・・ Bot を cron で実行
Bot をタスクスケジューラで実行する(Windowsの場合)
これは Windows のタスクスケジューラという機能をつかって実行します。
※ タスクスケジューラとは文字通りタスクをスケジュールするツールですが、決まった時間に定期的にプログラム処理できる Windows の機能です。
その処理はタスクとして登録され、指定時刻にそのタスクが動作するイメージです。
つまりそのタスクを Twitter Bot 用のプログラムにすれば定期的に実行できます。
タスクスケジューラの登録方法についてですが、
まず Windows のスタートメニューで「タスクスケジューラ」と検索します。
下記のような画面が表示されるので、右欄の「基本タスクの作成」を選択して実行するプログラムを選択します。
基本タスクの作成画面で、まずはタスク名を指定します(なんでもOK。)
次に好きなタスクトリガーを指定します。
これで好きなタイミングでタスクを実行できます。
つぎにプログラムの開始を選択します。
ここで実行するプログラムをさきほど作成したPython 処理を実行する Bat を指定します。
「Twitter Bot は Python でつくったのに実行するのは Bat なの???」って思われるかもしれませんが、
タスクスケジューラーで実行するには Python の処理を Bat ファイル上で呼び出すしかありません。
※ 下記がバッチファイルの中身です。
こんな感じで python 「実行する Pythonファイル」でバッチファイル内で Python 処理を呼べます。
1 |
python twitterBot.py |
最後に完了ボタンを押して終了です。
すると下記のように タスクが登録されていることが確認できます。
このタスクによって定期的に Twitter Bot 処理を実行できるようになります。
Bot をタスクスケジューラーで実行する(Mac、Linuxの場合)
Mac、Linux で実行する場合は cron という機能を使って実行します。
ターミナルを開き、下記コマンドを実行します。
1 |
crontab -e |
crontab -e で下記を書き込みます。
1 |
(分)(時)(日)(月)(曜日) 「実行するコマンドのパス] |
(分)(時)(日)(月)(曜日) はコマンドを実行する時刻を指定し、「実行するコマンドのパス」で Twitter Bot のコマンドを指定します。
例えば、
0 7 * * * python /Users/Test/twitterBot.py
とすると毎日 7:00 に python /Users/Test/twitterBot.py を実行するっていうことです。
そして「:wq」をキーボード入力して Enter で crontab -e が終了します。
これで定期的に実行できます(不安な人は crontab -l でコマンドが登録されていることを確認してみてください)。
Twitter Bot 自動でできました!!最後まで読んでくれてありがとうございます!!
いかがでしたでしょうか?
この記事では、 Python というプログラミング言語で 3か月500フォローまで育った Twitter Bot の作り方をご紹介しました。
多分かなりめんどくさいと思われた人も多いと思います。
この記事を書いている私も一日で書ききれないくらいの量でした。
この記事を読んでぜひいろいろな Twitter Bot を作ってみてください!
この記事がいいと思われたならぜひ SNS とかで共有いただければ嬉しいです。
ではでは。