プログラミングを学ぶ上で、実際に手を動かしてみることが何よりも重要です。特に、Pythonを使って現実世界で役立つスキルを身につけたいと考えている方にとって、X APIの活用は絶好のチャンスです。本記事では、Pythonを使ってX APIにアクセスし、ポストを投稿したりポストの自動化を行う方法を詳しく解説します。プログラミング初心者でも理解しやすいように、コードの説明を交えながら進めていきます。学んだスキルを即実践できるように、具体的なプロジェクトを通じてX APIの使い方を習得しましょう。
関連記事
ブログ内のコードはコピーして使用できます
APIとは何か?
APIは「Application Programming Interface」の略です。簡単に言うと、APIはコンピュータプログラム同士が話すためのルールです。
APIをカフェでの注文に例えてみましょう
- あなた(ユーザー): レストランのお客さん
- キッチン(サービス): 食べ物を作る場所
- ウェイター(API): あなたとキッチンをつなぐ人
レストランで食事を注文する時、あなたはウェイターに「パスタをください」と伝えます。ウェイターはそのメッセージをキッチンに伝え、キッチンでパスタが作られます。パスタができたら、ウェイターはそれをあなたに届けます。
APIはこの「ウェイター」のような役割を果たします。
- あなた(プログラム)はAPIを通じて他のプログラム(サービス)に何かをお願いしたり、情報を取り出したりします。
- APIはそのお願いを受け取って、必要な情報を持ってきたり、指示を実行したりします。
関連記事
X(旧ツイッター)のAPI活用について
X(旧Twitter)のAPIは、SNS運用やデータ分析をプログラミングを通じて強力にサポートするツールです。Pythonを使って、このAPIを活用することで、ツイートの自動化やフォロワー数の管理、さらには投稿のパフォーマンス分析まで可能になります。本記事では、X APIの基本から応用までを丁寧に解説し、プログラミング初心者でも実際に手を動かしながら学べる内容をお届けします。XのAPIを使いこなし、あなたのプログラミングスキルとSNS戦略をさらに進化させていきましょう。
XのAPIの使い方の参考
API認証方法
X APIの取得方法
Twitter Developerアカウントの作成
- まず、XのAPIを利用するためには、Twitter Developerアカウントが必要です。まだ作成していない場合は、X Developerにアクセスし、アカウントを作成してください。
ユーザー認証の設定
ユーザーの認証設定についてはこのサイトがわかりやすかったです。
APIキーとトークンの取得
APIキー取得
Bearerトークンの取得
トークンの取得
実際にAPIを活用してみよう
X APIを使った簡単なリクエストの例を、Pythonで書いてみます。これを使って、特定のユーザーの情報を取得する方法を紹介します。
まず、以下のコードはX APIのGET /2/users/by/username/:username
エンドポイントを使って、指定したユーザーの情報を取得するものです。このエンドポイントにリクエストを送ると、ユーザーのIDや名前、プロフィール情報などが返ってきます。
必要なもの
- Pythonがインストールされた環境
- X APIの認証情報(APIキー、APIシークレットキー、ベアラートークン)
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import requests # APIの認証情報 bearer_token = 'YOUR_BEARER_TOKEN_HERE' # ここにあなたのベアラートークンを入力してください # リクエストを送るエンドポイント url = "https://api.x.com/2/users/by/username/USERNAME_HERE" # リクエストヘッダーに認証情報を追加 headers = { "Authorization": f"Bearer {bearer_token}" } # リクエストを送信してレスポンスを取得 response = requests.get(url, headers=headers) # レスポンスの内容を確認 if response.status_code == 200: user_info = response.json() print("ユーザー情報:", user_info) else: print("リクエストに失敗しました。ステータスコード:", response.status_code) |
使い方
- 上記のコードをPythonファイル(例:
get_user_info.py
)に保存します。 bearer_token
にあなたのX APIのベアラートークンを入力します。url
のUSERNAME_HERE
を、情報を取得したいユーザー名に変更します。- ターミナルやコマンドプロンプトで
python get_user_info.py
を実行します。
出力
1 |
ユーザー情報: {'data': {'id': '123456432', 'name': 'Nick Wrobel', 'username': 'Username_here'}} |
実際にデータが出録されましたが、何を意味しているか何に使えるかなどはよくわかりませんでした。
なので、次はAPIを活用して実際に投稿をしてみようじゃないか!!
そっちのほうが、APIを使っている感はありますよね😋
X APIを使用して投稿をしてみよう
必要な準備
- Pythonがインストールされた環境。
requests_oauthlib
ライブラリのインストール(以下のコマンドを実行してください)。
1 |
pip install requests requests_oauthlib |
使用できるエンドポイント
Authentication Token のところ、もうひとつ生成できますね。Bearer Tokenです。これはドキュメントを読む限り「アプリケーション単独認証」を行うときに利用するもので、タイムラインの取得やツイート検索が行えるとありました。参考
ところが、ここにプランの話が絡んできます。ソースが見つけられませんでしたが、無料プランで呼べるAPIはおそらく以下です。
POST https://api.twitter.com/2/tweets
ツイート投稿DELETE https://api.twitter.com/2/tweets/:id
ツイート削除GET https://api.twitter.com/2/users/me
認証ユーザーの情報を取得
つまりツイートの検索はできません。無料のアプリケーション単独認証ではほとんど何もできない説が浮上しています。
引用元:Zenn
X(旧ツイッター)へ投稿コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import requests from requests_oauthlib import OAuth1 # APIキーとシークレットの設定 api_key = 'YOUR_API_KEY_HERE' api_key_secret = 'YOUR_API_KEY_SECRET_HERE' access_token = 'YOUR_ACCESS_TOKEN_HERE' access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET_HERE' # OAuth 1.0a 認証の設定 auth = OAuth1(api_key, api_key_secret, access_token, access_token_secret) # ステップ1: 認証ユーザーの情報を取得 user_info_url = "https://api.twitter.com/2/users/me" response = requests.get(user_info_url, auth=auth) if response.status_code == 200: user_data = response.json() user_id = user_data['data']['id'] print(f"認証ユーザー情報: {user_data}") else: print(f"ユーザー情報の取得に失敗しました。ステータスコード: {response.status_code}") print(f"エラーメッセージ: {response.json()}") # ステップ2: ツイートを作成する tweet_text = "これはテスト投稿です。X APIを使ってツイートしています。" create_tweet_url = "https://api.twitter.com/2/tweets" payload = { "text": tweet_text } response = requests.post(create_tweet_url, auth=auth, json=payload) if response.status_code == 201: tweet_data = response.json() tweet_id = tweet_data['data']['id'] print(f"投稿が成功しました。ツイートID: {tweet_id}") else: print(f"投稿に失敗しました。ステータスコード: {response.status_code}") print(f"エラーメッセージ: {response.json()}") |
出力
1 2 |
認証ユーザー情報: {'data': {'id': '116163973926547852452', 'name': 'ダダ🌟ChatGTP×Python研究中', 'username': 'dada_diary2021'}} 投稿が成功しました。ツイートID: 1828957691785469865 |
実際の投稿
無事にできて良かったです😆
ここまでに、だいぶん苦労しました。
よく出てきたエラーがこれ
1 2 |
投稿に失敗しました。エラー: 403 Forbidden 453 - You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product |
現在のAPIアクセスレベルではツイートの投稿が制限されていることを示しています。
主な原因
- 現在のAPIアクセスレベルが制限されている:
- 無料プランや低レベルのAPIアクセスでは、
POST /2/tweets
エンドポイントが利用できないことがあります。エラーメッセージにある通り、アクセスできるエンドポイントが制限されています。
- 無料プランや低レベルのAPIアクセスでは、
- アクセスレベルの制限:
- 無料プランでは、主に読み取り専用のエンドポイントにアクセスでき、ツイートの作成や削除などの書き込み操作は制限されていることが多いです。
どれなら、使えるポイントなのかを探すのに苦労しました。。。
Pythonスクリプトで自動的にポストを実行する方法
自動的にツイートするための方法を紹介します。
Pythonスクリプトを定期的に実行する方法ついて説明します。
time.sleep
を使用して定期的に実行
この方法では、スクリプト内でループを使用し、time.sleep
関数を使って一定時間ごとにツイートを自動投稿します。
必要な準備
keyboard
ライブラリをインストールします。以下のコマンドを実行してください。
1 |
pip install keyboard |
Pythonスクリプトで自動的にポスト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import time import requests from requests_oauthlib import OAuth1 import keyboard import random # APIキーとシークレットの設定 api_key = 'YOUR_API_KEY_HERE' api_key_secret = 'YOUR_API_KEY_SECRET_HERE' access_token = 'YOUR_ACCESS_TOKEN_HERE' access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET_HERE' # OAuth 1.0a 認証の設定 auth = OAuth1(api_key, api_key_secret, access_token, access_token_secret) # ツイート候補リスト tweets = [ "これは自動投稿されたツイートです。#1", "これは自動投稿されたツイートです。#2", "これは自動投稿されたツイートです。#3", "これは自動投稿されたツイートです。#4", "これは自動投稿されたツイートです。#5" ] # 自動ツイート関数 def auto_tweet(): tweet_text = random.choice(tweets) # ランダムにツイートを選択 create_tweet_url = "https://api.twitter.com/2/tweets" payload = { "text": tweet_text } response = requests.post(create_tweet_url, auth=auth, json=payload) if response.status_code == 201: tweet_data = response.json() tweet_id = tweet_data['data']['id'] print(f"投稿が成功しました。ツイートID: {tweet_id}") else: print(f"投稿に失敗しました。ステータスコード: {response.status_code}") print(f"エラーメッセージ: {response.json()}") # メインループ try: for _ in range(3): # 3回実行する if keyboard.is_pressed('ctrl+c'): print("終了キーが押されました。プログラムを終了します。") break auto_tweet() time.sleep(60) # 1分(60秒)ごとに実行 except KeyboardInterrupt: print("プログラムが手動で終了されました。") finally: print("終了処理を行っています...") # ここで、終了時に必要なクリーンアップ処理を追加できます |
同じ内容を投稿しようとするとエラーが出るので注意しましょう
出力
1 2 3 |
投稿が成功しました。ツイートID: 18290603461547789222 投稿が成功しました。ツイートID: 18290605995125145874 投稿が成功しました。ツイートID: 18290601569856325698 |
1分後
更に1分後
時間を指定したポスト投稿
Pythonで指定した時間にツイートを投稿することが可能です。これを実現するには、datetime
モジュールを使って現在の時間をチェックし、指定された時間になるまで待機するようにスクリプトを設定します。
指定時間にツイートを投稿する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import time import requests from requests_oauthlib import OAuth1 from datetime import datetime # APIキーとシークレットの設定 api_key = 'YOUR_API_KEY_HERE' api_key_secret = 'YOUR_API_KEY_SECRET_HERE' access_token = 'YOUR_ACCESS_TOKEN_HERE' access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET_HERE' # OAuth 1.0a 認証の設定 auth = OAuth1(api_key, api_key_secret, access_token, access_token_secret) # 自動ツイート関数 def auto_tweet(): tweet_text = "指定された時間に投稿されたツイートです。" create_tweet_url = "https://api.twitter.com/2/tweets" payload = { "text": tweet_text } response = requests.post(create_tweet_url, auth=auth, json=payload) if response.status_code == 201: tweet_data = response.json() tweet_id = tweet_data['data']['id'] print(f"投稿が成功しました。ツイートID: {tweet_id}") else: print(f"投稿に失敗しました。ステータスコード: {response.status_code}") print(f"エラーメッセージ: {response.json()}") # 指定された時間を待つ関数 def wait_until(target_time): try: while True: current_time = datetime.now().strftime('%H:%M') if current_time == target_time: print(f"指定された時間 {target_time} になりました。ツイートを投稿します。") auto_tweet() break print(f"現在の時間 {current_time} - 指定された時間 {target_time} まで待機中...") time.sleep(30) # 30秒ごとに現在の時間をチェック # 手動でプログラムを終了できるようにする except KeyboardInterrupt: print("プログラムが手動で終了されました。") finally: print("終了処理を行っています...") # 使用例: 指定時間にツイートを投稿 target_time = "15:30" # 24時間形式で指定(例: 15:30 = 午後3時30分) wait_until(target_time) |
出力
1 2 3 4 |
現在の時間 05:34 - 指定された時間 05:35 まで待機中... 指定された時間 05:35 になりました。ツイートを投稿します。 投稿が成功しました。ツイートID: 1829256579570356478 終了処理を行っています... |
実際の投稿
コードの時間は変更してやっています😋
まとめ
今回の記事では、Pythonを使ってX APIを活用する方法について解説しました。X APIを使いこなすことで、SNS運用の効率化や自動化が可能になります。プログラミング初心者でも挑戦できるよう、基本的なリクエストからツイートの自動投稿までを丁寧に説明しました。
このスキルを身につけることで、日常的なSNS管理がより簡単かつ効果的になります。あなたもこの機会にX APIの活用に挑戦し、SNS戦略を一歩進化させてみませんか?この記事をきっかけに、プログラミングの楽しさと可能性を広げていきましょう。
Pythonを学びたい方はこちらの記事を参考にしてみてください
関連記事
プログラミング学習を進めているけれど、まだ副収入につなげられていない…そんなあなたへ!今こそ、学んだスキルを活かして副業に挑戦する絶好のチャンスです。プログラミングだけでなく、自分のスキルや商品をネットで販売する『ネットショップ』を開設してみませんか?
ネットショップを持つことで、自分の知識やスキルをより多くの人に届け、副収入を得ることが可能です。学んできたプログラミングを活かして、ショップのカスタマイズや運営も自由自在に行えますし、もし商品作成が難しい場合でも、デジタル商品やサービス提供など、いろんな選択肢があります。
このステップで一歩踏み出せば、今学んでいることが副収入に直結し、自分の時間をより有効に使うことができるはずです!一緒にネットショップを開設し、副業の第一歩を踏み出しましょう!
タイトルテキスト
プログラミングを学びたいけど、どこから始めたらいいのか分からない、自分に合っているか不安…そんな悩みを持っている方におすすめしたいのが、 無料相談 サービスです!
この無料相談では、あなたの現状や目標に合わせて、最適な学習プランを一緒に考えてくれます。どんなスキルが必要なのか、どうやって学習を進めると効果的かを具体的にアドバイスしてもらえるので、無駄なく効率的にスタートを切ることができます。
さらに、プログラミング学習には同じ目標を持つ 仲間 がいること、そして頼りになる メンター の存在がとても大きな支えになります。独学ではどうしてもつまずきやすい部分も、メンターがあなたの成長に合わせて親身にサポートしてくれるので、安心して学びを進められます。
まずは 無料相談 で、あなたに合ったプランを見つけて、スキルアップへの第一歩を踏み出してみませんか?今なら、迷っている方でも気軽に相談できるチャンスです!