SEO

ピラーページとは?トピッククラスターの作り方と相互リンクの点検・効果測定【2026年版】

ピラーページとは?トピッククラスターの作り方と相互リンクの点検・効果測定【2026年版】

ピラーページ(ピラーコンテンツとも呼びます)は、1つのテーマの全体像を1ページで扱い、細かい論点を担当する複数のクラスターページと内部リンクで結ばれる中心ページです。この「ピラー+クラスター+相互リンク」の組み合わせをトピッククラスターと呼びます。この記事では、ピラーページとクラスターページの書き分け、既存記事の棚卸しから始める作り方、Googleのリンク基準に沿った内部リンクの張り方を説明し、相互リンクの抜けを見つけるPythonスクリプトとSearch Consoleでの効果測定の手順まで載せます。

まとめ:ピラーページとトピッククラスターの要点

  • ピラーページはテーマの地図、クラスターページは個別の論点の詳細を担当する。同じ検索意図を両方に詳しく書くと、自社の2URLが同じ検索語で順位を取り合いやすい。
  • トピッククラスターは、HubSpot Researchが2017年に公開したレポート「Topic Clusters: The Next Evolution of SEO」で広まった設計。HubSpot自身も、自社ツール上でトピッククラスターを作るだけではSEOに直接影響しないと注記している。
  • Googleがリンクとして辿るのは原則として href 属性を持つ <a> 要素で、アンカーテキストはリンク先の内容を伝える情報として使われる。JavaScriptのクリック処理だけで遷移させる「リンク風のボタン」では、Googleがリンク先URLを確実に抽出できない。
  • 既存記事があるサイトは、新規作成より先に棚卸しをする。同じ意図の記事が2本あれば、統合してからクラスターに組み込む。
  • 相互リンクは公開後に抜けやすい。本記事のスクリプトで「ピラー→クラスター」「クラスター→ピラー」の両方向を機械的に確認し、効果はSearch Consoleの正規表現フィルタでクラスター単位に測る。
  • AI による概要やAIモード向けに追加の要件は無いとGoogleは説明している。トピッククラスターは「AI検索専用の対策」ではなく、通常のSEOの延長として扱う。

以下、定義から順に、作り方・点検・測定・やめる判断の順で説明します。

ピラーページとクラスターページの役割分担

ピラーページは「そのテーマで何を知る必要があるか」を一覧できる入口です。定義、全体の流れ、各論点の要約を載せ、詳しい手順や数値はクラスターページへ渡します。クラスターページは1つの論点を最後まで書き切るページで、手順・設定値・事例を持ちます。

ピラー・クラスター・内部リンクの比較表

項目 ピラーページ クラスターページ
担当する範囲 テーマ全体 1つの論点
狙う検索語の例 トピッククラスター トピッククラスター 作り方
本文の書き方 要約+各論へのリンク 手順・数値・事例まで
リンクの向き 全クラスターへ張る ピラーへ戻す
更新のきっかけ クラスターの追加・統合 仕様や数値の変更

表の検索語は書き分けの例です。広い語(例:「トピッククラスター」)はピラー、語の後ろに「作り方」「効果」「ツール」などの限定語が付く検索はクラスターが受け持つのが基本形ですが、限定語の有無だけで機械的に分割せず、検索結果に並ぶページと読者が求める回答の範囲を確かめます。詳しい説明を独立した記事に分けるのは、ピラーとは異なる読者の目的に答え、単独でも読む価値のある内容になる場合です。

HubSpotが提唱したトピッククラスターの出どころ

トピッククラスターという設計は、HubSpot Researchが2017年に公開したレポート「Topic Clusters: The Next Evolution of SEO」(著者 Mimi An。HubSpotが配布するPDFのメタデータ上の作成日は2017年5月10日)で広まりました。同じ題名の記事は現在もHubSpotブログに掲載されており、2026年6月17日に更新されています。そこでは、幅広いテーマを扱うピラーページと、関連するサブトピックに絞ったクラスターページを内部リンクで結ぶコンテンツ戦略として説明されています。

