CMSエディタを開かなくなって数ヶ月が経った
以前のやり方は1ページ45分
HubSpotを開く。CMSエディタに入る。読み込みを待つ。ブロックをドラッグする。ヘッドラインを書く。LinkedInに切り替えて会社を調べる。戻る。ボディコピーを書く。ペインポイントを推測する。プレビュー。調整。公開。
速い人で45分。しかもリサーチが手動で急いでいるから、アウトプットは汎用的になる。
すべてのABMターゲットに対してこれをやっていた。すべてのアウトバウンドシーケンスに対応するランディングページが必要だった。計算が合わない。20アカウントは、1通のメールを送る前にCMS作業だけで15時間を意味する。
スタック
4つのツールを連結して、一つのアウトプットが次のインプットになるようにした。
Exa MCPがリアルタイムの企業インテリジェンスを取得する。企業情報、テックスタック、最新ニュース、採用シグナル。スクレイピングのゴミデータや古いデータベースのレコードじゃない。実際にプロンプトに投入できる構造化データだ。1回のMCPコールで、20分の手動LinkedInリサーチより多くのコンテキストが返ってくる。
Python SDKがフローをオーケストレーションする。Exaのリサーチ出力を受け取り、コンテキストペイロードをフォーマットし、モデルに送信し、HTMLテンプレートを処理する。これが接着層だ。リサーチと生成の間に手動ステップはない。
Grokがランディングページのコピーを生成する。ヘッドライン、サブヘッド、ペインポイント、バリュープロップ、CTA。すべてExaが見つけた情報に基づいてアカウントにパーソナライズされている。リサーチ層がすでに実行済みだから、すべてのページが会社の実際の情報を参照する。
Claude Code + HubSpot CLIが完成したページをHubSpotに直接プッシュする。ブラウザなし。ドラッグ&ドロップエディタなし。CMSの読み込み待ちなし。1コマンドで公開。
実際のワークフロー
python generate_landing.py --company "Acme Corp"
これだけだ。1コマンド。会社名を渡す。
裏側で起きていること:
- Exa MCPが起動。企業データ、最新ニュース、テックスタック、採用シグナルを取得
- Pythonがリサーチを構造化されたコンテキストペイロードにフォーマット
- コンテキストがランディングページテンプレートプロンプトとともにGrokに送信
- Grokが実際の企業情報を含むパーソナライズされたHTMLを返す
- Claude CodeがCLI経由でHubSpotにプッシュ
- ページが公開。アウトバウンドシーケンスにリンクする準備完了
開始から完了まで90秒。しかも手動で作っていたものよりクオリティが高い。すべてのページが勘ではなく実際のリサーチに基づいているからだ。
アウトバウンドにとってなぜ重要か
パーソナライズされたランディングページは汎用的なものより高いコンバージョン率を出す。みんな知っている。ほとんどのチームがやらない理由は、制作コストがスケールしないからだ。1ページ45分なら、上位10アカウントにしかパーソナライズしない。
1ページ90秒なら、100アカウントにパーソナライズできる。
Instantlyのシーケンスにページをリンクする。見込み客がクリックすると、自社の名前、自社のテックスタック、自社の実際のペインポイントが見える。「御社のような企業の成長をお手伝い」じゃない。具体的なバージョンだ。
返信率の差はわずかじゃない。無視されるか、ミーティングが取れるかの違いだ。
パターンであり、ツールではない
ツールは変わる。Exaは置き換えられるかもしれない。Grokは来四半期にはベストモデルじゃないかもしれない。HubSpotがあなたのCMSじゃないかもしれない。
パターンは残る: リサーチ層 --> オーケストレーション層 --> 生成層 --> デプロイ層。ループにGUIなし。すべてのステップが自動化。すべてのアウトプットが次のインプットになる。
これが2026年のGTMエンジニアリングの姿だ。CMSエディタでブロックをドラッグすることじゃない。インテリジェンスをエクスキューションに接続するスクリプトを書くことだ。
まだブラウザで1ページずつランディングページを作っているなら、コマンド1つで済むことに何時間も費やしている。