SeekerLab

SEO / SOURCE CHECK

テーマとSEOプラグインの出力重複を確認する

設定画面のON/OFFだけに頼らず、Googleが受け取る公開HTMLを見て、SEO機能の担当を一つに整理します。

WordPressでは、テーマ、SEOプラグイン、WordPress本体が同じ種類のタグを出力することがあります。設定画面上は正常でも、公開HTMLにcanonicalが2本、OGPタイトルが2組、JSON-LDが複数出ることがあります。問題の有無は「何を入れたか」ではなく、最終的に返されたHTMLで判断します。

重複があるからといって、直ちに検索順位が下がると断定はできません。しかし、異なるURLやタイトルを同時に伝えると、検索エンジンやSNSがどちらを採用すべきか判断しにくくなります。また、設定変更のたびに片方だけが更新される状態は運用ミスを招くため、担当を一つに整理しておくことが重要です。

最初に確認する5種類

  • canonical:正規URLを示すリンクタグ
  • robots:index / noindexなどのインデックス登録に関する指示
  • Open Graph:og:title、og:description、og:imageなど
  • 構造化データ:Article、WebPage、BreadcrumbListなどのJSON-LD
  • XMLサイトマップ:検索エンジンへ公開URLを伝える一覧

件数だけでなく、値がページ内容と一致しているかも確認します。canonicalが1本でも別ページを指していれば問題です。robotsが複数あり、一方がindex、もう一方がnoindexなら指示が衝突しています。OGP画像も、存在しないURLや管理画面でしか見られないURLになっていないかを開いて確認します。

構造化データは複数あっても、それぞれの役割が異なれば必ずしも重複ではありません。ArticleとBreadcrumbListが併存するのは自然ですが、同じ記事を表すArticleがテーマとプラグインから二つ出て、著者や日付が異なる場合は整理が必要です。

Luccaが担当する範囲

Lucca 1.0.13は、基本メタ情報、Open Graph、Twitterカード、Schema.org、canonical、XMLサイトマップ、画像altの補助をテーマ内に持ちます。canonicalについてはYoast SEO、Rank Math、All in One SEO、SEOPress、The SEO Frameworkの有効状態を検出し、テーマ側の出力を止める実装があります。ただし、OGPや構造化データなど別の出力まで同じ判定になるとは限らないため、個別に確認が必要です。

プラグイン検出があることは、確認不要という意味ではありません。プラグインのバージョンや設定、別の拡張機能、子テーマのコードによって最終出力は変わります。テーマやSEOプラグインを更新した後は、以前と同じ分担が維持されているかを公開HTMLで再確認します。

担当を決める際は、個別記事でタイトルや説明を調整する必要があるかも考えます。SEOプラグイン側で編集・分析を一元化するなら、重なる機能をプラグインへ寄せる方が運用しやすい場合があります。追加プラグインを使わずLuccaだけで運用するなら、テーマ側の出力と各ページの内容を定期的に確認します。

ブラウザで公開HTMLを確認する

ログインしていないウィンドウで対象ページを開き、「ページのソースを表示」を使います。開発者ツールのElementsはJavaScript実行後の状態になるため、まずサーバーが返したソースを確認します。canonicalog:titleapplication/ld+jsonrobotsを検索し、それぞれの件数と内容を記録します。

確認結果は、ページURL、タグ名、件数、出力値、担当候補の一覧にすると比較しやすくなります。HTMLの前後にあるコメント、クラス名、出力順から、テーマとプラグインのどちらが生成したか推測できる場合があります。分からないときは、ステージングで片方の機能だけを停止し、消えたタグを比較します。

本番サイトで機能を停止して調査する場合は、変更時間を短くし、キャッシュの影響を避けます。設定を変えたのに古いHTMLが返ると、重複が解消されていないように見えます。WordPress、サーバー、CDN、ブラウザのキャッシュを区別して確認してください。

HTMLを読んで判断する例

次は説明用の架空のHTMLです。Luccaの実際の出力を採取したものではありません。同じページのhead内に、異なるURLを指定するcanonicalがある場合を示します。

<link rel="canonical" href="https://example.com/guide/">
<link rel="canonical" href="https://example.com/">

この例では記事自身とトップページが同時に正規URLとして指定されています。記事を独立したページとして公開する意図なら、トップを指定する側の設定を調べます。行を直接消すのではなく、テーマ・プラグイン・個別記事設定のどこで生成しているかを特定し、修正後のソースを再取得します。canonicalはGoogleへのシグナルであり、採用を強制する命令ではありません。Googleの正規URL指定の説明では、指定方法同士で異なるURLを示さないよう案内されています。

<meta name="robots" content="index,follow">
<meta name="robots" content="noindex">

こちらは「後に書いたタグが勝つ」と考えないでください。Googleは競合する指示ではより制限の厳しいものを適用するため、この例ではnoindexが問題になります。HTMLだけでなくHTTPレスポンスのX-Robots-Tagにも指示を設定できるので、原因が見つからなければレスポンスヘッダーも確認します。robotsメタタグは主にインデックス登録などを制御し、robots.txtによるクロール制御とは役割が異なります。robotsメタタグの公式仕様を参照してください。

