【X(Twitter)予約投稿ツールマニュアル】自動返信の初期設定
はじめに
このページではX(Twitter)予約投稿ツールの自動返信機能の初期設定を1から解説します。
自動返信は、DM・被フォロー・いいね・リプライ・リポストをきっかけに、自動でDMや公開リプライを返す機能です。
Xからのイベントをリアルタイムに受け取る必要があるため、予約投稿・定期投稿とは別に下記の設定をします。
- 本ツールをWebアプリとしてデプロイし、URLを取得する
- Cloudflare Workerを作成し、Xからの通信を本ツールへ中継する
- X Developer Consoleで認証情報を取得する
- 本ツールへ認証情報を登録する
- Webhookの登録・イベント購読を実行する

他の機能より手順が多めです。15分程みておくと安心です。
なぜCloudflare Workerが必要なのか
XはWebhookの登録時に、登録先URLへ問い合わせて応答を検証します。ところがGASのWebアプリは受信時にリダイレクト(302)を返す仕様のため、Xの検証がそこで失敗します。
そこで、Xと本ツールの間にCloudflare Workerを挟んでリダイレクトを吸収します。Xから見た登録先はWorkerのURLになり、Workerが受け取った内容をそのまま本ツールへ転送します。
事前準備
自動返信を設定する前に、本ツールの初期設定を完了してください。

自動返信の初期設定方法
まず、本ツールをWebアプリとしてデプロイし、Xからの通信を受け取るURLを発行します。
スプレッドシートの上部メニュー[拡張機能]>[Apps Script]をクリックします。
![スプレッドシートの[拡張機能]メニューから[Apps Script]を選択する画面](https://sananeblog.com/wp-content/uploads/2026/07/01-x-autoreply-appsscript.png)
Apps Scriptの画面が開いたら、右上の[デプロイ]>[新しいデプロイ]をクリックします。
![Apps Scriptの[デプロイ]メニューから[新しいデプロイ]を選択する画面](https://sananeblog.com/wp-content/uploads/2026/07/02-x-autoreply-new-deploy.png)
[種類の選択]で[ウェブアプリ]を選び、下記のとおり設定して[デプロイ]をクリックします。
- 種類の選択:ウェブアプリ
- 説明:任意(例:Webhook用)
- 次のユーザーとして実行:自分
- アクセスできるユーザー:全員
![[新しいデプロイ]画面で種類にウェブアプリ、アクセスできるユーザーに全員を設定する画面](https://sananeblog.com/wp-content/uploads/2026/07/03-x-autoreply-deploy-settings.png)
デプロイが完了すると[ウェブアプリ]の[URL]が表示されます。[コピー]をクリックしてクリップボードにコピーします。
このURLは次の手順で使用します。メモ帳等に控えておいてください。
![デプロイ完了画面でウェブアプリのURLを[コピー]する画面](https://sananeblog.com/wp-content/uploads/2026/07/04-x-autoreply-deploy-url.png)
次に、Xからの通信を本ツールへ中継するCloudflare Workerを作成します。
Cloudflareにアカウントを登録し、ダッシュボードにログインします。

左メニュー[Compute]>[Workers & Pages]をクリックし、右上の[Create application]をクリックします。
![Cloudflareの[Workers & Pages]画面で[Create application]をクリックする画面](https://sananeblog.com/wp-content/uploads/2026/07/06-x-autoreply-cf-create-app.png)
[Start with Hello World!]をクリックします。
![Workerの作成方法の選択画面で[Start with Hello World!]をクリックする画面](https://sananeblog.com/wp-content/uploads/2026/07/07-x-autoreply-cf-hello-world.png)
[Worker name]に任意の名前を入力し、[Deploy]をクリックします。
![[Deploy Hello World]画面でWorker nameを入力し[Deploy]をクリックする画面](https://sananeblog.com/wp-content/uploads/2026/07/08-x-autoreply-cf-deploy.png)
デプロイが完了したら、右上の[Edit code]をクリックします。
![WorkerのOverview画面で[Edit code]をクリックする画面](https://sananeblog.com/wp-content/uploads/2026/07/09-x-autoreply-cf-edit-code.png)
コードエディタが開きます。[worker.js]の中身をすべて削除し、下記のコードを貼り付けます。
const GAS_URL = 'ここにSTEP1でコピーしたウェブアプリのURLを貼り付け';
export default {
async fetch(request) {
const incoming = new URL(request.url);
// GAS URL にクエリパラメータをそのまま転送(crc_token など)
const gasUrl = GAS_URL + incoming.search;
const gasRequest = new Request(gasUrl, {
method: request.method,
headers: {
'Content-Type': request.headers.get('Content-Type') || 'application/json',
'x-twitter-webhooks-signature': request.headers.get('x-twitter-webhooks-signature') || '',
},
body: request.method === 'POST' ? request.body : undefined,
redirect: 'follow', // Cloudflare がGASの302を追従する
});
const gasResponse = await fetch(gasRequest);
const body = await gasResponse.text();
return new Response(body, {
status: 200, // Xは200以外を失敗扱いにするため常に200を返す
headers: { 'Content-Type': 'application/json' },
});
},
};1行目のGAS_URLを、STEP1でコピーしたWebアプリのURLに書き換えます。
書き換えたら、右上の[Deploy]をクリックします。
![Cloudflareのコードエディタでworker.jsのGAS_URLを書き換え[Deploy]をクリックする画面](https://sananeblog.com/wp-content/uploads/2026/07/10-x-autoreply-cf-worker-js.png)
Workerの画面に戻り、WorkerのURL(末尾が[workers.dev]のURL)をコピーします。
このURLは後の手順で使用します。メモ帳等に控えておいてください。

次に、X Developer Consoleで自動返信に必要な認証情報を取得します。
初期設定で作成したアプリの[Keys & Tokens]画面を開き、下記の5つを取得します。
- [アプリ専用認証]>ベアラートークン
- [OAuth 1.0 キー]>コンシューマーキー
- [OAuth 1.0 キー]>コンシューマーシークレット
- [OAuth 1.0 キー]>アクセストークン
- [OAuth 1.0 キー]>アクセストークンシークレット
ベアラートークン
[アプリ専用認証]>[ベアラートークン]の[再生成]をクリックします。表示された値をコピーします。
![[Keys & Tokens]画面の[アプリ専用認証]でベアラートークンを[再生成]する画面](https://sananeblog.com/wp-content/uploads/2026/07/12-x-autoreply-bearer-token.png)
コンシューマーキー・コンシューマーシークレット
[OAuth 1.0 キー]>[コンシューマーキー]の[再生成]をクリックします。
[コンシューマーキー]と[コンシューマーキーシークレット]が表示されるため、どちらもコピーします。

アクセストークン・アクセストークンシークレット
[OAuth 1.0 キー]>[アクセストークン]の[生成する]をクリックします。
[アクセストークン]と[アクセストークンシークレット]が表示されるため、どちらもコピーします。

取得した認証情報とWorkerのURLを本ツールに登録します。
スプレッドシートに戻り、上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[①認証情報の入力・登録状況確認]をクリックします。
![[★X予約投稿ツール]メニューの[自動返信メニュー]から[①認証情報の入力・登録状況確認]を選択する画面](https://sananeblog.com/wp-content/uploads/2026/07/15-x-autoreply-menu-credentials.png)
[Webhook設定]ダイアログが表示されます。各項目に前の手順でコピーした値を入力し、[保存]をクリックします。
- ベアラートークン(アプリ専用認証)
- コンシューマーキー(OAuth 1.0 キー)
- コンシューマーシークレット(OAuth 1.0 キー)
- アクセストークン(OAuth 1.0 キー)
- アクセストークンシークレット(OAuth 1.0 キー)
- Cloudflare Worker URL:STEP2でコピーしたWorkerのURL
![[Webhook設定]ダイアログで各認証情報とCloudflare Worker URLを入力する画面](https://sananeblog.com/wp-content/uploads/2026/07/16-x-autoreply-webhook-setup.png)
最後に、Xに対してWebhookを登録し、イベントの購読を開始します。
上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[②Webhookの登録・イベント購読を実行]をクリックします。
![[自動返信メニュー]から[②Webhookの登録・イベント購読を実行]を選択する画面](https://sananeblog.com/wp-content/uploads/2026/07/17-x-autoreply-menu-register.png)
下記の3つがすべて成功すると設定完了です。[OK]をクリックしてダイアログを閉じます。
- Webhookの作成・登録
- DM受信イベントの購読
- 被フォロー・いいね・リプライ・リポストの購読

自動返信ルールの編集
初期設定が完了したら、どのイベントにどう返信するかをルールとして登録します。
上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[自動返信ルールを編集]をクリックします。
ルールの具体的な設定方法は下記のページで解説しています。

本日の送信件数を確認・リセット
自動返信には1日の送信件数の上限があります。現在の送信件数は、上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[本日の送信件数を確認・リセット]から確認できます。
テスト中に上限へ達した場合などは、この画面からカウンタをリセットできます。
利用にあたっての注意点
Webアプリを再デプロイした場合
[新しいデプロイ]で作り直すとURLが変わります。その場合はCloudflare WorkerのGAS_URLも新しいURLに書き換えて、Workerを再度[Deploy]してください。
認証情報を再生成した場合
X Developer Consoleでベアラートークンやコンシューマーキー等を再生成すると、古い値は使えなくなります。[①認証情報の入力・登録状況確認]から登録し直し、[②Webhookの登録・イベント購読を実行]をやり直してください。
受信の記録について
Xから受け取ったイベントと自動返信の結果は[ウェブフックログ]シートに記録されます。返信されない場合はこのシートを確認してください。

