はじめに
自動ポストとは何か
自動ポストとは、あらかじめ設定したメッセージをXに投稿することです。
2023年6月以前は、旧TwitterのAPIを使いPythonコードで任意のメッセージ内容を配信開始、終了時に自動ツイートできるようにしていました。
しかし、このAPIが有料化されると、OAuth1.0は廃止になり自動ツイートが使えなくなりました。
今回、認証方法をOAuth1.1、OAuth2.0で作り直して任意のメッセージを送信できるようにしたので、
その方法をブログとしてまとめます。
※APIとは、Xと他のアプリケーションとのやりとりを可能にする仕組みのこと。
OAuthとは、Xのアカウントを安全に認証する方法の一つです。
x API v2 freeプランの概要
自動ポストを行う前にxのAPIプランに加入する必要があります。
Free、Basic、Pro、Enterpriseと4つのプランがあるのですが、私は無料のFreeプランを選びました。
x API v2 freeプランは、小規模な開発者や個人の業務自動化に適しており、
以下のものがあります。
- プロジェクトごとに1つのアプリ
- 自分のツイートを投稿、取得、削除。
- 画像や動画を含むツイートを投稿。
- ログイン機能。
- 月間最大1,500ツイートの投稿と10,000ツイートの取得。
もっと頻繁にいろんな機能が欲しい場合は、有料プランを検討する必要がありそうです。
まずまず個人でやる分にはFreeで十分かと思われます。
使用ツール
- コパイロット(Copilot)
- python
まず、CopilotにPythonを使ってxに「こんにちは」というメッセージを送信する方法を尋ねると、
以下の条件を満たす必要があると返信が来ました。
- x(旧Twitter)の開発者ポータルで開発用のアカウントを作成
- apikey,apisecret,access token,access token secret を取得
- Pythonがインストールされた環境(Pythonのインストール方法はここでは省きます。)
これらの条件を満たした後、Pythonコードを実行すると、xへ自動的にポストすることができました。
実際のコードや設定方法
※開発アカウントの作成は省略します。
User authentication settingsの設定
作成したアプリケーションにあるUser authentication settingsから以下にように各種設定。
User authentication settings
- App premissions:Read and write
- Type of App:Web App, Automated App or Bot
App info
- Callback URI/RedirectURL:http://127.0.0.1/ ←自分のローカルホスト
- Website URL:https://twitter.com/home ←自分のTwitter
各種キーの取得方法
トークン情報は自分で作成したプロジェクト配下に開発アカウントボットがあるので、
keys and tokensタブからRegenerateをクリックして取得してください。
Pythonコード
トークン情報をそのまま貼る
import requests import json from requests_oauthlib import OAuth1Session # 各種キーをセット API_KEY = '自分のデータ' API_SECRET = '自分のデータ' ACCESS_TOKEN = '自分のデータ' ACCESS_TOKEN_SECRET = '自分のデータ' # ツイート内容 payload = { "text": "こんにちは。" } # Twitter API v2のエンドポイントURL url = "https://api.twitter.com/2/tweets" # OAuth 1.0aの認証情報を設定 auth = OAuth1Session(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # ヘッダー情報 headers = { "Content-Type": "application/json" } # ツイートを投稿 response = auth.post(url, headers=headers, data=json.dumps(payload)) # レスポンスを表示(エラーハンドリングは省略) print(response.json())
.gitignoreでの可読性向上
import requests import json from requests_oauthlib import OAuth1Session from tokens import API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET # APIキーをインポート # ツイート内容 payload = { "text": "これはテストです。" } # Twitter API v2のエンドポイントURL url = "https://api.twitter.com/2/tweets" # OAuth 1.0aの認証情報を設定 auth = OAuth1Session(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # ヘッダー情報 headers = { "Content-Type": "application/json" } # ツイートを投稿 response = auth.post(url, headers=headers, data=json.dumps(payload)) # レスポンスを表示(エラーハンドリングは省略) print(response.json())
自動ポストの結果や効果
Pythonを実行すると、自動的に指定したメッセージを自分のアカウントでPOSTすることができます。
1時間毎や特定の日時にPOSTする場合は、vpsなどのサーバを借りてCRON実行するのもありかもしれません。
まとめ
このブログでは、Copilotに教えてもらいながらPythonを使用してx API v2 Freeプランを活用し、
自動ポストを実現する方法について紹介しました。
これらの知識を応用して、配信開始と終了のアナウンスを自動POSTするツールを復活させる事ができました。
今から放送始めるよ~#Twitchhttps://t.co/xFwYRlqGAw
— 🎮まつ@Twitch🎮 (@game_mk_matsu) January 26, 2024
今日の放送ありがとうございました。
次回もよろしくお願いします。#Twitchhttps://t.co/xFwYRlqGAw— 🎮まつ@Twitch🎮 (@game_mk_matsu) January 26, 2024
おまけ
Copilotを面白く使うと、Nature Remoの公式APIを使いPCから家電を操作できる自作アプリも作れます。
こちらもPythonで作成しております。
Nature RemoAPIを使い、ローカルPC上でオリジナルアプリを作りました。
元の配信動画(Twitch)https://t.co/zeiVUYZSBr
9割はbingchatの力です、これがないと絶対完成できなかった。#chatgpt4 #Twitch #Nature #スマートリモコン #API #AI #Copilot pic.twitter.com/9UsZjRbpSX
— 🎮まつ@Twitch🎮 (@game_mk_matsu) January 23, 2024