Twitter API v2で Twitter bot を作ってみる

2021年11月21日

はじめに

本記事ではTwitter API v2を利用してTwitter botを作成したのでその手順について説明します。そう言えばTwitterのAPIは使ったことなったなーと思い、botを作ってみました。APIはAWS Lamdaから実行しています。詳細ではなく、概要レベルの説明となりますので、もし気になる方はお問合せ下さい。

今、TwitterのAPIで検索するとtweepyを使ったTweet方法が大体見つかりますが、こちらはAPI v1.1を利用しているようです。そのためTwitter API v2.0を使ってみようかな、という人向けの記事になります。

尚、最終的に出来上がったものがこちらになります。

実施手順

Twitterのアカウント作成

とりあえずbot用のTwitterアカウントを作成して下さい。今使っているアカウントでもOKです。新たに作成する場合はGmailのエイリアスで作成するのが…オススメして良いのかわかりませんが、今後別のアカウント作成にも利用出来るのでお勧めです。

TwitterのDeveloper登録

次にAPIを利用可能とするためにTwitterのDeveloper登録が必要になります。ご自身のアカウント、メールアドレス、電話番号で登録を進めて下さい。途中、登録確認のメールが飛びますのでメールの受け取れないメールアドレスでの登録は出来ません。アカウントに電話番号が登録されていない場合は、途中で登録が進められなくなりますので、先に登録しておくのが良いと思います。

登録が終わったら、以下のように、Kyes and Tokensのページで各種トークの発行を行って下さい。ここで発行される全てのキーが必要となります。ここで発行したキーは絶対にパブリックな場所には保管しないで下さい。

  • API Key
  • API Key Secret
  • Access Token
  • Access Token Secret

次は実際にTwitter APIを利用したコードを作成していきます。

コードの作成

DeveloperのPortalサイトにAPIの利用方法を書いてくれているページがあります。今回は自動フォロー等は行わず、Tweetだけ出来れば良いので…

Managed Tweets内にPostメソッドを利用すれば良いことはわかりますが、ここであれ?認証とかどうやるんだろう?となり、ページ内のRead the docsからドキュメントを読んでいくことになります。

Read the docsのリンクに飛ぶと以下のページが表示されます。

ここでサンプルコードが提供されていて、Postmanでのテスト環境も用意してくれていることがわかります。まずはサンプルコードから見ていきます。

サンプルコード編

Sample Codeのリンクをクリックするとgithubのサイトに飛びます。とりあえずの動作確認なのでManged-Tweetsのcreate_tweet.pyをそのままテキストでコピーしてローカル環境で動作させていきます。

ローカル環境にpip等が入っておらず少し時間がかかりましたが、以下の通り問題なく実行は出来ました。

無事、今回作成したアカウントでHello World!のツイートも行われていました。

ただ、こちらのコードですが、公式というだけあって途中でPINの入力を求められたりと、少しBot向けにはカスタマイズが必要な内容となっていました。少しコードを眺めてみて、よしPostmanやってみよう!と切り替えました。(一般的なエンジニアの方はこちらをベースとして頂いた方が良いかもしれません。私は楽な方を選びました。)

Postman編

Postmanを利用するにはまずは利用登録が必要です。少し面倒に思われるかもしれませんが、CURL投げたりする時のお役立ちツールなので入れておいて損はないです。

Twittter DeveloperのページからRun in PostmanのリンクをクリックするとWeb版のPostmanが起動します。パブリックワークスペースとして起動するので最初にローカルのスペースにフォークという…コマンドのコピー作業のようなことを行います。

環境が整ってしまえば、後はManage TweetsのCreate a Tweetのコマンドの中でAuthorizationのタブから先ほど取得した認証情報を入れてあげれば動作を確認することが可能です。

Postmanの素晴らしいところはこの動作を確認した後、PythonやNode.jsのソースコードを吐き出せるところにありました。以下のような感じになります。素晴らしい…。

特にこちらはPINの入力等もなく、botに利用出来そうだったのでこちらのコードをベースとすることにしました。

実行環境

実行環境はAWSのLamdaです。少し円周率を求める方法(モンテカルロ法というらしい)のプログラムを書き、どうしても過去の実行データが必要になるので最新データをS3に格納するとかの処理を書いていたらそこそこ時間がかかりました。

Botなのと、あまり頻繁にツイートするようだとAWSの費用面も心配になるので1日1ツイートとすることにしました。定期実行の方法としてはCloudWatch Eventから1日に1回このLamdaを実行するようにしました。

これで完成しました。

こまで読んで頂けた方は、悪さはしませんので是非フォローしていって下さいね。

さいごに

本記事ではTwitter API v2を使ったTwitter botの作成方法を説明しました。作成時間は大体4-5時間。大半はLamdaからS3にアクセスするためのコード作成とデバッグ…でした。

こちらの記事が皆様の今後のbot作りに役立てば幸いです。少し詳細は省きましたので、何か気になる点がありましたらお気軽にお問合せ下さい。ではまた。

追記:

Postmanで作成されたコードをそのまま使っているとTimeStampのエラーが出始めたので結局、githubのコードをベースに作り変えました。