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を動かし、実ドメインでの出力品質を見ていただきます。

ディスカバリーコールを予約