記事は読まれてるのに売れない。どこで離脱してるかを数字で突き止める
PVはあるのに登録も購入もゼロ。入口→中間→出口のどこで読者が消えるかをGAとSearch Consoleで特定し、claudecode-lab.comの実数で直した手順を公開します。
ある記事が、1週間で900PV出ました。僕のサイトでは上出来です。
うれしくて売上を見たら、その記事経由の購入はゼロ。無料PDFの登録もゼロ。900人が来て、900人が黙って帰っていったわけです。
最初は「文章が悪いのかな」と落ち込みました。でも書き直しても数字は動かない。おかしいと思って、読者がページのどこまで来て、どこで消えるのかを1人ずつ追える形で並べ直したんです。そうしたら一発で分かりました。みんな本文の真ん中で消えていた。 出口(購入ボタン)の出来不出来以前に、そこまで誰も到達していなかった。
導線(ファネル)の点検って、つまりこれです。「売れない」を一塊で悩むのをやめて、入口・中間・出口のどこで人が漏れているかを数字で分ける。穴の空いた場所が分かれば、直すのは案外あっさり終わります。今日はその点検のやり方を、僕が実際に見た数字つきで書きます。
この記事の要点
- 「売れない」は3つに分解する。入口(記事に来たか)・中間(次へ進んだか)・出口(買ったか)。塊で悩むと一生直らない。
- 見る道具は2つでいい。流入はSearch Console、サイト内の動きはGA4。数字の名前を先にそろえると迷わない。
- ボトルネックは「割合の急落」で見つける。各段の通過率を並べ、いちばん下がっている段だけを直す。
- 計測は粗いと意味がない。クリックと問い合わせ完了を別イベントにし、
cta_clickに記事slugと位置を持たせる。 - 本記事末尾に、コピペで動く離脱チェック用Nodeスクリプトを置いた。リンク切れ・CTA抜け・計測タグ漏れを公開前に機械で弾く。
「売れない」を3段に割る
まず言葉を1つだけ。ファネルとは、読者が「来る→進む→買う」と段々に減っていく流れのことです。漏斗(じょうご)の形に似ているからこの名前です。上は広く、下は狭い。狭くなるのは普通のことで、問題は「どこで不自然に細くなるか」です。
僕は導線をこの3段で見ています。
| 段 | 中身 | 「漏れ」のサイン |
|---|---|---|
| 入口 | 検索やSNSから記事に着地する | 表示はされるのにクリックされない(CTRが低い) |
| 中間 | 本文を読み進め、内部リンクや登録へ進む | 滞在が短い、最後まで読まれない、次ページへ行かない |
| 出口 | 商品ページや相談へ進み、購入・送信する | CTAは押されるのに完了しない、そもそも押されない |
このどこが詰まっているかで、打ち手は正反対になります。入口が細いのに本文を磨いても無駄。出口が細いのに記事タイトルをいじっても無駄。先に段を特定する。 順番を逆にすると、僕みたいに「書き直しても動かない」沼にはまります。
冒頭の900PVの記事は、入口は合格でした(900人来ている)。詰まっていたのは中間。だから直すべきは本文の真ん中であって、タイトルでも価格でもなかった。これが分かっただけで、無駄な作業を何日分も節約できました。
見る道具と、最初にそろえる言葉
道具は2つで足ります。多く入れるほど数字がズレて混乱するので、僕はこの2つに絞っています。
- Search Console: 検索結果で「どう見つかったか」を見る。検索クエリ、表示回数、クリック数、CTR、平均掲載順位。入口の段はここで見ます。
- GA4: サイトに来たあと「何をしたか」を見る。ランディングページ、エンゲージメント時間、イベント、キーイベント、流入元。中間と出口はここ。
Googleも、発見から体験まで通して見るならこの2つを併用しろと案内しています。一次情報はSearch ConsoleとAnalyticsの併用を基準にしてください。指標名は時々変わるので、僕の記憶ではなく公式を見るのが結局いちばん速いです。
つまずきやすいのが言葉の不一致です。Search Consoleの「クリック数」とGA4の「セッション」は別物だし、ツールごとに計測条件が違って数字は完全一致しません。なので点検の前に、自分の中で対応表を作っておきます。
| 知りたいこと | 見る場所 | 指標名 |
|---|---|---|
| 検索で何回見られたか | Search Console | 表示回数 |
| そのうち何回押されたか | Search Console | クリック数 / CTR |
| 着地後どれだけ読んだか | GA4 | エンゲージメント時間 |
| 次の行動に進んだか | GA4 | cta_click などイベント |
| 最後まで完了したか | GA4 | キーイベント(purchase等) |
数字を盛らないこと。ここでは架空のCVRは一切置きません。自分の管理画面にある実データだけで判断する——これが点検の大前提です。
ボトルネックの見つけ方は「通過率の急落」
ここが今日いちばん大事なところです。各段の「次へ進んだ割合(通過率)」を縦に並べると、詰まっている場所が目で分かります。やり方はこうです。
- 対象記事を1本選ぶ(まず流入上位を1本)。
- 入口=表示回数に対するクリック率(CTR)を書く。
- 中間=着地した人のうち、最後まで読んだ割合 or 内部リンク/登録に進んだ割合を書く。
- 出口=商品ページに進んだ人のうち、購入や送信を完了した割合を書く。
- 3つの通過率を並べ、いちばん低い1つだけに印をつける。
実際に僕が900PVの記事でやると、こうなりました。
| 段 | 通過率 | 判定 |
|---|---|---|
| 入口(CTR) | 4.1% | OK(検索意図に合っていた) |
| 中間(読了/次へ) | 約9% | ここが急落 |
| 出口(商品→完了) | データ不足 | そもそも到達者が少ない |
中間が一桁。ここが穴でした。原因を本文で探したら、商品の話が記事のいちばん下にしかなくて、本文の真ん中は退屈な前置きが続いていた。読者は答えにたどり着く前に飽きていたんです。
直し方はシンプルでした。本文中盤に「この失敗を避ける手順は無料PDFにまとめた」と、内容から自然につながる一文を入れた。読者状態に合わせたCTAの分岐そのものは記事からPDF・Gumroad・相談へ送るCTA設計にまとめてあるので、出口の段が詰まっている人はそちらが効きます。リードマグネット側の登録率の上げ方は無料PDFでメールリストを増やす導線が具体的です。
段ごとの直し方チェックリスト
詰まった段が分かったら、その段だけ直します。全部いっぺんに触ると、何が効いたか分からなくなる。1段ずつです。そのまま使えるチェックリストを置きます。
| 段 | 確認すること | 合格ライン |
|---|---|---|
| 入口 | タイトルとh2が検索クエリの言葉と合っているか | クエリの悩みと記事の約束が一致 |
| 入口 | descriptionにクリック理由があるか | 表示されたら押したくなる一文がある |
| 中間 | 答えが本文の上〜中盤にあるか | 結論まで遠回りしていない |
| 中間 | 次の一手が本文中にあるか | 末尾だけでなく文脈の中にリンクがある |
| 中間 | スマホで表・コードがはみ出していないか | 横スクロールせず読める |
| 出口 | CTAの前に「なぜ今それが必要か」があるか | リンクの直前に理由が書いてある |
| 出口 | 読者状態とCTAの重さが合っているか | 入門記事に重い相談を出していない |
| 計測 | クリックと完了を別イベントで見られるか | cta_clickと完了が分かれている |
特に「合格ライン」を先に決めておくのがコツです。これがないと、自分でもClaude Codeでも「なんとなく良くなった気がする」で終わってしまう。基準があれば、直したあとに数字で答え合わせができます。
計測が粗いと、点検そのものが成り立たない
ここを甘くすると全部が崩れます。僕は最初、リンククリックを全部 click という1種類のイベントで取っていました。結果どうなったか。無料PDFが押されたのか、商品が押されたのか、相談が押されたのか、まったく区別がつかない。 どの出口が詰まっているか永遠に分からない状態でした。
最低限、こう分けます。
- CTAクリック →
cta_click(パラメータに記事slug・リンク先・位置=冒頭/中盤/末尾) - 商品閲覧 →
view_item - 購入開始 →
begin_checkout - 購入完了 →
purchase - 相談送信 →
generate_lead
イベント名の正解は自分で決めずにGA4の推奨イベントに寄せます。そして鉄則がひとつ。クリックと完了を同じ成果として数えない。 「100クリックあった」は「100件売れた」ではありません。ここを混ぜると、押されてるのに完了しない(=出口直前の離脱)という一番もったいない漏れを見落とします。
位置パラメータ(冒頭/中盤/末尾)を入れておくと、おまけで「どの位置のCTAが効くか」まで分かります。僕の場合、末尾のCTAより中盤のCTAのほうがクリックされていました。読み切る前に動く人が多い、ということですね。
コピペで使える離脱チェックのNodeスクリプト
人間が点検する前に、機械で拾える漏れは機械に弾かせます。下のスクリプトは、記事に「内部リンクがあるか」「CTAがあるか」「公式外部リンクがあるか」「計測タグの目印があるか」を見て、抜けを一覧します。外部パッケージ不要、audit-funnel.mjs で保存して記事パスを渡すだけです。
#!/usr/bin/env node
// 使い方: node audit-funnel.mjs <記事.mdx> [...]
// 役割: 公開前に「導線の基本パーツ抜け」を機械で弾く。売上予測はしない。
import fs from "node:fs";
const files = process.argv.slice(2);
if (files.length === 0) {
console.error("Usage: node audit-funnel.mjs <article.mdx> [...]");
process.exit(2);
}
// 各段に必要な「最低限のパーツ」を定義する
const checks = [
{
stage: "中間",
name: "本文中の内部リンク(回遊)",
test: (mdx) => /\]\(\/(?:[a-z]{2}\/)?blog\/[^)]+\)/.test(mdx),
},
{
stage: "出口",
name: "出口CTA(商品 or 相談)",
test: (mdx) => mdx.includes("/products/") || mdx.includes("/training/"),
},
{
stage: "入口",
name: "公式外部リンク(一次情報)",
test: (mdx) =>
/https:\/\/(?:developers\.google\.com|support\.google\.com\/analytics|search\.google\.com)\//.test(mdx),
},
{
stage: "計測",
name: "導線・計測の語彙(取りこぼし防止)",
test: (mdx) => /(導線|ファネル|離脱|cta_click|CTA|通過率)/i.test(mdx),
},
];
let failed = false;
for (const file of files) {
const mdx = fs.readFileSync(file, "utf8");
const missing = checks
.filter((c) => !c.test(mdx))
.map((c) => `[${c.stage}] ${c.name}`);
if (missing.length === 0) {
console.log(`${file}: OK(基本パーツは揃っている)`);
continue;
}
failed = true;
console.log(`${file}: 不足 -> ${missing.join(" / ")}`);
}
// 1つでも欠けたら異常終了。CIに組み込めば公開前に止まる
if (failed) process.exitCode = 1;
実行はこれだけです。
node audit-funnel.mjs site/src/content/blog/claude-code-content-funnel-audit.mdx
このスクリプトは売れるかどうかを占いません。あくまで「内部リンクがない」「出口CTAがない」「一次情報に戻れない」という、人間が見落としがちな基本の穴を公開前に塞ぐだけです。CIに入れておけば、忙しい日に抜けたまま公開する事故が消えます。判断は人間、機械チェックは門番、という分担です。
Claude Codeに任せる範囲と、人間が決める範囲
点検作業のうち単純なものはClaude Codeに渡せます。MDXから欠落リンクを探す、CTA文言の候補を出す、表を整える、コードフェンスの閉じ忘れを見つける、多言語の表現差をそろえる——このあたりは速くて正確です。上のチェックリストを一緒に渡すと、ただの文章校正ではなく導線視点でレビューしてくれます。
一方で、人間が決めることもはっきりさせておきます。どの段を優先して直すか、価格や商品の優先順位、相談の受け入れ条件、CVRの解釈。 ここを丸投げすると危ない。数字を見ているつもりで、自分に都合のいい物語を作ってしまうからです。PVが多くても検索意図が「無料で知りたい」なら出口は伸びにくいし、PVが少なくても「社内導入 ルール」のような切実なクエリなら相談につながる。PVの大きさより、読者の切実さを見ます。
よくある質問
Q. PVは多いのに売れません。まず何から見ればいい? 入口は合格しているので、中間と出口の通過率を出してください。本文の途中で滞在が切れているなら中間、CTAは押されるのに完了しないなら出口です。塊で悩まず、必ず段に割ります。
Q. アクセスが少なくて段ごとの割合が出せません。 そのときは入口(検索クエリとCTR)だけ先に見ます。出口の議論はサンプルが貯まってからで十分です。少ない数字で出口を語ると、ただのノイズに振り回されます。
Q. GA4とSearch Consoleで数字が合いません。壊れてる? 壊れていません。計測の条件もタイミングも違うので一致しません。完全一致を求めず、各ツールの中での「変化の方向」を見ます。判断材料は絶対値より増減です。
Q. CTAは記事のどこに置くのが正解? 1か所に固定せず、中盤と末尾の両方に置いて位置パラメータで計測してください。僕の記事では中盤のほうが押されました。読み切る前に動く読者を末尾だけでは拾えません。
Q. Claude Codeにどこまで任せていい? リンク漏れ・CTA文言・表整形・コードの閉じ忘れまでは任せて大丈夫です。どの段を優先するか、価格や相談条件、数字の解釈は人間が決めます。ここを混同すると都合のいい結論に流れます。
実際に試した結果
冒頭の900PV・購入ゼロの記事を、この手順で点検し直しました。詰まっていたのは中間(通過率は一桁)。タイトルも価格も触らず、本文の真ん中に「答えにつながる一文+文脈に合った内部リンク」を1つ足しただけです。
完璧な逆転劇は起きていません。正直に書くと、出口の数字が動くほどのサンプルはまだ貯まっていない段階です。それでも、変わったことが2つあります。ひとつは、中間の通過率(本文を読み進めて次へ進む割合)が目に見えて上がったこと。もうひとつは、cta_click を位置別に分けたことで、「末尾より中盤のCTAが効く」と自分のサイトの事実として言えるようになったことです。
いちばん効いたのは、気持ちの面でした。「売れない」を一塊で抱えてモヤモヤしていたのが、「中間が詰まっている」と一点に特定できた瞬間、やることが具体になった。賢い書き直しを探すより、どの段で漏れているかを先に数字で確定させる。 これが結局いちばん速い、というのが今の実感です。まずは上のチェックリストとNodeスクリプトで、自分の記事の穴を1つ見つけるところから始めてみてください。
無料PDF: Claude Code はじめてのチートシート
まずは無料PDFで基本コマンドと最初の使い方をまとめて確認してください。登録後はそのままテンプレート集や導入相談にも進めます。
スパムは送りません。登録情報は厳重に管理します。
Claude Codeを仕事で使える形にしませんか?
まず無料PDFで基本を固め、繰り返し使う作業はGumroad教材へ、チーム導入や権限設計は導入相談へ進めます。
この記事を書いた人
Masa
Claude Codeの実務活用、導入設計、収益導線改善を検証しているエンジニア。10言語の技術メディアを運営中。
関連書籍・参考図書
この記事のテーマに関連する書籍を楽天ブックスで探せます。
※ 当サイトは楽天市場のアフィリエイトプログラムに参加しています。上記リンクから商品をご購入いただくと、運営者に紹介料が支払われる場合があります。
関連記事
制作会社がClaude Codeに触らせる前に決める権限チェックリスト
クライアントサイトを壊さずにAI編集を使うための、制作会社向け権限と確認の型です。
SaaSサポートのバグ報告をClaude Codeで再現手順に変える実務フロー
問い合わせ文をそのまま開発へ投げず、再現手順、証拠、次の一手に整えるサポート向け手順です。
Obsidianの古いメモをClaude Codeの指示書に変える10分ルーチン
Obsidianに溜めたメモが毎回ゴミになる人へ。事実・決定・未確認に仕分けして、Claude Codeがそのまま動ける指示書に変える朝の10分の型を紹介します。