botを@メンションする。botが返す。あなたが承認する。記事が公開される。表面はそれだけです。中身を見ていきます。
登場人物
Cloudflare Durable Object上で6つのエージェントが動きます。それぞれ責任は一つ。
- **Supervisor。**すべてのチャットメッセージを受け、インテントを分類し、ワーカーにルーティングし、返信を組み立てます。
- **Analyst。**Google Search Console、GA4、インデックス済みのサイト本文を読み、トピック案、ページ監査、コンテンツブリーフをデータ付きで返します。
- **Writer。**あなたのブランドボイスでHugoのMarkdownを書きます。Analystのブリーフ、声の文書、サンプル投稿を毎回読み込みます。日本語と英語の両方をネイティブに執筆。
- **Publisher。**GitHubのPRを開き、Cloudflare Pagesのプレビューurlを取得し、承認済みのPRをマージします。決定的な配管。
- **Approver。**チャットの
approve/revise: .../reject(または日本語の承認/修正:/却下)を解釈します。事前にチャットユーザーIDが承認者リストにあることを確認してから動きます。 - **AEOワーカー群。**短命で並列。1ワーカーが1アシスタント × 1プロンプトをサンプリングし、エンティティを抽出します。
あなたが話す相手はSupervisorだけ。あとは裏で動きます。
一連の流れ
1. トピック起案
@ContentLoop 何書いたらいい?
Supervisorはこれをtopic_ideationとして分類し、Analystに委譲します。Analystは最大8回のツールコールを実行:表示回数 / 順位 / CTRごとのGSCクエリ、トラフィックと転換のGA4クエリ、既存コーパスに対するセマンティック検索でギャップを探索、ランクイン目前のクエリに対する競合SERPチェック。
約20秒後、Supervisorがチャットに3〜5本のランク付きトピックを返します。それぞれ具体的な数字付きで。例えば:
1. 「DMARC設定のB2B SaaS向け実装」。月間4,210表示、順位14位。CTRは0.4%。順位6位まで上げられれば、カテゴリのCTRカーブに基づく予測クリック増は月280回程度。
2. 「ゼロトラスト導入プレイブック」。競合Hooliが3位を取っている(8か月前、2,400語の記事)。あなたの最も近い記事は2024年の「なぜゼロトラストか」という周辺記事。直接対比のギャップ。
3. 「メール認証とAIフィッシング」。クエリ伸長中、表示回数前期比+180%。あなたは未掲載。競合カバレッジも薄い(トップ結果は先週のMIT Technology Reviewの記事で、ベンダーコンテンツではない)。
2. 下書き
@ContentLoop DMARCのB2B SaaS向け実装について書いて
Supervisorはまず再度Analystを呼び(今度は引き締めたコンテンツブリーフ:含めるべき事実、参照すべき内部リンク、目標文字数)、そのブリーフをWriterに渡します。
Writerはあなたのリポジトリから声の文書とサンプル投稿を読み込み、frontmatter、本文、内部リンク、声の文書のCTAパターンに沿った締めくくりまで揃った完全なHugo Markdownを書きます。最終出力の前に、設定済みのfrontmatterスキーマ(standardまたはstrict)に対して検証を通します。
その後Publisherが GitHub PRを開きます。ブランチ名はcontent/<request-id>、ファイルパスはcontent/{lang}/blog/YYYY-MM-DD-<slug>.md、PRボディには承認・修正・却下の正確な返信文が含まれます。Cloudflare Pagesがそのブランチを拾い、1〜2分でプレビューをデプロイします。
チャットには次のような返信が届きます:
下書きできました。 PR #142.
プレビュー: https://content-142.example.pages.dev
承認でマージ、修正: <内容>で改稿、却下で破棄。
あなたのdraftコマンドから下書き完成まで、1,200語前後の記事で約30分。
3. 承認または修正
プレビューを見て、良ければ:
承認
Approverがコマンドを解釈、あなたのチャットユーザーIDがテナントの承認者リストにあることを確認、Supervisorのストレージに承認レコードを書きます。Supervisorは続いてPublisherにPR #142のマージを指示。Publisherのmerge_prツールは、Supervisor上に承認が存在することを再確認してから初めてマージします。単一のソースオブトゥルース、構造的にゲートされた設計。
直しが必要なら:
修正: 導入を引き締めて、CTRの具体数字を追加
Approverはこれを修正コマンドとして記録、Supervisorがフィードバックと直前の下書きをWriterに渡し、Writerは同じブランチに新しいコミットをプッシュします。数分後、「修正を反映しました」という返信と更新済みプレビューurlが届きます。承認を出すまで繰り返します。
承認者リストに無い人が承認を試みた場合、Approverはuser_idを照合して「承認権限なし」を返します。LLMコールが走る前に拒否されます。
4. AEOベースライン
@ContentLoop AEOベースライン
Supervisorは20〜30個のAEOワーカーDOを並列にfan-outします。Cloudflare Workerのサブリクエスト上限に収めるため、10件ずつのバッチで処理。各ワーカーが1アシスタント × 1プロンプトをサンプリング。v1ではPerplexityまたはClaude with search、ChatGPT-with-searchとGemini-with-searchは次リリースで対応中。各ワーカーは続けて短いHaikuコールで応答から構造化エンティティを抽出します。あなたのテナントが言及されたか、どの競合が言及されたか、どのソースが引用されたか。
結果は集計してR2バケットにスナップショット。過去にベースラインを取っていれば、前回との差分が自動でレポートされます:
AEOベースライン完了。 2アシスタントで30サンプル、コスト約$1.40。
テナント言及率: 47%
前回ベースラインとの比較: 言及率 ↑ +12.0pt
スナップショット保存先:
aeo/baselines/2026-05-24.json
全体の実時間は60秒以内。
見えにくい仕様
**会話履歴はチャンネル単位で保存されます。**チームの誰かが「DMARCの投稿みたいなのもう一本」と言えば、Supervisorは何のことか分かります。履歴はSupervisorのテナント別Durable Object SQLiteに置かれます。外部DBなし、テナント越しの漏洩なし。
**予算はリクエスト単位とUTC日単位で強制されます。**すべてのLLMコールはテナント設定の上限に対して計測されます。下書きの暴走ループで破産することは構造的にできません。リクエスト単位の上限が先に発動します。
**サイトコーパスは毎晩再インデックス。**スケジュール済みハンドラがGitHub API経由でHugoのコンテンツディレクトリを読み、変更された投稿をチャンキング、Cloudflare Workers AIで埋め込み、Vectorizeにupsertします。Analystの「参照すべき内部リンクを探して」ツールはこの上に乗っています。
**すべての処理はLangfuseトレースを残します。**テナントID、リクエストID、エージェント名、プロンプトバージョン、モデル名。すべてタグ付け。何かおかしいときは、トレースが診断の入口。自分のテナントのトレースへのアクセス申請も可能です。
担当範囲
ファウンディングコホートでは:
- **セットアップ(1週目)。**Cloudflareデプロイ、シークレット、GSC + GA4のサービスアカウント、チャットbot配線、GitHub webhook。私の作業時間として6〜10時間、1週間に分散。
- **ブランドボイスのチューニング(2〜4週目)。**声の文書を一緒に磨き、実際の下書きに対して反復、「あなたのチームらしい」と判断できる水準に到達してから実装完了とします。
- **継続運用(5週目以降)。**四半期ごとの戦略レビュー。評価セットがドリフトを示したらプロンプトをチューニング。バグ修正。新機能の展開。
あなたの担当:
- 下書きへの返信(承認 / 修正 / 却下)。
- 公開戦略の決定(追うトピック、避けるトピック)。
- botが弱い下書きを出してきたときの指摘。チューニングの起点になります。
実物で評価する
適合の有無を最も早く判断する方法は、25分のディスカバリーコールです。通話中に、あなたの実際のSearch Consoleデータ(読み取り専用、一時スコープ)に対してContent Loop Studioを動かし、実ドメインでの出力品質を見ていただきます。