AIチャットで話すだけ!X予約投稿を完全自動化するシステム構築術

はじめに

ども!9月から開発していたシステムがようやく稼働・運用できるようになって、ひと段落した龍ちゃんです。コツコツ開発していたものがやっと形になったので一安心ですね。

今回完成したのは、以前の記事「Claude API×GitHub Actions完全自動化でコスト60%削減!ブログ投稿システム構築術」で紹介したブログ宣伝システムの続編となるシステムです。前回はブログURLから投稿文を自動生成してデータベースに保存する仕組みを作りましたが、今回はそのデータを使って、X(Twitter)への予約投稿を完全自動化しました。

僕はですね、社内でX投稿の担当をしていまして…毎日の投稿予約作業が地味に大変だったんですよね。コピペして、予約画面開いて、日時設定して…の繰り返し。これ、なんとか楽にならないかなぁと思っていたわけです。

そこで作ったのが、AIチャットで話しかけるだけで予約投稿が完結するシステムです! 皆さんも、X投稿の運用で似たような悩み、ありませんか?


こんな悩み、ありませんか?

皆さん、X投稿の運用って、地味に大変じゃないですか?

私の場合、1日3件投稿できればいい方でした。投稿内容は自動的に生成されるようになっているのですが、以下の手順での「手動投稿作業」での「3件」がけっこう曲者でして…

手動予約の現実
  • Xを開く
  • 投稿文をコピペ
  • 予約画面を開く
  • 日時を設定
  • 投稿ボタンをクリック

これで1件です。目安にして、1件の予約に5〜6回のボタン操作が必要なんですよね。

1日3件なら、単純計算で15回以上のボタン操作。毎日やるとなると…めんどくさい!

そして何より困るのが、気づいたら忘れてること。仕事に集中してコード書いてたら、1週間まるっと投稿してない、なんてこともありました。コード書いてる方が楽しいし、ついつい投稿作業を後回しにしちゃうんですよね(笑)

さらに、ブログ記事がどんどん増えていくので、宣伝したい内容も増える一方。気づいたら「あれ、このブログまだ宣伝してない!」なんてことも。

まとめて1週間分を予約できればいいんですけど、単純作業の繰り返しは地味にストレスなんですよね…


解決策 – AIチャットで完結する予約投稿システム

そこで作ったのが、AIチャットで話しかけるだけで予約投稿が完結するシステムです!

- チャットで完結、X予約投稿を自動運転。20分の作業が10秒に。
- Before→Afterで歴然。手作業20分 → チャット入力10秒、98%時短。
- 予約はAIにお任せ。DB参照+X APIで定期投稿まで自動化。
- 「明日の昼にAIカテゴリから10件」— 入力10秒、確認10秒で完了。
- 手動コピペを卒業。チャット指示だけでXへの予約投稿が走る。

ビフォー・アフター

Before

龍ちゃん手動
龍ちゃん手動
  1. GitHubで投稿文ファイルを探す(2分)
  2. 投稿文をコピー
  3. Xを開く
  4. コピペして予約画面へ
  5. 日時を設定して投稿

    1件あたり約2分 × 10件 = 約20分

After

AIチャット
AIチャット

「明日の昼にAIカテゴリから10件予約して」
とチャットに入力

約10秒で完了!

