無料でできる!X 自動投稿 Bot の作り方| GAS × スプレッドシートで簡単予約投稿

無料でできる!X 自動投稿 Bot の作り方 IT

X(旧 Twitter)の予約投稿、ちょっと使いづらい…」と感じたことはありませんか?

投稿を一覧で確認できなかったり、スマホからだと操作が面倒だったり。実は私自身も不満を感じていて、「もっと手軽に、まとめて投稿予約できる方法があれば…」と思い、今回の Bot を自作しました。

この自動投稿 Bot は、Google スプレッドシートと Google Apps Script(GAS)を組み合わせて、完全無料で運用できるシンプルな仕組みです。スプレッドシートに投稿内容と時間を入力しておくだけで、あとは Bot が自動で X に投稿してくれます。

しかも、2025 年 5 月に発生した X 公式の予約投稿障害時も、私の Bot は一切止まらず安定稼働。使っていて本当に助かりました。

この記事では、この Bot を「誰でも簡単に作れるように」ステップバイステップで解説していきます。
X の投稿管理をもっと快適にしたい人は、ぜひこの機会に試してみてください!

X の予約投稿はなぜ不便なのか?

X(旧 Twitter)には公式の予約投稿機能が用意されていますが、実際に使ってみると「もう少し便利になってほしい」と感じる場面がいくつかあります。このセクションでは、X の予約投稿機能が抱える具体的な不便さについて見ていきます。

投稿数が多いと管理が大変

X の予約投稿機能は、1 件ずつ投稿を登録するスタイルです。複数の投稿をまとめて予約したい場合も、一つひとつ入力していく必要があります。これでは、投稿数が 10 件、20 件と増えていくほど管理が煩雑になり、修正や並び替えも手間になります。

スマホからだと見づらい・編集しづらい

予約投稿の一覧は PC であれば比較的操作しやすいものの、スマホからだと確認や修正が難しくなります。モバイル環境で投稿内容をチェックしたり、予約時刻を変更したりといった作業がしにくく、出先からの運用には不向きです。

障害時に使えなくなるリスクがある

2025 年 5 月には、X の公式予約投稿機能が一時的に使えなくなる障害が発生しました。投稿一覧が表示されず、予約が反映されないといった不具合が多くのユーザーに影響を与えました。このような障害は予測が難しく、運用の安定性に不安が残ります。

ちなみに筆者は、今回紹介するスプレッドシート+ GAS で作成した自動投稿 Bot を使っていたため、この障害の影響をまったく受けずに予約投稿を継続することができました。外部依存を減らし、自分で管理できる仕組みを持つことの重要性を実感した出来事でした。

そもそも「Bot(ボット)」って何?

Bot とは自動で動くプログラムのこと

「Bot(ボット)」とは、「ロボット」の略語であり、特定の作業を人間の代わりに自動で実行するプログラムのことを指します。Web 上ではチャットボットや通知ボットなどがよく知られており、定型的な処理や繰り返し作業を効率化するために使われます。

今回紹介するような「投稿 Bot」は、あらかじめ設定された内容を、決められた時刻に自動で投稿してくれる仕組みです。人が毎回手動で投稿しなくてもよくなり、運用の手間が大きく軽減されます。

たとえば、以下のような Bot があります:

  • 定時にニュースを投稿する時報 Bot
  • 毎朝モチベーションを上げる言葉を投稿する Bot
  • RSS フィードを元に記事を自動投稿する Bot

このように Bot は、投稿や通知などを「自動で」「正確に」「忘れずに」実行してくれる非常に便利な仕組みです。

X 投稿 Bot の具体的な役割とは?

X 投稿 Bot は、X(旧 Twitter)での情報発信を自動化する役割を担います。具体的には、スプレッドシートにあらかじめ入力しておいた投稿内容を、設定した日時に従って自動で投稿する仕組みです。

この Bot を活用することで、以下のようなメリットがあります:

  • 毎日の投稿を事前にまとめて準備できる
  • 手動での投稿ミスや忘れを防げる
  • 決まった時間に正確に投稿できる
  • スプレッドシートで一覧管理できるので視認性が高い

また、X の予約投稿機能では難しかった「複数投稿の一括管理」や「時系列での並び替え」もスプレッドシートなら簡単に行えるため、運用の柔軟性が大きく向上します。

X 投稿 Bot は、定型的なツイートや複数のアカウントでの情報発信、キャンペーン投稿など、日常的な投稿業務を効率化したい人にとって非常に頼れる存在です。

今回作る Bot でできること

このセクションでは、今回作成する X 投稿 Bot がどのような機能を持ち、どのように活用できるのかを紹介します。主な特徴は「一覧で見える管理」「自動化された投稿処理」「確実な記録」です。

スプレッドシートで予約投稿を一覧管理

予約投稿内容を Google スプレッドシートにまとめて入力できるので、複数のツイートを一括で視覚的に管理できます。日付と時刻ごとに並べ替えもでき、どの投稿がいつ予定されているかがひと目でわかります。

