矛盾ペナルティの正体|title・H1・JSON-LDの不一致がAI引用を阻む理由
各章へクイックジャンプ:
第1章で示した3層構造のうち、最も矛盾が発生しやすく、最も検出されにくいのがLayer 1(メタ情報)× Layer 2(構造化データ)の境界です。 title、H1、og:title、JSON-LDのheadline—— これらが別々の主張をしている状態を、本ガイドでは"三枚舌"と呼びます。 本章では、その発生源を分解し、AIOGeoScanの診断レポートから矛盾を特定する手順と、具体的な修正コードまでを解説します。
1. なぜ"三枚舌"は最も検出されにくいのか
三枚舌問題の厄介さは、各カテゴリを単独でチェックすると問題が見えない点にあります。 titleもH1もJSON-LDも、それぞれは仕様どおりに書かれており、個別のLinterやSEOツールはエラーを出しません。 矛盾はカテゴリ境界でのみ可視化されます。
- 担当者の分業: title・meta descriptionはSEO担当/H1はデザイナー・ライター/JSON-LDはエンジニア—— 各担当が自分の持ち場で完結するため、横断確認の当事者が不在になりがちです。
- ツールの分断: titleはCMSの管理画面、H1はMDXファイル、JSON-LDはテンプレートのTypeScript—— 編集する場所がバラバラなため、同期ミスに気づく瞬間が構造的に存在しません。
- 時間差の発生: リリース直前にタイトルが変更されたが、JSON-LDは半年前の旧タイトルのまま—— リライト頻度が高いほど、「過去の正解」が残骸として残り続けます。
2. 三枚舌の典型5パターン
Layer 1 × Layer 2 の境界で頻出する矛盾を、発生源別に5つに分類します。 どれもAIOGeoScanの診断レポートで、「メタ情報」カテゴリと「構造化データ」カテゴリの値を横に並べると一目で確認できます。
パターン① title × JSON-LD.headline の乖離
最も頻発する矛盾。記事リライト時にCMS上のタイトルだけ変更され、JSON-LDは旧タイトルのまま残る。 Googleのタイトルリンク生成や各種クライアントのページ理解において、「このページの主題をどう表現するか」がぶれやすくなります。
❌ BEFORE:三枚舌状態
<title>税理士の選び方|2026年版 料金比較ガイド</title>
<h1>失敗しない顧問税理士の見つけ方</h1>
<script type="application/ld+json">
{
"@type": "Article",
"headline": "中小企業が知るべき税務の基本" // ← さらに別主題
}
</script>✅ AFTER:主題を揃える(派生は許容)
<title>顧問税理士の選び方|2026年版 料金比較ガイド</title>
<h1>失敗しない顧問税理士の選び方</h1>
<script type="application/ld+json">
{
"@type": "Article",
"headline": "顧問税理士の選び方|2026年版 料金比較ガイド"
}
</script>💡 許容される派生 vs 排除すべき矛盾
「選び方」と「見つけ方」は同義の派生(許容)、「選び方」と「税務の基本」は主題のズレ(排除)。主題エンティティ(この例では"顧問税理士の選び方")が3層で一致しているかが判定基準です。
パターン② title × og:title のブランド分裂
SEO用のtitleとSNS用のog:titleを別々に最適化した結果、別サイトのように見える状態。 Twitter/Xでシェアされた時のタイトルと、検索結果のタイトルが無関係だと、ページ主題の印象がチャネルごとに分裂します。
const PAGE_TITLE = '顧問税理士の選び方|2026年版 料金比較ガイド';
export const metadata: Metadata = {
title: PAGE_TITLE,
openGraph: {
title: PAGE_TITLE, // ← 同じ変数から派生
type: 'article'
},
twitter: {
title: PAGE_TITLE // ← 同じ変数から派生
}
};
// JSON-LDも同じ変数を使う
const jsonLd = {
'@type': 'Article',
headline: PAGE_TITLE
};パターン③ H1 × title の"二重人格"
デザイナーがH1を「キャッチコピー」として書き、titleはSEO担当が「検索キーワード」として書いた結果、 同じページに2つの異なる"顔"ができあがるパターン。 H1 と title の乖離は、Google のタイトルリンク生成や各種要約処理で参照される主題手がかりを不安定にします。
| 要素 | NGパターン(二重人格) | OKパターン(派生として許容) |
|---|---|---|
<title> | 顧問税理士の選び方|料金比較 | 顧問税理士の選び方|料金比較 |
h1 | 税務の未来を、あなたと。 | 失敗しない顧問税理士の選び方 |
| 主題の一致 | ❌ 別トピックに見える | ✅ 同じ主題の言い換え |
パターン④ meta description × 本文リードの乖離
クリック獲得を狙ったキャッチーなmeta descriptionと、本文のリード文(最初の1段落)が無関係というケース。 Google はスニペット生成において主に本文を使い、必要に応じて meta description を採用します。 そのため両者が大きく乖離していると、検索結果上の説明と本文内容のつながりが弱くなります。
❌ 乖離パターン
meta description:「3分で月10万円の節税!プロが教える秘密の方法」
本文リード:「本記事では、顧問税理士の選定基準について制度面から解説します」
→ ユーザー期待と本文内容に落差が生じ、検索結果の説明としても不安定。
✅ 整合パターン
meta description:「顧問税理士の選定基準を制度面から解説。料金相場と契約前確認事項まで。」
本文リード:「本記事では、顧問税理士の選定基準を、料金相場と契約前の確認事項を含めて制度面から解説します」
→ 両者が同じ情報範囲を示しており、AIは自己申告と内容の一致を確認できる。
パターン⑤ Organization.name × サイト表記の揺れ
組織スキーマの name が「株式会社Bennu」、フッターが「Bennu Inc.」、og:site_nameが「Bennu Corporation」—— 3つとも同じ会社なのに表記ルールが揺れている典型パターン。 組織名の名寄せやブランドの一貫性を損ねるため、サイト全体の説明コストを上げます。
// lib/site-config.ts(一次情報源)
export const SITE_CONFIG = {
legalName: '株式会社Bennu',
displayName: 'Bennu Inc.',
url: 'https://example.com'
};
// metadata
export const metadata: Metadata = {
openGraph: { siteName: SITE_CONFIG.displayName }
};
// JSON-LD
const orgJsonLd = {
'@type': 'Organization',
name: SITE_CONFIG.displayName,
legalName: SITE_CONFIG.legalName, // 法人名は legalName へ
url: SITE_CONFIG.url
};
// フッター描画も同じ変数から
<footer>© {new Date().getFullYear()} {SITE_CONFIG.displayName}</footer>3. 発生源を見極める:CMS・テンプレート・手動編集
矛盾パターンを特定したら、次に重要なのが「どこで発生したか」を見極めることです。 発生源を間違えると、修正しても同じ矛盾が再発します。
WordPressのYoastやAll in One SEOが自動生成したtitle・meta descriptionと、 テーマ側でハードコードされたH1が別経路で生成されている。対策:自動生成のテンプレート自体を主題ソースに揃える
サイトリニューアル前のJSON-LDテンプレートが残存し、新しいページ構造と噛み合っていない。 特に同種の記事群で型やプロパティ方針が意図なく揺れていると、保守性と検証観点がぶれやすい。対策:スキーマテンプレートの棚卸しと、型選定ルールの明文化
リライト時にタイトルだけ変更され、og:title・JSON-LDは旧値のまま。 MDXや手書きHTMLのページに頻発する。対策:一次情報源パターンで自動同期
4. AIOGeoScan診断レポートから矛盾を特定する手順
AIOGeoScanの診断レポートは「メタ情報」「構造化データ」を別カテゴリとして表示しますが、両カテゴリを"横串で読む"ことで三枚舌を可視化できます。具体的な読み方を4ステップで示します。
Step 1: メタ情報カテゴリから"主題4兄弟"を抽出
診断レポートの「メタ情報」セクションから、<title>・meta description・og:title・og:descriptionの4つの値を書き出します。 これがLayer 1側が主張する主題です。
Step 2: 構造化データカテゴリから"構造化4兄弟"を抽出
「構造化データ」セクションから、Article.headline・Article.description・Organization.name・author.nameの4つを書き出します。 これがLayer 2側が主張する主題と実体です。
Step 3: 見出しカテゴリからH1を抽出
「見出し & コンテンツ」セクションからH1を書き出します。 ここがLayer 3の主題主張。次の第3章で扱う「見出し階層の破綻」と別の論点なので、本章ではH1の値だけを比較対象にします。
Step 4: 横並びで主題の"一致グループ"を判定
9つの値を横に並べ、同じ主題エンティティを指しているかだけを判定します。 表現の揺れ(例:「選び方」と「見つけ方」)は許容、主題のズレ(例:「選び方」と「税務の基本」)は修正対象です。 この判定で浮かぶ「主題不一致の値」が、修正のターゲットになります。
| レイヤー | 項目 | 抽出値(例) | 主題グループ |
|---|---|---|---|
| Layer 1 メタ情報 | <title> | 顧問税理士の選び方|料金比較 | A |
meta description | 料金相場と契約前確認事項まで解説 | A | |
og:title | 失敗しない顧問税理士の選び方 | A | |
og:description | 3分で月10万円の節税! | B(主題ズレ) | |
| Layer 2 構造化データ | Article.headline | 中小企業が知るべき税務の基本 | C(主題ズレ) |
Article.description | 顧問税理士の選定基準を制度面から解説 | A | |
| Layer 3 見出し | h1 | 失敗しない顧問税理士の選び方 | A |
上の例では、主題グループAが優勢であり、og:description(B)とArticle.headline(C)が孤立していることが可視化されます。 修正すべきは「A」ではなく、「B」と「C」です。こうやってどの値を直すべきかの優先順位が機械的に決まるのが、 横串読みの最大の効用です。
5. "三枚舌を出さない"アーキテクチャ設計
一度修正しても、運用で再発するのが三枚舌の本質的問題です。根治するには、矛盾が発生しようがないアーキテクチャに移行する必要があります。 具体的には、第1章で紹介した一次情報源(SSOT)パターンの徹底実装です。
// app/articles/[slug]/page.tsx
type ArticleSource = {
title: string; // 主題の一次情報源
description: string; // 要約の一次情報源
publishedAt: string;
modifiedAt: string;
author: { name: string; url: string };
};
export async function generateMetadata(
{ params }: { params: { slug: string } }
): Promise<Metadata> {
const article: ArticleSource = await fetchArticle(params.slug);
return {
title: article.title,
description: article.description,
openGraph: {
title: article.title, // ← 完全同期
description: article.description, // ← 完全同期
type: 'article',
publishedTime: article.publishedAt,
modifiedTime: article.modifiedAt
}
};
}
export default async function ArticlePage(
{ params }: { params: { slug: string } }
) {
const article = await fetchArticle(params.slug);
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: article.title, // ← 完全同期
description: article.description, // ← 完全同期
datePublished: article.publishedAt,
dateModified: article.modifiedAt,
author: { '@type': 'Person', name: article.author.name }
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<h1>{article.title}</h1> {/* ← 完全同期 */}
{/* 本文 */}
</>
);
}⚠️ 派生が必要なケースでも「同じ変数から計算」する
og:titleをSEO用titleと別にしたい場合でも、og:title = article.titleを基準に機械的なルール(例:「|以降を削除」)で生成します。手動で別文字列を入力すると、SSOTの原則が崩れます。
6. 修正後の検証:3つの公式ツールで裏取り
修正が完了したら、以下の3つの外部ツールで「第三者視点」からの整合性を確認します。 AIOGeoScanの診断と外部ツールの結果が一致することで、ペナルティ解消が裏付けられます。
JSON-LDが正しく解釈されるかを確認。headline・author・datePublishedの値が 目視できるため、title・本文H1との照合に使えます。
X / Facebook / LinkedInの各プレビューツールで og:title・og:descriptionが titleと同じ主題を指しているか目視確認。
修正後に再スキャンし、メタ情報・構造化データ・見出しの各値を横串で再比較。 主題グループが1つにまとまれば完了。
7. 本章で見なかった領域:見出し階層の内部破綻
本章で扱ったのは Layer 1 × Layer 2 の主題矛盾です。 H1の値をLayer 1・Layer 2と突き合わせる観点では触れましたが、 H1の配下にあるH2・H3・H4の階層構造そのものの問題は別論点です。
「H1は正しいのに、H2-H3の階層が壊れているためAI Overviewsの強調スニペットから外れる」—— これは主題矛盾とは別のメカニズムで発生する整合性問題です。 次の 第3章「文脈の断絶」で、 LLMが見出し階層から「情報の包含関係」をどう抽出し、どこで誤るかを解説します。
- AIOGeoScanの診断レポートで、メタ情報・構造化データ・H1の9つの値を書き出す
- 9つを主題グループ(A/B/C)に分類し、孤立している値を特定する
- 孤立値の発生源(CMS / テンプレート / 手動)を見極める
- 一次情報源パターンで、同じ変数から派生するコードに移行する
- Rich Results Test + AIOGeoScan再診断で、主題グループが1つにまとまったか確認する
全4章を通して、カテゴリ横断の整合性がAIに与える影響を体系的に理解します。
あなたのサイトに
"三枚舌"は潜んでいませんか?
AIOGeoScanの診断レポートなら、title・meta description・og:title・JSON-LDのheadline・H1を 一画面で横に並べて確認できます。主題の"孤立値"を機械的に特定し、修正優先順位が一目で決まります。
今すぐ自社サイトの三枚舌を診断する