HubSpotは現在もMarketing HubとContent HubのProfessional・Enterpriseで、トピックとサブトピックを整理するSEOツールを提供しています。ただし同社のナレッジベースは「HubSpotでトピッククラスターを作成しても、ウェブサイトのSEOには直接影響しません」と注記しています。ツールで設計図を作っても順位は変わらず、効くのは実際に公開したページと内部リンクのほうです。

ピラーページの型と書く範囲

ガイド型とリソース型の使い分け

本記事では、ピラーページを2つの型に分けて説明します。テーマを順に解説し、各段落からクラスターへ送るガイド型と、テーマに関する記事・用語・ツールの入口を一覧にするリソース型です。検索語が「〜とは」「やり方」なら読者は説明を求めているのでガイド型、「一覧」「まとめ」「テンプレート」なら探し物の入口を求めているのでリソース型が合います。迷ったらガイド型にします。リソース型では、各リンク先の内容と選ぶ基準を添え、読者が目的の情報を探せる入口にします。

ピラーで書かないことの線引き

ピラーページで1論点に割く分量は、その論点の結論と、クラスターへ進む理由が分かる程度にとどめます。手順の全ステップ、設定値の一覧、ツールの比較表まで書くと、クラスターページと同じ検索意図を2つのURLが取り合うことになります。Search Consoleで同じ検索語に自社の2URLが表示されていたら、検索意図と本文の重複を確認します。複数URLの表示だけでは、食い合いによる悪影響までは判断できません。発見の手順と統合・分離の判断はキーワードカニバリゼーションの発見手順と判断基準で詳しく扱っています。

トピッククラスターの作り方:既存記事の棚卸しから始める6ステップ

ゼロからサイトを作る場合を除き、多くの運営者はすでに記事を持っています。新規記事を書く前に既存記事を整理しないと、同じ意図の記事が増えるだけです。

  1. テーマを1つ決める:自社の事業に近く、「作り方」「効果」「ツール」のような限定語付きの検索意図が3束以上ある語を選ぶ。限定語が数語しかないテーマはクラスターにする意味が薄い。
  2. 既存記事を棚卸しする:Search Consoleの検索パフォーマンスで、そのテーマ語を含む検索語と表示URLを書き出す。1つの検索語に2URL以上が出ていれば、意図と本文が重複していないかを確認する統合の検討候補。
  3. 検索意図ごとに束ねる:検索語を意図単位にまとめ、1束=1クラスターページに割り当てる。手作業がつらい規模ならキーワードクラスタリングの手順のように検索データを機械的に束ねる。
  4. ピラーページを書く:各束の要約を1段落ずつ置き、該当するクラスターへ文中リンクを張る。既存記事のうち最も広い語で表示されている1本をピラーに昇格させてもよい。
  5. 足りないクラスターを書く:束のうち受け皿が無いものだけを新規で書く。競合が持っていて自社に無い論点の洗い出しはコンテンツギャップ分析の手順が使える。
  6. 相互リンクを点検し、測定を始める:公開後に後述のスクリプトでリンクの抜けを確認し、Search Consoleでクラスター単位の表示回数とクリックを記録する。

手順2で統合候補が見つかったら、ピラーを書く前に片付けます。重複を抱えたままクラスターを組むと、どちらのURLに内部リンクを集めるかが決まらず、リンク設計が二重になります。

内部リンクの張り方:Googleのリンクのベストプラクティスに沿う設計

Googleはリンクに関するベスト プラクティスで、リンクを「ページの関連性を判断し、クロールする新しいページを見つける際」のシグナルとして使うと説明しています。トピッククラスターの内部リンクは、この2つの役割(発見と関連性)を満たすように張ります。

クロールされるリンクの条件:href付きのa要素

