はじめに
2024年にX(旧Twitter)のAPIが仕様変更され、申請方法や設定が一部変更された。
本記事では、X APIの利用申請からPythonを用いたツイートの投稿まで、具体的な手順を解説する。
また、APIの制限事項や応用例も取り上げ、X APIの可能性を最大限に引き出す方法を紹介する。
X APIの利用準備
X APIを使うには、まずXアカウントを作成し、X Developer Platformにアクセスして、開発者アカウントを登録する必要がある。
登録が完了すると、X Developer Platformのホーム画面が表示される。
X API利用申請の流れ
以下の手順でAPIの利用申請を行う。
-
Developer Portalにアクセス
Developer Portalを開き、「Sign up for Free Account」をクリック。
今回の記事では無料プラン(X API Free)を選択する流れで紹介するが、各自の開発要件に応じて有料プラン(X API Basic,Pro…etc)も検討してほしい。 -
ポリシー同意書を記入
APIの利用目的について、最低250文字以上を記入する必要がある。以下は自分の申請理由である。参考にしてほしい。・I am applying for this program for two reasons: first, to improve my skills, and second, to develop a program to automate posting to the X timeline from a website I have built using the X API. ・I pledge that I will not misuse personal information about the data used in the X API.
-
申請を送信
利用目的を入力し、利用規約等にチェックした後「submit」を押下すると、申請が完了する。
User authentication settingsの設定
申請が承認されたら、アプリケーションの設定を行う。
- Projects & Appsで設定
Developer Portalの「Projects & Apps」からデフォルトプロジェクトを選択し、「setup」を押下する。
以下は、XAPIの設定画面に関する翻訳と解説である。
-
アプリの権限 (App permissions)を更新
-
Read (読み取りのみ)
投稿やプロフィール情報を読み取る権限。 -
Read and write (読み取りと書き込み)
投稿やプロフィール情報を読み取り、投稿する権限。 -
Read and write and Direct message (読み取り、書き込み、DM)
投稿やプロフィール情報を読み取り、投稿するほか、ダイレクトメッセージの送受信を許可する権限。 -
Request email from users (ユーザーのメールアドレスを取得する)
ユーザーのメールアドレスを取得するための権限。
この権限をリクエストする場合、アプリのプライバシーポリシーと利用規約のURLを提供する必要がある。
-
-
アプリの種類 (Type of App)を更新
-
Native App (ネイティブアプリ)
スマートフォンやPC向けのアプリケーション。 -
Web App, Automated App or Bot (ウェブアプリ、または自動化アプリ/ボット)
サーバーやバックエンドで動作するアプリケーション。
-
-
アプリ情報 (App info)を更新
-
Callback URI / Redirect URL
認証後にユーザーがリダイレクトされるURLを指定する。
https://x.com/
を入力する。
必要に応じて「+ Add another URI / URL」から複数のURLを追加可能。 -
Website URL (ウェブサイトURL)
アプリの公式ウェブサイトを指定する。
https://x.com/
を入力する。 -
Organization name (組織名)
ユーザーがアプリを認証する際に表示される組織名。任意項目。 -
Organization URL (組織のウェブサイト)
認証画面で表示される組織のウェブサイト。任意項目。 -
Terms of service (利用規約)
アプリの利用規約へのリンクを提供する。
認証画面でユーザーに表示される。 -
Privacy policy (プライバシーポリシー)
アプリのプライバシーポリシーへのリンクを提供する。
認証画面でユーザーに表示される。
-
今回は以下のように設定する。
- アプリの権限 (App permissions):Read and write and Direct message
- アプリの種類 (Type of App):Native App (ネイティブアプリ)
以下のようにポップアップが表示されるので、「Yes」を押下し、設定を完了する。
キーおよびトークンの取得
次に、Pythonプログラムで使用する各種キーとトークンを取得する。 Developer Portalの「Projects & Apps」からデフォルトプロジェクトを選択後、[Keys and tokens]タブを選択する。
-
Consumer Keysの生成
「Regenerate」をクリックしてAPI KeyとAPI Key Secretを取得し、保存する。 -
Authentication Tokenの生成
Bearer TokenやAccess Tokenを生成し、それぞれ控えておく。一度しか表示されないため注意。
Pythonを使ったツイート投稿
Pythonのtweepy
パッケージを使い、ツイート投稿のプログラムを作成する。
必要なパッケージのインストール
以下のコマンドでtweepy
をインストールする。
$ pip install --user -U tweepy
サンプルコード
以下のコードを使用して「Hello World」を投稿可能だ。
import tweepy
API_KEY = 'XXXXXXXXXX'
API_SECRET = 'XXXXXXXXXX'
BEARER_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXX'
client = tweepy.Client(
bearer_token=BEARER_TOKEN,
consumer_key=API_KEY,
consumer_secret=API_SECRET,
access_token=ACCESS_TOKEN,
access_token_secret=ACCESS_TOKEN_SECRET
)
response = client.create_tweet(text='Hello World')
print(response)
実行結果と自動化のヒント
プログラムを実行すると、以下のような結果が得られる。
Response(data={'id': '1234567890123456789', 'text': 'Hello World'}, includes={}, errors=[], meta={})
ツイートが正常に投稿されたことを確認可能だ。このコードをスクリプト化し、cron
やタスクスケジューラを活用することで、自動的にツイートを投稿できる仕組みを作ることができる。
X APIの制限事項と注意点
X APIを利用する際には、いくつかの制限事項と注意点を把握しておく必要がある。
無償プランの制約
- 無償プランでは投稿機能のみが提供され、ツイート検索やユーザー分析は利用できない。
- 投稿数に月間の上限が設けられているため、頻繁に投稿する場合は有償プランの検討が必要。
リクエストのレート制限
- APIには一定のリクエスト上限が設定されており、短時間で多くのリクエストを送ると一時的に利用が制限される。
- リトライ処理やリクエスト間隔の調整をコード内に組み込むことが推奨される。
データ利用ポリシーの遵守
- APIを利用する際には、Xのデータ利用ポリシーを遵守する必要がある。特に、投稿内容や頻度がスパム行為とみなされないよう注意が必要だ。
ランダムなツイート生成のアイデア
X APIを活用すれば、ただツイートを投稿するだけでなく、動的なコンテンツを生成して投稿することが可能だ。以下にいくつかの実用的なアイデアを紹介する。
1. 日替わりの励ましメッセージ
曜日に応じて異なるメッセージを投稿する簡単な例。
import tweepy
from datetime import datetime
API_KEY = 'XXXXXXXXXX'
API_SECRET = 'XXXXXXXXXX'
BEARER_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXX'
client = tweepy.Client(
bearer_token=BEARER_TOKEN,
consumer_key=API_KEY,
consumer_secret=API_SECRET,
access_token=ACCESS_TOKEN,
access_token_secret=ACCESS_TOKEN_SECRET
)
messages = {
'Monday': '月曜日!新しい週をポジティブに始めましょう!',
'Tuesday': '火曜日です。頑張りましょう!',
'Wednesday': '水曜日、週の折り返し地点です。',
'Thursday': '木曜日、あと少しで週末です。',
'Friday': '金曜日、もう一息!',
'Saturday': '土曜日、リラックスを楽しんでください。',
'Sunday': '日曜日、週の締めくくりを!'
}
today = datetime.now().strftime('%A')
message = messages.get(today, '素敵な一日をお過ごしください!')
response = client.create_tweet(text=message)
print(response)
2. ランダムな名言の投稿
用意したリストからランダムな名言を選んで投稿する。
import random
quotes = [
"未来を予測する最良の方法は、それを創造することだ。",
"挑戦は成長の鍵だ。",
"失敗は成功の第一歩だ。"
]
random_quote = random.choice(quotes)
response = client.create_tweet(text=random_quote)
print(response)
サンプルコードの応用例
基本的な投稿機能を拡張して、より高度な機能を実現する方法を紹介する。
1. 画像付きツイート
画像を投稿する方法。
media_id = "1234567890123456789" # 事前にアップロードした画像のメディアID
response = client.create_tweet(
text="画像付きツイートです!",
media_ids=[media_id]
)
print(response)
2. リプライ機能
特定のツイートに返信する方法。
tweet_id = "1234567890123456789" # リプライ先のツイートID
response = client.create_tweet(
text="これはリプライです!",
in_reply_to_tweet_id=tweet_id
)
print(response)
3. ハッシュタグやリンクの活用
投稿にハッシュタグやリンクを含める。
response = client.create_tweet(
text="Pythonを使った自動ツイート! #Python #XAPI https://x.com"
)
print(response)
実行結果と自動化のヒント
プログラムを実行すると、ツイートがX上に投稿されることを確認できる。 さらに、自動化を進めるためのヒントを以下に示す。 cronやタスクスケジューラ、 AWS LambdaやGoogle Cloud Functionsを利用して定期的な実行スケジュールを設定することで、自動投稿が可能になる。
まとめ
X APIは、Pythonを活用することでツイートの自動化を容易に実現できる強力なツールだ。
本記事で紹介した方法を基に、さらに高度なアプリケーションを開発してほしい。
ただし、APIの利用ポリシーや仕様変更に常に注意を払い、最新の情報を確認することを忘れないようにしよう。
コメント