マーケティングオートメーションサービス 拡張機能仕様書
— AI-LP大量生成 × マルチチャネル獲得基盤 —
| 項目 | 内容 |
|---|---|
| 文書名 | マーケティングオートメーションサービス 拡張機能仕様書 |
| バージョン | v2.0 |
| 作成日 | 2026年8月15日 |
| 対象システム | シンオン株式会社 マーケティングオートメーションサービス |
| 位置づけ | MA_機能仕様書.md(v1.2 / F-01〜F-10) の追加機能編。基本仕様は v1.2 を正とし、本書は差分・追加のみを定義する |
| 追加機能ID | F-11 〜 F-24 |
| 関連文書 | MA_機能仕様書.md(v1.2)、CloudFlare運用手順書.md(本書と同時作成)、cloudflare-feature-catalog-synon.md |
目次
- はじめに
- 発想の転換 — 本仕様の中核となる3つの考え方
- システム全体像
- マーケティングアプローチの全体設計
- 機能要件 第I部 — AI-LP生成・実験基盤(F-11〜F-16)
- 機能要件 第II部 — 新規チャネル(F-17〜F-22)
- 機能要件 第III部 — 横断機能(F-23〜F-24)
- 統計エンジン仕様
- 計測仕様
- 画面仕様(追加)
- データベース設計(追加)
- API設計(追加)
- 非機能要件
- 法令・コンプライアンス
- 段階導入計画
- 今後の検討事項
- 出典
1. はじめに
1.1 背景
v1.2 で定義した本システムの獲得チャネルは メール営業(F-08) と フォーム営業(F-06) の2つに限られる。いずれも「こちらから送る」プッシュ型であり、以下の構造的な限界を持つ。
| 限界 | 内容 |
|---|---|
| 到達量の頭打ち | 特定電子メール法・フォーム営業の自主規制上、送信量を無制限に増やせない |
| 相手の検討タイミングに合わない | 送った瞬間に検討中である確率は低い。BtoBの検討期間は数週間〜数か月 |
| 受け皿の不在 | クリック反応(F-09)を検知しても、着地先が汎用のコーポレートサイトのため、興味が離散する |
| チャネルの単一性 | 相手が「メールを読まない層」「フォームを見ない層」だと接点がゼロになる |
とくに 「受け皿の不在」 が最大の損失である。F-09 のADコード計測により「どの企業のどの担当者がクリックしたか」は既に取得できているにもかかわらず、その先が全社共通の1枚のページであるため、せっかくの反応が商談に転換しない。
1.2 目的
本書は、以下を目的とした拡張機能を定義する。
- 受け皿の最適化 — AIによりLP(ランディングページ)を大量に自動生成し、相手・流入経路ごとに最適な1枚を出し分ける
- 効果の科学的な判定 — 生成したLPのどれが効いているかを、低トラフィック環境でも意味のある形で統計的に評価する
- チャネルの多重化 — メール・フォーム以外の獲得経路(広告/SEO/ウェビナー/資料/SNS・コミュニティ)を機能として組み込む
- 横断的な効果測定 — 上記すべてを1つのアトリビューションモデルで比較可能にする
1.3 v1.2 との関係
- v1.2 の F-01〜F-10 は変更しない。本書の機能はすべて v1.2 の上に積む
- v1.2 の F-09(ADコード/計測リダイレクト)は本書の基盤として全面的に再利用する。
tracking_codeが新機能全体の連結キーとなる - v1.2 の企業マスタ・アプローチ履歴は、そのままLPパーソナライズの入力になる
- ただし 技術スタックについては本書で別案を提示する(3.2項)。v1.2 は SQLite + 自前サーバを想定していたが、本書の機能群は Cloudflare のエッジプラットフォーム上での実装を第一候補とする
1.4 スコープ
含むもの
- LPの生成・配信・計測・実験・パーソナライズ
- 広告オーディエンス連携、SEOコンテンツハブ、ウェビナー、資料ゲート、SNS/コミュニティ運用支援
- チャネル横断のアトリビューション分析
- 上記に伴うコンプライアンス管理機能
含まないもの
- LPのデザイン制作そのもの(ブロックライブラリの初期整備は人手で行う)
- 広告の入稿・課金・クリエイティブ制作(広告媒体の管理画面側の作業)
- ウェビナーの配信基盤そのもの(Zoom等の外部サービスを利用)
- CRM/SFA としての商談管理・受注管理
1.5 用語定義(追加分)
| 用語 | 定義 |
|---|---|
| LP | ランディングページ。広告・メール等から着地する単一目的のページ |
| バリアント(variant) | 生成された個々のLPパターン。本書では最大50件/実験を想定 |
| ブロック | LPを構成する再利用可能な部品(ヒーロー、課題提起、実績、料金、CTA 等) |
| 因子 / 水準 | バリアントを構成する変数(因子)と、その取りうる値(水準)。例: 因子「訴求軸」の水準「コスト削減」「納期短縮」… |
| 実験(experiment) | 1つの目的に対する、複数バリアントの比較単位 |
| 割付(assignment) | 訪問者に対してどのバリアントを表示するかの決定 |
| バンディット | 多腕バンディット。成績の良いバリアントへ配信比率を自動的に寄せるアルゴリズム |
| プロキシ指標 | 本命指標(CV)より発生数が多く、早期判定に使える代理指標(スクロール到達率・CTAクリック率等) |
| 逐次淘汰 | Sequential Halving。ラウンドごとに下位バリアントを機械的に切り捨てて候補を絞る手法 |
| ABM | Account Based Marketing。特定の企業を名指しで狙う手法 |
| 外部送信規律 | 改正電気通信事業法第27条の12。Cookie等による利用者情報の外部送信について通知・公表等を求める規律 |
| CWV | Core Web Vitals。LCP / INP / CLS の3指標 |
2. 発想の転換 — 本仕様の中核となる3つの考え方
「LPを50パターン自動生成してアクセス分析する」という要望をそのまま実装すると、統計的に破綻する。本章はその理由と、代わりに何を設計するのかを先に述べる。以降の機能要件はすべてこの3つの考え方から導かれている。
2.1 なぜ「50パターン一斉A/Bテスト」は成立しないのか
2群の比率を比較して有意差を検出するのに必要なサンプル数は、有意水準5%(両側)・検出力80%のとき次式で近似できる。
n ≈ 2 × (Z(α/2) + Z(β))² × p̄(1-p̄) / (p₁ - p₂)²
= 15.68 × p̄(1-p̄) / d² (Z(α/2)=1.96, Z(β)=0.84)
これを本システムの現実的な数値に当てはめる。
| 検出したい差 | p̄ | 1バリアントあたり必要セッション数 |
|---|---|---|
| CVR 2% → 2.5%(+0.5pt) | 0.0225 | 約 13,800 |
| CVR 2% → 3%(+1.0pt) | 0.025 | 約 3,820 |
| CVR 2% → 4%(+2.0pt) | 0.03 | 約 1,140 |
一方、当社のLPに現実的に見込める流入は、メール営業のクリック反応・広告・SEOを合算しても 月間数千セッション の規模である。これを50バリアントに均等配分すると 1バリアントあたり月100セッション未満。必要数の 1/11 〜 1/138 にしかならない。
さらに50個を同時に検定すると多重比較問題が発生する。有意水準5%で49回の比較を行うと、すべて差がなくても「どれかが有意」と誤判定される確率は
1 − 0.95⁴⁹ ≈ 92% に達する。Bonferroni補正で α を 0.05/49 に絞ると、必要サンプル数はさらに約2.2倍に膨らむ。
結論: 「50バリアントを均等配分して、CVRの有意差で勝者を決める」設計は当社の流入規模では永久に結論が出ない。この事実を仕様の出発点に置く。
2.2 中核アイデア① — 評価を3層に分ける(50個を"検定"しない)
50個をいきなり統計検定にかけるのではなく、安いふるいから順にかける。
| 層 | 名称 | 判定に使うもの | 必要データ量 | 通過数の目安 |
|---|---|---|---|---|
| 第0層 | 公開前スクリーニング | AI自己評価・機械的ルール・重複度・CWV予測 | ゼロ(トラフィック不要) | 50 → 20 |
| 第1層 | プロキシ指標による逐次淘汰 | スクロール到達率・CTAクリック率・滞在時間 | 数百セッション/バリアント | 20 → 5 |
| 第2層 | 本命指標のベイジアン判定 | CV(資料DL・問い合わせ・商談化) | 数百〜千セッション/バリアント | 5 → 1〜2 |
第1層の意味は大きい。CVRが2%のとき CV は 100セッションで2件しか出ないが、CTAクリック率は20%前後、スクロール50%到達率は40%前後あるため、同じセッション数で 10〜20倍の情報量 が得られる。
| 判定指標 | ベース率 | 検出したい差 | 1バリアントあたり必要セッション |
|---|---|---|---|
| スクロール50%到達率 | 40% | +8pt (→48%) | 約 605 |
| CTAクリック率 | 20% | +5pt (→25%) | 約 1,095 |
| CVR | 2% | +1pt (→3%) | 約 3,820 |
さらに第1層では Sequential Halving(逐次半減法) を用いる。全バリアントに均等配分してから下位半分を切り、残りに同じトラフィックを再配分する。第0層を通過した約20件を 20 → 10 → 5 と3ラウンドで絞れば、全バリアント同時検定に比べて必要総トラフィックを大幅に圧縮できる(具体的なラウンド設計は5.5.3項)。
2.3 中核アイデア② — バリアントを"因子の組合せ"として作る
50個をバラバラの独立したページとして生成すると、50個ぶんのデータが必要になる。そうではなく、LPを因子(変数)の組合せとして構成する。
50バリアント = 訴求軸(5水準) × 構成テンプレート(5水準) × CTA文言(2水準)
こうすると、評価の単位を「バリアント」ではなく「水準」にできる。
| 評価単位 | 数 | 月5,000セッション時の1単位あたりセッション |
|---|---|---|
| バリアント(組合せ全体) | 50 | 100 ← 判定不能 |
| 因子「訴求軸」の1水準 | 5 | 1,000 ← プロキシ指標なら判定可能 |
| 因子「構成テンプレート」の1水準 | 5 | 1,000 ← 同上 |
| 因子「CTA文言」の1水準 | 2 | 2,500 ← CVRでも判定に近づく |
「どのページが勝ったか」ではなく「どの訴求軸が効くのか」「どのCTA文言が効くのか」を学習し、その組合せとして勝ちパターンを合成する。これが低トラフィックで50パターンを扱う唯一の現実的な方法である。
実装上は、水準ごとの効果を独立に推定するのではなく、階層ベイズ(部分プーリング) を用いる。データの少ない水準の推定値を全体平均へ引き寄せることで、少数サンプルでの過大評価を防ぐ。
2.4 中核アイデア③ — 「勝者を1つ選ぶ」のをやめる(相手ごとに出し分ける)
ここが本仕様のもっとも新しい部分である。
一般的なLPOツールは「全訪問者にとって最良の1枚」を探す。しかし本システムは訪問者が誰かを知っている。v1.2 の F-09 で、メール本文のURLは https://{本システム}/r/{tracking_code} に置換されており、tracking_code から 企業ID・業種・都道府県・企業規模・アプローチ履歴・テンプレートID が一意に引ける。
つまり本システムは、一般的なLPOツールが持ち得ない 「訪問者の企業属性を事前に知った状態でLPを描画できる」 という決定的な優位を持つ。
したがって最適化の目的関数を次のように変える。
一般的なLPO : argmax_v CVR(v) … 全体で最良の1枚
本システム : argmax_v CVR(v | context) … 文脈ごとに最良の1枚
context = {業種, 都道府県, 企業規模, 流入チャネル, アプローチ回数, 過去の反応}
これは コンテキスチュアル・バンディット(文脈付き多腕バンディット) と呼ばれる定式化である。50バリアントは「1つの勝者を決めるための候補」ではなく、「文脈に応じて配るための引き出し」 になる。50個作る意味がここで初めて生まれる。
さらに、狙いを定めた重点企業に対しては、バリアントの選択ではなく 企業名を差し込んだ専用LP(ABM-LP) を自動生成する(F-16)。
一般企業 → 50バリアントから文脈マッチで1枚を選択
重点企業 → その企業のためだけの1枚を生成(社名・業種課題・類似実績を差し込み)
2.5 3つの考え方のまとめ
| # | 考え方 | 対応する機能 |
|---|---|---|
| ① | 評価を3層に分け、安いふるいから順にかける | F-15 |
| ② | バリアントを因子の組合せとして作り、水準単位で学習する | F-11, F-12, F-15 |
| ③ | 単一勝者を選ばず、文脈(企業属性)ごとに出し分ける | F-13, F-16 |
3. システム全体像
3.1 機能マップ
┌─────────────────────────────────────────────────────────────────────┐
│ 既存 (v1.2 / F-01〜F-10) │
│ 企業リストアップ 連絡先抽出 CSV取込 アプローチ管理 │
│ メールTPL フォームTPL 分析 SendGrid送信 GA連携 環境設定 │
└───────────────────────────────┬─────────────────────────────────────┘
│ 企業マスタ / tracking_code / アプローチ履歴
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 第I部 AI-LP生成・実験基盤 (F-11〜F-16) │
│ │
│ F-11 ブロックライブラリ ──▶ F-12 AI LP生成(50) ──▶ F-13 配信エンジン │
│ │ │ │
│ │ ▼ │
│ F-16 ABMパーソナライズ F-14 行動計測 │
│ │ │ │
│ └────────────────────┤ │
│ ▼ │
│ F-15 実験統計エンジン │
└───────────────────────────────┬─────────────────────────────────────┘
│ LP・計測基盤を共用
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 第II部 新規チャネル (F-17〜F-22) │
│ F-17 SEOコンテンツハブ F-18 広告オーディエンス連携 │
│ F-19 ウェビナー運用 F-20 資料ゲート/ナーチャリング │
│ F-21 SNS・コミュニティ F-22 匿名訪問企業推定(オプション) │
└───────────────────────────────┬─────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 第III部 横断機能 (F-23〜F-24) │
│ F-23 チャネル横断アトリビューション F-24 コンプライアンス・ガードレール │
└─────────────────────────────────────────────────────────────────────┘
3.2 技術構成 — 2案の比較
v1.2 では「SQLite + 自前APIサーバ + ジョブキュー」を想定していた。本書の機能群、とくに LPの配信 は次の要求を持つため、この構成では不利になる。
- 表示速度: LPのCVRは表示速度に直結する。LCP 2.5秒以下(良好判定)を全国どこからでも満たす必要がある
- リクエスト単位の出し分け: 訪問者ごとにバリアントを選び、その場で描画する
- スパイク耐性: 広告出稿やメール一斉送信の直後にアクセスが集中する
- 書き込みの並列性: 行動計測イベントは1セッション20件以上発生する。SQLiteの単一ライタでは詰まる
そこで Cloudflare のエッジプラットフォーム を採用する。適用範囲について2案を提示する。詳細な手順は別冊『CloudFlare構築・運用手順書』を参照。
案A: 部分適用(新機能のみ Cloudflare)
[既存MA本体] [新設: Cloudflare]
Node.js/Python API ──API──▶ Workers (LP配信 + 計測API)
SQLite D1 (LP・実験・イベント集計)
ジョブキュー R2 (画像・生成物)
管理画面 Workers AI / AI Gateway (生成)
Analytics Engine (生イベント)
Durable Objects (バンディット状態)
| 観点 | 評価 |
|---|---|
| 初期工数 | 小(既存に手を入れない。新規開発のみ) |
| 既存機能への影響 | なし |
| 月額コスト | 約 $5 + LLM API 実費 |
| リスク | 2系統の運用・認証・デプロイが並立する。企業マスタの同期が必要 |
| 向くケース | まず新機能の効果を確かめたい。既存が安定稼働している |
案B: 全面移行(MA本体ごと Cloudflare)
[Cloudflare 単一構成]
Workers (Static Assets) … 管理画面SPA + API + LP配信を1デプロイ単位で
D1 … 企業・アプローチ・LP・実験のすべて
R2 … 添付・エクスポート・LP画像
Queues / Workflows … リストアップ・抽出・送信・生成の非同期処理
Cloudflare Access … 管理画面の認証(自前ログイン実装が不要になる)
Browser Rendering … フォーム営業のヘッドレスブラウザ処理
Cron Triggers … GA同期・統計再計算
| 観点 | 評価 |
|---|---|
| 初期工数 | 大(既存APIのWorkers移植、SQLite→D1 移行、認証のAccess化) |
| 既存機能への影響 | 大(全機能の再テストが必要) |
| 月額コスト | 約 $5(サーバ費・DB費が消える) |
| リスク | 移行期間中の二重管理。Workers の制約(CPU時間・サブリクエスト数)への適合作業 |
| 向くケース | 既存がまだ小規模なうちに一本化したい。運用対象を1つに絞りたい |
| 補足 | 社内には cf-internal-app-starter(Hono + React + D1 + R2 + Access のテンプレート)が既にある。ゼロからではない |
判断の指針
| 状況 | 推奨 |
|---|---|
| v1.2 が既に本番稼働しており、データが蓄積している | 案A から入り、効果確認後に案Bを検討 |
| v1.2 がまだ実装途中/未着手 | 案B。最初から一本化したほうが総工数は小さい |
| 受託案件への横展開を視野に入れる | 案B。テンプレート化して顧客案件に転用できる |
本仕様書の機能要件は どちらの案でも実装できる よう、実装技術に依存しない形で記述する。Cloudflare 固有の実装手段は各機能の「実装メモ」に補記する。
3.3 データフロー(LP関連)
① 生成 ② 配信 ③ 計測 ④ 学習
┌──────────┐ ┌─────────────────┐ ┌──────────┐ ┌──────────────┐
│ 因子・水準 │ │ /r/{code} 着地 │ │ view │ │ 第0層 事前 │
│ ブロック │─┐ │ ↓ 企業を特定 │ │ scroll │ │ 第1層 逐次淘汰 │
│ プロンプト │ │ │ ↓ 文脈を構築 │─────▶│ cta_click │───▶│ 第2層 ベイズ │
└──────────┘ │ │ ↓ バリアント割付 │ │ form_* │ │ ↓ │
├──▶│ ↓ エッジで描画 │ │ cv │ │ 配信重みを更新 │
┌──────────┐ │ └─────────────────┘ └──────────┘ └───────┬──────┘
│ LLM │─┘ ▲ │
│ (生成) │ └──────────────────────────────────────────┘
└──────────┘ 重みは KV 経由で即時反映
4. マーケティングアプローチの全体設計
4.1 チャネル俯瞰
メール・フォーム以外の手法を、相手の検討状態の軸で整理する。本システムが押さえるべきなのは、既存2チャネルが空白にしている「①潜在」「②情報収集」の層である。
| 検討状態 | 相手の行動 | 有効なチャネル | 本書の対応機能 |
|---|---|---|---|
| ①潜在(課題に気づいていない) | 情報を探していない | SNS/コミュニティ、ウェビナー、リターゲティング、紹介 | F-19, F-21, F-18 |
| ②情報収集(課題を認識) | 検索する、資料を集める | SEOコンテンツ、ホワイトペーパー、比較サイト | F-17, F-20 |
| ③比較検討(発注先を絞る) | 比較する、見積を取る | 検索広告+専用LP、事例コンテンツ、ABM | F-13, F-16, F-18 |
| ④購買直前 | 問い合わせる | 高速なフォーム、インサイドセールス連携 | F-13, F-23 |
| ⑤既存顧客 | 追加発注を検討 | アップセル通知、コミュニティ | F-21, (F-23) |
| — | (プッシュ型・状態を問わない) | メール営業 / フォーム営業 | 既存 F-08 / F-06 |
4.2 チャネル別の実務ベンチマーク
社外の公開値である。数値は出典元により幅が大きく、当社の実測で置き換えることを前提とした初期値として扱う。
| チャネル | CPL(リード獲得単価)の目安 | 備考 | 出典 |
|---|---|---|---|
| リスティング広告 | 10,000〜50,000円 | IT/テクノロジー業種はCPAが最高水準(約15,000円/件) | start-link, data-be.at |
| リターゲティング広告 | 3,000〜15,000円 | 検討期間の長いBtoBと相性が良い | 同上 |
| LinkedIn広告 | 8,000〜30,000円 | CPC 200〜500円。役職・企業規模ターゲティングが強い | data-be.at |
| Meta広告 | 3,000〜15,000円 | BtoBでは補助的 | start-link |
| X(旧Twitter)広告 | 2,000〜10,000円 | 認知目的が中心 | 同上 |
| コンテンツSEO | 3,000〜10,000円 | 立ち上がりに数か月〜1年 | 同上 |
| ウェビナー | 3,000〜8,000円 | 他チャネルより低単価。参加率は申込者の約46% | start-link, リコー |
| 比較・レビューサイト | 掲載型: 月15〜40万円 / 従量型: 月5万円+12,000円/件 | ITreview は月額固定でリード数保証なし。BOXIL は従量 | キャククル(ITreview), キャククル(BOXIL) |
| リスティング(業種別CVR) | IT/SaaS 約2.92% / 人材 約5.13% / 法務専門 約6.98% | LP設計の目標CVR設定に使う | note |
X/LinkedInのオーガニック運用、YouTube・Podcast、パートナー経由売上比率については、業界横断の定量的な公開データが見当たらなかった。 これらは「認知・信頼構築」目的として位置づけ、KPIは当社の実測で定義する(F-21)。
4.3 自動化できる範囲・できない範囲
新チャネルを機能化する際、MAが自動化できるのは「配管」であって「中身」ではない。この線引きを最初に固定する。
| チャネル | 自動化する(機能として実装) | 自動化しない(人が担う) |
|---|---|---|
| LP | 生成・出し分け・計測・実験・勝ちパターン反映 | ブロックの初期デザイン、生成結果の最終承認 |
| 広告 | オーディエンスリストの同期、UTM発行、成果の突合 | クリエイティブ制作、入札・予算判断 |
| SEO | クラスタ設計の管理、生成ドラフト、noindex/canonical制御、順位・流入の記録 | 検索意図の分類、記事の一次情報化、E-E-A-T担保 |
| ウェビナー | 申込フォーム〜リマインド〜視聴データ取込〜アンケート〜フォロー配信、スコアリング | 企画・登壇・質疑応答 |
| 資料(WP) | ゲートフォーム、DL履歴のスコア化、閲覧順からの検討フェーズ推定、ステップ配信 | 資料の企画・執筆・デザイン |
| SNS/コミュニティ | 投稿予約、UTM付与、流入計測、参加者のリード紐付け | 発信内容、対話、モデレーション |
| インサイドセールス | スコア閾値超過リードの架電キュー自動生成 | 架電・会話 |
5. 機能要件 第I部 — AI-LP生成・実験基盤(F-11〜F-16)
5.1 F-11 LPブロックライブラリ・因子定義
5.1.1 概要
LPを1枚の塊としてではなく、再利用可能なブロックの積層として管理する。AI生成の品質と安全性は、このライブラリの整備度で決まる。「AIに自由に作らせる」のではなく「AIには決められた枠の中を埋めさせる」という設計思想である。
5.1.2 ブロック種別
| 種別 | 役割 | 必須 | 差し替え可能な要素 |
|---|---|---|---|
hero |
ファーストビュー。見出し・サブコピー・主画像・第1CTA | ○ | 見出し、サブコピー、画像、CTA文言 |
problem |
課題提起。相手の困りごとの言語化 | - | 課題文3点、アイコン |
solution |
解決策の提示 | ○ | 見出し、説明、図版 |
proof |
社会的証明。実績・導入事例・数値 | ○ | 事例カード、実績数値 |
differentiator |
他社との違い | - | 比較表、箇条書き |
process |
進め方・流れ | - | ステップ数、各ステップ説明 |
pricing |
料金・費用感 | - | 表形式/レンジ表示/非表示 |
faq |
よくある質問 | - | Q&Aの件数と内容 |
cta_form |
コンバージョンフォーム | ○ | 項目数、CTA文言、Turnstile有無 |
footer |
会社情報・プライバシーポリシー・外部送信公表リンク | ○ | (固定) |
5.1.3 因子(Factor)と水準(Level)の定義
バリアント生成は 因子の直積 で行う(2.3項)。因子はユーザーが定義でき、既定として以下を用意する。
| 因子ID | 因子名 | 既定の水準 | 水準数 |
|---|---|---|---|
appeal |
訴求軸 | コスト削減 / 納期短縮 / 属人化解消 / 品質・保守性 / 内製化支援 | 5 |
structure |
構成テンプレート | 課題先行型 / 実績先行型 / 比較型 / 事例ストーリー型 / 料金明示型 | 5 |
cta_copy |
CTA文言 | 「無料で相談する」/「資料をダウンロード」 | 2 |
tone |
トーン | 論理・数値重視 / 共感・ストーリー重視 | (任意) |
hero_visual |
主画像 | 抽象図版 / 人物 / 画面キャプチャ | (任意) |
バリアント数 = 各因子の水準数の積。既定では 5 × 5 × 2 = 50 となり、要望の「50パターン」を満たす。因子・水準を増減すればバリアント数は自動で変わる。
設計上の要点: 上限を50に固定しない。ただし「有効バリアント数 ≦ 100」の上限を設ける(それ以上は第0層スクリーニングの前段で機械的に間引く)。
5.1.4 入力
| 項目 | 必須 | 内容 |
|---|---|---|
| ライブラリ名 | ○ | 例「受託開発・製造業向け」 |
| ブロック定義 | ○ | 種別・HTML/JSXテンプレート・差込変数の定義 |
| デザイントークン | ○ | 配色・タイポグラフィ・余白・角丸のCSS変数一式 |
| 因子・水準定義 | ○ | 上表 |
| 禁止表現リスト | ○ | 「日本一」「必ず」「絶対」等の最上級・断定表現、景表法上のNGワード |
| 必須表記 | ○ | 会社名、プライバシーポリシーリンク、外部送信公表リンク |
5.1.5 処理仕様
- ブロックはサーバ側でのみ結合される。クライアントに未使用ブロックを送らない(表示速度とCWVのため)。
- デザイントークンはCSS変数として単一のスタイルシートに集約し、全バリアントで共有する。バリアント間でCSSは変わらない(=キャッシュが効く)。
- ブロックテンプレートには差込変数(
{{company_name}}{{industry}}{{case_title}}等)を定義でき、F-16のパーソナライズで使用する。 - ライブラリはバージョン管理する。実験実行中のライブラリは変更をロックし、変更時は新バージョンを作成する(実験の途中でページが変わると計測が無効になるため)。
5.1.6 制約
- ブロックのHTMLは許可タグのホワイトリスト方式で検証する(
<script>は不可)。 - 1バリアントあたりのHTMLサイズ上限 200KB(gzip前)。超過時は生成をエラーとする。
- 外部CDNの読み込みを禁止する(LCP悪化とプライバシー上の理由)。フォント・アイコンは自己ホストする。
5.2 F-12 AI LPパターン自動生成
5.2.1 概要
因子の組合せごとにLLMでコピーを生成し、ブロックライブラリと結合して最大50パターンのLPを自動生成する。
5.2.2 入力
| 項目 | 必須 | 内容 |
|---|---|---|
| 実験名 | ○ | 例「製造業向け・システム保守 2026Q3」 |
| ターゲット定義 | ○ | 業種(複数可)、企業規模、都道府県、想定役職 |
| 提供サービス | ○ | 売りたいサービスの説明(自由記述 2,000字まで) |
| 差別化要因 | ○ | 箇条書き3〜7点 |
| 実績・事例 | ○ | 使用を許可する自社実績(事例DBから選択)。事例DBに無い実績はAIに作らせない |
| コンバージョン定義 | ○ | 資料DL / 問い合わせ / 相談予約 / ウェビナー申込 から選択 |
| 使用ライブラリ | ○ | F-11のライブラリID+バージョン |
| 使用因子 | ○ | 因子と水準の選択(既定: 5×5×2=50) |
| 生成モデル | - | 環境設定の既定値を使用(F-10拡張) |
5.2.3 処理仕様
[1] 因子の直積を展開 → 50組の (appeal, structure, cta_copy)
[2] 組合せごとにプロンプトを構築 → システムプロンプト + 因子指示 + 事実データ
[3] LLMでコピー生成 (並列・レート制御) → JSON Schema で構造化出力を強制
[4] 事実チェック → 事例DB・数値の照合、禁止表現検査
[5] 重複検査 → 埋め込みベクトルのコサイン類似度
[6] ブロック結合 → HTML生成 → サーバ側レンダリング
[7] 品質スコア算出 (第0層) → 5.2.5参照
[8] プレビュー生成 → ヘッドレスブラウザでスクリーンショット
[9] レビュー待ちキューへ → 人が承認するまで公開しない
LLM出力の構造化: 自由文ではなく次のスキーマで出力させる。これにより後段の機械処理とチェックが可能になる。
{
"hero": { "headline": "…(全角40字以内)", "subcopy": "…(全角90字以内)", "cta_label": "…" },
"problem": { "items": ["…", "…", "…"] },
"solution": { "headline": "…", "body": "…" },
"proof": { "case_ids": ["CASE-012", "CASE-031"], "highlight_metric": "保守工数を月32時間削減" },
"differentiator": { "items": ["…", "…", "…"] },
"faq": [ { "q": "…", "a": "…" } ],
"meta": { "title": "…(全角30字以内)", "description": "…(全角120字以内)" },
"self_eval": { "clarity": 4, "specificity": 5, "target_fit": 4, "reasoning": "…" }
}
5.2.4 ハルシネーション防止(必須要件)
営業用LPに虚偽の実績が載る事故は、当社の信用に直結する。以下を必須とする。
| 対策 | 内容 |
|---|---|
| 実績の出所限定 | proof ブロックは 事例DBのレコードIDを選ばせるだけ とし、本文はDBの値をそのまま使う。AIに実績文を書かせない |
| 数値の照合 | 生成文中の数値(「%」「時間」「円」「社」)を抽出し、入力データに存在しない数値があれば 自動でNG判定 |
| 固有名詞の照合 | 顧客名・製品名・技術名を辞書照合。未登録語を検出したら警告 |
| 禁止表現検査 | F-11の禁止表現リストと正規表現で突合。最上級表現・断定表現・優良誤認表現を検出 |
| 人による承認 | AIの生成物は必ず人の承認を経てから公開する。承認なしで公開できる経路を作らない |
5.2.5 第0層スクリーニング(公開前品質スコア)
トラフィックを1件も使わずに、明らかに弱いバリアントを落とす。
| 評価項目 | 配点 | 判定方法 |
|---|---|---|
| 事実チェック | 必須 | 1件でも違反があれば 失格(スコア算出せず) |
| 見出しの具体性 | 20 | 数値・固有名詞の含有、抽象語(「最適化」「ソリューション」等)の比率 |
| 訴求軸との一致 | 20 | 指定した因子水準のキーワードが見出し・サブコピーに現れているか |
| 可読性 | 15 | 一文の平均文字数、漢字比率、専門用語密度 |
| 重複度 | 15 | 他バリアントとの埋め込みコサイン類似度。0.95以上のペアは片方を失格 |
| 表示性能の予測 | 15 | HTMLサイズ、画像枚数・総バイト数、ブロック数からLCPを推定 |
| AI自己評価 | 15 | self_eval の平均(ただし満点評価が続く場合は重みを自動的に下げる) |
合格ライン: 60点以上、かつ事実チェック違反ゼロ。 50件生成 → 実際に公開されるのは概ね 15〜25件 となる。ここで落ちた分は再生成キューに戻る。
5.2.6 実装メモ(Cloudflare)
| 用途 | 使用サービス |
|---|---|
| 生成の実行 | Workers AI(下書き・分類・埋め込み) / AI Gateway 経由の外部LLM(本番コピー) |
| 生成パイプラインの制御 | Workflows(50件の生成→検査→結合を耐久実行。途中失敗の再開が可能) |
| 重複検査の埋め込み | Workers AI(日本語対応の埋め込みモデル。英語特化モデルを使うと日本語コピーの類似度が正しく出ず、重複の見落としや正常バリアントの誤脱落が起きる) + Vectorize(類似検索) |
| プレビュー画像 | Browser Rendering(スクリーンショット) → R2 保存 |
| コスト可視化 | AI Gateway(トークン数・コスト・キャッシュヒットを一元表示) |
生成コストの目安: 1バリアントあたり 入力200 + 出力800トークン程度。50件で入力1万・出力4万トークン。Workers AI の Llama 3.1 70B 相当の公表換算(入力 26,668 Neurons/100万トークン、出力 204,805 Neurons/100万トークン)で計算すると約 8,500 Neurons/回 となり、無料枠(10,000 Neurons/日)にほぼ収まる規模。ただしモデル別の換算値は変わりうるため、実装前に公式の料金表で再計算すること。
5.3 F-13 LP配信エンジン(文脈別出し分け)
5.3.1 概要
訪問者ごとにバリアントを1つ選び、エッジで描画して返す。本システムの心臓部。
5.3.2 URL設計
| URL | 用途 |
|---|---|
https://{LPドメイン}/r/{tracking_code} |
メール/フォーム営業からの着地(既存F-09を継承)。企業を特定できる |
https://{LPドメイン}/lp/{slug} |
広告・SEO・SNSからの着地。企業は不明。UTMで文脈を構築 |
https://{LPドメイン}/lp/{slug}/p/{variant_id} |
特定バリアントの直接指定(レビュー・QA用。noindex かつ計測対象外) |
https://{LPドメイン}/a/{account_token} |
ABM専用LP(F-16)。1社1URL |
5.3.3 処理仕様(リクエスト時)
① 文脈(context)を構築する
├ /r/{tracking_code} の場合 : tracking_code → アプローチ → 企業 を解決
│ context = {company_id, industry, pref, size, channel:'email',
│ approach_count, prior_reaction, template_id}
└ /lp/{slug} の場合 : UTM・Referer・Accept-Language から推定
context = {channel, utm_campaign, utm_content, keyword_cluster, device}
② 割付済みかを確認する
├ Cookie `ma_v` が存在し、同一実験のものであれば → 同じバリアントを再表示
└ 無ければ → ③へ ※必ず同じ人に同じ面を見せる
③ バリアントを選択する
├ 実験ステータス = 'exploring' → 均等ランダム(第1層・逐次淘汰の対象)
├ 実験ステータス = 'bandit' → 文脈付きThompson Sampling(8章)
└ 実験ステータス = 'fixed' → 確定した勝ちバリアント
※ 常に 5〜10% を「探索枠」として残し、勝者以外にも配信し続ける(環境変化への追随)
④ 描画する
├ ブロックHTMLを結合(サーバ側)
├ 差込変数を展開(F-16のパーソナライズを含む)
├ Cookie `ma_v` / `ma_s` を発行(HttpOnly=false, SameSite=Lax, 有効期限90日)
└ HTMLをストリーミング返却
⑤ 記録する(レスポンスをブロックしない)
└ assignment イベント + view イベントを非同期で書き込む
5.3.4 割付の固定(Sticky Assignment)
同一訪問者には常に同じバリアントを表示する。 これを守らないと計測が壊れる。
| 識別レベル | キー | 保持 |
|---|---|---|
| 企業レベル(最優先) | company_id |
D1に永続。同じ企業の別の人が来ても同じ面を見せる |
| 個人レベル | Cookie ma_v(バリアントID+実験ID+署名) |
90日 |
| フォールバック | hash(IP + User-Agent + 実験ID) mod N |
Cookie不可時。精度は落ちる |
Cookie値は改ざん防止のためHMAC署名を付与する。
5.3.5 パフォーマンス要件
| 指標 | 目標 | 測定 |
|---|---|---|
| TTFB | 200ms 以下(国内、p75) | Cloudflare Web Analytics / RUM |
| LCP | 2.5秒以下(p75) | web-vitals ライブラリで実測 |
| INP | 200ms以下(p75) | 同上 |
| CLS | 0.1以下(p75) | 同上 |
| HTMLサイズ | 200KB以下(gzip前) | ビルド時に検証 |
CWVの閾値はいずれも 75パーセンタイル値 で判定する。LCP: 良好 ≤2.5秒 / 改善が必要 2.5〜4.0秒 / 不良 >4.0秒。INP: ≤200ms / 200〜500ms / >500ms。CLS: ≤0.1 / 0.1〜0.25 / >0.25。(web.dev)
5.3.6 実装メモ(Cloudflare)
- Workers + Static Assets で配信する。Cloudflare は新規プロジェクトについて Pages ではなく Workers を推奨しており、SPA/静的アセットとAPIを1デプロイ単位にできる(Cloudflare Blog)。
- バリアントを Workers の「バージョン」として持たせてはならない。 Gradual Deployments はバージョン間のトラフィック分割ができるが、(a)対象は直近100バージョンまで、(b)配分変更のたびにデプロイ操作が要る、(c)割付の粒度がリクエスト単位、という制約がある。バリアントはあくまでD1上のデータとして持ち、単一のWorkerが描画する。
- 配信重み(バンディットの結果)は KV に置き、Workerは読むだけにする。KVは結果整合だが、重みは数十秒遅れても実害がない。
- 逆に 割付結果・イベントは KV に書かない(結果整合のため計測が壊れる)。D1 / Analytics Engine / Durable Objects を使う。
- バンディットのカウンタは Durable Objects(実験ごとに1インスタンス)で直列化する。D1に高頻度UPDATEをかけるとロック競合が起きる。
5.4 F-14 LP行動計測(ファーストパーティ計測)
5.4.1 概要
LP上の訪問者行動を自社ドメインで直接計測する。GA4は補助として併用するが、実験判定の一次データはGA4に依存しない。
5.4.2 GA4に依存しない理由
| 理由 | 内容 |
|---|---|
| 反映遅延 | GA4標準レポートは24〜48時間の処理遅延がある。逐次淘汰の判定が1日以上遅れる |
| APIクォータ | Data APIは標準プロパティで日次20万トークン・時間あたり4万トークン、同時リクエスト10。50バリアント×複数指標の定期取得で早期に枯渇する |
| しきい値適用 | ユーザー数が少ない行は自動的に非表示になる。低トラフィックのバリアント別分析と最も相性が悪い |
(not set) 問題 |
参照元不明・パラメータ欠落が混入する |
| 粒度 | 段階的スクロール深度(25/50/75%)はGA4の自動計測では取れない(90%到達の1回のみ) |
GA4は「全社共通の指標」「経営報告用の数字」として引き続き使う(既存F-09を継続)。実験の判定には自前計測を正とする、という二層構造にする。
5.4.3 計測イベント定義
| イベント | 発火契機 | 主要プロパティ |
|---|---|---|
lp_view |
ページ表示時(サーバ側で記録) | experiment_id, variant_id, company_id, channel, device, referrer |
lp_scroll |
セクション到達(10分割、各1回) | depth(10/20/…/100) |
lp_engage |
可視状態の累積滞在時間を離脱時に送信 | engaged_ms |
lp_cta_click |
CTAクリック | cta_id, block_id, position |
lp_form_start |
フォーム最初のフィールドにフォーカス | form_id |
lp_form_field_exit |
フィールドを未入力のまま離脱 | field_name |
lp_form_submit |
送信成功 | form_id |
lp_cv |
コンバージョン成立 | cv_type, value |
lp_vitals |
CWV確定値 | lcp, inp, cls |
lp_error |
JSエラー・フォーム送信失敗 | message |
5.4.4 実装方式
- スクロール到達は IntersectionObserver(閾値0.5)でセクション単位に検出し、1セクション1回のみ記録する。
scrollイベントの直接監視はしない(するなら{passive:true}必須)。 - 滞在時間は Page Visibility API で可視状態のみを積算する(バックグラウンドタブを計上しない)。
- 送信は
navigator.sendBeacon()。visibilitychange(hidden) とpagehideで発火する。unloadは信頼性が低いため使わない。 - CWVは
web-vitalsライブラリのonLCP/onINP/onCLSで確定値を取得しlp_vitalsとして送信する。 - クリック座標はビューポート比(%)に正規化して保存し、ヒートマップ描画に用いる。
- 計測スクリプトは 8KB(gzip後)以内、
defer読み込み、外部ドメインへのリクエストを行わない。
5.4.5 データ量の見積り
1セッションあたり: scroll 10件 + click 平均5件 + visibility 3件 + vitals 1件 ≒ 20イベント、1件 200〜300バイト。
| 月間セッション | 月間イベント数 | 概算データ量 |
|---|---|---|
| 5,000 | 10万 | 約 25MB |
| 50,000 | 100万 | 約 250MB |
| 500,000 | 1,000万 | 約 2.5GB |
5.4.6 実装メモ(Cloudflare)
- 生イベントは Workers Analytics Engine に
writeDataPoint()で書く。カーディナリティ無制限で、バリアント×企業×セグメントの組合せを気にせず記録できる。保持期間3か月。SQL APIで集計取得。 - 集計済みの日次サマリは D1 に保存する(3か月を超える長期分析・レポート用)。
- 実験カウンタ(成功/試行)は Durable Objects (SQLiteバックエンド) で直列に更新する。DOのSQLiteバックエンドはGA済みで、Cloudflare は新規名前空間についてSQLiteバックエンドの使用を推奨している。
- ボット除外: Turnstile・User-Agent・行動パターン(0msスクロール等)で除外フラグを立て、集計から除く。
5.5 F-15 LP実験・統計エンジン
5.5.1 概要
2.2項の3層評価を実装する。実験の状態遷移と各層の判定ロジックを定義する。詳細な数式は8章。
5.5.2 実験の状態遷移
draft ──[生成完了]──▶ screening ──[第0層合格]──▶ review
│
[人が承認]
▼
exploring ◀────┐
(均等配分・逐次淘汰) │
│ │[有意差なし/
[候補が5件以下] │ 環境変化検知]
▼ │
bandit ──────┘
(Thompson Sampling)
│
[勝者の優越確率 ≥ 95%
かつ 最小サンプル充足]
▼
fixed
(勝者95% + 探索5%)
5.5.3 第1層 — プロキシ指標による逐次淘汰
アルゴリズム: Sequential Halving(逐次半減法)
- 現在の候補集合に均等にトラフィックを配分する
- 各バリアントがラウンド最小サンプル数(既定300セッション)に到達したらラウンド終了
- 複合プロキシスコアの下位半分を脱落させる
- 候補が5件以下になるまで繰り返す
複合プロキシスコア(重みは設定可能):
proxy_score = 0.40 × normalize(CTAクリック率)
+ 0.30 × normalize(スクロール50%到達率)
+ 0.20 × normalize(中央値エンゲージ時間)
+ 0.10 × normalize(フォーム開始率)
normalize() は候補集合内でのZスコアを 0〜1 に写像する。
ラウンド設計の例(1バリアント300セッション/ラウンド):
| ラウンド | 候補数 | 必要総セッション | 累計 |
|---|---|---|---|
| R1 | 20 | 6,000 | 6,000 |
| R2 | 10 | 3,000 | 9,000 |
| R3 | 5 | 1,500 | 10,500 |
20バリアントを同時にCVRで検定すると 20×3,820 = 76,400セッション必要なのに対し、逐次淘汰なら 10,500セッションで5件まで絞れる(約1/7)。
早期打ち切り: 明らかに劣るバリアントは300セッションを待たずに落とす。ベイジアンな判定で P(そのバリアントが最良) < 1% となった時点で脱落させる。
5.5.4 第2層 — ベイジアン判定 + Thompson Sampling
候補が5件以下になったら、本命指標(CV)で判定する段階に移る。
- 各バリアント i の CVR を Beta分布でモデル化:
θᵢ ~ Beta(αᵢ, βᵢ) - 事前分布は 一様 Beta(1,1) ではなく、全バリアントの集約値から作る経験ベイズ事前分布を用いる(低トラフィックでの収束を早めるため。8.3項)
- 配信は Thompson Sampling: 毎リクエスト各分布から1点サンプリングし、最大のバリアントへ配信する
- 判定:
P(variant_i が最良) ≥ 95%かつ各バリアントの累計CV ≥ 20件でfixedに遷移
5.5.5 因子(水準)単位の効果推定
バリアント単位の勝敗と並行して、常に因子水準単位の効果を推定する。 これが実務上もっとも役に立つアウトプットになる。
出力例:
| 因子 | 水準 | 推定CVR(事後平均) | 95%信用区間 | 全体比 |
|---|---|---|---|---|
| 訴求軸 | 属人化解消 | 3.4% | 2.6% – 4.3% | +38% |
| 訴求軸 | コスト削減 | 2.5% | 1.9% – 3.2% | +2% |
| 訴求軸 | 納期短縮 | 1.9% | 1.3% – 2.6% | −22% |
| 構成 | 実績先行型 | 3.1% | 2.4% – 3.9% | +27% |
| CTA | 「資料をダウンロード」 | 2.9% | 2.4% – 3.4% | +18% |
この結果は次回の生成(F-12)に自動でフィードバックされ、勝ち筋の水準を厚めに配合した新しい50パターンを作る。世代を重ねるごとに母集団の質が上がる。
5.5.6 セグメント別の効果推定
同じ推定を、セグメント(業種・企業規模・チャネル)ごとにも行う。データが薄いセグメントは階層ベイズにより全体平均へ縮約されるため、過学習しない。
| セグメント | 最良バリアント | 推定CVR | 全体最良との差 |
|---|---|---|---|
| 製造業 × 50名以上 | V-023(属人化解消 × 実績先行) | 4.8% | +1.4pt |
| 製造業 × 50名未満 | V-011(コスト削減 × 料金明示) | 3.2% | −0.2pt |
| 建設業 | V-023 | 3.5% | +0.1pt |
| 広告流入(企業不明) | V-007(納期短縮 × 課題先行) | 2.1% | −1.3pt |
セグメント別の勝者が全体最良と異なる場合、F-13の配信エンジンはセグメント別の勝者を優先する(コンテキスチュアル・バンディット)。
5.5.7 誤用防止のガードレール
低トラフィックでの統計判断は、放置すると必ず誤用される。以下を機能として強制する。
| ガード | 内容 |
|---|---|
| 最小サンプル未達の非表示 | 累計セッション < 100 のバリアントは「判定中」とだけ表示し、CVRの数値・順位を出さない |
| ピーキング警告 | 実験途中で有意差が出ても、事前に定めた最小サンプル数に達するまで「暫定」と明示する |
| 多重比較の明示 | 比較対象数に応じた補正後のp値、またはベイズの優越確率を必ず併記する。生のp値だけを表示しない |
| 実験期間の最小値 | 曜日効果を吸収するため 最低7日間 は fixed に遷移させない |
| 外部要因メモ | 広告予算変更・障害・季節要因を実験に注記でき、レポートに併記される |
| 効果量の表示 | 有意/非有意ではなく、推定効果量と信用区間を主表示にする |
5.6 F-16 企業識別パーソナライズLP(ABM-LP)
5.6.1 概要
重点企業に対して、その企業のためだけの1枚を自動生成・配信する。2.4項の中核アイデアを最も直接的に実装する機能。
5.6.2 パーソナライズの3段階
| 段階 | 名称 | 対象 | 生成タイミング | 差し込む内容 |
|---|---|---|---|---|
| L1 | セグメント適応 | 全企業(自動) | 配信時にリアルタイム | 業種名、地域名、業種別の課題文、業種が近い事例 |
| L2 | 企業適応 | 選定した重点企業(数十〜数百社) | 事前バッチ生成 | 社名、企業規模に応じた提案粒度、同業・同規模の事例、想定課題 |
| L3 | 個社提案 | 商談化直前の企業(数社) | 手動トリガ+人の編集 | 公開情報から推定した個別課題、担当者名、想定体制図、概算見積レンジ |
5.6.3 L2の処理仕様
[1] 対象企業の選定
├ 手動選択 / セグメント条件 / スコア閾値(F-23のリードスコア)
└ 上限: 1回のバッチで500社
[2] 企業ごとの文脈データを収集
├ 企業マスタ(業種・都道府県・規模・サイトURL) … 既存F-01/F-02
├ アプローチ履歴(送信済テンプレ・反応の有無) … 既存F-04
└ 公開情報の要約(自社サイトのトップ・事業紹介ページ) … F-02のクロール結果を再利用
[3] 事例マッチング
└ 同業種 → 同規模 → 同技術領域 の優先順で事例DBから最大3件を選択
[4] LLMで差込文を生成(コピー全体ではなく "差込部分のみ")
├ hero.headline の企業向け言い換え
├ problem.items の業種特化版
└ proof の事例選定理由(1文)
[5] 事実チェック(F-12と同じ検査を適用)
[6] account_token を発行し、専用URL /a/{account_token} を確定
[7] レビュー → 承認 → 公開
5.6.4 出力
| 項目 | 内容 |
|---|---|
account_token |
企業ごとの推測困難なトークン(24文字以上のランダム文字列) |
| 専用LP URL | https://{LPドメイン}/a/{account_token} |
| 有効期限 | 既定90日(設定可)。期限切れ後は汎用LPへリダイレクト |
| インデックス制御 | 必ず noindex, nofollow。サイトマップに含めない。robots.txt では塞がない(理由は14.2項) |
5.6.5 制約・注意事項
- 社名の表示は「取引先/見込み先として認識している」ことの開示になる。 相手に不快感を与えうるため、既定は「社名を直接出さず、業種・規模・課題を合わせる」L2弱パーソナライズとする。社名の明示は設定でONにする。
- 個人名の差し込みは、名刺交換等で正当に取得した情報に限る。推測した個人名を出してはならない。
- L3は人の編集を必須とする。AI生成のまま公開できない。
- ABM-LPのURLは推測可能であってはならない。連番・企業名のローマ字表記等を使わない。
5.6.6 効果測定上の扱い
ABM-LPはバリアント実験の対象外とする(1社1枚のためN=1で統計的評価ができない)。代わりに以下を記録する。
| 指標 | 内容 |
|---|---|
| 到達率 | 発行したABM-LPのうち、1回以上閲覧されたものの割合 |
| 閲覧深度 | スクロール到達率・エンゲージ時間 |
| 再訪率 | 同一企業からの2回目以降の訪問(検討が進んでいる強いシグナル) |
| 商談化率 | 汎用LPとの比較(ここはA/Bではなく前後比較・傾向分析として扱う) |
再訪の検知は営業上もっとも価値が高い。 同じ企業から3日以内に2回目の訪問があった場合、インサイドセールスの架電キュー(F-23)に自動投入する。
6. 機能要件 第II部 — 新規チャネル(F-17〜F-22)
6.1 F-17 検索意図クラスタ / SEOコンテンツハブ
6.1.1 概要
検索意図のクラスタを定義し、クラスタごとにコンテンツとLPを紐づけて管理する。大量ページの自動生成は行うが、インデックス方針を機能として厳格に制御する。
6.1.2 なぜインデックス制御が必須なのか
Googleのスパムポリシーは「scaled content abuse(大規模なコンテンツの不正利用)」を、ランキング操作を主目的として大量のページを生成し、ユーザーへの価値がほとんど無い行為と定義している。明示的なNG例に「生成AIツール等を使い、ユーザーに価値を加えずに大量のページを生成すること」が含まれる。(Google スパムポリシー)
一方、AI利用そのものは禁止されていない。Googleの生成AIコンテンツに関するガイダンスは、AI活用を認めたうえで「独自性・付加価値・労力がほとんど無いコンテンツ」を問題とする、という立場を明確にしている。(Google 生成AIコンテンツのガイダンス)
さらに「doorway pages(誘導ページ)」ポリシーは、地域名違いの類似ページ量産や、実質同一内容のページの大量配置を明示的に対象としている。(doorway pages)
したがって本システムは「大量生成LPを自然検索にインデックスさせない」ことを既定とし、インデックスさせる場合は別の厳しい要件を課す。 この判断を機能として強制する(F-24)。
6.1.3 ページ種別とインデックス方針
| ページ種別 | 生成方法 | インデックス | canonical | サイトマップ |
|---|---|---|---|---|
| 実験バリアントLP | AI生成(50件) | noindex, follow | 代表LPを指す | 含めない |
| ABM-LP | AI生成(1社1枚) | noindex, nofollow | なし | 含めない |
| 広告専用LP | AI生成 | noindex, follow | 代表LPを指す | 含めない |
| 代表LP(クラスタ1枚) | AI下書き + 人が加筆・一次情報化 | index | 自己参照 | 含める |
| コンテンツ記事 | AI下書き + 人が加筆・一次情報化 | index | 自己参照 | 含める |
| 事例ページ | 人が作成 | index | 自己参照 | 含める |
重要な実装ルール: インデックスさせたくないページは <meta name="robots" content="noindex,follow"> で制御し、robots.txt でブロックしない。robots.txt でクロールを止めると、他ページからのリンク経由で「コンテンツなし」の状態で検索結果に出ることがあり、確実な除外にならない。またGoogle広告のクローラ(AdsBot)を robots.txt で塞ぐと、広告の品質評価・配信に支障が出る。(noindex の使い方)
6.1.4 クラスタ管理
| 項目 | 内容 |
|---|---|
| クラスタ定義 | クラスタ名、代表キーワード、関連キーワード(最大50)、検索意図タイプ(情報収集/比較検討/購買) |
| 紐づけ | クラスタ ↔ 代表LP ↔ コンテンツ記事群 ↔ 広告グループ |
| 順位記録 | 代表キーワードの検索順位・表示回数・CTRを定期記録(Search Console API。9.3.2項) |
| 流入記録 | GA4連携(既存F-09)+ 自前計測でクラスタ別の流入・CVを集計 |
| カニバリ検知 | 同一キーワードで複数の自社ページが競合していないかを警告 |
6.1.5 段階公開(必須)
一度に大量のページを公開しない。1回の公開は50ページ以内とし、公開後2週間のインデックス率(Search Consoleで確認)を記録してから次の公開を許可する。インデックス率が70%を下回った場合は自動的に次の公開をブロックし、警告を出す。
「安全なページ数の上限」についてのGoogle公式の数値基準は存在しない。上記の数値は業界の実務的推奨に基づく当社の運用基準であり、実測に応じて見直す。
6.1.6 生成AI検索(LLMO/AEO/GEO)の扱い
Googleは公式ガイドで、生成AI検索機能向けの別建ての最適化は不要と明言している。
「Google検索の生成AI機能は既存の中核的な検索ランキング・品質システムに根ざしているため、従来のSEOのベストプラクティスは引き続き有効」 「Google検索に表示されるために、新しい機械可読ファイル、AI用テキストファイル、マークアップ、Markdownを作成する必要はない」 (Google: 生成AI機能向け最適化ガイド)
llms.txt は2026年8月時点で、Google・OpenAI いずれからも「利用している」という公式確認が取れていない。 本システムでは llms.txt の生成機能を実装するが、既定はOFFとし、「効果は未確認」と画面上に明示する。
代わりに実装するのは、従来SEOの延長線にある確実な施策のみとする。
| 施策 | 内容 | 根拠の確度 |
|---|---|---|
| 構造化データ | Organization / FAQPage / Article / BreadcrumbList を自動付与 |
高(Google公式のリッチリザルト要件) |
| 見出し構造の妥当性 | H1が1つ、階層の飛びがないことを検証 | 高 |
| 要約文の冒頭配置 | 各ページ冒頭に120字以内の要約を配置 | 中(業界の観測ベース) |
| 一次情報の明示 | 自社の実測データ・調査結果に出典表記を付ける | 中 |
llms.txt 出力 |
サイト構造のMarkdown要約を生成 | 低(効果未確認・既定OFF) |
6.2 F-18 広告オーディエンス連携
6.2.1 概要
MA内の企業リスト・行動データを広告媒体のオーディエンスとして同期し、広告成果をMA側で突合する。広告の入稿・クリエイティブ・入札は対象外(4.3項)。
6.2.2 オーディエンスの種別
| 種別 | 定義 | 主な用途 |
|---|---|---|
| リターゲティング | LP訪問済み × 未CV × 30日以内 | 検討中の相手への再接触 |
| 深度別リターゲティング | スクロール75%以上到達 or 料金ブロック閲覧 | 高関心層への強い訴求 |
| ABMターゲット | 重点企業リスト(顧客一致/企業ターゲティング) | 名指しの認知獲得 |
| 除外リスト | CV済み / do_not_contact / 既存顧客 / 自社関係者 |
無駄打ちの排除。必須 |
| 類似拡張 | CV企業と属性が近い企業群 | 新規開拓の拡張 |
6.2.3 処理仕様
- セグメント条件を定義し、対象企業/訪問者IDを日次で抽出する。
- 媒体別のアダプタを通じてオーディエンスを同期する(Google Ads / Meta / LinkedIn / X)。
- 除外リストは常に最優先で適用する。CV済み・配信停止・既存顧客への広告配信は事故になる。
- 広告からの流入は
utm_*+ 独自パラメータma_ch=ads&ma_src={媒体}で識別し、F-13の文脈構築に渡す。 - 広告費は媒体APIまたはCSVで日次取り込み、F-23でCPA/ROASを算出する。
6.2.4 制約・法令上の注意(重要)
- 改正電気通信事業法の外部送信規律(第27条の12) により、Cookie等で利用者情報を外部(広告事業者)へ送信する場合、送信情報の種別・送信先事業者名・利用目的について通知または公表が必要になる。本システムは F-24 で、送信先タグの一覧から公表用テキストを自動生成する。
- 個人関連情報の第三者提供: Cookie ID等を提供先で個人データと紐づけることが想定される場合、提供元は本人同意の取得状況を確認する義務がある。メールアドレスのハッシュ値を広告媒体の顧客一致機能へアップロードする運用は、この規律に直接かかる。実施前に必ず法務確認を経ること。
- 2026年7月17日に公布された改正個人情報保護法により、Cookie ID等の不適正利用禁止が強化され課徴金制度が新設された。全面施行は公布から2年以内(2028年7月17日が期限)、罰則の一部は2027年1月17日先行施行の見込み。本機能は施行時期に合わせた再点検を前提とする。
6.3 F-19 ウェビナー運用
6.3.1 概要
ウェビナーは調査したチャネルの中で CPLが最も低い部類(3,000〜8,000円) であり、かつ工程のほぼ全てが自動化可能なため、新チャネルの中で最優先で実装すべき機能である。
6.3.2 自動化する工程
[企画] ─(人)─▶ [告知] ─▶ [申込] ─▶ [リマインド] ─▶ [開催] ─(人)─▶ [視聴データ取込]
│ │ │ │
▼ ▼ ▼ ▼
LP自動生成 フォーム 3回配信 スコアリング・セグメント
(F-12流用) +Turnstile (前日/1h前/直前) │
▼
[アンケート] ─▶ [フォロー配信] ─▶ [架電キュー]
分岐配信 F-23
6.3.3 リマインド設計
申込者の参加率は全業種平均で約46%(申込者の半数以上が参加しない)。リマインドの設計がそのまま成果に直結する。
| タイミング | 内容 |
|---|---|
| 申込直後 | 受付確認 + カレンダー登録用ICSファイル添付 + 視聴URL |
| 前日 | 内容の再提示 + 事前質問の受付 |
| 開始1時間前 | 視聴URLのみの短文 |
| 開始5分前 | (任意)ワンクリックで参加できる短文 |
6.3.4 視聴データに基づくセグメントとフォロー
| セグメント | 条件 | フォロー内容 | 架電キュー |
|---|---|---|---|
| ホット | 視聴80%以上 + 質問あり or アンケートで「相談したい」 | 個別相談の日程提示 | 即日投入 |
| ウォーム | 視聴50%以上 | 資料 + 関連事例 + 次回案内 | 3日後 |
| コールド | 視聴50%未満 | アーカイブURL + 要約 | なし |
| 欠席 | 申込のみ | アーカイブURL + 次回案内 | なし |
6.3.5 共催ウェビナー
共催は相互のリストを活用できるためCPLをさらに下げられるが、リード分配ルールの事前合意が必須。機能として以下を持つ。
- 共催相手ごとの申込フォーム(流入元識別)
- リードの帰属ルール設定(全件共有 / 自社流入のみ / 相手流入のみ)
- 共有リードには
source=co_host:{相手名}を付与し、以後の配信で同意状況を明示的に管理する
6.3.6 法令上の扱い
ウェビナー申込は相手が能動的に情報を登録した行為であるため、以後のメール配信は特定電子メール法上の同意取得が成立しやすい(フォーム営業とは性質が異なる)。ただし申込フォームに受信同意のチェックと利用目的の明示を必ず置く。共催で相手方から受領したリードへの配信は、相手方が同意を取得しているかを確認する。
6.3.7 外部連携
| 連携先 | 用途 | 取得データ |
|---|---|---|
| Zoom Webinar / Meetings | 開催・視聴データ | 参加者リスト、入退室時刻、視聴時間、質問 |
| Google Calendar | ICS発行 | — |
| SendGrid(既存F-08) | 告知・リマインド・フォロー配信 | 送達・開封・クリック |
6.4 F-20 コンテンツゲートとナーチャリング
6.4.1 概要
ホワイトペーパー等の資料をフォームの背後に置き(ゲート)、ダウンロードを起点に関係を育てる。既存のフォーム・メール基盤の延長で実装でき、実装コストが低く効果が読みやすい。
6.4.2 ゲート設計
| 項目 | 内容 |
|---|---|
| 資料マスタ | タイトル、説明、サムネイル、ファイル(PDF)、想定検討フェーズ、関連クラスタ |
| フォーム項目 | 会社名・氏名・メール(必須)/ 部署・役職・電話・課題(任意)。必須項目は3つまで(離脱防止) |
| ボット対策 | Turnstile を標準適用 |
| 配信方式 | ①即時ダウンロードリンク表示 + ②メールでも送付(メールアドレスの有効性検証を兼ねる) |
| 段階的ゲート | 1回目は3項目、2回目以降は追加項目のみを聞く(プログレッシブプロファイリング) |
6.4.3 検討フェーズ推定
閲覧した資料の種類と順序から、相手の検討段階を推定する。 これがナーチャリングの中核ロジックになる。
| 閲覧パターン | 推定フェーズ | 次のアクション |
|---|---|---|
| 入門資料のみ | ①潜在〜②情報収集 | 教育コンテンツの配信を継続 |
| 入門 → 比較資料 | ③比較検討 | 事例 + 個別相談の案内 |
| 比較 → 料金/発注ガイド | ④購買直前 | 架電キューへ投入 |
| 事例のみを複数 | ③比較検討(実績重視) | 同業種の事例を追送 |
| 短期間に3件以上 | 情報収集が本格化 | スコア加点 + 架電キュー候補 |
6.4.4 スコアリング
| 行動 | 加点 |
|---|---|
| 資料DL(入門) | +5 |
| 資料DL(比較・料金) | +15 |
| LP再訪(3日以内) | +10 |
| 料金ブロック閲覧 | +10 |
| ウェビナー参加(50%以上視聴) | +20 |
| メール開封のみ | +1 |
| 配信停止 | −999(即時除外) |
スコア閾値(既定50点)を超えたリードは F-23 の架電キューに自動投入する。スコアは日次で3%減衰させ、古い行動の影響を薄める。
6.4.5 ステップ配信
- 資料種別ごとにシナリオを定義(既定5通/3週間)
- 分岐条件: 開封しない → 件名を変えて再送 / クリックした → 関連事例を送る / CVした → シナリオ停止
- 全シナリオに配信停止リンクと送信者情報を含める(特定電子メール法。既存F-08の共通フッターを継承)
6.5 F-21 SNS・コミュニティ運用支援
6.5.1 概要
SNS・コミュニティは直接のリード獲得チャネルではなく、認知と信頼の構築チャネルである。定量的な公開ベンチマークが乏しいため、本機能の目的は「効果を出すこと」ではなく「効果を測れる状態にすること」に置く。
6.5.2 機能
| 機能 | 内容 |
|---|---|
| 投稿カレンダー | X / LinkedIn / note / YouTube の投稿予定を一元管理。下書きの承認フロー |
| 投稿予約・配信 | 各媒体APIで予約投稿(APIが無い/制限がある媒体は「投稿リマインド+手動」にフォールバック) |
| UTM自動付与 | 投稿内リンクに utm_source={媒体}&utm_medium=social&utm_campaign={企画}&utm_content={投稿ID} を自動付与。既存F-09のADコード規約に合わせる |
| 流入計測 | SNS流入をF-13の文脈として受け取り、LP出し分けとCVを紐づける |
| エンゲージ取得 | インプレッション・エンゲージ数を日次取得し投稿単位で記録 |
| コンテンツ再利用 | ウェビナー(F-19)・資料(F-20)・記事(F-17)から投稿案を自動生成(下書きのみ。投稿は人が承認) |
| コミュニティ参加者管理 | 勉強会・ユーザー会・Slack/Discordの参加者を名簿として管理し、メールアドレスで企業マスタに名寄せ |
6.5.3 KPI
公開ベンチマークが無いため、当社の実測をKPIとする。
| 指標 | 定義 | 初期目標 |
|---|---|---|
| SNS起点セッション | UTM識別による流入 | 実測後に設定 |
| SNS起点CV | 上記からのCV | 実測後に設定 |
| 指名検索数 | 「シンオン」等の指名検索の推移(Search Console) | 前年同月比 |
| コミュニティ経由商談 | イベント参加者からの商談化 | 四半期あたり件数 |
6.5.4 制約
- 投稿内容の自動生成・自動投稿は行わない。 下書き生成までとし、投稿は必ず人が承認する(炎上・誤情報のリスク)。
- SNSのユーザーIDとメールアドレスの自動名寄せは行わない(精度と法的論点の両面で実装しない)。名簿からの手動紐付けのみ。
- 各媒体のAPI利用規約・レート制限を遵守する。規約変更時に機能が停止しうることを前提に、フォールバック(手動運用)を必ず用意する。
6.6 F-22 匿名訪問企業推定(オプション機能)
6.6.1 概要
自社サイト・LPに訪問した匿名ユーザーのIPアドレスから企業単位での訪問元を推定する。法務確認を経るまで実装・有効化しない前提のオプション機能として定義する。
6.6.2 仕組みと精度の限界
IPアドレスを法人契約回線のデータベースと照合して企業を推定する。ただし以下の限界がある。
- 特定できるのは企業単位までであり、個人は特定できない
- 在宅勤務・モバイル回線・プロキシ・VPN経由では精度が大きく落ちる
- 一致率は業種・企業規模に強く依存する(大企業ほど当たりやすい)
精度・料金の定量的な公開データは見当たらなかった。導入判断の前に必ずPoCで一致率を実測すること。
6.6.3 法的論点(実装の前提条件)
| 論点 | 整理 |
|---|---|
| 個人情報該当性 | IPアドレス単体は通常「個人情報」に直ちには該当しないとの整理が一般的。ただし企業単位の利用に限る場合 |
| 個人関連情報 | 提供先で個人データと紐づく想定がある場合、提供元に同意取得状況の確認義務が生じうる |
| 外部送信規律 | IP取得のためにCookie等を用いる場合、通知・公表が必要 |
| 設計上の必須要件 | ①個人と紐付けない(企業単位のみ) ②通知・公表の実装 ③プライバシーポリシーへの明記 |
本機能は「法務確認済み」フラグが環境設定でONにならない限り、機能自体が起動しない実装とする。
6.6.4 実装方式の選択肢
| 方式 | 長所 | 短所 |
|---|---|---|
| 商用サービス連携(サチさん等) | 精度・保守が外部任せ。すぐ使える | 月額費用。データの持ち出し |
| 商用IP-DB購入 + 自前実装 | 内製化・原価が読める | DB更新の運用。精度で専業に劣りやすい |
| 実装しない | リスクゼロ | 匿名訪問を取りこぼす |
6.6.5 出力
- 訪問企業の推定結果(企業名・確度・訪問ページ・滞在時間)
- 既存の企業マスタとの自動名寄せ(確度が閾値以上の場合のみ)
- 「アプローチ済み企業が匿名で再訪した」検知 → 架電キューへ最優先で投入(F-23)
7. 機能要件 第III部 — 横断機能(F-23〜F-24)
7.1 F-23 チャネル横断アトリビューション分析
7.1.1 概要
メール・フォーム・LP・広告・SEO・ウェビナー・資料・SNS のすべてを1本の時系列に統合し、「どのチャネルの組合せが商談を生んだか」を可視化する。既存 F-07(分析)を包含する上位機能。
7.1.2 統合の連結キー
| キー | 用途 | 発行元 |
|---|---|---|
company_id |
企業単位の統合。最上位のキー | 既存 企業マスタ |
tracking_code |
アプローチ単位の識別 | 既存 F-09 |
visitor_id |
匿名訪問者のCookie識別子 | F-14 |
contact_email |
個人の識別。visitor_id ↔ company_id の橋渡し | フォーム送信時 |
session_id |
セッション単位 | F-14 |
名寄せの流れ: 匿名訪問(visitor_id)→ フォーム送信でメールを取得 → contact_email から company_id を解決 → 過去の匿名行動を遡って企業に紐づける(バックフィル)。これにより「CVの3週間前から検討が始まっていた」という事実が可視化される。
7.1.3 タッチポイント時系列
company_id: C-01382 (株式会社◯◯製作所 / 製造業 / 従業員80名)
─────────────────────────────────────────────────────────
2026-06-03 email メール営業 送信 (TPL-07)
2026-06-03 email 開封
2026-06-11 lp /r/{code} 着地 → V-023 表示 / スクロール60% / 離脱
2026-06-24 ads リターゲティング広告 クリック → V-023(固定割付)
2026-06-24 lp スクロール100% / 料金ブロック閲覧 45秒
2026-07-02 webinar ウェビナー申込 → 参加(視聴82%)/ 質問あり
2026-07-02 score スコア 68点 → 架電キュー投入
2026-07-04 call 架電 → 担当者接続
2026-07-15 deal 商談化 ★
─────────────────────────────────────────────────────────
7.1.4 アトリビューションモデル
単一のモデルに依存しない。 4つを並べて表示し、解釈は人が行う。
| モデル | 配分 | 向く用途 |
|---|---|---|
| ラストタッチ | 最終接点に100% | 「刈り取り」チャネルの評価 |
| ファーストタッチ | 初回接点に100% | 「認知獲得」チャネルの評価 |
| 線形 | 全接点に均等 | 全体の関与度 |
| 時間減衰 | CVに近いほど重い(半減期7日) | 実務上の折衷。既定 |
7.1.5 主要レポート
| レポート | 内容 |
|---|---|
| チャネル別 CPL/CPA | 費用(広告費+ツール費+人件費按分)÷ リード数/商談数 |
| チャネル寄与マトリクス | 行=ファーストタッチ、列=ラストタッチ の商談数クロス集計。チャネルの役割分担が見える |
| LPバリアント別 | セッション・プロキシ指標・CVR・商談化率(F-15と連動) |
| 因子効果 | 訴求軸・構成・CTA の水準別効果(F-15.5.5) |
| セグメント別最良LP | 業種×規模×チャネル ごとの勝ちバリアント |
| リード進行ファネル | 匿名訪問 → 識別 → MQL → 架電 → 商談 → 受注 の各段階の通過率 |
| 期間比較 | 月/四半期/半期/年。年度起点は4月始まりが既定(既存F-07を継承) |
7.1.6 架電キュー(インサイドセールス連携)
| 項目 | 内容 |
|---|---|
| 投入条件 | スコア閾値超過 / ウェビナー高視聴 / LP再訪(3日以内2回) / 料金ページ滞在30秒以上 / ABM-LP再訪 |
| 優先度 | ホット(即日) / ウォーム(3日以内) / 通常 |
| 表示情報 | 企業情報、直近のタッチポイント時系列、閲覧したLPのバリアント、閲覧した資料、話すべき論点の候補 |
| 記録 | 架電結果(接続/不在/NG/商談化)を記録し、スコアと除外リストに反映 |
「話すべき論点の候補」の自動生成は本機能の目玉。「料金ブロックを45秒閲覧」「属人化解消の訴求軸のLPで完読」といった行動から、相手の関心事を推定して営業に渡す。
7.2 F-24 コンプライアンス・ガードレール管理
7.2.1 概要
本拡張で扱う領域(AI生成コンテンツ、Cookie、広告連携、大量ページ公開)は、いずれも運用ミスが法令違反や検索評価の毀損に直結する。これらを人の注意力に頼らず、機能として強制する。
7.2.2 ガードレール一覧
| # | 対象 | 強制内容 | 違反時の挙動 |
|---|---|---|---|
| G-01 | AI生成物 | 人の承認なしに公開できない | 公開APIが承認済フラグを検査。未承認は403 |
| G-02 | AI生成物 | 事実チェック違反があれば公開不可 | 承認画面に「承認」ボタンが出ない |
| G-03 | 実験LP/ABM-LP/広告LP | noindex を必ず付与 |
ビルド時に検証。欠落時はデプロイを中止 |
| G-04 | robots.txt | 実験LPディレクトリを Disallow にできない |
設定画面で当該パスの入力を拒否(理由を表示) |
| G-05 | AdsBot | robots.txt で AdsBot を拒否できない | 同上 |
| G-06 | コンテンツ公開 | 1回50ページ、直近2週のインデックス率70%以上(Search Console の URL Inspection API で実測。9.3.2項) | 超過時は公開ジョブをブロック |
| G-07 | 外部送信タグ | 使用タグ一覧から公表用テキストを自動生成し、全LPフッターからリンク | タグ追加時に公表テキストの更新を要求 |
| G-08 | 広告オーディエンス同期 | 除外リスト(CV済/停止/既存顧客)の適用が必須 | 除外未設定の同期ジョブは実行不可 |
| G-09 | メールアドレスの媒体アップロード | 「法務確認済み」フラグ必須 | フラグOFFの間は機能が起動しない |
| G-10 | 匿名訪問企業推定(F-22) | 「法務確認済み」フラグ必須 | 同上 |
| G-11 | 全LPフォーム | プライバシーポリシー・利用目的・外部送信公表へのリンクを必須表示 | 欠落時はフォームブロックの検証エラー |
| G-12 | 配信停止 | do_not_contact の企業を全チャネルから除外 |
対象を含む配信・同期ジョブは実行不可 |
| G-13 | 個人名の差し込み | 名刺交換等で取得した連絡先に限定。推定した個人名は使用不可 | 差込元が contacts テーブル由来でない場合エラー |
| G-14 | 実験の途中変更 | 実行中の実験のLP内容・ライブラリを変更できない | 変更時は新バージョンの作成を強制 |
| G-15 | 計測リダイレクト方式 | LP実験が有効な間、F-09 の「直接付与」モードを選択できない | 環境設定で当該オプションを無効化(下記参照) |
G-15 の背景: v1.2 の F-09 は、本文内URLの書き換え方式として「計測リダイレクト経由(既定)」と「直接付与」の2つを環境設定で選べる。「直接付与」を選ぶと
/r/{tracking_code}への着地が発生せず、F-13 が前提とする企業文脈の解決ができなくなる。 したがってLP実験・ABM-LPを運用している間は、計測リダイレクト方式を必須とする。
7.2.3 コンプライアンス・ダッシュボード
| 表示項目 | 内容 |
|---|---|
| 公開中LPのインデックス設定 | noindex 欠落の有無を一覧で常時監視 |
| 外部送信タグ | 現在稼働中のタグ、送信先、公表テキストの最終更新日 |
| 法務確認フラグ | G-09/G-10 の状態と確認日・確認者 |
| 同意取得状況 | チャネル別の同意有無・取得根拠(名刺交換/フォーム同意/共催相手経由) |
| 配信停止件数 | 月次推移。急増は訴求内容の問題シグナル |
| 監査ログ | 承認・公開・設定変更の全操作(誰が・いつ・何を) |
7.2.4 法改正への追随
改正個人情報保護法(2026年7月17日公布)の全面施行は公布から2年以内(2028年7月17日が期限)、罰則の一部は2027年1月17日先行施行の見込み。四半期に1回、法令要件のレビューをスケジュール化する(運用手順書に定期タスクとして記載)。
8. 統計エンジン仕様
本章は F-15 の実装仕様である。実装言語は問わないが、数値はすべて倍精度浮動小数で扱う。
8.1 2群比率のZ検定(参考指標として表示)
p̂ = (x₁ + x₂) / (n₁ + n₂)
SE = √( p̂(1-p̂) × (1/n₁ + 1/n₂) )
Z = (p̂₁ - p̂₂) / SE
両側 α=0.05 で |Z| > 1.96 のとき有意。ただし本システムでは主表示にしない。 多重比較補正後の値と併記し、ベイズの優越確率を主表示とする(理由: 5.5.7 のガードレール)。
8.2 必要サンプルサイズ
n ≈ 2 × (Z(α/2) + Z(β))² × p̄(1-p̄) / d² d = |p₁ - p₂|
= 15.68 × p̄(1-p̄) / d² (α=0.05両側, 検出力80%)
実験作成画面で、指定した指標・ベース率・検出したい差から必要セッション数と到達見込み日数を必ず提示する。到達に90日以上かかる設定は警告する。
8.3 ベイジアン評価(本命)
各バリアント i について、CVRを Beta分布でモデル化する。
事前分布 : θᵢ ~ Beta(α₀, β₀)
観測 : sᵢ 回のCV、fᵢ 回の非CV
事後分布 : θᵢ | data ~ Beta(α₀ + sᵢ, β₀ + fᵢ) ← 共役性により閉形式
事前分布の決め方(重要): 一様分布 Beta(1,1) は低トラフィックで不安定になる。全バリアントの集約実績から経験ベイズで決める。
全体CVR : p̄ = Σsᵢ / Σ(sᵢ + fᵢ)
事前の強さ : κ (既定 100。「100セッション相当の事前知識」の意味)
α₀ = p̄ × κ , β₀ = (1 - p̄) × κ
これにより、データの少ないバリアントの推定値は全体平均へ引き寄せられ(縮約)、たまたま2件CVした10セッションのバリアントが「CVR 20%」として1位に出る事故を防ぐ。
優越確率 P(最良) はモンテカルロで求める。
for m = 1..M (M = 100,000):
for each variant i: draw θᵢ⁽ᵐ⁾ ~ Beta(αᵢ, βᵢ)
winner[argmax_i θᵢ⁽ᵐ⁾] += 1
P(i が最良) = winner[i] / M
期待損失(Expected Loss) も併せて算出し、「勝者を確定しても失う期待CVRが閾値以下」であることを確定条件に加える。
EL(i) = E[ max_j θⱼ - θᵢ ] 既定閾値: 0.1% (0.001)
8.4 Thompson Sampling(配信)
各リクエストにつき:
1. 対象バリアント集合 A(セグメント条件で絞り込み済み)を取得
2. for each i in A: θᵢ ~ Beta(αᵢ, βᵢ) をサンプリング
3. 選択: argmax_i θᵢ
4. ただし確率 ε(既定 0.05)で A から一様ランダムに選ぶ ← 探索枠を常に残す
5. 表示後、試行数 nᵢ += 1。CV発生時 sᵢ += 1
実装上の注意
- JavaScript/TypeScript には標準のベータ分布サンプラーが無い。ガンマ分布経由(Marsaglia-Tsang法)で実装するか、
jstat等を用いる。 - リクエストごとに10万回のモンテカルロを回してはならない。 配信時は1バリアント1サンプルのみ。優越確率の計算(10万回)はCronによる日次バッチで行い、結果をKVにキャッシュする。
- サンプリング用の乱数はリクエスト単位で独立させる。Workerのグローバルスコープに状態を持たせない。
- パラメータ (α, β) の更新は Durable Objects で直列化する。
8.5 階層ベイズによる因子効果推定
バリアント v が因子水準の集合 L(v) から構成されるとき、ロジット空間で加法モデルを置く。
logit(θ_v) = μ + Σ_{ℓ ∈ L(v)} γ_ℓ
γ_ℓ ~ Normal(0, τ_f²) f は ℓ が属する因子
τ_f ~ HalfNormal(0.5) 因子ごとの効果のばらつき(弱情報事前分布)
τ_f が小さく推定される因子は「その因子は効いていない」、大きい因子は「効いている」と読める。データが薄い水準の γ は 0 へ縮約される(=過大評価しない)。
実装: フルMCMCは重いため、以下のいずれかを用いる。
| 方式 | 特徴 |
|---|---|
| ラプラス近似 + MAP推定 | 軽量。日次バッチで十分間に合う。既定 |
| 変分推論(ADVI) | やや重いが精度が上がる。データ蓄積後に切替を検討 |
| 経験ベイズ(τ をモーメント法で推定) | 最も軽量。初期のデータが少ない時期はこれで足りる |
出力は水準ごとの 事後平均・95%信用区間・全体比 とし、5.5.5 の表として表示する。
8.6 セグメント別推定(コンテキスチュアル)
セグメント s とバリアント v の組合せについて、次の階層構造で推定する。
logit(θ_{v,s}) = μ + α_v + β_s + δ_{v,s}
δ_{v,s} ~ Normal(0, τ_δ²) 交互作用項。τ_δ は小さめの事前分布
交互作用 δ が有意に大きい (v, s) の組が「そのセグメントに特別に効くバリアント」である。τ_δ を小さめに置くことで、データの薄いセグメントで偽の交互作用を検出するのを防ぐ。
セグメントの定義:
| 軸 | 水準 |
|---|---|
| 業種 | 大分類(製造/建設/情報通信/卸小売/サービス/その他) |
| 規模 | 〜19名 / 20〜99名 / 100名〜 |
| チャネル | email / form / ads / seo / social / webinar / direct |
| 接触回数 | 初回 / 2回目以降 |
全組合せは 6×3×7×2 = 252 だが、セッション数が閾値(既定200)未満のセグメントは推定を行わず、上位の階層(業種のみ、チャネルのみ)へフォールバックする。
8.7 判定サマリの表示仕様
実験画面には常に以下を表示する。数値だけを並べない。
┌──────────────────────────────────────────────────────┐
│ 実験: 製造業向け・システム保守 2026Q3 │
│ 状態: bandit / 経過 14日 / 累計 4,820 セッション │
├──────────────────────────────────────────────────────┤
│ 現在の最有力: V-023 (属人化解消 × 実績先行 × 資料DL) │
│ 推定CVR 3.4% [95%信用区間 2.6% – 4.3%] │
│ 最良である確率 78% 期待損失 0.31% │
│ │
│ ⚠ 確定条件に未到達です │
│ ・最良確率 78% < 95%(あと約1,900セッション) │
│ ・期待損失 0.31% > 0.10% │
│ この段階で運用を確定しないでください。 │
├──────────────────────────────────────────────────────┤
│ 因子効果(この実験でいま言えること) │
│ 訴求軸「属人化解消」 +38% [+9% – +71%] ★確度高 │
│ 構成「実績先行型」 +27% [−2% – +58%] 確度中 │
│ CTA「資料をダウンロード」+18% [+1% – +37%] ★確度高 │
└──────────────────────────────────────────────────────┘
9. 計測仕様
9.1 イベントスキーマ(共通部)
すべてのイベントは以下の共通フィールドを持つ。
| フィールド | 型 | 内容 |
|---|---|---|
event |
string | イベント名(F-14 の一覧) |
ts |
int | 発生時刻(UNIX ミリ秒、サーバ側で上書き) |
visitor_id |
string | Cookie識別子(UUIDv4) |
session_id |
string | セッション識別子(30分無操作でローテート) |
company_id |
string? | 判明している場合のみ |
tracking_code |
string? | /r/{code} 経由の場合 |
experiment_id |
string? | 実験対象の場合 |
variant_id |
string? | 同上 |
page |
string | パス |
channel |
enum | email / form / ads / seo / social / webinar / direct / abm |
utm |
object? | source / medium / campaign / content / term |
device |
enum | desktop / tablet / mobile |
is_bot |
bool | ボット判定結果 |
9.2 GA4との併用方針
| 用途 | 使うもの |
|---|---|
| 実験判定・バリアント別分析 | 自前計測を正(F-14) |
| 全社共通のサイト全体指標、経営報告 | GA4(既存F-09を継続) |
| 広告媒体のコンバージョン最適化 | GA4 + 媒体タグ(媒体の学習に必要) |
| サーバ側からのイベント補完 | GA4 Measurement Protocol(下記の制約に留意) |
| 自然検索での見え方・インデックス状況 | Google Search Console(9.3項)。実験の判定には使わない |
Measurement Protocol の制約(実装時に必ず守る)
- 1リクエスト最大25イベント、パラメータ各25個、POSTボディ130KB未満
client_idは自前生成せず、_gaCookie 由来の値を使う。独自IDだと地理・デバイス情報が付かず(not set)の原因になるsession_id/session_numberを明示しないと別セッション扱いになる- リアルタイム反映は保証されない。GA4は「補完」であって記録の正ではない
api_secretはローテーション可能な形で環境設定(F-10)に置く
9.3 Google Search Console の位置づけ
結論: Search Console は LPバリアント実験の効果測定には使えない。 ただし別の役割で必須になる。無料で導入コストがゼロなため「これで測れるのでは」と考えやすいが、測れるものが根本的に違う。
9.3.1 なぜ実験の判定に使えないのか
| # | 理由 | 内容 |
|---|---|---|
| 1 | 計測対象が Google 自然検索だけ | 表示回数・クリックは Google 検索結果からのものに限られる。メール営業のクリック・広告・SNS・直接流入は一切含まれない。本システムのLP流入はほぼ全てこれらであり、GSCから見ると存在しないに等しい |
| 2 | 実験バリアントは noindex である |
6.1.3項の方針により、実験LP・ABM-LP・広告LPは意図的に検索対象から外している。インデックスされないページは検索パフォーマンスに現れない。 「noindexで守りつつGSCで測る」は設計として両立しない |
| 3 | 指標が4つしかない | クリック数 / 表示回数 / CTR / 平均掲載順位 のみ。コンバージョン・スクロール・滞在時間・フォーム送信は取得できない。 実験の判定変数(CV・CTAクリック率・スクロール到達率)がどれも取れない |
| 4 | 反映が2〜3日遅れる | 逐次淘汰(5.5.3)の日次判定に間に合わない |
| 5 | データが切り詰められる | UIの検索パフォーマンスは代表サンプル1,000行まで。「最も重要なデータ行のみが保存・表示される」と公式に明記。50バリアント×セグメントの粒度には耐えない |
| 6 | 匿名化クエリが除外される | 利用者数の少ないクエリは行として表示されない(合計値には含まれる) |
一言でいえば、Search Console は「検索結果に出てクリックされたか」までしか見ない。本システムが知りたいのは「着地した後にどう動いたか」であり、守備範囲が重なっていない。
9.3.2 では何に使うのか — 2つの必須の役割
役割① コンプライアンス監視(G-03 / G-06)の実測手段
本システムの最大のリスクは「大量生成LPが誤ってインデックスされること」である。その検知は Search Console でしかできない。
| 確認項目 | 見る場所 | 期待する状態 |
|---|---|---|
| 実験LP・ABM-LPが登録されていないこと | ページインデックス登録レポート > 未登録 > 「URL に noindex が指定されています」 | 生成した全バリアントがここに入る |
| 代表LP・記事のインデックス率 | ページレポートをサイトマップでフィルタ | インデックス済み ÷ 検出 ≧ 70%(G-06の閾値) |
| 個別URLの状態確認 | URL Inspection API | 「インデックス登録を許可?」= いいえ |
URL Inspection API のクォータはサイトあたり 600 QPM / 2,000 QPD。 1回の公開が50ページ以内(G-06)なので、日次で全バリアントを検査しても十分収まる。G-06 の自動チェックはこのAPIで実装する。
⚠ robots.txt でブロックしていると、Googleが noindex 自体を読めないため「インデックス登録を許可?」が常に「はい」と表示される。14.2項で robots.txt を使わない理由の一つがこれ(監視が効かなくなる)。
役割② 代表LP・コンテンツ記事(F-17)の自然検索実績
インデックスさせる代表LP・記事については、GSCが正しい道具になる。クエリ別の表示回数・順位・CTRを見て、コンテンツの改善やクラスタ設計(6.1.4)に反映する。ただしコンバージョンは測れないので、成果はF-14の自前計測と突き合わせる。
9.3.3 3つのツールの役割分担
| 知りたいこと | 使うもの | 理由 |
|---|---|---|
| どのバリアントが勝ったか | 自前計測(F-14) + 統計エンジン(F-15) | バリアント別のCV・行動データが即時に要る。外部ツールでは粒度・遅延ともに足りない |
| 着地後の行動(スクロール・CTA・フォーム) | 自前計測(F-14) | GSCにもGA4にも必要な粒度がない |
| サイト全体の指標・経営報告用の数字 | GA4(既存F-09) | 全社共通の物差しとして継続 |
| 表示速度(CWV)の実測 | web-vitals + Cloudflare Web Analytics |
— |
| 自然検索での見え方・順位・クエリ | Search Console | ここはGSCにしかない |
| noindexが効いているか / インデックス率 | Search Console(URL Inspection API) | 同上。G-03/G-06の実測手段 |
「効率」で選ぶなら順序が逆になる。 GSCは導入コストがゼロだが、実験の判定に必要なデータを1つも供給しない。自前計測(F-14)は実装コストがかかるが、判定に必要なデータを全て、遅延なく供給する。測れないものを安く測っても、意思決定は1つも進まない。
9.4 ボット・無効トラフィックの除外
| 判定 | 内容 |
|---|---|
| UA判定 | 既知のクローラ・監視ツールのUser-Agent |
| 行動判定 | ページ表示から100ms以内のスクロール100%到達、CWVが取得できない、マウス移動ゼロでのフォーム送信 |
| Turnstile | フォーム送信時のトークン検証失敗 |
| 社内除外 | 自社IPレンジ・社員のCookieフラグ |
| 広告品質 | 同一IPからの短時間大量アクセス |
除外対象は削除せずフラグを立てる。集計からは除くが、監査・不正検知のために生データは保持する。
9.5 データ保持
| データ | 保持期間 | 保存先(Cloudflare構成の場合) |
|---|---|---|
| 生イベント | 3か月 | Workers Analytics Engine |
| 日次サマリ(バリアント×セグメント) | 5年 | D1 |
| 実験結果・統計パラメータ | 無期限 | D1 |
| ヒートマップ集計 | 6か月 | R2(集計済みJSON) |
| LP HTMLスナップショット | 実験終了後2年 | R2 |
| 監査ログ | 5年 | D1 |
10. 画面仕様(追加)
10.1 画面一覧
| 画面ID | 画面名 | 概要 | 権限 |
|---|---|---|---|
| S-13 | LPライブラリ管理 | ブロック・デザイントークン・因子定義(F-11) | admin |
| S-14 | 実験一覧 | 実験のステータス・進捗・主要指標 | admin/member |
| S-15 | 実験作成ウィザード | ターゲット→サービス→因子→生成設定。必要サンプル数の事前提示を含む | admin/member |
| S-16 | バリアントレビュー | 50件のプレビュー・スコア・事実チェック結果。承認/差戻し | admin/member |
| S-17 | 実験ダッシュボード | 8.7の判定サマリ、因子効果、セグメント別最良 | admin/member |
| S-18 | LPヒートマップ | スクロール到達・クリック分布・離脱位置(バリアント別) | admin/member |
| S-19 | ABM-LP管理 | 対象企業選定・生成・承認・閲覧状況(F-16) | admin/member |
| S-20 | SEOクラスタ管理 | クラスタ定義・紐づけ・順位/流入・インデックス率(F-17) | admin/member |
| S-21 | 広告オーディエンス | セグメント定義・同期状況・除外リスト(F-18) | admin |
| S-22 | ウェビナー管理 | 開催情報・申込・視聴・フォロー(F-19) | admin/member |
| S-23 | 資料・ゲート管理 | 資料マスタ・DL状況・シナリオ(F-20) | admin/member |
| S-24 | SNS投稿カレンダー | 投稿予約・承認・エンゲージ(F-21) | admin/member |
| S-25 | 架電キュー | 優先度付きリード一覧・タッチポイント時系列・論点候補(F-23) | admin/member |
| S-26 | 統合アトリビューション | チャネル別CPA・寄与マトリクス・ファネル(F-23) | admin/member |
| S-27 | コンプライアンス | ガードレール状態・外部送信公表・監査ログ(F-24) | admin |
10.2 主要画面の補足
S-15 実験作成ウィザード
最終ステップで、選択した因子構成から次を必ず提示し、ユーザーの同意を得てから生成に進む。
生成されるバリアント数 : 50 (5 × 5 × 2)
第0層通過見込み : 15〜25件
第1層(逐次淘汰)所要 : 約 10,500 セッション / 現在の流入(月5,000)で約 63日
第2層(CV判定)所要 : 約 19,100 セッション (5件 × 3,820) / 約 115日
⚠ 全工程の完了まで約 178日(5.9か月)かかる見込みです。
期間を短縮するには:
・判定指標をCVからCTAクリック率に変える(1件あたり約1,095)
→ 第2層 約33日 / 全工程 約96日(3.2か月)
・因子を減らす(例: CTAを固定して 5×5=25 にする)
・流入を増やす(広告出稿・メール配信量の増加)
この「先に現実を見せる」設計が、本システムで最も重要なUXである。 統計的に不可能な実験を始めさせない。
S-16 バリアントレビュー
- 50件をカード形式で一覧(スクリーンショット + スコア + 因子ラベル)
- 事実チェック違反は赤枠で最上部に固定表示し、承認ボタンを無効化
- 一括承認は可能だが、違反ゼロのバリアントのみが対象
- 差戻し時は理由を選択(事実誤り/表現が硬い/訴求がずれている/デザイン崩れ)。理由は次回生成のプロンプトに反映される
S-25 架電キュー
- 1画面1リードのカード形式(営業がそのまま電話をかけられる)
- 「話すべき論点の候補」を3点まで自動提示
- 架電結果を1クリックで記録(接続/不在/NG/商談化)
11. データベース設計(追加)
11.1 ER概要
companies (既存)
│1 ┌── lp_libraries
│ │ │1
│n │ │n
approaches (既存) ──1─n── lp_assignments │ lp_blocks
│ │n │
│ │ │
│ lp_variants ─n─1┴─ lp_experiments
│ │1 │1
│ │n │n
│ lp_events experiment_rounds
│ │1
│ │n
│ factor_effects
│
├──n── abm_pages
├──n── webinar_registrations ──n─1── webinars
├──n── asset_downloads ──────n─1── assets
├──n── call_queue_items
└──n── touchpoints ← 全チャネルの統合時系列
11.2 主要テーブル定義
lp_libraries — LPブロックライブラリ
| カラム | 型 | 制約 | 内容 |
|---|---|---|---|
| id | TEXT | PK | ライブラリID |
| name | TEXT | NOT NULL | 名称 |
| version | INTEGER | NOT NULL | バージョン。実験実行中は変更不可 |
| design_tokens | TEXT | NOT NULL | CSS変数定義(JSON) |
| factors | TEXT | NOT NULL | 因子・水準定義(JSON) |
| banned_phrases | TEXT | 禁止表現リスト(JSON配列) | |
| required_notices | TEXT | 必須表記(JSON) | |
| is_locked | INTEGER | DEFAULT 0 | 実験実行中のロック |
| created_at / updated_at | TEXT | ISO8601 |
lp_blocks — ブロック
| カラム | 型 | 制約 | 内容 |
|---|---|---|---|
| id | TEXT | PK | |
| library_id | TEXT | FK | |
| block_type | TEXT | NOT NULL | hero/problem/solution/proof/… |
| name | TEXT | NOT NULL | |
| template | TEXT | NOT NULL | HTMLテンプレート(差込変数を含む) |
| variables | TEXT | 差込変数の定義(JSON) | |
| sort_order | INTEGER |
lp_experiments — 実験
| カラム | 型 | 制約 | 内容 |
|---|---|---|---|
| id | TEXT | PK | |
| name | TEXT | NOT NULL | |
| status | TEXT | NOT NULL | draft/screening/review/exploring/bandit/fixed/archived。archived は5.5.2の遷移図に現れない終端状態で、確定・中止後に一覧から外すための実装上のステート |
| library_id / library_version | TEXT/INTEGER | FK | |
| target_def | TEXT | NOT NULL | ターゲット定義(JSON) |
| service_desc | TEXT | NOT NULL | サービス説明 |
| cv_type | TEXT | NOT NULL | download/inquiry/booking/webinar |
| primary_metric | TEXT | NOT NULL | cv / cta_click / scroll50 |
| factors_used | TEXT | NOT NULL | 使用因子(JSON) |
| min_sessions_per_variant | INTEGER | DEFAULT 300 | ラウンド最小サンプル |
| min_days | INTEGER | DEFAULT 7 | 最短実験期間 |
| epsilon | REAL | DEFAULT 0.05 | 探索枠 |
| prior_kappa | REAL | DEFAULT 100 | 事前分布の強さ |
| current_round | INTEGER | DEFAULT 0 | |
| winner_variant_id | TEXT | 確定した勝者 | |
| started_at / fixed_at | TEXT |
lp_variants — バリアント
| カラム | 型 | 制約 | 内容 |
|---|---|---|---|
| id | TEXT | PK | |
| experiment_id | TEXT | FK | |
| factor_levels | TEXT | NOT NULL | 因子水準の組合せ(JSON) |
| content_json | TEXT | NOT NULL | LLM生成の構造化コンテンツ |
| html_r2_key | TEXT | 生成HTMLのR2キー | |
| screenshot_r2_key | TEXT | プレビュー画像 | |
| embedding_id | TEXT | 重複検査用ベクトルID | |
| screen_score | REAL | 第0層スコア | |
| fact_check_status | TEXT | NOT NULL | pass/fail |
| fact_check_detail | TEXT | 違反内容(JSON) | |
| status | TEXT | NOT NULL | generated/screened_out/pending_review/approved/rejected/active/eliminated |
| eliminated_round | INTEGER | 脱落したラウンド | |
| alpha / beta | REAL | DEFAULT 0 | ベータ分布パラメータ(CV) |
| sessions / cta_clicks / scroll50 / cvs | INTEGER | DEFAULT 0 | 集計値(DOから同期) |
| approved_by / approved_at | TEXT |
lp_assignments — 割付
| カラム | 型 | 制約 | 内容 |
|---|---|---|---|
| id | TEXT | PK | |
| experiment_id / variant_id | TEXT | FK | |
| visitor_id | TEXT | NOT NULL | |
| company_id | TEXT | FK | 判明時 |
| tracking_code | TEXT | ||
| context | TEXT | 割付時の文脈(JSON) | |
| assigned_at | TEXT | NOT NULL |
UNIQUE(experiment_id, visitor_id) および UNIQUE(experiment_id, company_id)(company_id が NULL でない場合)で、同一実験内の割付を一意にする。
lp_events — イベント(日次サマリ)
生イベントは Analytics Engine に置き、本テーブルには日次×バリアント×セグメントの集計を保持する。
| カラム | 型 | 内容 |
|---|---|---|
| id | TEXT | PK |
| date | TEXT | YYYY-MM-DD |
| experiment_id / variant_id | TEXT | |
| segment_key | TEXT | 業種|規模|チャネル(未分類は *) |
| sessions / views / scroll50 / scroll100 / cta_clicks / form_starts / form_submits / cvs | INTEGER | |
| engaged_ms_sum / engaged_ms_count | INTEGER | 平均滞在の算出用 |
| lcp_p75 / inp_p75 / cls_p75 | REAL |
INDEX(experiment_id, date), INDEX(variant_id, date), INDEX(segment_key, date)
factor_effects — 因子効果推定結果
| カラム | 型 | 内容 |
|---|---|---|
| id | TEXT | PK |
| experiment_id | TEXT | |
| computed_at | TEXT | 推定実行日時 |
| factor / level | TEXT | 因子ID・水準 |
| segment_key | TEXT | セグメント(全体は *) |
| posterior_mean | REAL | 事後平均CVR |
| ci_low / ci_high | REAL | 95%信用区間 |
| lift_vs_overall | REAL | 全体比 |
| n_sessions / n_cvs | INTEGER | 根拠データ量 |
abm_pages — ABM専用LP
| カラム | 型 | 内容 |
|---|---|---|
| id | TEXT | PK |
| company_id | TEXT | FK |
| account_token | TEXT | UNIQUE。24文字以上のランダム |
| level | TEXT | L2 / L3 |
| content_json / html_r2_key | TEXT | |
| expires_at | TEXT | 既定 発行+90日 |
| approved_by / approved_at | TEXT | |
| first_viewed_at / last_viewed_at | TEXT | |
| view_count / revisit_count | INTEGER |
touchpoints — 全チャネル統合時系列
| カラム | 型 | 内容 |
|---|---|---|
| id | TEXT | PK |
| company_id | TEXT | FK(名寄せ後に埋まる) |
| visitor_id | TEXT | |
| occurred_at | TEXT | |
| channel | TEXT | email/form/lp/ads/seo/social/webinar/asset/call/abm |
| event_type | TEXT | sent/open/click/view/download/register/attend/submit/call/deal |
| ref_type / ref_id | TEXT | 参照先(approach_id / variant_id / webinar_id 等) |
| meta | TEXT | 付帯情報(JSON) |
INDEX(company_id, occurred_at), INDEX(visitor_id, occurred_at)
その他、webinars / webinar_registrations / assets / asset_downloads / seo_clusters / ad_audiences / social_posts / call_queue_items / compliance_flags / audit_logs を同様に定義する(詳細は実装時に確定)。
11.3 設計方針
- 書き込み頻度の高いカウンタをRDBに直接UPDATEしない。 Durable Objects で直列化し、日次でD1へ同期する。
- 生イベントはRDBに入れない(Analytics Engine)。RDBが持つのは日次サマリまで。
lp_eventsは日付でパーティション相当の設計とし、古い月のデータはR2へアーカイブする。- 既存 v1.2 のテーブル(
companies/approaches/templates等)は変更しない。新テーブルから外部キーで参照するのみ。 - ⚠
company_idの型は v1.2 のcompanies.idに合わせる。 v1.2 はINTEGER PRIMARY KEY AUTOINCREMENTを採用しているため、本書の表でTEXTと記したcompany_id/approach_id等の既存テーブルを参照するカラムは INTEGER とする(本書独自のID(実験・バリアント・ライブラリ等)は TEXT の推測困難な文字列を使う)。実装時にこの対応表を最初に確定すること。
12. API設計(追加)
12.1 公開エンドポイント(認証不要 / LP配信・計測)
| メソッド | パス | 内容 |
|---|---|---|
| GET | /r/{tracking_code} |
既存F-09の計測リダイレクト。拡張: LP実験が紐づく場合はリダイレクトせず直接LPを描画 |
| GET | /lp/{slug} |
広告・SEO・SNSからの着地。バリアント割付+描画 |
| GET | /lp/{slug}/p/{variant_id} |
バリアント直接指定(noindex・計測対象外) |
| GET | /a/{account_token} |
ABM専用LP |
| POST | /c |
計測イベント受信(sendBeacon 用。バッチ配列を受け付ける) |
| POST | /lp/{slug}/submit |
LPフォーム送信(Turnstile検証必須) |
| GET | /robots.txt |
動的生成(G-04/G-05のガードを適用) |
| GET | /sitemap.xml |
動的生成(index対象ページのみ) |
/c のレート制限: 1 visitor_id あたり 60イベント/分。超過分は破棄する(エラーを返さない)。
12.2 管理API(認証必須)
| メソッド | パス | 内容 |
|---|---|---|
| GET/POST/PUT | /api/lp/libraries |
ライブラリCRUD |
| GET/POST/PUT | /api/lp/blocks |
ブロックCRUD |
| GET/POST | /api/lp/experiments |
実験一覧・作成 |
| POST | /api/lp/experiments/{id}/estimate |
必要サンプル数・所要日数の試算(作成前に呼ぶ) |
| POST | /api/lp/experiments/{id}/generate |
生成ジョブ起動(非同期) |
| GET | /api/lp/experiments/{id}/variants |
バリアント一覧 |
| POST | /api/lp/variants/{id}/approve |
承認(G-01/G-02を検査) |
| POST | /api/lp/variants/{id}/reject |
差戻し(理由付き) |
| POST | /api/lp/experiments/{id}/start |
実験開始 |
| POST | /api/lp/experiments/{id}/advance-round |
逐次淘汰の次ラウンドへ(通常はCronが実行) |
| POST | /api/lp/experiments/{id}/fix |
勝者確定(確定条件を検査。未達なら 409) |
| GET | /api/lp/experiments/{id}/stats |
判定サマリ・因子効果・セグメント別 |
| GET | /api/lp/experiments/{id}/heatmap |
ヒートマップ集計 |
| GET/POST | /api/abm/pages |
ABM-LP一覧・生成 |
| GET/POST | /api/seo/clusters |
SEOクラスタ |
| POST | /api/seo/publish |
コンテンツ公開(G-06を検査) |
| GET/POST | /api/ads/audiences |
広告オーディエンス |
| POST | /api/ads/audiences/{id}/sync |
媒体へ同期(G-08を検査) |
| GET/POST | /api/webinars |
ウェビナー |
| POST | /api/webinars/{id}/import-attendance |
視聴データ取込 |
| GET/POST | /api/assets |
資料マスタ |
| GET | /api/attribution/report |
アトリビューションレポート |
| GET | /api/calls/queue |
架電キュー |
| POST | /api/calls/{id}/result |
架電結果記録 |
| GET | /api/compliance/status |
ガードレール状態 |
| GET | /api/compliance/external-transmission-text |
外部送信公表テキストの生成 |
12.3 共通仕様
- 認証: 既存v1.2の方式を継承(案Bの場合は Cloudflare Access JWT による検証)
- レスポンス形式・エラーコード体系は v1.2 の 6.2 を継承する
- 非同期ジョブは
202 Accepted+job_idを返し、GET /api/jobs/{job_id}で進捗を取得する - 全ての変更系APIは監査ログに記録する(操作者・日時・対象・差分)
12.4 定期実行(Cron)
| 実行時刻 | 処理 |
|---|---|
| 毎時 00分 | イベントの集計・lp_events への日次サマリ更新 |
| 毎時 05分 | GA4 Data API 増分同期(既存F-09) |
| 毎日 02:00 | 優越確率(モンテカルロ10万回)の再計算 → KVへ反映 |
| 毎日 02:30 | 因子効果・セグメント別効果の推定(階層ベイズ) |
| 毎日 03:00 | 逐次淘汰の判定・ラウンド進行 |
| 毎日 04:00 | スコア減衰(3%)・架電キューの再構築 |
| 毎日 05:00 | 広告オーディエンスの同期 |
| 毎日 06:00 | インデックス率チェック(G-06)・noindex 欠落監視(G-03) |
| 毎週 月 07:00 | 週次レポートのメール配信 |
| 毎月 1日 | 3か月超の生イベントのR2アーカイブ |
13. 非機能要件
| 分類 | 要件 |
|---|---|
| 可用性 | LP配信の可用性 99.9% 以上。管理画面は 99.5%。LP配信と管理機能は障害を分離する(管理画面が落ちてもLPは配信され続けること) |
| 性能(LP) | TTFB 200ms以下(p75/国内)、LCP 2.5秒以下(p75)、INP 200ms以下(p75)、CLS 0.1以下(p75) |
| 性能(管理) | 一覧表示 2秒以内、実験ダッシュボード 3秒以内 |
| スケール | 同時1,000リクエスト/秒のLP配信に耐えること(広告・メール一斉送信直後を想定) |
| 計測の欠損許容 | 計測イベントの欠損率 5%未満。ただし計測失敗がLP表示を阻害してはならない(計測は完全に非同期) |
| データ整合性 | 割付は同一訪問者に対して常に同一であること(実験期間中) |
| セキュリティ | 管理画面はIP制限またはZero Trust認証。LPフォームはTurnstile必須。CSP を設定し外部スクリプトを禁止 |
| 秘密情報 | LLM APIキー・媒体APIキーは秘密管理サービスに置き、コード・環境変数に平文で書かない |
| バックアップ | DBは日次バックアップ+7日以上のポイントインタイム復旧。LP HTMLはR2に保存 |
| ログ | 個人情報・APIキーをログに出力しない |
| 監査 | 承認・公開・設定変更・法務フラグ変更の全操作を5年保持 |
| 拡張性 | 因子・水準・ブロック・チャネルはコード変更なしに追加できること |
| 国際化 | 日本語のみ(将来の多言語化を妨げない設計とする) |
14. 法令・コンプライアンス
14.1 適用される法令・ガイドライン
| 法令 | 関係する機能 | 対応 |
|---|---|---|
| 特定電子メール法 | F-19, F-20(メール配信) | 同意取得の記録、送信者情報の明示、配信停止リンク。既存F-08の共通フッターを継承 |
| 改正電気通信事業法(外部送信規律・第27条の12) | F-14, F-18, F-21, F-22 | 送信情報の種別・送信先・利用目的の公表。F-24 G-07 で自動生成 |
| 個人情報保護法(個人関連情報) | F-18, F-22 | 提供先での個人データ紐付けが想定される場合の同意確認。法務確認フラグで機能を封鎖 |
| 改正個人情報保護法(2026年7月17日公布) | 全体 | Cookie等の不適正利用禁止の強化、課徴金制度。四半期ごとにレビュー |
| 景品表示法 | F-12(生成コピー) | 優良誤認・有利誤認の防止。禁止表現リストで機械検査 |
| 著作権法 | F-12(生成コンテンツ)、F-21 | 生成物の類似性チェック、引用の適正化 |
| Google スパムポリシー | F-12, F-17 | scaled content abuse / doorway pages への抵触回避。noindex の徹底 |
| Google Ads ポリシー | F-13, F-18 | LPの利便性・重複コンテンツ・表示URLとの一致。AdsBotのクロールを妨げない |
| 各SNS/媒体の利用規約 | F-21 | API利用制限の遵守。規約変更時のフォールバック |
14.2 インデックス制御の設計根拠(再掲・重要)
- 大量生成LPを検索インデックスに載せると、scaled content abuse および doorway pages に抵触するリスクがある
- 除外は
<meta name="robots" content="noindex,follow">で行う。robots.txt でブロックしてはならない(他ページからのリンク経由で検索結果に出うるため、確実な除外にならない) - AdsBot を robots.txt で拒否してはならない(広告の品質評価・配信に支障)
- インデックスさせるページ(代表LP・記事)は、AI下書きに人が一次情報・独自データを加筆したものに限る
14.3 AI生成物の運用ルール
- 人の承認なしに公開しない。例外を作らない(F-24 G-01)
- 実績・数値・固有名詞はデータベースの値のみを使い、AIに創作させない(F-12.2.4)
- 生成に使用したモデル名・プロンプトのバージョン・生成日時をバリアントに記録する(後から検証できるようにする)
- 生成物に対する苦情・指摘があった場合、該当バリアントを即時停止できる緊急停止機能を持つ
- 顧客名・事例の使用は、事例DB上で「公開許諾済み」フラグが立っているものに限る
14.4 運用ルール(推奨)
| ルール | 内容 |
|---|---|
| 承認者の指定 | AI生成物の承認者を最低2名指定し、単独承認を避ける(重要な実験) |
| 実験の記録 | 開始前に仮説を文書化し、結果と突き合わせる(後付けの解釈を防ぐ) |
| 四半期レビュー | 法令要件・ガードレールの有効性・実験運用の妥当性を四半期ごとに点検 |
| 事故時の手順 | 誤情報公開・過剰配信・情報漏洩の各シナリオについて、停止手順と連絡経路を運用手順書に定める |
15. 段階導入計画
「50パターン生成」から作り始めない。受け皿(LP配信)と物差し(計測)を先に作る。 生成は最後でよい。
フェーズ0 — 基盤(1〜1.5か月)
| # | 内容 | 完了条件 |
|---|---|---|
| 0-1 | LP配信基盤の構築(F-13の最小版) | 手書きLP 2枚を配信でき、/r/{code} から企業を識別できる |
| 0-2 | 行動計測の実装(F-14) | scroll/cta/form/cv/vitals が記録され、ダッシュボードで見える |
| 0-3 | ブロックライブラリの初期整備(F-11) | 10ブロック・デザイントークン一式。ここは人手で作る |
| 0-4 | コンプライアンス基盤(F-24の G-03/G-04/G-05/G-07/G-11) | noindex・外部送信公表が自動で担保される |
フェーズ0だけで既に効果が出る。 既存メール営業のクリック先が「全社共通ページ」から「そのメールの訴求に合ったLP」に変わるだけで、CVRは改善しうる。
フェーズ1 — 実験(1〜1.5か月)
| # | 内容 | 完了条件 |
|---|---|---|
| 1-1 | 手動バリアント2〜4本のA/Bテスト(F-15の第1層のみ) | 逐次淘汰が動き、プロキシ指標で勝敗が判定される |
| 1-2 | ベイジアン判定の実装(8.3) | 優越確率・期待損失・信用区間が表示される |
| 1-3 | 必要サンプル数の事前提示(S-15) | 実現不可能な実験を作成前に止められる |
フェーズ2 — AI生成(1〜2か月)
| # | 内容 | 完了条件 |
|---|---|---|
| 2-1 | AI生成パイプライン(F-12) | 因子直積から50件が生成され、第0層で15〜25件に絞られる |
| 2-2 | 事実チェック・禁止表現検査 | 違反バリアントが承認できない |
| 2-3 | レビュー画面(S-16) | 50件を30分以内でレビューできる |
| 2-4 | 因子効果の階層ベイズ推定(8.5) | 「どの訴求軸が効くか」が読める |
フェーズ3 — パーソナライズ(1か月)
| # | 内容 | 完了条件 |
|---|---|---|
| 3-1 | セグメント別推定(8.6) | セグメント別の最良バリアントが出る |
| 3-2 | コンテキスチュアル配信(F-13③) | セグメントに応じて出し分けられる |
| 3-3 | ABM-LP(F-16 L2) | 重点企業に専用LPを発行できる。再訪検知が架電キューに繋がる |
フェーズ4 — チャネル拡張(2〜3か月)
| 優先度 | 機能 | 理由 |
|---|---|---|
| 1 | F-19 ウェビナー | CPLが最も低い(3,000〜8,000円)。工程のほぼ全てが自動化可能 |
| 2 | F-20 資料ゲート/ナーチャリング | 既存フォーム・メール基盤の延長で実装が軽い |
| 3 | F-23 アトリビューション/架電キュー | チャネルが増えて初めて必要になる。増える前に作っても使えない |
| 4 | F-18 広告オーディエンス連携 | 法務確認(G-09)が前提 |
| 5 | F-17 SEOコンテンツハブ | 効果の立ち上がりが数か月〜1年と遅い。早く始めるが期待は後 |
| 6 | F-21 SNS・コミュニティ | 効果測定の土台づくりが目的 |
| 7 | F-22 匿名訪問企業推定 | 法務確認とPoCでの精度実測が前提。最後 |
15.1 各フェーズの判断基準
フェーズを進める前に、必ず以下を確認する。前フェーズの成果が出ていないのに次へ進まない。
| フェーズ | 次へ進む条件 |
|---|---|
| 0 → 1 | LPのCVRが測定できており、既存の汎用ページより改善している |
| 1 → 2 | 手動2〜4本の実験で、逐次淘汰の判定が実際に機能した |
| 2 → 3 | AI生成LPが手動LPと同等以上のCVRを出した(これが出ないなら生成を続ける意味がない) |
| 3 → 4 | セグメント別の出し分けで、全体最良より高いCVRが出るセグメントが存在した |
16. 今後の検討事項
| # | 項目 | 内容 |
|---|---|---|
| 1 | LLMモデルの選定 | Workers AI(安価・低レイテンシ)と外部LLM(高品質)の使い分け。生成品質のブラインド評価を実施して決める |
| 2 | 画像の自動生成 | ヒーロー画像・図版のAI生成。ブランド一貫性と著作権の整理が先 |
| 3 | 動画LP | ウェビナーのハイライトをLPに埋め込む。Cloudflare Stream の利用 |
| 4 | フォームの動的最適化 | 項目数・順序をバンディットで最適化する |
| 5 | 多言語化 | 英語LPの自動生成。海外案件を狙う場合 |
| 6 | 受託案件への横展開 | 本基盤をテンプレート化して顧客に提供する。マルチテナント化の要否判断 |
| 7 | 比較サイト連携 | 発注ナビ・アイミツ等、受託開発向けマッチングサイトのリード取込 |
| 8 | 商談・受注データの統合 | 現状はスコープ外。SFA導入時にアトリビューションを受注金額まで延ばす |
| 9 | オフラインDM | 高スコア休眠企業への手紙自動発送(印刷会社CSV連携)。FAXDMは特商法の制約に注意 |
| 10 | 生成の世代進化 | 勝ち水準を配合した次世代バリアントの自動生成(F-15.5.5のフィードバックループの自動化) |
17. 出典
Google 公式(検索・広告)
- Spam policies for Google web search — scaled content abuse の定義
- Google Search's guidance about AI-generated content
- Doorway pages
- Block search indexing with noindex
- Consolidate duplicate URLs
- Guide to optimizing for generative AI features on Google Search — llms.txt 不要の明言
- Destination requirements (Google Ads)
- About Quality Score for Search campaigns
Google Analytics / Web
- GA4 engagement rate and bounce rate
- GA4 User engagement
- Measurement Protocol reference
- GA4 Data API PropertyQuota
- About data thresholds
- web.dev LCP / INP / CLS
統計
- A Tutorial on Thompson Sampling (Russo et al., Stanford)
- Almost Optimal Exploration in Multi-Armed Bandits (Karnin, Koren, Somekh 2013) — Sequential Halving
- Two-proportion Z-test
- Optimizely: Test tips for low-traffic sites
日本のBtoBマーケティング
- BtoBのCPL相場一覧(start-link)
- リスティング広告のCPA(data-be.at)
- LinkedIn広告の費用(data-be.at)
- BtoBリスティング広告の業種別平均CPA(note)
- ウェビナー・イベントの参加率(リコー)
- ITreview 掲載料金(キャククル)
- BOXIL 広告掲載費用(キャククル)
日本の法令
- 特定電子メールの送信の適正化等に関する法律(総務省)
- 改正電気通信事業法による外部送信規律(のぞみ総合法律事務所)
- 外部送信規律と個人関連情報の第三者提供(JPAC)
- 2026年 個人情報保護法改正(牛島総合法律事務所)
- IPアドレスから得られる情報は個人情報にあたるのか(docodoco)
Cloudflare
- Workers limits / pricing
- Workers AI pricing / models
- D1 limits / pricing
- Workers Analytics Engine
- Durable Objects pricing
- Gradual deployments
- Full-stack development on Cloudflare Workers — Pages ではなく Workers 推奨
- 社内資料:
cloudflare-feature-catalog-synon.md、cf-internal-app-starter/
改訂履歴
| 版 | 日付 | 内容 | 作成 |
|---|---|---|---|
| v2.0 | 2026-08-15 | 新規作成。F-11〜F-24 を定義。MA_機能仕様書.md v1.2 の追加機能編 |
— |
本書の数値・ベンチマークについて 外部の公開値は出典元により幅が大きく、当社の条件と一致するとは限らない。すべて初期値として扱い、運用開始後は自社の実測値に置き換えること。「公開データが見当たらなかった」と記した項目は、推測で埋めず実測で埋める。