Python

Pythonを使ってX(旧Twitter)のAPI経由で自動投稿する方法

python_twitter
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、Pythonを使ったX(旧Twitter)の自動投稿の方法について解説していきます。SNSマーケティングで重要なXの運用をPythonを使って効率化していきましょう!

こんにちは!スタビジ編集部です!

今日ではSNSツールを使った商品の宣伝や情報発信といった”SNSマーケティング“が主流になっています。

SNSマーケティングは手軽に出来て、効果も大きい一方で、運用はかなり手間があります。

毎日投稿するのが大変、、、
想定するユーザーが利用するタイミングで投稿したい!

これらの課題はPythonと組み合わせることで解決することが出来ます!

ウマたん
ウマたん
今回は、SNSツールでトップクラスでユーザー数の多い”X(旧Twitter)“について、Pythonでの自動化の方法をマスターしていくよ!

Pythonの自動化については以下の記事で詳しく解説しているので、参考にしてみて下さい。

Python 自動化
Pythonの自動化で出来ることの例と独学実装ロードマップを徹底解説!当サイト【スタビジ】の本記事では、Pythonで出来る自動化について徹底的に見ていきたいと思います!様々な業務を自動化して、ルーティン業務をなくしていくことであなたの仕事や生活は格段に楽になるはずです!Pythonの自動化で出来ること・勉強ロードマップ・そして最終的に簡単な実装を見ていきます。...

より詳しくX(旧Twitter)のAPIを使って様々な処理を構築する方法を学びたい人は以下の僕のUdemyコースをチェックしてみてください!

PythonでX(旧Twitter)のAPIを使ってTweetできるアプリやスプシから自動投稿する仕組みを作っていこう!

Udemy_Twitter
【時間】3.5時間
【レベル】初級

PythonでX(旧Twitter)のAPIを使って様々な処理を作ってみたいならこれ!

今なら購入時に「VGRBCQDF」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください!

\30日以内なら返金無料/このコースを見てみる

PythonでX(旧Twitter)を自動化するメリット

まずはPythonでX(旧Twitter)を自動化するメリットについて見ていきましょう。

PythonでXを自動化するメリットは以下です。

・投稿の効率化
・Pythonライブラリによるデータ解析

それぞれ見ていきましょう。

投稿の効率化

PythonでXを操作することで「投稿を効率化」できます。

Pythonはスクリプト言語として機能が豊富にあるので、好きな時間帯・頻度で投稿を行うこと・設定することが可能です。

また、PythonはX用のライブラリが充実しているので、ツイートの投稿だけでなくユーザー情報の取得やツイートの検索といった作業も自動化することが出来ます。

ウマたん
ウマたん
Pythonは初心者でも学びやすい言語で機能も豊富なので、自動化処理も簡単に実装できる!

Pythonライブラリによるデータ解析

Pythonでは”pandas“や”Numpy“など、データ処理や分析のためのライブラリが多くあります。

そのため、自動で取得したXでの情報(ユーザー情報やツイート内容など)を分析して、Xの運用に活かすことが可能です。

Pythonでのデータ分析については以下の記事を参考にしてみて下さい。

【初心者向け】データ分析の手法を分かりやすく解説!Pythonで実装してみよう!当サイト【スタビジ】の本記事では、データ分析における手法の種類とデータ分析時の注意点をまとめていきます。データ分析に使う手法は非常に多いので一つ一つ習得していきましょう!最後にはデータ分析に使う言語についてもまとめていきますよ!...
ウマたん
ウマたん
データ分析にも活かせるのがPythonのメリット!

PythonでX(旧Twitter)を自動化するための事前準備

まずは、X(旧Twitter)をPythonで自動化するための準備を行います。

必要な手順は以下です。

・X APIの開発者アカウント作成
・ユーザー認証設定
・キー・シークレットの取得

それぞれ見ていきましょう。

