3
2

Twitter(現:X)のbotを作成する。(2024年8月 Twitter API v2対応版)

Posted at

0. 始めに

Twitterのbotを作成しようとした際に、古いAPIの情報の記事などが混ざっており、いろいろ詰まってしまったため備忘録として記載します。(投稿内容は2024/08時点です。)
なお本記事では、Google ColabからAPI経由でツイートをポストする部分までです。投稿のスケジューリングなどは、また別記事で書きます。。

1. Twitter APIの申請

まずはTwitterAPIの申請を行います。以下の方の記事でとても分かりやすくまとめていただいているので、その通りに進めていけば大丈夫です。
https://qiita.com/neru-dev/items/857cc27fd69411496388

何となくですが、

これらの投稿は、テキスト、画像、そして関連するブログのURLを含むもので、Xの規約に従うことを心がけており、私のフォロワーにとって価値ある情報を提供することを目指しています。

このフレーズを申請理由に入れておけばスムーズに許可されるんじゃないかと思っています。規約遵守は大事!

2. Twitter APIの設定

申請した時点では、Tweetの書き込み権限がないので設定を変更します。
デフォルトでアプリが作成されているので、歯車マークをクリックし、設定画面へ移動します。

image.png

設定画面ページの下部に権限の設定があるので移動します。

image.png

ここから権限周りの設定をしていきます。
今回はツイートをポストしたいので、Read and writeにチェックを入れます。

image.png

アプリのタイプはWeb App, Automated App or Botを選択します。

image.png

App infoの部分では必須となっている2箇所に記入します。
Callback URIの部分はOauth 2.0がリダイレクトを許可する部分らしいですが、botを作るだけなら何でも良いと思うのでhttps://x.comとしています。Nativeアプリを作るなら考慮が必要‥?
(参考: https://qiita.com/TakahikoKawasaki/items/8567c80528da43c7e844

Website URLは自分のwebサイトのURLにしています。特になければ、自分のTwitterのホームへのURLにすればいいんじゃないかと思います。

その他の部分の記載は任意なので、今回は空欄にしておきます。

image.png

あとはちゃんとSaveボタンを押して終了です。
Client IDClient Secretが表示されますが、今回は不要なので、Doneボタンを押して閉じます。(今後必要になった際は、再度取得できるので大丈夫です。)

3. Google Colabで投稿

google colabで新規ノートブックを作成します。
https://colab.research.google.com/?hl=ja

3.1 シークレット情報の取得 & 登録

Twitter APIのDeveloper Potalに戻り、鍵マークをクリックします。

image.png

欲しいシークレット情報のRegenerateボタンを押すと、取得することができます。
image.png

今回必要となるのは、API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, BEARER_TOKENの5つです。

取得したシークレットは、随時Colabの方に登録していきます。

google colabでは、シークレット情報を管理する機能がついています。(プログラムにベタ書きはよろしくないので使います)
ノートブックの左側の鍵マークを押すことで、シークレットを登録することができます。値の部分に、先ほど取得したシークレット情報を入れ、ノートブックからのアクセスもONにしておきます。

image.png

3.2 Pythonで投稿

colabに以下のプログラムを書きます。

from google.colab import userdata
import tweepy

# 登録した認証情報を取得。
ck = userdata.get('API_kEY')
cs = userdata.get('API_KEY_SECRET')
bt = userdata.get('BEARER_TOKEN')
at = userdata.get('ACCESS_TOKEN')
ats = userdata.get('ACCESS_TOKEN_SECRET')

# クライアントにシークレット情報を埋め込む。
client = tweepy.Client(consumer_key=ck, 
                       consumer_secret=cs, 
                       bearer_token=bt, 
                       access_token=at, 
                       access_token_secret=ats)

# 投稿するテキストを指定。
tweet = "test tweet"

# 投稿
client.create_tweet(text=tweet)

これを実行すると、test tweetという文章が投稿されます。
自分のTwitterアカウントを見に行って確認して、完了です。

4. 終わりに

Pythonを使ってTwitter API経由で投稿することができました。
次回はこのコードをクラウドに上げて、定期実行できるようにする予定です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2