GAS で定期実行 → 自動投稿

Google Apps Script(GAS)を使えば、スプレッドシートの内容をもとに決められた時間ごとに自動投稿が可能です。トリガー機能を使えば「毎時 00 分に投稿内容をチェック」といった定期処理も簡単に設定できます。

投稿済みの記録や並び替えもラクに

一度投稿したツイートは、スプレッドシートの「投稿済み」列に自動で記録されます。これにより、誤って同じ内容を再投稿してしまうことを防げるだけでなく、「どこまで投稿したか」が一目でわかります。また、未投稿のものだけを並び替えて次の投稿スケジュールを整理することもできます。

X 自動投稿 Bot の作り方

X の API キーを取得する

X の自動投稿 Bot を作成するには、X API の認証情報(API キー)が必要です。以下の手順で取得できます。

X 開発者ポータル にアクセスし、X アカウントでログインします。
(開発者アカウントの登録方法は省略します)

Projects & Apps」→「Default project-xxx」→「(既定の作成済みアプリ)」を選択し、「Settings」タブを開きます。「User authentication settings」エリアの「Edit」を選択します。

X開発者ポータル画面からUser authentication settings画面に移動する方法

App permissions」「Type of App」「App Info」エリアを以下の画面の通り設定・入力します。

X自動投稿botの作り方 - X開発者ポータルのApp permissions設定
X自動投稿botの作り方 - X開発者ポータルのType of App設定
X自動投稿botの作り方 - X開発者ポータルのApp info設定

App Info」エリアの「Callback URL / redirect URL」と「Website URL」は、今回の Bot では利用しないので、適当な値で OK です。 私は以下の通り入力しました。

  • Callback URL / redirect URL : https://example.com/callback
  • Website URL : 自分のブログサイト URL

Keys and tokens」タブを開き、Consumer Keys の「Regenerate」をクリックして、以下の情報を取得します。表示された値は後で使うので控えておいてください。
(他人に知られないように安全に保管してください)

  • API Key(Consumer Key)
  • API Key Secret(Consumer Secret)
X自動投稿スクリプトに必要なAPI KeyとAPI Key Secretの発行方法

Authentication Tokens」-「Access Token and Secret」の「Generate」をクリックして以下の情報を取得します。こちらも後で使うので控えておいてください。
(他人に知られないように安全に保管してください)

  • Access Token
  • Access Token Secret
X自動投稿スクリプトに必要なAccess TokenとAccess Token Secretの発行方法
  • Access Token and Secret」エリアに「Created with Reads and Write permissions」と表示されていることを確認します。
X自動投稿スクリプトに必要なAccess TokenとAccess Token Secretの読み書き権限を確認する方法

API キーのどこまで必要?(Bot 作成に必要な範囲)

X の API キーには複数の種類がありますが、今回の Bot を動かすために必要なのは以下の 4 つです:

  • API Key(Consumer Key)
  • API Secret(Consumer Secret)
  • Access Token
  • Access Token Secret

これらはすべて「OAuth 1.0a」方式で発行されます。Bot はこれらの情報を使って署名し、認証された状態で X API に対して投稿リクエストを送ります。

また、「App permissions」は必ず「Read and write」に設定してください。「Read-only」のままだと投稿操作が許可されないため、Bot が機能しません。

なお、「Bearer Token」や「OAuth 2.0」は今回のスクリプトでは使用しませんので取得不要です。

スプレッドシートを作成する

今回の Bot では、投稿内容と投稿日時を Google スプレッドシートで管理します。空白のスプレッドシートを作成後、ファイル名とシート名を以下の通り設定してください。

項目設定値
ファイル名X 予約投稿 bot
シート名PostSchedule
X自動投稿を管理するGoogle スプレッドシートのフィアル名とシート名を設定する

以下のような構成でシートを用意してください:

A 列B 列C 列D 列
日付時刻投稿内容投稿済みフラグ
  • A 列(日付):投稿予定日(例:2025/06/01)を入力します。セルの表示形式は「日付」にしてください。
  • B 列(時刻):投稿予定時刻(例:08:00)を入力します。セルの表示形式は「時刻」にしてください。
  • C 列(投稿内容):投稿したいツイートの本文を入力します。
  • D 列(投稿済み):空のままにしてください。投稿が成功したら「T

1 行目はヘッダー行です。2 行目以降に投稿データを入力していきます。予約投稿のスケジュールはこの表に従って実行されます。

X自動投稿を管理するGoogle スプレッドシートに投稿内容を入力したイメージ

自動投稿スクリプトをコピー&貼り付け

スプレッドシートを開いた状態で「拡張機能」→「Apps Script」を選択します。

スプレッドシートから Apps Script 画面を表示する方法

スクリプトファイル名を「コード.gs」から「xPostScheduler.gs」に変更します。既存のコードをすべて削除し、以下の GitHub のコードをコピーして貼り付けます。