同じページで、Googleがクロールできるのは「通常、リンクが href 属性を持つ <a> HTML 要素」である場合だとされています。href の無い <a> や、クリック時のスクリプトで遷移する要素からはURLを確実に抽出できないとも書かれています。CMSのカード部品やタブ切り替えで関連記事を出しているサイトは、出力されたHTMLを開き、クラスターへのリンクが <a href="..."> になっているかを確認してください。

アンカーテキストの書き方

アンカーテキストは、ユーザーとGoogleにリンク先の内容を伝える文字列です。同ガイドは良いアンカーテキストを「内容が具体的で、適度に簡潔で、テキストが掲載されているページとリンク先のページの両方に関連があるテキスト」と説明しています。ピラーからクラスターへは「キーワード選定の手順」のようにリンク先の論点名を書き、「こちら」「詳細」のような中身の無い語は避けます。クラスターからピラーへ戻すリンクも同じで、ピラーのテーマ名をそのまま使えば十分です。リンクの文脈となる周囲の文章も含めた設計はコンテキストナビゲーションの関連リンクの選び方にまとめています。

リンクの数は、クラスターの本数が決めます。ピラーから全クラスターへ1本ずつ、クラスターからピラーへ1本以上が基本形です。クラスター同士は、読者が続けて読む関係にあるものだけを結びます。テーマ外のページへのリンクは、読者が次に必要とする情報かどうかを確認してから設置します。

相互リンクの点検:Pythonによるリンク漏れの検出

記事の追加時に既存ページからのリンクを張り忘れたり、統合・URL変更後に旧URLへのリンクが残ったりすることがあります。クラスターが増えるほど両方向のリンク確認に手間がかかるため、定期的な点検は自動化すると確認漏れを減らせます。次のスクリプトは、ピラーのURLと複数のクラスターURLを渡すと、両方向のリンクがあるかを1行ずつ判定します。Python 3.6以降の標準ライブラリだけで動き、追加パッケージは不要です。このコードはUTF-8のHTMLと、base要素で相対URLの基準を変更していないページを対象にしています。JavaScriptの実行後に追加されるリンクは検出できず、画像リンクのalt属性もアンカー欄には出力しません。

# ピラーページとクラスターページの相互リンクを点検する(標準ライブラリのみ)
import sys
import urllib.request
from html.parser import HTMLParser
from urllib.parse import urljoin, urldefrag

class LinkParser(HTMLParser):
    """<main>(無ければページ全体)の中の a 要素から href とアンカーテキストを集める"""
    def __init__(self, base):
        super().__init__()
        self.base = base
        self.links = []      # (正規化URL, アンカーテキスト, main内か)
        self.in_main = 0
        self.has_main = False
        self.href = None
        self.text = []

    def handle_starttag(self, tag, attrs):
        if tag == "main":
            self.in_main += 1
            self.has_main = True
        if tag == "a":
            href = dict(attrs).get("href")
            if href:
                self.href, self.text = key(urljoin(self.base, href)), []

    def handle_data(self, data):
        if self.href:
            self.text.append(data.strip())

    def handle_endtag(self, tag):
        if tag == "main":
            self.in_main -= 1
        if tag == "a" and self.href:
            self.links.append((self.href, " ".join(t for t in self.text if t), self.in_main > 0))
            self.href = None

def key(url):
    """比較用に # 以降と末尾のスラッシュを除く(取得には元のURLを使う)"""
    return urldefrag(url)[0].rstrip("/")

def body_links(url):
    req = urllib.request.Request(url, headers={"User-Agent": "cluster-link-check"})
    with urllib.request.urlopen(req, timeout=20) as res:
        html = res.read().decode("utf-8", "replace")
        base = res.geturl()  # リダイレクト後のURLを相対リンクの基準にする
    p = LinkParser(base)
    p.feed(html)
    # <main> があるページはその中だけを数える(ナビ・フッターのリンクは相互リンクに含めない)
    return [(h, t) for h, t, m in p.links if m or not p.has_main]

