マニュアル
PR

【X(Twitter)予約投稿ツールマニュアル】自動返信の初期設定

sanane
記事内に商品プロモーションを含む場合があります

はじめに

このページではX(Twitter)予約投稿ツールの自動返信機能の初期設定を1から解説します。

自動返信は、DM・被フォロー・いいね・リプライ・リポストをきっかけに、自動でDMや公開リプライを返す機能です。

Xからのイベントをリアルタイムに受け取る必要があるため、予約投稿・定期投稿とは別に下記の設定をします。

  1. 本ツールをWebアプリとしてデプロイし、URLを取得する
  2. Cloudflare Workerを作成し、Xからの通信を本ツールへ中継する
  3. X Developer Consoleで認証情報を取得する
  4. 本ツールへ認証情報を登録する
  5. Webhookの登録・イベント購読を実行する
SANANE
SANANE

他の機能より手順が多めです。15分程みておくと安心です。

なぜCloudflare Workerが必要なのか

XはWebhookの登録時に、登録先URLへ問い合わせて応答を検証します。ところがGASのWebアプリは受信時にリダイレクト(302)を返す仕様のため、Xの検証がそこで失敗します。

そこで、Xと本ツールの間にCloudflare Workerを挟んでリダイレクトを吸収します。Xから見た登録先はWorkerのURLになり、Workerが受け取った内容をそのまま本ツールへ転送します。

Cloudflareの無料プランで動作します。クレジットカードの登録は不要です。

事前準備

自動返信を設定する前に、本ツールの初期設定を完了してください。

あわせて読みたい
【X(Twitter)予約投稿ツールマニュアル】初期設定の方法
【X(Twitter)予約投稿ツールマニュアル】初期設定の方法

自動返信の初期設定方法

Webアプリのデプロイ

まず、本ツールをWebアプリとしてデプロイし、Xからの通信を受け取るURLを発行します。

スプレッドシートの上部メニュー[拡張機能]>[Apps Script]をクリックします。

スプレッドシートの[拡張機能]メニューから[Apps Script]を選択する画面

Apps Scriptの画面が開いたら、右上の[デプロイ]>[新しいデプロイ]をクリックします。

Apps Scriptの[デプロイ]メニューから[新しいデプロイ]を選択する画面

[種類の選択]で[ウェブアプリ]を選び、下記のとおり設定して[デプロイ]をクリックします。

設定内容
  • 種類の選択:ウェブアプリ
  • 説明:任意(例:Webhook用)
  • 次のユーザーとして実行:自分
  • アクセスできるユーザー:全員
[新しいデプロイ]画面で種類にウェブアプリ、アクセスできるユーザーに全員を設定する画面

[アクセスできるユーザー]は必ず[全員]にしてください。Xのサーバーからの通信を受け取る必要があるため、[自分のみ]では自動返信が動作しません。

デプロイが完了すると[ウェブアプリ]の[URL]が表示されます。[コピー]をクリックしてクリップボードにコピーします。

このURLは次の手順で使用します。メモ帳等に控えておいてください。

デプロイ完了画面でウェブアプリのURLを[コピー]する画面

ここでコピーするURLは末尾が/execのURLです。[デプロイ ID]ではありません。

Cloudflare Workerの作成

次に、Xからの通信を本ツールへ中継するCloudflare Workerを作成します。

Cloudflareにアカウントを登録し、ダッシュボードにログインします。

Cloudflareのダッシュボード画面

左メニュー[Compute]>[Workers & Pages]をクリックし、右上の[Create application]をクリックします。

Cloudflareの[Workers & Pages]画面で[Create application]をクリックする画面

[Start with Hello World!]をクリックします。

Workerの作成方法の選択画面で[Start with Hello World!]をクリックする画面

[Worker name]に任意の名前を入力し、[Deploy]をクリックします。

[Deploy Hello World]画面でWorker nameを入力し[Deploy]をクリックする画面

[Worker name]がそのままURLの一部になります。初期状態ではランダムな名前が入っているため、そのままでも問題ありません。

デプロイが完了したら、右上の[Edit code]をクリックします。

WorkerのOverview画面で[Edit code]をクリックする画面

コードエディタが開きます。[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]をクリックする画面

GAS_URLの書き換え漏れが最も多いつまずきポイントです。末尾が/execで終わっているか、シングルクォートの内側に貼り付けているかを確認してください。

Workerの画面に戻り、WorkerのURL(末尾が[workers.dev]のURL)をコピーします。

このURLは後の手順で使用します。メモ帳等に控えておいてください。

WorkerのOverview画面でworkers.devのURLを確認する画面
Xの認証情報の取得

次に、X Developer Consoleで自動返信に必要な認証情報を取得します。

初期設定で作成したアプリの[Keys & Tokens]画面を開き、下記の5つを取得します。

取得する認証情報
  • [アプリ専用認証]>ベアラートークン
  • [OAuth 1.0 キー]>コンシューマーキー
  • [OAuth 1.0 キー]>コンシューマーシークレット
  • [OAuth 1.0 キー]>アクセストークン
  • [OAuth 1.0 キー]>アクセストークンシークレット

ここで使うのは[OAuth 1.0 キー]です。初期設定で登録した[OAuth 2.0 キー]の値は、この画面には登録しません。