X APIの開発者アカウント作成

まずは”X API“の取得を始めます。

Xの”開発者プラットフォーム“にアクセスして、”開発者ポータル”に移動します。

python_twitter

プランの選択画面で”Sign up for Free Account“を選択します。

python_twitter

Freeアカウントは以下の制限があるので、より多くの機能を使いたい場合は有料の”Basic”や”Pro”プランを検討しましょう。

  • アプリ:1つ(Basic:2つ、Pro:3つ)
  • 投稿:1500投稿/月(Basic:1アプリ当たり50,000投稿/月、Pro:1アプリ当たり300,000投稿/月)
  • API機能:”ツイート管理”、”ユーザー検索”のみ(BasicやProは”ツイート検索”等複数の機能を提供)

開発者ポリシーの同意画面に移動するので、必要情報を記入・チェックして”Submit“ボタンを押します。

python_twitter

ダッシュボード画面が表示されれば開発者アカウントの作成は完了です。

python_twitter
ウマたん
ウマたん
ツイートデータやAPIの利用用途は”開発者ポリシー“を参考に記入しよう!

APIについては以下の記事で解説しているので参考にしてみて下さい。

PythonのAPIを利用
【5分で分かる】Pythonを使って様々なサービスのAPIを利用してみよう!当サイト【スタビジ】の本記事では、Pythonを使ってSlackやGoogleのAPIを利用していきます!APIを利用することで非常に様々なことができるので是非試してみましょう!APIを使えるようになると幅が広がりますよ!...

ユーザー認証設定

XのAPIを使った投稿するためには”ユーザー認証設定“が必要になります。

開発者ポータルのダッシュボード画面の左側メニューからアプリケーションを選択します。

画面下部の”User authentication settings”の”Set up”ボタンをクリックします。

python_twitter

ユーザー認証を利用するアプリの情報を入力します。

python_twitter

記入・チェックが必要な選択肢は下記になります。

  • App permissions:アプリケーションに与える操作権限を選択します
  • Type of App:開発するアプリケーションの種類を選択します
  • Callback URI/Redirect URL:ユーザー認証が許可された時にリダイレクトするURLを指定します。ローカル環境(127.0.0.1)やホスティングサービスのアドレスを記入します
  • Website URL:アプリケーションの詳細を表示するページになります。外部からアクセス可能なURLである必要があるため、本記事ではXのアカウントページを設定しています

“Save”ボタンを押すと”Client ID”と”Client Secret”が払い出されるので、忘れないようにメモをします。

ウマたん
ウマたん
取得したIDやシークレットは外部に漏れないように安全に保管しよう!

キー・シークレットの取得

最後にAPIを接続するのに必要なキー・シークレットを取得します。

アプリケーションの画面から”Key and tokens“を選択します。

python_twitter

取得するのは下記になります。

  • API Key and Secret:アプリケーションからAPIを実行するためのキー・シークレット
  • Bearer Token:アプリケーション用の認証に必要なトークン
  • Access Token and Secret:認証済みのユーザーとしてAPIにアクセスするためのトークン・シークレット

それぞれ”Generate”ボタンを押すと発行されるので、Client ID・Client Secretと同様に安全に保管しましょう。

ウマたん
ウマたん
これでX APIを利用する準備は整った!

Pythonを使ってXでツイートを投稿するアプリ

実際にXのAPIを使ってPythonでツイート投稿してみましょう。

ここではローカル環境上で”Flask“を使って開発していきます。

Flask“については以下の記事で詳しく解説しているので、参考にしてみて下さい。

macとsurface
Flaskでできることを確認しながら簡単なWebアプリの実例を作ってみよう!当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!...

必要なライブラリのインストール

PythonでXのAPIを使うために、”Tweepy“というライブラリを利用します。

Tweepy“はPythonでX APIにアクセスするためのライブラリで、ツイートの取得、投稿、フォロー、アンフォローなど、様々な操作を簡単に行うことが可能です。

