コンテンツギャップ分析は、読者が検索で求めているのに、自社サイトがまだ答えていない(または答えが足りない)トピックを見つける作業です。比べる相手は主に2つあります。同じ検索結果に並ぶ競合サイトと、自社サイト自身の検索データです。
本記事では、キーワードギャップとの違いを押さえたうえで、Ahrefs・Semrush・Google Search Consoleでの進め方、見つけたギャップの優先順位の付け方、そして「埋めないほうがよいギャップ」の見分け方を説明します。
まとめ:コンテンツギャップ分析の要点
- コンテンツギャップは、読者の疑問に対して自社サイトに答えが無い、または足りない状態です。サイトにページ自体が無い場合と、ページはあるが論点が欠けている場合の2種類があります。
- キーワードギャップは、競合が順位を持ち自社が持たないキーワードの一覧です。コンテンツギャップを探す入口として使いますが、キーワード1つが記事1本に対応するとは限りません。
- ギャップの出どころは、競合比較・自社のSearch Consoleデータ・営業や問い合わせで受ける質問の3つです。有料ツールが無くても、Search Consoleだけで「表示はされているが上位に届かないクエリ」は洗い出せます。
- 見つけたギャップは、需要・自社事業との関係・既存ページの有無で「新規作成」「既存ページへの追記」「対応しない」に振り分けます。競合の見出しをすべて自社記事に足す作り方は、Googleが自己評価の質問で警告している「価値を付加することなく、主に他の人の意見を要約」した状態に近づきます。
コンテンツギャップ分析の定義とキーワードギャップとの違い
コンテンツギャップ分析の単位は「トピック」です。たとえば「Search Console 使い方」で上位の記事が、設定手順・レポートの見方・データの制約の3論点を扱い、自社記事が設定手順しか書いていなければ、残る2論点がギャップになります。
キーワードギャップ分析の単位は「キーワード」です。SEOツールに自社ドメインと競合ドメインを入れると、競合が順位を持ち自社が持たないキーワードが一覧で返ります。この一覧には、同じ意図の言い換え(「サーチコンソール 使い方」と「search console 見方」など)が別々の行で並びます。意図ごとに束ねる作業を経て、初めて「どのトピックが欠けているか」が分かります。束ね方はキーワードクラスタリングの手順で詳しく扱っています。
経営やプロジェクト管理で使う「ギャップ分析」は、現状(As Is)とあるべき姿(To Be)の差を埋める計画づくりを指し、検索とは関係しません。業務改善の文脈で探している場合はAs Is / To Be分析の手順を参照してください。
| 項目 | コンテンツギャップ分析 | キーワードギャップ分析 |
|---|---|---|
| 比べる単位 | トピック・論点 | キーワード(クエリ) |
| 主な材料 | 競合の見出し、自社の検索データ、読者の質問 | SEOツールの順位データ |
| 出力 | 新規作成・追記・対応しないの振り分け | キーワードの一覧 |
| 役割 | 何を書くかの決定 | 候補の洗い出し |
ギャップが見つかる3つの出どころ
競合比較で見つかるサイト単位・ページ単位のギャップ
競合比較は、比べる範囲で2つに分かれます。ドメイン同士を比べると、競合サイトにはあって自社サイトにページ自体が無いトピック(サイト単位のギャップ)が出ます。上位記事のURL同士を比べると、同じトピックの記事の中で自社に欠けている論点(ページ単位のギャップ)が出ます。
ページ単位の比較は、Ahrefsならスコープを「Exact URL」にして上位記事のURLを入れれば機械的に出せます。ツールが無ければ、上位3記事のh2・h3を書き出して自社記事の見出しと並べるだけでも欠けた論点は見えます。
比べる競合は、事業上のライバルではなく、狙うキーワードの検索結果に実際に並ぶサイトから選びます。BtoBの製品会社でも、検索結果ではメディアや辞書サイトが競合になる場合があります。
Search Consoleで見つかる「表示はあるが答え切れていない」ギャップ
自社サイトの検索データにもギャップは表れます。Search Consoleで、表示回数はあるのに平均掲載順位が11〜30位(おおむね2〜3ページ目。掲載順位は検索結果の機能枠も数えるため、ページ数とは一致しないことがあります)に留まるクエリは、Googleがページと関連づけて表示しているものの、上位の記事ほど評価されていない候補です。そのクエリの意図に答える段落や見出しがページに無ければ、ページ単位のギャップとして追記を検討します。
この方法は競合を推定する必要がなく、Googleの実データに基づく点が強みです。弱みは、すでに表示されている範囲しか見えないことです。自社サイトがまったく扱っていないトピックは、表示回数も出ないため見つかりません。サイト単位のギャップは競合比較で補います。
検索データに出てこない読者の質問
営業の商談記録、問い合わせフォーム、サポートのチケットに繰り返し出る質問は、検索ツールにはまだ現れていないギャップです。検索ボリュームが0と表示される語でも、自社の顧客が実際に尋ねている内容なら、商談前に読まれる記事として価値があります。拾い方は、問い合わせ履歴を3か月分ほど書き出し、同じ質問を1行にまとめて件数を数えるのが手軽です。2件以上出ている質問に答えるページがサイト内に無ければ、それがギャップです。
コンテンツギャップ分析の進め方6ステップ
- 目的と範囲を決める:新規記事のテーマ探しか、既存記事の強化かで、比べる単位(ドメインかURLか)が変わります。
- 自社コンテンツを棚卸しする:URL・主題・狙うキーワード・直近の表示回数を一覧にします。同じ主題のページが2本以上あれば、ギャップを埋める前に統合を検討します。
- 検索上の競合を選ぶ:主要キーワードの検索結果で上位に並ぶサイトを3〜5件選びます。
- キーワードとクエリを集める:SEOツールのギャップ機能と、Search Consoleの「表示はあるが2〜3ページ目」のクエリを集めます。
- 検索意図で束ねて振り分ける:同じ答えで満たせるキーワードを1つのトピックにまとめ、既存ページで答えられるものは追記、受け皿が無いものは新規作成、事業と関係が薄いものは対応しない、に分けます。意図の分け方は検索意図の4分類が目安になります。
- 優先順位を付けて実装し、再計測する:反映後は同じ条件で数か月おきに抽出し直し、ギャップが解消したか、新しい候補が出たかを確認します。
ツール別の進め方:Ahrefs・Semrush・Search Console
| ツール | 機能名 | 比較できる数 | 得意なギャップ |
|---|---|---|---|
| Ahrefs | Content gap(Competitive Analysis内) | 競合は最大10件 | サイト単位・ページ単位 |
| Semrush | Keyword Gap | 自社と競合4社まで | サイト単位 |
| Search Console | 検索パフォーマンス(API) | 自社サイトのみ | ページ単位 |
2つの有料ツールの料金とデータの違いはAhrefsとSemrushの比較にまとめています。
AhrefsのContent gap
Content gapは、Ahrefsが2023年7月に新設したコアツール「Competitive Analysis」の中に置かれています。上段に自社のドメインかURL、下段に競合を最大10件入れて「Show keyword opportunities」を押すと、競合が順位を持ち自社が持たないキーワードが返ります(Ahrefsヘルプ)。
Ahrefs AcademyのContent gapのレッスンで示されている基本例は、「少なくとも1つの競合がトップ10に入り、自社はトップ100圏外」の条件です。候補が多すぎるときは、競合の順位条件を「すべての競合」に切り替えると、複数の競合が共通して取っているキーワードに絞れます。スコープを「Exact URL」にして上位3記事と自社の記事を比べれば、ページ単位で欠けている論点を探せます。同じレッスンは、自社の順位を11〜20位、競合の順位を「すべての競合がトップ10入り」に絞る使い方も紹介しており、あと一歩で上位に届くキーワードだけを取り出せます。
SemrushのKeyword Gap
Keyword Gapは最大5ドメイン(自社と競合4社)を並べて比べるツールで、結果を6つの区分で返します(Semrushナレッジベース、Semrushの競合分析ガイド)。
| 区分 | 条件 | ギャップ分析での使い道 |
|---|---|---|
| Missing | 全競合が順位あり・自社は順位なし | 優先度の高い新規候補 |
| Untapped | 1社以上が順位あり・自社は順位なし | 新規候補の裾野 |
| Weak | 自社も順位ありだが全競合より下 | 既存ページの追記候補 |
| Shared | 入力した全サイトが順位あり | 現状把握 |
| Strong | 自社が全競合より上 | 守る対象 |
| Unique | 自社だけが順位あり | 独自の強み |
MissingとUntappedはサイト単位、Weakはページ単位のギャップに対応します。Weakは既存ページがあるため、新規記事より少ない工数で順位が動く候補になりやすい区分です。
Search ConsoleのデータをAPIで抽出する方法
Search Consoleの検索パフォーマンスレポートは、画面の表に最大1,000行までしか表示しません(Search Consoleヘルプ)。プライバシー保護のため一部のクエリは「匿名化されたクエリ」として表から除かれ、遡れる期間は過去16か月までです。ページ数の多いサイトでページ×クエリの組み合わせを洗い出すなら、Search Analytics APIで取得します。APIの1回の取得行数(rowLimit)は1〜25,000で、既定値は1,000です。それを超える分は startRow をずらして続きを取ります(Search Analytics APIリファレンス)。
次のPythonは、直近90日のページ×クエリを startRow でページングしながらAPIが返す分をすべて取得し、表示回数20回以上で平均掲載順位11〜30位の組み合わせをCSVに書き出します。11〜30位という帯と20回という下限は本記事で置いた目安で、サイトの規模に合わせて変えてください。サービスアカウントを使う場合は、Search Consoleのプロパティの「ユーザーと権限」にそのメールアドレスを追加しておきます。
import csv
import datetime as dt
from google.oauth2 import service_account
from googleapiclient.discovery import build
SITE = "https://www.example.com/" # Search Console のプロパティ
KEY = "service-account.json" # プロパティに追加したサービスアカウントの鍵
MIN_IMPRESSIONS = 20 # 需要の下限
POS_MIN, POS_MAX = 11, 30 # 2〜3ページ目=出ているが答え切れていない帯
creds = service_account.Credentials.from_service_account_file(
KEY, scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
svc = build("searchconsole", "v1", credentials=creds, cache_discovery=False)
end = dt.date.today() - dt.timedelta(days=3) # 直近2〜3日は確定前
start = end - dt.timedelta(days=89)
rows, start_row = [], 0
while True:
body = {
"startDate": start.isoformat(), "endDate": end.isoformat(),
"dimensions": ["page", "query"],
"rowLimit": 25000, "startRow": start_row,
}
batch = svc.searchanalytics().query(siteUrl=SITE, body=body).execute().get("rows", [])
rows += batch
if len(batch) < 25000:
break
start_row += 25000
gaps = [r for r in rows
if r["impressions"] >= MIN_IMPRESSIONS and POS_MIN <= r["position"] <= POS_MAX]
gaps.sort(key=lambda r: r["impressions"], reverse=True)
with open("gap_candidates.csv", "w", newline="", encoding="utf-8-sig") as f:
w = csv.writer(f)
w.writerow(["page", "query", "impressions", "clicks", "position"])
for r in gaps:
w.writerow([*r["keys"], int(r["impressions"]), int(r["clicks"]), round(r["position"], 1)])
print(f"{len(rows)} rows -> {len(gaps)} gap candidates")
必要なライブラリは google-api-python-client と google-auth です。出力したCSVはページごとに並べ替え、各クエリの答えがそのページの見出しや本文にあるかを確認します。答えが無ければ追記の候補です。答えがあるのに順位が上がらない場合は、同じクエリで自社の別ページも表示されていないかを確かめます。2本のページが表示を奪い合っているなら、追記より先にキーワードカニバリゼーションの解消が必要です。
匿名化されたクエリは返らず、APIが返す行にも検索タイプごとに1日5万行(クリック数順)の上限があります(Googleのデータ取得ガイド)。この方法で拾えるのは実際のギャップの一部で、クリックの少ないクエリほど漏れやすい点に注意します。画面の操作から覚えたい場合はサーチコンソールの基本的な使い方から始めてください。
見つけたギャップの優先順位の付け方
ギャップ候補が多いときは、次の4つの観点で順に絞ります。
| 観点 | 見る数字・材料 | 優先度が上がる条件 |
|---|---|---|
| 需要 | 検索ボリューム、表示回数 | 束ねたトピック全体で需要がある |
| 事業との関係 | 自社の商材・顧客の質問 | 読者が自社の顧客候補になる |
| 既存ページの有無 | 棚卸し表、Search Console | 追記で済む(Weak、11〜30位) |
| 勝てる見込み | 上位記事の質、検索結果の種類 | 上位が古い・論点が欠けている |
同じ需要なら、新規記事より既存ページへの追記を先にします。既存ページはすでにクロールされ、表示実績もあるためです。新規記事は受け皿が無いトピックに限ります。どちらを書くにしても、記事の設計手順はコンテンツSEOの進め方と共通です。
埋めないほうがよいギャップと失敗パターン
ギャップは「見つけたら全部埋める」ものではありません。次の4つは、埋めると逆効果になりやすい型です。
競合見出しの全量追加による寄せ集め
上位3記事の見出しを合算して自社記事に足すと、どの記事にもある内容の寄せ集めになります。Googleの「有用で信頼性の高い、ユーザー第一のコンテンツの作成」は、見直しが必要な兆候として「価値を付加することなく、主に他の人の意見を要約していますか」と問いかけています。同じページは「Google が優先する文字数」についても「そのような設定は存在しません」と書いており、文字数を競合に合わせる理由もありません。ギャップを埋めるときは、競合に無い一次情報(自社の数値、検証結果、事例)を1つ以上足せるかを先に確かめます。足せないなら、その論点は短く触れるだけにとどめます。競合に無い情報を足す考え方はインフォメーションゲインの解説で扱っています。
同じ意図の新規記事による表示の分散
既存ページで答えられるクエリのために新規記事を作ると、同じクエリで自社の2本が表示を分け合います。作成前に、Search Consoleの検索パフォーマンスでそのクエリをフィルタし、「ページ」タブに自社のURLが2本以上出ていないかを確認します。すでに表示されているページがあれば、新規作成ではなくそのページへの追記に切り替えます。
ギャップ一覧キーワードの詰め込み
ギャップ一覧のキーワードを見出しや段落に並べるだけの対応は、Googleのスパムポリシーが定めるキーワードの乱用(ランキング操作を目的にキーワードや数字を詰め込む行為。Google検索のスパムに関するポリシー)に近づきます。キーワードは答えの文脈で1回使えば足ります。
事業と無関係な需要の深追い
競合がメディア企業で幅広いテーマを扱っていると、ギャップ一覧には自社の商材と無関係な語が大量に混ざります。Googleの同じ自己評価の質問は「既存のユーザー層のためではなく、ただ話題になっているという理由で記事を書いていますか」とも問いかけています。自社の読者が読む理由の無いトピックは、需要が大きくても対象から外します。定義だけを答えれば済むクエリは、検索結果のAIによる概要で完結しやすい点も判断材料になります。
AIによる概要やAIモードに引用されたページの表示も、Search Consoleでは検索タイプ「ウェブ」のパフォーマンスレポートに含まれます(GoogleのAI機能に関するドキュメント)。AI機能だけを切り出す指標は無いため、AI検索で競合が引用されて自社が引用されないかは、狙うクエリで実際に検索して回答の引用元を確認するしかありません。引用されていない場合も、対応は通常のギャップと同じで、欠けている論点と一次情報を足すことです。
よくある質問
コンテンツギャップとは何ですか?
読者が検索で求めている情報に対して、自社サイトに答えが無い、または足りない状態です。サイトにページ自体が無いトピックと、ページはあるが欠けている論点の2種類があります。
コンテンツギャップ分析とキーワードギャップ分析の違いは何ですか?
キーワードギャップ分析は、競合が順位を持ち自社が持たないキーワードを一覧にする作業です。コンテンツギャップ分析は、その一覧を検索意図で束ね、どのトピックを新規作成・追記するかまで決める作業です。
無料でコンテンツギャップ分析はできますか?
自社サイトの範囲ならGoogle Search Consoleで可能です。表示回数があるのに平均掲載順位が2〜3ページ目に留まるクエリを抽出し、そのクエリへの答えがページにあるかを確認します。競合サイトのキーワードを網羅的に比べるには、AhrefsやSemrushなどの有料ツールが必要です。上位記事の見出しを読み比べるページ単位の比較は無料でもできます。
AhrefsのContent gapはどこにありますか?
上部メニューのCompetitive Analysisの中にあります。2023年7月に、それまでのContent gapを刷新してCompetitive Analysisへ移しました。自社のドメインかURLと、競合を最大10件入力して使います。
コンテンツギャップ分析はどのくらいの頻度で行えばよいですか?
決まった頻度はありません。新規記事のテーマを決めるときと、既存記事を書き直す前には必ず行い、それ以外はSearch Consoleの抽出を数か月おきに同じ条件で繰り返して、新しい候補が出ていないかを確認します。