削減できた時間: 20分 → 10秒(98%の時短

システムの核心機能

このシステムの最大の特徴は、自然言語で指示するだけという手軽さです。

  • 「明日の昼に」 → 自動的に日時を計算
  • 「AIカテゴリから」 → データベースを検索
  • 「3件予約して」 → 一括で予約作成

GitHubを開く必要も、Xの予約画面を操作する必要もありません。チャットで指示を出せば、あとはAIが全部やってくれます。

実際の使い方を見てみよう

百聞は一見にしかず! 実際のチャットのやり取りを見てみましょう。実際のアプリのデモを録画しました。内容的に丁寧にレコーディングしたので、デモとしては若干長めですが、実際の使い勝手がよくわかると思います。

使用例: 1週間分をまとめて予約

下記はイメージになります。

龍ちゃん
龍ちゃん

AIカテゴリからランダムに10件取得して、 明日から順番に連続で登録してください

AIチャット
AIチャット

✓ カテゴリ「AI」で検索しました

✓ 投稿候補を10件見つけました 【投稿候補】

  • ChatGPTの新機能を試してみた(パターンA)
  • プロンプトエンジニアリング入門(パターンB)
  • AIで業務効率化した事例(パターンA)
  • Claude Codeの実践活用術(パターンC)
  • GitHub Copilotのベストプラクティス(パターンA) …(以下5件)

これらを明日から順番に予約しますか?

龍ちゃん
龍ちゃん

はい、朝9:00から順番に登録してください

AIチャット
AIチャット

✓ 予約を作成しました! 【予約完了】

  • 1/28(火) 9:00 ChatGPTの新機能を試してみた
  • 1/29(水) 9:00 プロンプトエンジニアリング入門
  • 1/30(木) 9:00 AIで業務効率化した事例
  • 1/31(金) 9:00 Claude Codeの実践活用術
  • 2/1(土) 9:00 GitHub Copilotのベストプラクティス …(以下5件)

週間カレンダーで確認できます!

ポイント: 対話しながら調整できる

このシステムの良いところは、AIと対話しながら調整できること。普通のチャット感覚で指示できるので、操作に迷うことがありません。

パターン1: 未投稿記事だけを選ぶ

あなた: 「直近投稿したやつ以外で、AIカテゴリから5件」
AI: 「未投稿の記事を5件抽出しました」

パターン2: 投稿パターンを変える

あなた: 「この記事、パターンBで投稿したい」
AI: 「パターンBに変更しました」

パターン3: カテゴリ・ハッシュタグを統合する

あなた: 「"AI開発"カテゴリと"AI"カテゴリを統合して」
AI: 「カテゴリを統合しました。今後は"AI"に統一されます」

主な機能

このシステムには、X投稿を楽にするための機能がいろいろと詰まっています。

🔍 カテゴリ・ハッシュタグで検索

ブログ記事は自動的にカテゴリとハッシュタグで整理されています。「AIカテゴリから」「#初心者向け のハッシュタグで」など、自然な言葉で検索できるんです。

重複したカテゴリやハッシュタグも、チャット上で統合・整理できるので、運用しながら綺麗に管理できるのも嬉しいポイントですね。

📅 自然言語で日時指定

「明日の昼」「来週月曜の朝」「今日から3日連続で」など、自然な表現で日時を指定できます。AIが自動的に正確な日時に変換してくれます。

投稿時間は、1日4回の固定時間(9:00/12:00/15:00/21:00)から選べます。読まれやすい時間帯を考慮した設定です。

📊 週間カレンダーで予約確認・自動投稿

予約した投稿は、週間カレンダーで一覧表示されます。いつ、どの記事が投稿されるのか、一目で確認できます。

予約した日時になると、自動的にXに投稿されます。投稿の成功・失敗も記録されるので、安心して任せられます。

🎨 投稿パターンの選択

各ブログ記事には、3パターン(A/B/C)の投稿文が事前にデータベースに保存されています。同じ記事でも、違う表現で複数回投稿できます。

(投稿文の生成方法については前回の記事で解説しています)

導入効果

10月初旬から本格運用を開始して、約半月が経過しました。すでに約50件の投稿をこのシステムで自動化しています。

数値で見る効果

以前は月に50件ペースで投稿していました。手動運用だと、この量は正直かなりキツかったんです…

時間削減効果

  • 1件あたりの作業時間: 2分 → 0秒
  • 10件の予約作業: 約20分 → 約10秒(98%削減
  • 月間削減時間: 約100分(1時間40分)
  • 年間削減時間: 約20時間(まる1日分の作業時間削減!

継続性の向上

手動運用時代は、忙しいときに1週間まるっと忘れることもありました。でも今は、月曜日に1週間分をまとめて予約しておけば、あとは自動で投稿されるので投稿忘れがゼロになりました。

体感としての効果

数値以上に大きいのが、精神的な負担の軽減です。

「今日の投稿、まだやってない…」というプレッシャーから解放されました。コード書いている時も、「投稿作業しなきゃ」と気にする必要がなくなったんです。

データベースに保存されている記事は、チャットで指示するだけで楽に登録できるので、投稿運用のストレスがほぼゼロになりました。

今の課題は「投稿内容をどう増やすか」に移行しています。つまり、投稿作業そのものは完全に解決したということですね!

こんな人におすすめ

このシステムは、以下のような方に特におすすめです:

  • ブロガー・コンテンツクリエイター: ブログ記事の執筆に集中したい。投稿作業は自動化したい
  • SNS担当者: 定期的な投稿でブランド認知を高めたいが、手動運用は大変
  • エンジニア・技術ブロガー: 技術で課題を解決したい。自動化に興味がある

特に「投稿作業に時間を取られるより、コンテンツ作成に集中したい」という方にピッタリです!

システムの裏側(ざっくり技術紹介)

ここからは、このシステムがどんな技術で動いているのか、ざっくりと紹介します。

システム全体の構成

このシステムは、すべてAzure上で構築されています。

シンプルな構成ですが、それぞれにこれまでの学びや工夫が詰まっています。

- Azure上で完結するX予約投稿基盤の全体像。SWAからWeb Apps経由で認証管理、Functionsで定時実行、DBで状態を一元管理。
- フロントはAzure Static Web Apps、認証と予約作成はWeb Apps、定時投稿はFunctions。DBで認証情報と投稿データを連携し、Xに配信。
- チャット指示で予約作成、Timer Triggerで自動投稿。AzureリソースとDBが連携する実運用アーキテクチャ。
- OAuthはWeb Appsで実施し、FunctionsがAPI権限で投稿を実行。フロントはSWA、データはDBに集約。
- AIチャット起点のX予約投稿システム。SWA→Web Apps→DBと連携し、Functionsがスケジュール処理を担当。
リソース名役割リンク
Azure Static Web AppsNext.js 15フロントエンドのホスティング。週間カレンダーUIと投稿予約画面を提供。https://learn.microsoft.com/azure/static-web-apps/
Azure Web AppNestJS 11 APIバックエンド。AIチャット処理、X API連携、予約管理を担当。https://learn.microsoft.com/azure/app-service/
Azure FunctionsTimer Triggerで6時間ごとに起動し、予約投稿を自動実行。https://learn.microsoft.com/azure/azure-functions/
Azure OpenAI ServiceFunction Callingで自然言語からの指示を理解し、適切な処理を実行。https://learn.microsoft.com/azure/ai-services/openai/
Azure Key VaultXのクライアントキー・Firebase認証情報などのシークレットを安全に管理。https://learn.microsoft.com/azure/key-vault/
Firestoreブログ記事データ、投稿文パターン、予約情報を保存。暗号化されたX認証トークンも管理。https://firebase.google.com/docs/firestore

1. AIチャット機能 – Function Calling

チャットで自然言語の指示を理解できるのは、Azure OpenAI ServiceのFunction Callingを活用しているからです。

26個の関数を用意して、「カテゴリで検索」「予約作成」「日時計算」などの処理を自動的に選択・実行してくれます。NestJSのDI(依存性注入)でうまく管理しているのがポイントです。

→ 詳細は「NestJSで実現するAI Function Calling」で解説予定!

2. OAuth認証とセキュリティ

Xに投稿するには、OAuth認証が必要です。取得した認証トークンをそのままデータベースに保存するのは危険なので、暗号化・復号化の仕組みを実装しています。

データベースには暗号化された文字列だけが保存され、使用時に環境変数を使って復号化します。

→ 詳細は「X OAuth認証とトークン暗号化」で解説予定!

3. 予約投稿の自動実行

X APIには予約投稿機能がありません(ここは!ちょっと文句がある!!)。そこで、Azure FunctionsのTimer Triggerを活用しました。

1日4回(9:00/12:00/15:00/21:00)に定期的に起動し、データベースに予約があればX APIを実行する仕組みです。タイムゾーン処理やパフォーマンス最適化にも工夫があります。

→ 詳細は「Azure FunctionsでX予約投稿を実現」で解説予定!

4. インフラ管理

AzureリソースはすべてBicepテンプレートで管理しています。APIキーやシークレットはAzure Key Vaultで安全に管理。

必要なAPIキーを登録すれば、すぐに同じ環境を構築できるようになっています。

X APIの制約を技術で解決

一番の技術的な見どころは、「X APIに予約投稿機能がない」という制約をTimer Triggerで解決した点です。

制約があるからこそ、工夫のしがいがありますよね。この辺りの実装テクニックは、技術解説シリーズで詳しく紹介していきます!

AIと共に開発する

ちなみに、このシステムの開発にはClaude Codeを活用しました。AIとペアプログラミングをしながら開発を進めることで、短期間で効率的にシステムを構築できました。

仕様を決めるのは人間、実装はAIに任せる——この役割分担がうまく機能したプロジェクトです。


まとめ

AIチャットで完結するX予約投稿システムを作ったことで、以下を実現しました:

  • 時間削減: 月間約100分の作業時間削減(年間20時間)
  • 簡単操作: 自然言語で指示するだけ、わずか10秒で予約完了
  • 完全自動化: 予約した日時に自動投稿、投稿忘れゼロ
  • 精神的負担軽減: 「投稿しなきゃ」のプレッシャーから解放

これまで20分かかっていた予約作業が、わずか10秒に短縮されました。

次回以降の技術解説シリーズ

今回は「何ができるか」に焦点を当てましたが、今後は技術的な実装詳細を解説していきます!

  1. X OAuth認証とトークン暗号化
    • OAuth 2.0フロー
    • Firebaseでの暗号化保存
  2. Azure FunctionsでX予約投稿を実現
    • Timer Triggerの活用
    • タイムゾーン処理
    • パフォーマンス最適化
  3. NestJSで実現するAI Function Calling
    • 26関数の管理手法
    • NestJSのDI活用
    • SSEストリーミング実装
  4. Azure FunctionsでMCP Serverを構築
    • MCP Tools実装
    • Experimental Bundle
    • Supabase連携

各記事で、実際のコード例とともに詳しく解説していきます。

さいごに

X投稿の自動化は、自分の作業を楽にするために始めたプロジェクトでしたが、結果的に大幅な時間削減と精神的負担の軽減につながりました。

単純作業はAIに任せて、人間は創造的な仕事に集中する—— これが理想的な働き方だと思います。AIと共に開発することで、より短期間で、より質の高いシステムを作れる時代になりました。

人間は贅沢なもので、だんだん面倒になるもののハードルが上がっていきます。こちらの運用から発展して、Xの運用そのものを完全に自動化することを検討しだしました。

ブログやコンテンツを定期的に発信している方は、ぜひ参考にしてみてください!

このシステムについて質問や「こんな機能ほしい!」などのご意見があれば、ぜひコメント欄で教えてください。基本的にはマーケのお姉さんがクライアントとして、実装を頑張っています!技術詳細記事でコード例も公開予定です。*

次回からの技術解説シリーズもお楽しみに!

参考リンク・公式リファレンス

Azure関連

X(Twitter)API関連

フレームワーク・ライブラリ関連

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です