def main(pillar, clusters):
    pillar_out = {h for h, _ in body_links(pillar)}
    ng = 0
    for c in clusters:
        back = [t for h, t in body_links(c) if h == key(pillar)]
        down = key(c) in pillar_out
        if not (back and down):
            ng += 1
        print(f"{'OK' if back and down else 'NG'}\t{c}\tピラー→クラスター:{'あり' if down else 'なし'}"
              f"\tクラスター→ピラー:{'あり' if back else 'なし'}\tアンカー:{' | '.join(back) or '-'}")
    return 1 if ng else 0

if __name__ == "__main__":
    if len(sys.argv) < 3:
        sys.exit("使い方: python3 check_cluster_links.py <ピラーURL> <クラスターURL> [...]")
    sys.exit(main(sys.argv[1], sys.argv[2:]))

次は、ピラー1枚とクラスター3枚を想定した出力例です。1本目は両方向あり、2本目はクラスター側のリンクがフッターにしか無い、3本目はピラーのグローバルナビにしかリンクが無く本文からは張られていない、というケースです。

OK	http://127.0.0.1:52575/c1.html	ピラー→クラスター:あり	クラスター→ピラー:あり	アンカー:SEOの基本
NG	http://127.0.0.1:52575/c2.html	ピラー→クラスター:あり	クラスター→ピラー:なし	アンカー:-
NG	http://127.0.0.1:52575/c3.html	ピラー→クラスター:なし	クラスター→ピラー:あり	アンカー:こちら

判定を原則として<main>内に限っているのは、ヘッダーやフッターのリンクは全ページ共通で、クラスターの関係を表さないからです。ただし <main> の中に置かれたパンくずやサイドメニューのリンクは集計に含まれます。テーマが <main> を出力しないサイトではページ全体のリンクで判定するので、その場合はNGが出にくくなる点に注意してください。

末尾のスラッシュと # 以降は除いて比較します。このため、末尾スラッシュの有無で同じページに到達することを事前に確認したサイトだけで使用してください。異なるページを返すサイトでは、リンクがなくても「あり」と誤判定する場合があります。3本目のようにアンカーが「こちら」になっているものも、この出力で一緒に見つかります。

正常に取得できたページにNGが1本でもあれば終了コードは1です。通信エラーでは途中終了するため、定期実行では標準エラーも保存し、非ゼロ終了を通知する設定を別途用意してください。

実行するときは、点検先のサーバーに負荷をかけないよう対象を自社サイトに限ってください。Cloudflareなどのボット対策が強いサイトでは403が返ることがあり、その場合は管理画面側からCMSのデータベースやエクスポートでリンクを確認する方が確実です。

効果測定:Search Consoleの正規表現によるクラスター単位の集計

トピッククラスターの成果は、ピラー1本の順位ではなく、クラスター全体の表示回数とクリックで見ます。Search Consoleの検索パフォーマンスでは、2021年4月7日にページとクエリのフィルタが正規表現に対応しました。フィルタの作成画面でプルダウンから「カスタム(正規表現)」を選び、クラスターに属するURLをまとめて指定します。

https://www\.example\.com/blog/(topic-cluster|pillar-page|cluster-page|internal-link)/$

この条件で期間比較を使えば、指定したページ群の表示回数の増減を確認できます。比較期間の日数と検索タイプ・国・デバイスの条件を揃え、新規ページの追加分や季節変動と、内部リンク変更の効果を区別して解釈します。クエリ側にも「トピッククラスター|ピラーページ|クラスターページ」のような正規表現をかけると、指定語を含む検索語に絞れます。ただし、指定語を含まない関連検索語や匿名化されたクエリも除外されるため、テーマ全体の数字とは区別します。

見る順番は、表示回数→平均掲載順位→クリックです。表示回数は、検索結果がGoogleの定める表示条件を満たした場合に計上されます。掲載順位が低くても計上される場合はありますが、公開直後から増えるとは限りません。クリックの変化は、掲載順位だけでなく表示回数やCTRも併せて確認します。数週間で表示回数も増えない場合は、リンクの抜けかインデックス未登録を疑い、前章のスクリプトとURL検査ツールで確認します。

トピッククラスターのSEO効果:Googleが説明している範囲

HubSpotの原典レポートは、同社のAnum HussainとCambria Daviesが2016年に一部のトピックで行った実験で、内部リンクを増やすほど検索結果での掲載位置が上がり、表示回数も増えたと報告しています。ただしこれはHubSpot自身のブログでの観察で、どのサイトでも同じ結果になることを示したものではありません。Googleが公式に説明しているのは、リンクがページの発見と関連性の判断に使われること(前述のリンクのベストプラクティス)までです。トピッククラスターの効果として確実に言えるのは、次の2つです。

  • クラスターページがピラーから1クリックで辿れるので、新しいページがクロールで見つかりやすい。
  • リンクとアンカーテキストで「どのページがどの論点を担当しているか」を検索エンジンと読者に示せる。

GoogleのSEOスターターガイドは、サイトを論理的に整理すると「検索エンジンやユーザーがページ間の関係を把握しやすくなる」と勧める一方で、「ただし、今すぐ整理し直す必要はありません」とも書いています。整理されていないサイトでも、検索エンジンはおそらくそのまま把握できるという説明です。トピッククラスターは既存サイトを急いで作り直す理由にはならず、新しい記事を足すときや重複を片付けるときに順番に寄せていく設計だと考えてください。

「テーマ単位で専門性が評価される」という説明もよく見かけますが、Googleの「トピック オーソリティ」は公式にはニュース検索向けのシステムとして説明されているもので、一般のサイトの記事群にスコアを付ける仕組みとして公表されたものではありません。この違いはトピカルオーソリティのGoogle公式の位置づけで一次情報とともに整理しています。

AI検索とピラーページ:Google公式が言っていることと言っていないこと

「ピラーページ ai」のように、AI検索との関係を調べる検索もあります。GoogleのAI 機能とウェブサイトのドキュメントは、AI による概要やAIモードに表示されるための「追加の要件はなく、別途特別な最適化を行う必要もありません」と書いています。続けて、引き続き重要なSEOの基本として「コンテンツがウェブサイトの 内部リンク から簡単に見つけられるようにします」を挙げています。

同じドキュメントには、AI による概要とAIモードが「クエリ ファンアウト」手法を使う場合があり、関連する複数のサブトピックについて検索を実行して回答を組み立てる、とも書かれています。ここから言えるのは、1つの質問が複数のサブトピックの検索に分解される場合があるということまでです。「トピッククラスターを組めばAIに引用される」とGoogleは言っていません。ファンアウトの仕組みとSEOへの影響はクエリファンアウトの解説で扱っています。

実務上の結論は、AI検索のために別のピラーを作らないことです。サブトピックごとに答えが明確なクラスターページを持ち、内部リンクで辿れるようにしておくことは、通常の検索とAI機能の両方で同じ準備になります。AI向けの専用ファイルや特別な構造化データも、同ドキュメントで不要と明記されています。

トピッククラスターを作らない方がよい場面と失敗パターン

トピッククラスターは万能ではありません。次の条件に当てはまるなら、作らないか規模を絞ります。

限定語付きの検索が少ないテーマ

限定語の種類が少ない場合は、各論点を独立した記事で扱う必要があるかを確認します。1本の記事に章として収めた方が、薄いページを増やさずに済みます。本記事では、意図の異なる束が3つ未満なら、まず1本にまとめられるかを検討する方針を提案します。これはGoogleの基準ではなく、薄い記事への分割を避けるための編集上の目安です。

クラスターページを量産して埋める設計

束の数だけ機械的に記事を作ると、Googleのスパムに関するポリシーにある大量生成されたコンテンツの不正使用に近づきます。同ポリシーはこれを「ユーザーをサポートすることではなく、検索ランキングの操作を主な目的として大量のページを生成すること」と定義し、生成AIなどで価値を付加せずに大量のページを作る行為を例に挙げています。地名や製品名を差し替えただけのクラスターは、この典型です。データから大量のページを作る手法と、ポリシーとの境界はプログラマティックSEOの解説にまとめています。

ピラーページの要約不足とリンク集化

ピラーページに各クラスターのタイトルとリンクしか無い状態は、読者にとってもGoogleにとってもカテゴリ一覧と変わりません。各論点について、クラスターを読まなくても結論が分かる程度の要約を1段落ずつ置きます。逆に、要約が長くなってクラスターの手順まで書き始めたら、前述の食い合いの側に寄っています。

重複記事の統合前に行うクラスター構築

同じ意図の記事が2本あるなら、先に本文の重複と各記事にしかない情報を確認します。片方にしかない論点を残す側へ移し、もう一方を301リダイレクトで統合してからクラスターに組み込みます。統合しないまま組むと、ピラーからどちらのURLへリンクするかが決まらず、内部リンクの設計が二重になります。サイト全体のページの階層と役割の決め方はコンテンツアーキテクチャの設計手順が参考になります。

テーマの選定から既存記事の棚卸し、統合と内部リンクの再設計までを社外に任せたい場合は、SEO内部施策・キーワード設計の支援で相談を受け付けています。

よくある質問

ピラーページとピラーコンテンツは違うものですか?

同じものを指します。英語の pillar page と pillar content がそれぞれ訳されて広まったため、日本語では両方の呼び方があります。どちらもトピッククラスターの中心として、テーマの全体像を扱い、各クラスターページへ内部リンクで送るページのことです。社内で呼び方を揃えておけば、どちらを使っても問題ありません。

ピラーページとクラスターページの違いは何ですか?

扱う範囲とリンクの向きが違います。ピラーページはテーマ全体を要約し、全クラスターへリンクする役割です。クラスターページは「作り方」「効果」など1つの論点を手順や数値まで書き切り、ピラーへリンクを戻します。同じ検索意図への回答が重複する場合は、各ページの役割を見直します。同じ検索語で複数URLが表示されるだけでは悪影響とは判断せず、本文の重複と検索パフォーマンスを確認します。

ピラーページの文字数の目安はありますか?

文字数の基準はありません。GoogleのSEOスターターガイドも「魔法の文字数も、最小や最大の文字数も存在しません」と書いています。ピラーページの分量は、クラスターの本数と、各論点の要約に必要な長さで決まります。クラスターが8本なら8つの要約段落と定義・全体の流れが必要になり、結果として長くなるだけです。字数を目標にすると、クラスターに渡すべき詳細までピラーに書いてしまいます。

トピッククラスターは何記事から始めればよいですか?

ピラー1本とクラスター3本程度から始め、検索データを見ながら増やすのが現実的です。これは本記事の編集上の提案で、少数の記事から始めると、検索データを確認して追加テーマを選び直せるためです。限定語付きの検索意図が少なく、各論点を独立した記事として十分に説明する必要がなければ、1本の記事にまとめます。

トピッククラスターの効果はいつ出ますか?

期間を約束できる一次情報はありません。Search Consoleの表示回数は、検索結果が表示条件を満たした場合に計上されます。順位やクリックと併せて推移を確認してください。公開後の数週間で表示回数が増えないページは、内部リンクの抜けかインデックス未登録を疑い、相互リンクの点検とURL検査を先に行ってください。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram・LinkedIn・Facebook では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.29 テックブログ ソニー生命の不正アクセス:38.5万件の対象確認と窓口、停止中の手続き
  2. 2026.10.31 テックブログ 松屋の不正アクセス:237万件の対象確認と窓口、漏れたパスワードの守り方
  3. 2026.10.31 テックブログ 無印良品の情報漏洩:MUJIアプリ最大2,726万件の対象確認となりすましメール対策
  4. 2026.10.27 テックブログ Joshin(ジョーシン)不正アクセス:最大600万件の対象とサブスク初期パスワードの対処
  5. 2026.10.28 テックブログ リンツ不正アクセス:314万件の対象確認とパスワード強制リセット後の対処

RELATED POSTS 関連記事

目次