複数あるだけでは誤りといえないもの

JSON-LDのArticleとBreadcrumbList、複数のOGP画像、用途別に分けた複数のサイトマップは共存できます。「一つにする」は同じ役割を二重管理しないための運用方針です。すべてのタグやファイルを機械的に一個へ減らす意味ではありません。対象・値・意図が矛盾しているかを見てください。

ページ種類を分けて確認する

トップだけ正常でも十分ではありません。投稿、固定ページ、カテゴリ、タグ、著者、検索結果、ページネーションを確認します。投稿のcanonicalが記事URLなのに、2ページ目も1ページ目へ向いているなど、ページ種類によって競合が現れることがあります。アイキャッチあり・なしの記事でOGP画像も比較します。

最低限の検証セットとして、トップ、通常投稿、固定ページ、カテゴリ一覧、404を選びます。サイトで著者アーカイブやタグを公開しているなら、それらも追加します。ページごとにタイトル、説明、canonical、robots、OGP、構造化データを一行ずつ記録すると、抜けや差異を見つけやすくなります。

公開したくないページは、サイトマップから除外されていることと、適切なrobots指示があることを別々に確認します。サイトマップに載っていないだけでは、外部リンクから発見される可能性があります。反対に、公開したいページへ誤ってnoindexが付いていないかも見ます。

サイトマップはURLだけでなく応答を見る

/sitemap.xmlを開き、HTTP 200でXMLが返るか、投稿・固定ページのサブサイトマップへ移動できるかを確認します。テーマとプラグインが別URLでサイトマップを出している場合、robots.txtやSearch Consoleへ送るものを一つに決めます。古いURL、非公開ページ、重複URLが含まれていないかも確認します。

サイトマップ内のURLを数件開き、リダイレクトや404になっていないかを確かめます。HTTPからHTTPS、wwwありからなしなどへ毎回転送されるURLではなく、最終的な正規URLが直接記載されている状態が理想です。日付が含まれる場合は、実際の更新と不自然にずれていないかも見ます。

Search Consoleへ送信するサイトマップを変更したら、すぐにすべてのURLが再評価されるとは限りません。送信結果、読み込み日時、検出されたページ数を継続して確認します。古いサイトマップを停止する場合も、必要なURLが新しい側へ含まれていることを確認してから切り替えます。

担当を整理する手順

作業の目的は、すべてのSEO機能を一つの製品へ集めることではなく、タグの種類ごとに責任範囲を明確にすることです。現在の状態を保存してから、一種類ずつ担当を切り替えます。

  1. 現在の公開HTMLとサイトマップを保存する
  2. テーマとプラグインのSEO機能一覧を作る
  3. 重複している種類ごとに担当を一つ決める
  4. 片方だけを無効にする
  5. キャッシュを削除して同じページを再確認する
  6. 構造化データはリッチリザルトテストでも確認する
  7. Search Consoleでcanonicalとインデックス状態を確認する

変更後は、重複が消えたことだけでなく、必要なタグがゼロになっていないかを確認します。片方を停止したつもりで両方の出力が消えることもあります。担当、設定場所、確認日を記録しておけば、テーマやプラグインの更新後に同じ手順で比較できます。

よくある判断ミス

  • 同じ値なら二つあってもよい:将来片方だけが変わると矛盾するため、担当を一つにします。
  • トップだけ見れば十分:投稿タイプやアーカイブごとに出力処理が異なる場合があります。
  • 設定画面でOFFなら出ていない:キャッシュや別機能から出力されることがあるため、公開HTMLを確認します。
  • JSON-LDは一つだけが正しい:種類の異なる構造化データは共存できます。内容と対象が重複しているかで判断します。
  • サイトマップが開けば正常:収録URL、応答コード、正規URLへの一致まで確認します。

判断に迷う場合は、無理にすべてを削除せず、現在のHTMLを保存してからステージングで検証します。検索向け出力は結果が見えるまで時間がかかるため、変更日と理由を残し、短期間に何度も方針を変えないことも大切です。

二つの出力内容が偶然同じでも、将来片方だけ変更される可能性があります。「今は同じだから残す」より、どの機能を誰が担当するかを決めて記録する方が安全です。

まとめ

SEO設定の重複は、管理画面ではなく公開HTMLで見つけます。タグの件数、値、対象ページを確認し、一種類ずつ担当を決めてください。テーマやプラグインの更新後も同じ検証セットで再確認します。

サイトマップとSearch Consoleまで含めて記録すると、設定変更の影響を追いやすくなります。サイト全体の公開確認は安全な更新チェックリストと組み合わせると漏れを減らせます。

この記事の確認範囲:SeekerLabが開発するテーマの対象バージョンのコード・設定定義をもとに記載しています。用途の提案や説明用の例は、実機での測定結果とは区別しています。サーバーやプラグインを組み合わせた全環境での動作を検証したものではありません。執筆元と制作方針記述の訂正を連絡する