Copilot(コパイロット)を使いXで自動ポストに成功した話

日常
このブログは私が試した方法を記録したものです。
参考にしていただく場合は、自己責任でお願いします。

はじめに

自動ポストとは何か

自動ポストとは、あらかじめ設定したメッセージを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で十分かと思われます。

Getting Started with the Twitter API
The Twitter API can be used to programmatically retrieve and analyze data, as well as engage with the conversation on Tw...

使用ツール

  • コパイロット(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コード

直接、トークン情報を追加すると危ないので、
.gitignoreでトークンを集約するファイルを作成してください。

トークン情報をそのまま貼る

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するツールを復活させる事ができました。

 

おまけ

Copilotを面白く使うと、Nature Remoの公式APIを使いPCから家電を操作できる自作アプリも作れます。
こちらもPythonで作成しております。