Xに毎日投稿したいと思っていても、手動で続けるのは意外と大変です。投稿する内容を考えるだけでなく、決まった時間に投稿する必要があるため、忙しい日には投稿を忘れてしまうこともあります。
そこで便利なのが、Pythonを使ったX自動投稿です。今回の方法では、あらかじめCSVファイルに投稿文を用意しておき、Pythonのプログラムが投稿予定時刻を確認して、Xへ自動で投稿します。
この記事では、初めてこの仕組みを見る人でも分かるように、ファイルの役割、初期設定、実行方法、投稿結果の確認方法まで順番に解説します。
- 今回作るX自動投稿の仕組み
- 現在の状態
- 使うファイルの役割
- posts.csvとは
- .envとは
- X APIキーを設定する手順
- PowerShellを開く
- 作業フォルダに移動する
- Pythonの仮想環境を作成する
- 仮想環境を有効化する
- 仮想環境の有効化でエラーが出た場合
- 必要なライブラリをインストールする
- テスト投稿の準備をする
- テスト投稿を実行する
- 本番の自動投稿を開始する
- scheduler.pyを起動している間の注意点
- 自動投稿を止める方法
- 投稿結果を確認する方法
- 投稿できないときの確認ポイント
- 投稿文を追加する方法
- 投稿文を修正する方法
- 30日分の投稿が終わったらどうするか
- 2回目以降に起動する手順
- 初回に実行するコマンドまとめ
- 毎日の運用で確認すること
- 週に1回確認すること
- PC起動時に自動で動かしたい場合
- この仕組みのメリット
- 注意点
- まとめ
今回作るX自動投稿の仕組み
今回の仕組みは、ローカルPC上で動くX自動投稿ツールです。
ローカルPCとは、自分のパソコンのことです。
つまり、外部の管理画面を使うのではなく、自分のPC上でPythonを動かして、Xへ投稿します。
全体の流れは次の通りです。
- posts.csvに投稿文を用意する
- .envにX APIキーを設定する
- Pythonの実行環境を作る
- 必要なライブラリをインストールする
- テスト投稿を行う
- scheduler.pyを起動する
- 投稿予定時刻になるとXへ自動投稿される
- 投稿結果がposts.csvとログに記録される
簡単に言うと、posts.csvが「投稿リスト」、Pythonが「投稿を実行する係」です。
現在の状態
今回の環境では、すでに次の準備が完了しています。
| 項目 | 状態 |
|---|---|
| 投稿データ | posts.csvに30日分のWordPress技術Tipsを入力済み |
| 投稿内容 | 初心者向けの内容に調整済み |
| 投稿予定 | 明日の午前8時から1日1件ずつ投稿される設定 |
| 実行方法 | Pythonで投稿処理を実行する構成 |
| ログ | logs/post.logに実行結果を記録する構成 |
つまり、あとはAPIキーを設定し、Python環境を整えて、プログラムを実行すれば自動投稿を開始できます。
使うファイルの役割
まず、今回の自動投稿ツールで使うファイルの役割を理解しておきましょう。
| ファイル名 | 役割 |
|---|---|
| posts.csv | 投稿文、投稿予定日時、投稿状態を管理するファイル |
| .env | X APIキーを保存するファイル |
| requirements.txt | 必要なPythonライブラリの一覧 |
| post_to_x.py | Xへ1件投稿するためのプログラム |
| scheduler.py | 投稿時間を定期的に確認するプログラム |
| logs/post.log | 投稿結果やエラー内容を記録するログファイル |
最初はすべてを理解しようとしなくても大丈夫です。
まずは、次の3つだけ覚えておけば十分です。
| 覚えるもの | 意味 |
|---|---|
| posts.csv | 投稿文を入れる場所 |
| .env | APIキーを入れる場所 |
| scheduler.py | 自動投稿を開始するプログラム |
posts.csvとは
posts.csvは、投稿文を管理するためのファイルです。
CSVとは、表形式のデータを保存するためのファイル形式です。
ExcelやGoogleスプレッドシートでも開けます。
posts.csvには、次のような情報が入っています。
| 項目 | 意味 |
|---|---|
| 投稿文 | Xに投稿する文章 |
| scheduled_at | 投稿予定日時 |
| status | 投稿状態 |
| tweet_id | 投稿後に記録される投稿ID |
たとえば、statusがreadyになっている投稿は、まだ投稿されていない状態です。
ready
投稿が成功すると、statusはpostedに変わります。
posted
つまり、readyは「投稿待ち」、postedは「投稿済み」という意味です。
.envとは
.envは、X APIキーを保存するためのファイルです。
Xへ自動投稿するには、X Developer Portalで取得したAPIキーが必要です。
そのAPIキーをプログラム内に直接書くのではなく、.envファイルに保存します。
.envファイルには、次の4つの情報を入力します。
API_KEY=ここにAPI Keyを入力
API_KEY_SECRET=ここにAPI Key Secretを入力
ACCESS_TOKEN=ここにAccess Tokenを入力
ACCESS_TOKEN_SECRET=ここにAccess Token Secretを入力
APIキーは、Xアカウントを操作するための重要な情報です。
他人に見せないように注意してください。
ブログ記事、SNS、公開フォルダなどに貼り付けてはいけません。
X APIキーを設定する手順
最初に行う作業は、X APIキーの設定です。
手順は次の通りです。
- X Developer Portalを開く
- 作成済みのアプリを確認する
- API Keyを取得する
- API Key Secretを取得する
- Access Tokenを取得する
- Access Token Secretを取得する
- x_auto_post/.envを開く
- 4つのキーを貼り付けて保存する
設定するファイルは、次の場所にあります。
x_auto_post/.env
.envファイルを開いたら、取得したキーをそれぞれ貼り付けます。
例です。
API_KEY=xxxxxxxxxxxxxxxx
API_KEY_SECRET=xxxxxxxxxxxxxxxx
ACCESS_TOKEN=xxxxxxxxxxxxxxxx
ACCESS_TOKEN_SECRET=xxxxxxxxxxxxxxxx
このとき、余計なスペースや引用符を入れないように注意してください。
PowerShellを開く
次に、WindowsのPowerShellを開きます。
PowerShellとは、Windowsでコマンドを実行するための画面です。
普段マウスで操作している作業を、文字の命令で実行する場所だと考えると分かりやすいです。
開き方は次の通りです。
- Windowsのスタートメニューを開く
- 「PowerShell」と検索する
- Windows PowerShellを起動する
PowerShellが開いたら、次の作業に進みます。
作業フォルダに移動する
PowerShellを開いたら、自動投稿ツールが置いてあるフォルダに移動します。
次のコマンドを実行します。
cd "g:\マイドライブ\SNS投稿\SNS投稿自動化ツール\X\x_auto_post"
このコマンドは、「指定したフォルダへ移動する」という意味です。
cdは、change directoryの略です。
もし自動投稿ツールを別の場所に保存している場合は、自分のフォルダの場所に合わせて変更してください。
Pythonの仮想環境を作成する
次に、Pythonの仮想環境を作ります。
仮想環境とは、この自動投稿ツール専用のPython環境です。
他のPythonプログラムと設定が混ざらないようにするために使います。
PowerShellで次のコマンドを実行します。
python -m venv venv
実行すると、フォルダ内にvenvというフォルダが作られます。
venv
このvenvの中に、このツール専用のPython環境が入ります。
仮想環境を有効化する
仮想環境を作ったら、次に有効化します。
PowerShellで次のコマンドを実行します。
.\venv\Scripts\Activate.ps1
成功すると、PowerShellの行頭に次のような表示が出ます。
(venv)
この表示が出ていれば、仮想環境が有効になっています。
今後、このツールを実行するときは、基本的にこの仮想環境を有効化してから実行します。
仮想環境の有効化でエラーが出た場合
PowerShellで仮想環境を有効化しようとしたときに、次のようなエラーが出る場合があります。
このシステムではスクリプトの実行が無効になっているため、ファイルを読み込むことができません。
この場合は、PowerShellの実行ポリシーが原因です。
次のコマンドを実行してください。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
確認が表示されたら、内容を確認して進めます。
その後、もう一度仮想環境を有効化します。
.\venv\Scripts\Activate.ps1
行頭に(venv)が表示されれば成功です。
必要なライブラリをインストールする
仮想環境を有効化したら、必要なPythonライブラリをインストールします。
次のコマンドを実行します。
pip install -r requirements.txt
requirements.txtには、この自動投稿ツールを動かすために必要なライブラリが書かれています。
このコマンドを実行すると、必要なライブラリがまとめてインストールされます。
ここまでで、Pythonを動かす準備は完了です。
テスト投稿の準備をする
本番運用を始める前に、必ずテスト投稿を行いましょう。
テスト投稿では、posts.csvの1件目を使って、実際にXへ投稿できるか確認します。
posts.csvを開き、1行目のscheduled_atを現在より前の時刻に変更します。
例です。
2024-01-01 00:00:00
そして、statusをreadyにします。
ready
これで、「投稿予定時刻を過ぎていて、まだ投稿されていないデータ」として認識されます。
テスト投稿を実行する
テスト投稿を行うには、PowerShellで次のコマンドを実行します。
python post_to_x.py
このコマンドは、posts.csvの中から投稿対象を探し、Xへ1件投稿するためのものです。
成功すると、実際にXへ投稿されます。
その後、posts.csvのstatusがpostedに変わります。
tweet_idにも投稿IDが入ります。
テスト投稿が成功すれば、APIキーや投稿処理は正しく設定されています。
本番の自動投稿を開始する
テスト投稿が成功したら、本番の自動投稿を開始します。
PowerShellで次のコマンドを実行します。
python scheduler.py
このコマンドを実行すると、スケジューラーが起動します。
スケジューラーとは、決まった時間になったかどうかを確認するプログラムです。
今回の設定では、プログラムが5分ごとにposts.csvを確認します。
そして、次の条件に合う投稿があれば、自動でXへ投稿します。
- scheduled_atの時刻を過ぎている
- statusがreadyになっている
- まだtweet_idが入っていない
投稿が成功すると、statusがpostedに変わります。
scheduler.pyを起動している間の注意点
scheduler.pyは、PowerShellで起動している間だけ動きます。
つまり、PowerShellを閉じると止まります。
PCをシャットダウンしても止まります。
スリープ状態でも止まる場合があります。
| 状態 | 自動投稿されるか |
|---|---|
| PCの電源が入っている | 投稿される |
| PowerShellが開いている | 投稿される |
| scheduler.pyが起動している | 投稿される |
| PowerShellを閉じた | 投稿されない |
| PCをシャットダウンした | 投稿されない |
| PCがスリープ状態 | 投稿されない場合がある |
まずは、朝8時の投稿時刻までPowerShellを開いたままにして、正常に投稿されるか確認しましょう。
自動投稿を止める方法
自動投稿を止めたい場合は、PowerShell上で次のキーを押します。
Ctrl + C
これでscheduler.pyが停止します。
一時的に止めたい場合も、この方法で問題ありません。
再開したい場合は、もう一度次のコマンドを実行します。
python scheduler.py
投稿結果を確認する方法
投稿結果は、主に2か所で確認できます。
1つ目はposts.csvです。
投稿が成功すると、statusがpostedに変わります。
tweet_idにも投稿IDが入ります。
2つ目はログファイルです。
ログファイルは次の場所にあります。
logs/post.log
post.logには、投稿が成功したか、エラーが出たかが記録されます。
もし投稿されない場合やエラーが出た場合は、まずこのログファイルを確認してください。
投稿できないときの確認ポイント
投稿できない場合は、次の順番で確認してください。
| 確認項目 | 内容 |
|---|---|
| .env | APIキーが正しく入力されているか |
| Xアプリの権限 | Read and Writeになっているか |
| Access Token | 権限変更後に再発行しているか |
| posts.csv | statusがreadyになっているか |
| scheduled_at | 現在より前、または投稿予定時刻を過ぎているか |
| Python環境 | 仮想環境が有効になっているか |
| ライブラリ | pip install -r requirements.txtを実行したか |
| ログ | logs/post.logにエラーが記録されていないか |
よくある原因は、APIキーの入力ミス、Xアプリの権限不足、statusの設定ミスです。
特に、Xアプリの権限がReadのみになっていると投稿できません。
必ずRead and Writeに設定してください。
投稿文を追加する方法
新しい投稿文を追加したい場合は、posts.csvに新しい行を追加します。
追加した行のstatusはreadyにします。
ready
scheduled_atには、投稿したい日時を入力します。
例です。
2026-05-07 08:00:00
これで、その日時を過ぎたタイミングでscheduler.pyが自動投稿します。
投稿済みの行を書き換えるより、新しい行を追加する方が安全です。
投稿文を修正する方法
まだ投稿されていない投稿文を修正したい場合は、posts.csvを開いて該当する行を書き換えます。
修正してよいのは、statusがreadyの行です。
ready
すでにpostedになっている行は投稿済みなので、基本的には変更しない方が分かりやすいです。
修正するときは、次の点を確認してください。
- 誤字脱字がないか
- 内容が古くないか
- 投稿文が長すぎないか
- scheduled_atが正しいか
- statusがreadyになっているか
30日分の投稿が終わったらどうするか
30日分の投稿が終わると、posts.csvのstatusがすべてpostedになります。
この状態では、投稿待ちのデータがないため、新しい投稿は行われません。
引き続き投稿したい場合は、新しい投稿文をposts.csvに追加します。
追加するときは、statusをreadyにします。
ready
scheduled_atには、次に投稿したい日時を入れます。
この作業を行えば、同じ仕組みで自動投稿を続けられます。
2回目以降に起動する手順
初回の環境構築が終わっていれば、2回目以降は少ない手順で起動できます。
PowerShellを開き、次のコマンドを順番に実行します。
cd "g:\マイドライブ\SNS投稿\SNS投稿自動化ツール\X\x_auto_post"
.\venv\Scripts\Activate.ps1
python scheduler.py
これで自動投稿が再開されます。
毎回、python -m venv venvやpip install -r requirements.txtを実行する必要はありません。
それらは初回だけで大丈夫です。
初回に実行するコマンドまとめ
初回に実行するコマンドは、次の通りです。
cd "g:\マイドライブ\SNS投稿\SNS投稿自動化ツール\X\x_auto_post"
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
テスト投稿をするときは、次のコマンドです。
python post_to_x.py
本番の自動投稿を開始するときは、次のコマンドです。
python scheduler.py
毎日の運用で確認すること
自動投稿が動き始めたら、毎日細かく操作する必要はありません。
ただし、最初の数日は次の項目を確認してください。
| 確認するもの | 確認内容 |
|---|---|
| X | 実際に投稿されているか |
| posts.csv | statusがpostedに変わっているか |
| logs/post.log | エラーが出ていないか |
| PowerShell | scheduler.pyが起動したままか |
数日間問題なく動けば、基本的な設定は成功です。
週に1回確認すること
自動投稿は便利ですが、完全に放置するのはおすすめしません。
週に1回は、次の内容を確認しましょう。
| 確認項目 | 内容 |
|---|---|
| 投稿残数 | readyの投稿が残っているか |
| 投稿内容 | 古い情報が含まれていないか |
| エラー | logs/post.logに失敗がないか |
| 投稿結果 | 反応のよいテーマは何か |
| 追加予定 | 新しい投稿文を準備する必要があるか |
自動化は、投稿を楽に続けるための仕組みです。
投稿後の反応を見ながら、内容を少しずつ改善していくことが大切です。
PC起動時に自動で動かしたい場合
毎回PowerShellを開いてscheduler.pyを実行するのが面倒な場合は、Windowsのタスクスケジューラーを使う方法があります。
タスクスケジューラーを使うと、PCを起動したときに自動でscheduler.pyを実行できます。
ただし、最初からタスクスケジューラーに登録するより、まずは手動で数日間動かして確認するのがおすすめです。
手動で問題なく動くことを確認してから、自動起動の設定に進むと安心です。
この仕組みのメリット
PythonとCSVを使ったX自動投稿には、次のメリットがあります。
| メリット | 内容 |
|---|---|
| 自分のPCで管理できる | 投稿データを手元で管理できる |
| CSVで編集しやすい | Excelやスプレッドシートで修正できる |
| 投稿状況が分かりやすい | statusで投稿済みか確認できる |
| エラーを記録できる | logs/post.logで原因を確認できる |
| 投稿文を追加しやすい | posts.csvに行を追加するだけでよい |
特に、投稿文をCSVで管理できる点は大きなメリットです。
難しい管理画面を使わなくても、表形式で投稿文や予定時刻を確認できます。
注意点
この仕組みを使うときは、次の点に注意してください。
| 注意点 | 内容 |
|---|---|
| APIキーを公開しない | 不正利用される可能性があります |
| PCを閉じると止まる | ローカル実行のためPCが必要です |
| PowerShellを閉じない | scheduler.pyが停止します |
| 投稿内容を確認する | 古い情報や誤字に注意します |
| 投稿頻度を上げすぎない | アカウント運用上、自然な頻度を意識します |
特に重要なのは、APIキーの管理です。
.envファイルは外部に共有しないようにしてください。
まとめ
今回は、Pythonを使ってXへ自動投稿する手順を、初めて見る人向けに解説しました。
今回の仕組みでは、posts.csvにWordPress初心者向けの投稿文を30日分用意し、Pythonで毎日1件ずつXへ投稿します。
基本の流れは次の通りです。
- .envにX APIキーを設定する
- PowerShellで作業フォルダに移動する
- Pythonの仮想環境を作成する
- 仮想環境を有効化する
- 必要なライブラリをインストールする
- posts.csvを確認する
- post_to_x.pyでテスト投稿する
- scheduler.pyで自動投稿を開始する
- posts.csvとlogs/post.logで結果を確認する
- 投稿文が少なくなったらposts.csvに追加する
最初に目指すべきゴールは、テスト投稿を1件成功させることです。
テスト投稿が成功すれば、APIキー、Python環境、投稿処理が正しく動いていることを確認できます。その後、scheduler.pyを起動しておけば、投稿予定時刻に合わせて毎日1件ずつXへ自動投稿できます。
まずは1件のテスト投稿から始めて、問題なく動くことを確認してから本番運用に進めましょう。