ベアラートークン

[アプリ専用認証]>[ベアラートークン]の[再生成]をクリックします。表示された値をコピーします。

[Keys & Tokens]画面の[アプリ専用認証]でベアラートークンを[再生成]する画面

コンシューマーキー・コンシューマーシークレット

[OAuth 1.0 キー]>[コンシューマーキー]の[再生成]をクリックします。

[コンシューマーキー]と[コンシューマーキーシークレット]が表示されるため、どちらもコピーします。

コンシューマーキーとコンシューマーキーシークレットが表示されたダイアログ

アクセストークン・アクセストークンシークレット

[OAuth 1.0 キー]>[アクセストークン]の[生成する]をクリックします。

[アクセストークン]と[アクセストークンシークレット]が表示されるため、どちらもコピーします。

アクセストークンとアクセストークンシークレットが表示されたダイアログ

シークレット類はダイアログを閉じると二度と表示されません。閉じる前に必ずコピーして控えてください。控え忘れた場合は再生成からやり直してください。

[アクセストークン]の下に[読み書きおよびダイレクトメッセージ]と表示されていることを確認してください。[読む]や[読み書き]の場合は権限が足りないため、初期設定の[ユーザー認証設定]を見直してください。

認証情報の登録

取得した認証情報とWorkerのURLを本ツールに登録します。

スプレッドシートに戻り、上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[①認証情報の入力・登録状況確認]をクリックします。

[★X予約投稿ツール]メニューの[自動返信メニュー]から[①認証情報の入力・登録状況確認]を選択する画面

[Webhook設定]ダイアログが表示されます。各項目に前の手順でコピーした値を入力し、[保存]をクリックします。

入力項目
  • ベアラートークン(アプリ専用認証)
  • コンシューマーキー(OAuth 1.0 キー)
  • コンシューマーシークレット(OAuth 1.0 キー)
  • アクセストークン(OAuth 1.0 キー)
  • アクセストークンシークレット(OAuth 1.0 キー)
  • Cloudflare Worker URL:STEP2でコピーしたWorkerのURL
[Webhook設定]ダイアログで各認証情報とCloudflare Worker URLを入力する画面

ダイアログ上部の[登録状況]で、現在の登録済み・未登録の状態を確認できます。設定後に見直したいときもこのメニューから開いてください。

入力した認証情報は外部には送信されず、本ツール内に保存されます。

Webhookの登録・イベント購読

最後に、Xに対してWebhookを登録し、イベントの購読を開始します。

上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[②Webhookの登録・イベント購読を実行]をクリックします。

[自動返信メニュー]から[②Webhookの登録・イベント購読を実行]を選択する画面

下記の3つがすべて成功すると設定完了です。[OK]をクリックしてダイアログを閉じます。

  1. Webhookの作成・登録
  2. DM受信イベントの購読
  3. 被フォロー・いいね・リプライ・リポストの購読
Webhookの登録とイベント購読が成功したことを知らせるダイアログ

ここでエラーが表示される場合は、Cloudflare WorkerのGAS_URLWebアプリの[アクセスできるユーザー]が[全員]になっているかを確認してください。Xは登録時にWorker経由で本ツールへ問い合わせるため、この2点のどちらかが誤っていると登録に失敗します。

自動返信ルールの編集

初期設定が完了したら、どのイベントにどう返信するかをルールとして登録します。

上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[自動返信ルールを編集]をクリックします。

複数のルールに一致する場合は、一覧の上にあるルールが優先され、最初に一致した1件だけが実行されます。それ以降のルールは無視されます。

ルールの具体的な設定方法は下記のページで解説しています。

あわせて読みたい
【X(Twitter)予約投稿ツールマニュアル】自動返信ルールの作り方
【X(Twitter)予約投稿ツールマニュアル】自動返信ルールの作り方

本日の送信件数を確認・リセット

自動返信には1日の送信件数の上限があります。現在の送信件数は、上部メニュー[★X予約投稿ツール]>[自動返信メニュー]>[本日の送信件数を確認・リセット]から確認できます。

テスト中に上限へ達した場合などは、この画面からカウンタをリセットできます。

利用にあたっての注意点

Xの自動化ルールについて:自動DMは、相手が先にDMを送ってきた場合にのみ認められています。いいね・リプライ・リポスト・フォローをトリガーにDMを送る設定はルール上グレーとなるため、自己責任でご利用ください。公開リプライは、相手が自分の投稿に反応した場合であれば1インタラクションにつき1件まで認められています。

Webアプリを再デプロイした場合

[新しいデプロイ]で作り直すとURLが変わります。その場合はCloudflare WorkerのGAS_URLも新しいURLに書き換えて、Workerを再度[Deploy]してください。

認証情報を再生成した場合

X Developer Consoleでベアラートークンやコンシューマーキー等を再生成すると、古い値は使えなくなります。[①認証情報の入力・登録状況確認]から登録し直し、[②Webhookの登録・イベント購読を実行]をやり直してください。

受信の記録について

Xから受け取ったイベントと自動返信の結果は[ウェブフックログ]シートに記録されます。返信されない場合はこのシートを確認してください。

記事URLをコピーしました