“requirements.txt”を準備して以下のライブラリをインストールします。

# requirements.txt
flask
tweepy
gunicorn
python-dotenv

“pip install -r requirements.txt”でライブラリをインストールできます。

ウマたん
ウマたん
Tweepyを使うことでPythonで簡単にXを操作できる!

アクセスに必要な情報を環境変数から取得

続いて事前準備で取得したキーやシークレットの情報をアプリケーション上で扱えるように設定します。

“.env”ファイルを作成し、取得した情報を記入します。

# .env
CLIENT_ID='XXX'
CLIENT_SECRET='XXX'
ACCESS_TOKEN='XXX'
ACCESS_TOKEN_SECRET='XXX'
API_KEY='XXX'
API_SECRET_KEY='XXX'
BEARER_TOKEN='XXX'

これらの情報はアプリケーション用のコード内に直接記載することも出来ますが、管理のしやすさやセキュリティの観点から、envファイルを用意すると良いです。

アプリケーション用のファイル(app.py)には以下のように記載して環境変数を呼び出します。

import os
import tweepy
from flask import Flask, request, render_template, redirect, url_for
from dotenv import load_dotenv

app = Flask(__name__)

# .envファイルから環境変数を読み込む
load_dotenv()

# 環境変数からTwitter APIキーを取得
api_key = os.getenv('API_KEY')
api_secret_key = os.getenv('API_SECRET_KEY')
access_token = os.getenv('ACCESS_TOKEN')
access_token_secret = os.getenv('ACCESS_TOKEN_SECRET')
bearer_token = os.getenv('BEARER_TOKEN')

設定した環境変数は”python-dotenv“で読み込みます。

読み込んだ情報を元にTweepyでセットアップを行います。

# Tweepyでクライアントをセットアップ(OAuth 2.0 Bearer Token)
client = tweepy.Client(bearer_token=bearer_token, 
                       consumer_key=api_key, 
                       consumer_secret=api_secret_key, 
                       access_token=access_token, 
                       access_token_secret=access_token_secret)

Tweepy.Client“クラスを使用するとX API v2“のエンドポイントにアクセスできて、ツイートの投稿や検索が可能になります。

“X API v2″のエンドポイントの利用には認証が必要なので、取得した情報を引数として指定します。

X APIの利用方法については下記にサンプルコードが公開されているので、参考にしてみて下さい。

https://github.com/xdevplatform/Twitter-API-v2-sample-code/tree/main

ウマたん
ウマたん
事前準備で取得した情報を元にAPIにアクセスする設定が出来た!

API経由でツイートを投稿する

XのAPI経由でツイートを投稿するアプリを実装していきます。

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/tweet', methods=['POST'])
def tweet():
    tweet_content = request.form['tweet']
    try:
        # ツイートを投稿(API v2を使用)
        client.create_tweet(text=tweet_content)
        return redirect(url_for('index', message='ツイートが成功しました!'))
    except Exception as e:
        return redirect(url_for('index', message=f'エラーが発生しました: {e}'))

if __name__ == '__main__':
    # Flaskサーバーを実行
    app.run(debug=True)

ルートパス(”/”)ではツイートを投稿するための画面を表示します。

作成するHTML(index.html)は以下のようなものを準備します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ツイート投稿画面</title>
</head>
<body>
    <h1>ツイート投稿画面</h1>
    <form action="{{ url_for('tweet') }}" method="post">
        <textarea name="tweet" rows="4" cols="50" placeholder="つぶやいてください"></textarea><br>
        <button type="submit">Tweet</button>
    </form>
    {% if request.args.get('message') %}
        <p>{{ request.args.get('message') }}</p>
    {% endif %}
</body>
</html>

画面上でツイートを投稿するとPOSTリクエストとしてツイートパス(”/tweet”)に送られます。