X自動投稿スクリプトを貼り付けたところ

スクリプトには、API キースプレッドシート ID などを記入する定数があります。自分の環境に合わせて値を編集してください。

X自動投稿スクリプト内に自環境情報を置き換える場所
置換え前の文字列置き換える値
YOUR_API_KEYX 開発者ポータルで控えておいた「API Key(Consumer Key)」
YOUR_API_SECRETX 開発者ポータルで控えておいた「API Secret(Consumer Secret)」
YOUR_ACCESS_TOKENX 開発者ポータルで控えておいた「Access Token」
YOUR_ACCESS_SECRETX 開発者ポータルで控えておいた「Access Token Secret」
YOUR_SPREADSHEET_IDスプレッドシート ID(取得元は以下を参照)

スプレッドシート ID の取得方法

スプレッドシートを作成するで作成したスプレッドシート URL の「d/」 と 「/edit」 の間がスプレットシート ID です。

スプレッドシート URL に含まれるスプレッドシート ID の場所

トリガーを設定

次に自動投稿スクリプトを定期実行するためのトリガーを設定します。

GAS エディタ左側の「目覚まし時計アイコン(トリガー)」をクリックし、「+ トリガーを追加」をクリックします。

Apps Scriptのトリガーを追加する方法

トリガーの属性を次のように設定します

X自動投稿スクリプトを実行するトリガーの属性情報
  • 関数:postScheduledTweets
  • イベントの種類:時間主導型
  • 実行間隔:15 分ごと(または 5 分ごとなど)

トリガー属性を設定後「保存」をクリックします。これで Bot が定期的にスプレッドシートを確認し、投稿予定のツイートを自動で投稿してくれるようになります。

Apps Scriptにトリガーを作成した

自動投稿が成功すると、スプレッドシートの「投稿済み列(D 列)に「TRUE」と記録されます。

X自動投稿が成功した場合のスプレッドシートの状態。「投稿済み列(D 列)に「TRUE」と記録される

投稿の間隔・投稿数に注意(レート制限対策)

X API には投稿数の上限があります。連続で短時間に投稿しすぎると「429 Too Many Requests」エラーが返されることがあります。

そのため、この Bot では投稿ごとに Utilities.sleep(5000) を使って 5 秒待機する処理を入れています。これにより、X 側からのレート制限を回避し、安定した投稿が可能になります。

また、一度に大量の投稿が予定されている場合は、1 回の実行で投稿する件数に上限を設けるのもおすすめです(例:最大 10 件まで)。

よくある質問・トラブル対応

429 エラーが出たらどうする?

「429 Too Many Requests」というエラーは、短時間に連続して投稿リクエストを送りすぎた場合に X API から返されるレート制限エラーです。この Bot では、投稿ごとに 5 秒の待機処理(Utilities.sleep(5000))を入れることで回避しています。

それでもエラーが出る場合は、以下の対策を試してみてください:

  • 投稿件数を制限する(例:1 回の処理で最大 10 件まで)
  • トリガー実行間隔を長めに設定する(例:15 分ごと → 30 分ごと)
  • エラー時は再実行できるようにログを残すなど、冗長性を持たせる

投稿できたか確認する方法

投稿が成功したかどうかは、スプレッドシートの「投稿済み」列(D 列)に TRUE が自動で記録されることで確認できます。未記録であれば次回実行時に再投稿対象として扱われます。

また、X のタイムラインを直接確認することでも、該当のツイートが投稿されているかどうかをすぐに把握できます。

投稿が重複しないようにするには?

Bot はスプレッドシートの「投稿済み」列をチェックし、TRUE のついていない行だけを投稿対象としています。そのため、投稿済みのツイートが再投稿されることは基本的にありません。

ただし、投稿処理中にスクリプトが中断された場合などには、処理が完了していない可能性があります。その場合は TRUE が書き込まれていないため、次回の実行時に再投稿されることがあります。これを避けたい場合は、投稿直後に必ず TRUE を記録するよう、コードのロジックを確認しておくと安心です。

まとめ|無料で快適に予約投稿を自動化しよう

X(旧 Twitter)の予約投稿機能は便利なようでいて、実際に運用してみると「管理が煩雑」「スマホでは使いづらい」「障害で使えなくなることもある」といった課題に直面します。

今回紹介した「スプレッドシート × GAS(Google Apps Script)」による自作 Bot なら、これらの課題をすべて解決できます。

  • 複数の投稿を一覧で管理できて見やすい
  • 投稿スケジュールを自由に設定・変更できる
  • 自動投稿だから手動ミスや忘れもなし
  • 公式機能の障害にも影響されず、安定して稼働

しかも、すべて無料で構築可能です。

「投稿をもっと効率化したい」「公式の予約投稿では物足りない」と感じている方は、ぜひこの Bot を使ってみてください。運用がラクになるだけでなく、自分好みにカスタマイズして成長させる楽しさも味わえます!

関連記事 & リンク

タイトルとURLをコピーしました