X(旧Twitter)FreeプランのAPIキー取得方法:Pythonを使ったツイート自動化の手順と応用例

プログラミング

はじめに

2024年にX(旧Twitter)のAPIが仕様変更され、申請方法や設定が一部変更された。

本記事では、X APIの利用申請からPythonを用いたツイートの投稿まで、具体的な手順を解説する。
また、APIの制限事項や応用例も取り上げ、X APIの可能性を最大限に引き出す方法を紹介する。


X APIの利用準備

X APIを使うには、まずXアカウントを作成し、X Developer Platformにアクセスして、開発者アカウントを登録する必要がある。

登録が完了すると、X Developer Platformのホーム画面が表示される。


X API利用申請の流れ

以下の手順でAPIの利用申請を行う。

  1. Developer Portalにアクセス
    Developer Portalを開き、「Sign up for Free Account」をクリック。
    今回の記事では無料プラン(X API Free)を選択する流れで紹介するが、各自の開発要件に応じて有料プラン(X API Basic,Pro…etc)も検討してほしい。

  2. ポリシー同意書を記入
    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.
  3. 申請を送信
    利用目的を入力し、利用規約等にチェックした後「submit」を押下すると、申請が完了する。


User authentication settingsの設定

申請が承認されたら、アプリケーションの設定を行う。

  1. Projects & Appsで設定
    Developer Portalの「Projects & Apps」からデフォルトプロジェクトを選択し、「setup」を押下する。

以下は、XAPIの設定画面に関する翻訳と解説である。


  1. アプリの権限 (App permissions)を更新

    • Read (読み取りのみ)
      投稿やプロフィール情報を読み取る権限。

    • Read and write (読み取りと書き込み)
      投稿やプロフィール情報を読み取り、投稿する権限。

    • Read and write and Direct message (読み取り、書き込み、DM)
      投稿やプロフィール情報を読み取り、投稿するほか、ダイレクトメッセージの送受信を許可する権限。

    • Request email from users (ユーザーのメールアドレスを取得する)
      ユーザーのメールアドレスを取得するための権限。
      この権限をリクエストする場合、アプリのプライバシーポリシー利用規約のURLを提供する必要がある。


  1. アプリの種類 (Type of App)を更新

    • Native App (ネイティブアプリ)
      スマートフォンやPC向けのアプリケーション。

    • Web App, Automated App or Bot (ウェブアプリ、または自動化アプリ/ボット)
      サーバーやバックエンドで動作するアプリケーション。


  1. アプリ情報 (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]タブを選択する。

  1. Consumer Keysの生成
    Regenerate」をクリックしてAPI KeyとAPI Key Secretを取得し、保存する。

  2. 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の利用ポリシーや仕様変更に常に注意を払い、最新の情報を確認することを忘れないようにしよう。

コメント