ツイートパス(”/tweet”)では受け取ったリクエストを”client.create_tweet“メソッドを使ってXアカウントで投稿します。

client.create_tweet“メソッドは、Tweepyを使用して”X API v2″を通じて新しいツイートを投稿するためのメソッドになります。

では、実際にアプリを動かしてみましょう。

“python app.py”とコマンドを実行するとブラウザ上(http://127.0.0.1:5000/)で下記のような画面が表示されます。

python_twitter

テキストボックスに文字を入力して”Tweet”ボタンを押してみましょう。

python_twitter

認証が通れば、ツイートが成功しましたと表示されます。

自分のXのアカウント(開発者ポータルでログインしているアカウント)を見ると、入力したツイートが投稿されているのが確認できます。

python_twitter
ウマたん
ウマたん
API経由で投稿することを確認できた!

スケジュール通りに自動投稿する

では続いて「スケジュール通りに自動投稿」できるように実装していきましょう。

ここでは以下の内容で実装していきます。

・投稿内容はJSONファイルに記載する
・定期的にJSONファイルを読み込んでリストの一番最初の内容を投稿する
・別のWebページで入力した投稿内容をJSONファイルに追加する

一気に作るのではなく、一つ一つの機能単位で確認していきましょう。

投稿内容の準備

ここでは投稿する内容として以下のJSONファイルを準備します。

# tweets.json
[
    { "tweetNo": 1, "message": "こんにちは!自動投稿のテストです!" },
    { "tweetNo": 2, "message": "今日も一日頑張りましょう!" }
]

“tweetNo”はツイート番号、”message”が投稿内容になります。

今回はローカル環境で開発しているため、扱いやすいJSONファイルを使っています。

オンラインで複数人で管理する場合や投稿に画像を入れたい等、状況に合わせて投稿用のファイルを準備しましょう。

ウマたん
ウマたん
オンラインで投稿内容を管理したい場合はGoogle スプレッドシート、画像を投稿に入れたい場合はGoogle Cloud StorageやAmazon S3を利用するのがオススメ!

Google スプレッドシートを使った自動化については以下の記事を参考にしてみて下さい。

【目指せ自動化】Pythonでスプレッドシートを操作して書き込み・読み込みを行う方法!当サイト【スタビジ】の本記事では、Pythonでスプレッドシートを操作する方法について解説していきます。スプレッドシートの面倒な作業をPythonで自動化していきましょう!...

投稿内容の取得

次に、「投稿内容を取得する」関数を作成します。

# JSONファイルから投稿メッセージを取得
def get_tweet_from_json(file_path='tweets.json'):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 最初のメッセージを取得
        if data and len(data) > 0:
            tweet_data = data.pop(0)  # 最初のメッセージを取得し、リストから削除
            with open(file_path, 'w', encoding='utf-8') as f:
                json.dump(data, f, ensure_ascii=False, indent=4)  # 更新したJSONファイルを保存
            return tweet_data['message']  # メッセージを返す
        else:
            print("JSONファイルに投稿メッセージがありません。")
            return None
    except Exception as e:
        print(f"JSONファイルの読み込みエラー: {e}")
        return None

ここでは準備した”tweets.json”ファイルを開いて、リストの最初のメッセージを読み込みます。

この時、読み込んだメッセージはリストから削除し、JSONファイルを更新します。

これにより、同じメッセージを投稿することを防ぐことが出来ます。

最後に取得したメッセージを関数の返り値として渡します。

ウマたん
ウマたん
Pythonはライブラリが充実しているので、いろんな種類のファイルを扱うことが出来るのがメリット!

自動投稿

ここでは「自動投稿の部分」を作っていきます。

まずはXへの投稿部分になります。

# Xへの投稿
def auto_post():
    try:
        # JSONファイルから投稿内容を取得
        auto_tweet_content = get_tweet_from_json()

        # メッセージがある場合のみツイートを投稿
        if auto_tweet_content:
            client.create_tweet(text=auto_tweet_content)
            print(f"自動ツイートが投稿されました: {auto_tweet_content}")
        else:
            print("ツイートする内容がありません。")
    except Exception as e:
        print(f"自動ツイートのエラー: {e}")

投稿内容の取得」で作成した関数から投稿メッセージを取得し、”client.create_tweet“メソッドでXに投稿します。

メッセージが投稿できたか否かを標準出力で確認します。

次に自動投稿のスケジュール設定を行います。

# スケジュール設定
def schedule_auto_post():
    # 5分ごとに自動投稿を行う
    schedule.every(5).minutes.do(auto_post)
    
    while True:
        # 実行が可能なタスクがあれば実行する
        schedule.run_pending()
        # 60秒間待機する
        time.sleep(60)

定期的な関数の実行にはPythonの”schedule“ライブラリを利用します。そのため、インストールしていない場合は”requirements.txt”に追加が必要です。

schedule“ライブラリはPythonでタスクのスケジューリングを簡単に行うためのライブラリで、指定した間隔やタイミングで関数やタスクを定期的に実行することが出来ます。

今回は5分ごとに投稿を行うように設定し、1分間隔で投稿タイミングの確認を行っています。

また、スケジュール設定はFlaskとは別のタスクとして実行します。

# スケジュールを別スレッドで実行
def run_scheduler():
    scheduler_thread = threading.Thread(target=schedule_auto_post)
    scheduler_thread.start()

if __name__ == '__main__':
    # スケジューラーを開始
    run_scheduler()
    # Flaskサーバーを実行
    app.run(debug=True)

これで、Flaskのアプリを実行しながらスケジュール設定で自動投稿することが出来ます。

schedule“ライブラリを使うことで、毎週水曜日の18:00といった指定や一度だけスケジュールするといったことも出来るので、いろいろ試してみましょう。

ウマたん
ウマたん
“schedule”ライブラリを利用することで、Pythonで自動投稿の設定が出来る!

投稿内容の追加

最後に「投稿内容を追加できる部分」を実装していきます。

新しいツイート内容をJSONファイルに追加する部分を関数として作成します。

# JSONファイルに新しい予約ツイートを追加
def add_tweet_to_json(new_tweet, file_path='tweets.json'):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 新しいツイートの番号を設定
        if data:
            last_tweet_no = data[-1]['tweetNo']
        else:
            last_tweet_no = 0

        # 新しいツイートの内容を追加
        new_tweet_data = {
            "tweetNo": last_tweet_no + 1,
            "message": new_tweet
        }
        data.append(new_tweet_data)

        # 更新されたデータをJSONファイルに保存
        with open(file_path, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=4)

        print(f"予約ツイートが追加されました: {new_tweet_data}")
    except Exception as e:
        print(f"予約ツイートの追加中にエラー: {e}")

関数ではツイート内容を引数として受け取ります。

そして、投稿内容のJSONファイルを開き、受け取ったツイートを形式を整えて追加します。

続いてツイートを追加する画面を作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ツイートを追加</title>
</head>
<body>
    <h1>ツイートを追加</h1>
    <form action="{{ url_for('add_tweet') }}" method="post">
        <textarea name="new_tweet" rows="4" cols="50" placeholder="ここに新しいツイートを入力してください..."></textarea><br>
        <button type="submit">ツイートを追加</button>
    </form>
    <a href="{{ url_for('index') }}">戻る</a>
</body>
</html>

ツイートを追加する画面として”add_tweet.html”を用意します。

ここではツイート内容を記入するテキストボックスと送信するボタンを設定しています。

python_twitter

「ツイートを追加」ボタンを押すと、JSONファイルへの追加実行用のパスに遷移し、JSONファイルへのツイート内容の追加処理を行います。

また、トップ画面から”add_tweet.html”に移動できるように、”index.html”も修正します。

<!DOCTYPE html>
<html lang="ja">
<body>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ツイート投稿画面</title>
</head>
<body>
    <h1>ツイート投稿</h1>

    <h2>手動ツイート</h2>
    <form action="{{ url_for('tweet') }}" method="post">
        <textarea name="tweet" rows="4" cols="50" placeholder="ツイート内容を入力してください..."></textarea><br>
        <button type="submit">ツイートを投稿</button>
    </form>

    <h2>自動ツイート</h2>
    <a href="{{ url_for('add_tweet_form') }}">
        <button>新しいツイートを追加する</button>
    </a>

    {% if request.args.get('message') %}
        <p>{{ request.args.get('message') }}</p>
    {% endif %}
</body>
</html>

続いて、”app.py”に必要なパスを追加します

# 新しいツイートを追加するフォームを表示
@app.route('/add_tweet_form')
def add_tweet_form():
    return render_template('add_tweet.html')

# 新しいツイートをJSONファイルに追加するエンドポイント
@app.route('/add_tweet', methods=['POST'])
def add_tweet():
    new_tweet_content = request.form['new_tweet']
    if new_tweet_content:
        add_tweet_to_json(new_tweet_content)
        return redirect(url_for('index'))
    else:
        return redirect(url_for('index', message='ツイート内容を入力してください。'))

ツイート追加画面用のパスとして”/add_tweet_form”を追加します。

また、JSONファイルへの追加実行用のパスとして”/add_tweet”を追加し、受け取ったツイートから先ほど作成した”add_tweet_to_json”関数を実行しています。

実際に「ツイートを追加」ボタンを実行すると、JSONファイルにツイート内容が追加されていることがわかります。

python_twitter
ウマたん
ウマたん
ツイート追加用の画面を作ることで、投稿内容を追加する際ににわざわざJSONファイルを手で更新する必要がなくなるね!

自動投稿の実行

まずはこれまで作成した関数を”app.py”に一通りまとめます。

from flask import Flask, request, render_template, redirect, url_for
import os
import json
from dotenv import load_dotenv
import tweepy
import schedule
import threading
import time

app = Flask(__name__)

# .envファイルから環境変数を読み込む
load_dotenv()

# 環境変数からTwitter APIキーを取得
api_key = os.getenv('API_KEY')
api_secret_key = os.getenv('API_SECRET_KEY')
access_token = os.getenv('ACCESS_TOKEN')
access_token_secret = os.getenv('ACCESS_TOKEN_SECRET')
bearer_token = os.getenv('BEARER_TOKEN')

# Tweepyでクライアントをセットアップ
client = tweepy.Client(
    bearer_token=bearer_token,
    consumer_key=api_key,
    consumer_secret=api_secret_key,
    access_token=access_token,
    access_token_secret=access_token_secret
)

# JSONファイルから投稿メッセージを取得
def get_tweet_from_json(file_path='tweets.json'):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 最初のメッセージを取得
        if data and len(data) > 0:
            tweet_data = data.pop(0)  # 最初のメッセージを取得し、リストから削除
            with open(file_path, 'w', encoding='utf-8') as f:
                json.dump(data, f, ensure_ascii=False, indent=4)  # 更新したJSONファイルを保存
            return tweet_data['message']  # メッセージを返す
        else:
            print("JSONファイルに投稿メッセージがありません。")
            return None
    except Exception as e:
        print(f"JSONファイルの読み込みエラー: {e}")
        return None

# JSONファイルに新しい予約ツイートを追加
def add_tweet_to_json(new_tweet, file_path='tweets.json'):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 新しいツイートの番号を設定
        if data:
            last_tweet_no = data[-1]['tweetNo']
        else:
            last_tweet_no = 0

        # 新しいツイートの内容を追加
        new_tweet_data = {
            "tweetNo": last_tweet_no + 1,
            "message": new_tweet
        }
        data.append(new_tweet_data)

        # 更新されたデータをJSONファイルに保存
        with open(file_path, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=4)

        print(f"予約ツイートが追加されました: {new_tweet_data}")
    except Exception as e:
        print(f"予約ツイートの追加中にエラー: {e}")

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/tweet', methods=['POST'])
def tweet():
    tweet_content = request.form['tweet']
    try:
        # ツイートを投稿
        client.create_tweet(text=tweet_content)
        return redirect(url_for('index', message='ツイートが成功しました!'))
    except Exception as e:
        return redirect(url_for('index', message=f'エラーが発生しました: {e}'))

# 新しいツイートを追加するフォームを表示
@app.route('/add_tweet_form')
def add_tweet_form():
    return render_template('add_tweet.html')

# 新しいツイートをJSONファイルに追加するエンドポイント
@app.route('/add_tweet', methods=['POST'])
def add_tweet():
    new_tweet_content = request.form['new_tweet']
    if new_tweet_content:
        add_tweet_to_json(new_tweet_content)
        return redirect(url_for('index'))
    else:
        return redirect(url_for('index', message='ツイート内容を入力してください。'))

# Xへの投稿
def auto_post():
    try:
        # JSONファイルから投稿内容を取得
        auto_tweet_content = get_tweet_from_json()

        # メッセージがある場合のみツイートを投稿
        if auto_tweet_content:
            client.create_tweet(text=auto_tweet_content)
            print(f"自動ツイートが投稿されました: {auto_tweet_content}")
        else:
            print("ツイートする内容がありません。")
    except Exception as e:
        print(f"自動ツイートのエラー: {e}")

# スケジュール設定
def schedule_auto_post():
    # 5分ごとに自動投稿を行う
    schedule.every(5).minutes.do(auto_post)
    
    while True:
        # 実行が可能なタスクがあれば実行する
        schedule.run_pending()
        # 60秒間待機する
        time.sleep(60)

# スケジュールを別スレッドで実行
def run_scheduler():
    scheduler_thread = threading.Thread(target=schedule_auto_post)
    scheduler_thread.start()

if __name__ == '__main__':
    # スケジューラーを開始
    run_scheduler()
    # Flaskサーバーを実行
    app.run(debug=True)

“python app.py”とコマンドを実行して自動投稿を実行します。

標準出力を確認すると自動投稿の処理が問題なく実行されていることがわかります。

python_twitter

実際にXのアカウントをみると、自動投稿されています。

python_twitter
ウマたん
ウマたん
Xに自動投稿出来た!Pythonだと簡単に実装できるね!

Pythonを使ってX(旧Twitter)の自動投稿 まとめ

PythonでX(旧Twitter)の自動投稿する方法について見ていきました。

PythonでX(旧Twitter)の自動投稿には以下の事前準備が必要なので、注意しましょう。

・X APIの開発者アカウント作成
・ユーザー認証設定
・キー・シークレットの取得

ウマたん
ウマたん
PythonでXの運用を効率化していこう!

冒頭でもお伝えしましたが、より詳しくX(旧Twitter)のAPIを使って様々な処理を構築する方法を学びたい人は以下の僕のUdemyコースをチェックしてみてください!

PythonでX(旧Twitter)のAPIを使ってTweetできるアプリやスプシから自動投稿する仕組みを作っていこう!

Udemy_Twitter
【時間】3.5時間
【レベル】初級

PythonでX(旧Twitter)のAPIを使って様々な処理を作ってみたいならこれ!

今なら購入時に「VGRBCQDF」という講師クーポンコードを入れると94%OFFになりますのでぜひご受講ください!

\30日以内なら返金無料/このコースを見てみる

また、もっとWebアプリの開発やPythonの勉強をしたい方は、当メディアが運営する教育サービス「スタアカ(スタビジアカデミー)」の講座をチェックしてみてください。

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら