診断ロジック設計(GSC × WordPress 記事伸びしろ診断)
このドキュメントは、Search Console API(またはCSV)で取得したデータを基に、記事URL(page)ごとに「伸びる可能性」を判定し、優先度付きで改善アクションを提示するための診断ロジック案。
0. 用語と前提
入力データ(最低限)
page(URL)query(検索クエリ)clicksimpressionsctrposition(平均掲載順位)range_start,range_end(例:直近28日)
推奨:
dimension = page+queryを基本にする 拡張:device,country,dateを入れると精度が上がる
診断のゴール
- 「今月やるべき記事 TOP N」を自動抽出
- 記事ごとに 診断タイプ と 改善タスク(AI文章化は後段)を返す
- 断定せず「可能性」「優先度」で表現する
1. 正規化と集計
1-1. クエリ行のフィルタ(ノイズ除去)
impressions < 20の行は原則除外(ロングテールのノイズが多い)position > 60は原則除外(改善余地はあるが“今月の優先”からは落とす)- ブランドクエリ除外(任意)
- 例:
queryにサイト名/会社名/著者名が含まれる場合は別枠
- 例:
1-2. page単位の集計(記事指標)
page_metrics を作る:
page_clicks = Σ clickspage_impr = Σ impressionspage_ctr = page_clicks / page_imprpage_pos = 加重平均(position, impressions)page_pos = Σ(position * impressions) / Σ impressions
1-3. page内の重要クエリ抽出
top_queries(page):
- impressions順に上位
K=5〜20を保持 - 以下も保持すると後段の診断に便利
q_pos_band(1-3 / 4-7 / 8-20 / 21-40 / 41+)q_ctr_gap(後述)
2. スコアリング設計(優先度の核)
2-1. 伸びしろスコア(0〜100)
スコアは「改善すると増える可能性が高い」順に並べるための近似値。
推奨の大枠:
- Opportunity(機会):impressionsの大きさ(伸びたときのインパクト)
- Proximity(近さ):順位帯(上位に近いほど伸びやすい)
- Fixability(直しやすさ):CTR課題は比較的短期で改善しやすい
- Confidence(確度):データ量(impressions)が多いほど確度が高い
例(概念):
opportunity = log10(page_impr + 1)を 0〜1に正規化proximity = f(page_pos)(順位が良いほど高い)- 1〜3: 1.0
- 4〜7: 0.8
- 8〜20: 0.6
- 21〜40: 0.3
- 41+: 0.1
fixability = 1.0 (CTR型), 0.7 (順位型), 0.5 (意図ズレ/構造問題)などconfidence = min(1, page_impr / 2000)(2000impで頭打ち)
最終:
score = round(100 (0.35opportunity + 0.35proximity + 0.20fixability + 0.10*confidence))
※ MVPでは「ルールでタイプ判定 → タイプ別の重み」で十分
3. 診断タイプ(ルールベース)
3-1. CTR改善型(表示はあるのにクリックが弱い)
判定条件(例)
page_impr >= 500page_pos <= 12(上位〜準上位にいる)page_ctr <= ctr_threshold(page_pos)を満たす
ctr_threshold 例:
- pos 1-3 : 10%未満は要改善
- pos 4-7 : 5%未満は要改善
- pos 8-12: 2%未満は要改善
- pos 13-20: 1%未満は要改善(ただし順位改善型と競合するので優先度は下げる)
典型原因
- タイトルが検索意図とズレ
- ディスクリプション弱い / ベネフィット不足
- SERPで競合タイトルに負けている
- 上位クエリが複数意図で散らかっている(意図ズレ型と併発)
推奨アクション(テンプレ)
- タイトル改善(クエリ語を前寄せ、数字/具体性)
- ディスクリプション改善(誰の何を解決するか)
- 見出し冒頭に結論(検索意図一致)
- 競合SERPの見出し要素を補完(FAQ追加など)
3-2. 順位改善型(8〜20位の“伸ばしどころ”)
判定条件(例)
page_impr >= 3008 <= page_pos <= 20page_clicksが一定以上 ortop_queriesにpos 8-20が多い
典型原因
- 情報の網羅性不足(競合より薄い)
- 内部リンクが弱い
- 古い情報
- E-E-A-T要素不足(経験・一次情報・実績)
推奨アクション
- 追記(不足論点、手順、比較、事例)
- 見出し再構成(意図順)
- 内部リンク強化(関連3記事からリンク)
- 更新日を明示、一次情報・実体験追加
3-3. 意図ズレ(ミスマッチ)型(クエリが散らかる / 主軸が弱い)
判定条件(例)
top_queriesの上位に、異なるテーマ語が混在- 例:「料金」「やり方」「比較」「おすすめ」「テンプレ」など複数カテゴリが混ざる
- かつ
page_posが中位(10〜40)で停滞 - かつ
page_ctrが低い
推奨アクション
- 記事の主目的を1つ決める(主軸クエリ)
- 見出し順を「意図の自然な流れ」に揃える
- 逸れた意図は別記事に分離して内部リンク
3-4. カニバリ疑い型(同一クエリで複数記事が表示される)
判定条件
- 同一
queryに対し、pageが 2つ以上存在し、 - それぞれ
impressionsが一定以上(例:>=100) - かつ片方の順位が上がると他方が下がる傾向(※日次データがあると強い)
- MVPでは「複数pageに分散」だけでも警告を出す
推奨アクション
- 主記事を決めて統合(重複部分を移動)
- 片方は別角度にリライト(意図を分ける)
- canonical / 内部リンクの整理
3-5. “守り”型(順位は良いが落下リスクあり)
判定条件
page_pos <= 5page_impr >= 1000- 直近でCTR低下 or クリック低下(※日次比較があると強い)
推奨アクション
- タイトル微調整(過剰変更は避ける)
- 競合の新規要素を追加(FAQ/最新情報)
- 表示速度/構造化データチェック
3-6. インデックス/露出弱い型(表示回数が伸びない)
SEOの“長期戦”に寄るので優先は下げるが、診断としては出す。
判定条件
page_impr < 100かつpublishedから日数が経っている(WP側メタが必要)- もしくは
position > 40が中心
推奨アクション
- 内部リンク追加(関連上位記事から)
- タイトルに主要語を明示
- カテゴリ設計/パンくず/サイト構造の点検
4. 診断タイプの優先順位(同一ページに複数当たる場合)
推奨の優先付け:
- カニバリ疑い(根本原因になりやすい)
- CTR改善型(短期効果が出やすい)
- 順位改善型(追記で上げやすい帯)
- 意図ズレ型(構造改修が必要)
- 守り型(上位維持)
- 露出弱い型(長期)
※ ただし page_impr が非常に大きい場合は CTR型を最優先に繰り上げても良い
5. 出力フォーマット(診断結果のデータ構造)
diagnosis_result(JSONで保存推奨):
pagerange_start,range_endscore(0〜100)type(CTR / POSITION / INTENT / CANNIBAL / DEFENSE / LOW_EXPOSURE)evidencepage_impr,page_clicks,page_ctr,page_postop_queries: [{query, impressions, clicks, ctr, position}, …]
todo_templates(AIが無くても出る)todo_1,todo_2,todo_3
ai_prompt_seed(任意)- タイトル案生成用の入力素材(クエリ・現タイトル・狙い等)
6. MVPの最小診断セット(まずはこれだけで売れる)
- CTR改善型
- 順位改善型(8〜20)
- カニバリ疑い型
- 「今月のTOP5(score順)」自動抽出
これで“価値が伝わる”。
7. 実装メモ(WordPress側データ突合)
可能なら以下を合わせて診断の精度を上げる:
pageURL →post_idの解決(url_to_postid()など)post_titlepost_modifiedcategory,tag- 内部リンク数(簡易でOK:本文中の自サイトリンク数)
8. 追加で強くなる拡張(次フェーズ)
- 日次データ保持 → 前週比/前月比診断(落下検知・上昇検知)
- device別(mobileでCTRが悪い等)
- country別(日本向けのみなら固定でもOK)
- “SERP競合特徴”の推定(FAQ/HowTo/レビュー構造化の提案)