0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

X(旧Twitter)投稿BotをPythonで構築:APIキー取得から自動投稿の実装まで

Last updated at Posted at 2025-06-15

はじめに

この記事では、Twitter(現X)上で自動投稿を行う簡易的なBotアプリの作成方法についてまとめます。APIの取得からPythonを使った投稿実装まで、最小構成で紹介しています。

以前、Mattermost にメッセージを自動投稿するボットを Python で簡単に作成したことがあり、その経験も今回の参考になりました!

内容に不備などがございましたら、お手数ですが優しくご指摘いただけますと幸いです。

書こうと思ったきっかけ

X(Twitter)で自動でもっと情報発信をしたいと考えたのがきっかけです。調べてみると案外シンプルに実装できたため、備忘録として記事化しました。

こんな感じで投稿できました!(現時点では手動でプログラムを実行していますが、今後は cron などで定期実行できるようにする予定です…!)

Screenshot 2025-06-15 at 21.38.50.png

事前確認

プランの比較まとめ

プラン名 月額 投稿上限(ユーザー) 読み取り上限 特徴
Free 無料 500件/月 100件/月 書き込み専用(テスト向け)
Basic $200/月 3,000件/月 15,000件/月 個人・試作向け、読み書き可能
Pro $5,000/月 288,000件/月 1,000,000件/月 ビジネス・商用大規模利用向け

参考文献

実際にやってみた

APIキーの取得

1. API Keyの取得手順

X Developerポータル(https://developer.twitter.com/)から以下を取得

Screenshot 2025-06-15 at 21.43.20.png

  • 鍵アイコン(🔑)をクリックして下記の4情報を取得

    • API Key
    • API Secret
    • Access Token
    • Access Token Secret

Screenshot 2025-06-15 at 21.45.55.png

※表示は一度きりなので、必ず安全な場所へ保存してください。

2. アプリの「App permissions」を変更する

🔧 手順:

  • X Developer Portal にアクセス
  • 左メニューから「Projects & Apps > Your App > Settings」へ進む
  • "App permissions"(アプリの権限) を以下に設定:
Read and Write

ここの画面になります!

Screenshot 2025-06-15 at 21.47.43.png

※デフォルトでは「Read only」になっています

  • 「Save」をクリック

  • Access Token と Secret を再生成(再発行)

    • 権限変更後は、新しいAccess Tokenが必要です
    • 「Keys and Tokens」タブへ行き、「Access Token and Secret」横の Generate をクリック

3. AppleシリコンMacでの仮想環境構築

cd ~/Desktop/macbook\ pro/test

# 仮想環境の作成(arm64対応)
python3 -m venv venv
source venv/bin/activate

# パッケージのインストール
pip install --upgrade pip
pip install tweepy

実際はこんな感じで仮想環境を構築しました!

Screenshot 2025-06-15 at 21.49.22.png

実際のコード

import tweepy

# 各種トークンをここに入力
bearer_token = "xxx"
api_key = "xxx"
api_secret = "xxx"
access_token = "xxx"
access_token_secret = "xxx"

# クライアント設定(v2)
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
)

# ツイート投稿(v2エンドポイント)
response = client.create_tweet(
    text="\U0001F389 新しいQiita記事が公開されました!\n\n「VPCエンドポイントをCloudFormationで一括作成:SSM・SSMMessages・EC2Messages対応テンプレート」 by honda@41期\n\U0001F517 https://qiita.com/free-honda/items/d9464a84211b4f521173\n\n#Qiita #技術ブログ #OrgName"
)
print("ツイート成功:", response.data)

コード解説

1. ライブラリの読み込み

Twitter API に接続するための Python ライブラリ tweepy を読み込みます。

import tweepy

これは、ツイート投稿や取得などの操作を簡単に行えるようにするものです。

# 各種トークンをここに入力
bearer_token = "xxx"
api_key = "xxx"
api_secret = "xxx"
access_token = "xxx"
access_token_secret = "xxx"

2. API認証情報の定義

X(旧Twitter)APIを利用するには、開発者ポータルで取得した以下の認証情報が必要です。

  • bearer_token: Twitter API v2 用のトークン(読み取り操作向け)

ここです

Screenshot 2025-06-15 at 22.08.12.png

  • api_key / api_secret: アプリそのものの認証(Consumer Key/Secret)
  • access_token / access_token_secret: アカウントとしてツイートするための認証情報

これらをコード内に設定することで、API を使って自動で投稿するなどの操作が可能になります。

# クライアント設定(v2)
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
)

3. Tweepyクライアントの初期化

tweepy.Client を使って、API に接続するためのクライアントを作成します。
このクライアントは Twitter API v2 に対応しており、ツイート投稿や取得などの機能を使えます。

この設定により、指定した認証情報を使って Twitter アカウントに接続できるようになります。

# ツイート投稿(v2エンドポイント)
response = client.create_tweet(
    text="🎉 新しいQiita記事が公開されました!\n\n「VPCエンドポイントをCloudFormationで一括作成:SSM・SSMMessages・EC2Messages対応テンプレート」 by honda@41期\n🔗 https://qiita.com/free-honda/items/d9464a84211b4f521173\n\n#Qiita #技術ブログ #OrgName"
)

4. ツイート投稿

create_tweet() 関数を使ってツイートを投稿します。
ここでは、Qiita 記事の紹介文と URL、ハッシュタグ、絵文字を含めたツイート内容が投稿されます。

改行や記号、ハッシュタグ、絵文字もサポートされており、見やすく表現できます。

print("ツイート成功:", response.data)

5. 実行結果の確認

投稿結果として返された情報(ツイート ID など)を print() 関数で表示し、成功を確認します。

(venv)  ~/Desktop/macbook pro/test   python test.py
ツイート成功: {'id': 'xxx', 'edit_history_tweet_ids': ['xxx'], 'text': '🎉 新しいQiita記事が公開されました!\n\n「VPCエンドポイントをCloudFormationで一括作成:SSM・SSMMessages・EC2Messages対応テンプレート」 by honda@41期\n🔗 https://t.co/YwmZqbYb7E\n\n#Qiita #技術ブログ #OrgName'}

ツイートが成功していれば、response.data に投稿内容やツイートIDが含まれます...!

まとめ

ここまで読んでいただき、ありがとうございました!

X(Twitter)APIの利用にはプランによる制限がありますが、無料枠でも投稿Botのテスト用途には十分だと思いました!

tweepyライブラリを活用すれば、数行のコードで投稿まで実現できるので、ぜひ活用してみてください...!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?