このページでは、他のプラグインが生成するソースコードと、私たちのプラグインが出力する“最適化された構造化データ”を比較できます。無駄をそぎ落としたシンプルな記述が、検索エンジンにどれだけ有効か──ぜひご確認ください。

For effective SEO, structured data should be lean and purposeful. Most SEO plugins tend to generate bloated JSON-LD with unnecessary elements. Here, we compare typical plugin output with our plugin’s clean, SEO-optimized code. See how streamlined markup makes a difference ? both for search engines and for performance.

そもそも現代のGoogle検索エンジンは、世界中に存在する膨大なWebサイト情報をリアルタイムで処理しています。この膨大なデータの中から、必要な情報を正確かつ迅速に理解し、分類するには、データそのものの最適化が不可欠です。この背景からも、検索エンジンに向けて発信する情報、つまり構造化データ(JSON-LD)は、無駄を極力排除し、重要なポイントだけを明確に伝えることが強く求められています。

ところが、多くのSEOプラグインが出力するJSON-LDは、必要以上に冗長で、検索エンジンにとって重要ではない情報まで詰め込まれてしまっているのが現実です。

本来、サイトの本質を正確に伝えるための手段であるはずのJSON-LDが、逆にノイズとなり、「重要情報が埋もれる」「データ解析が非効率化する」「結果的にSEO効果が低下する」といったリスクを生んでしまっています。

私たちはこの問題を深刻に捉え、検索エンジンにとって本当に必要な情報だけを簡潔に届けるプラグインを開発しました。無駄な項目を一切省き、検索エンジンが求める情報を的確に伝える──それが、私たちの「最適化された構造化データ」です。

では、一般的なSEOプラグインが出力しているJSON-LDには、どのような無駄が含まれているのか? 次に、典型的な例とその問題点について、具体的にご紹介していきます。以下にSEOプラグインが出力するJSON-LD(A)(B)があり(C)としてSyntaxHub-JLDが出力JSON-LDを表示しています。

(A):「All in ONE SEO」が出力するJSON-LD(パンくずリスト・ページ説明・サイト説明)


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BreadcrumbList",
      "@id": "https://(domein)/second-layers/third-layers/#breadcrumblist",
      "itemListElement": [
        {
          "@type": "ListItem",
          "@id": "https://(domein)/#listItem",
          "position": 1,
          "name": "HOME",
          "item": "https://(domein)/",
          "nextItem": {
            "@type": "ListItem",
            "@id": "https://(domein)/second-layers/#listItem",
            "name": "second-layers"
          }
        },
        {
          "@type": "ListItem",
          "@id": "https://(domein)/second-layers/#listItem",
          "position": 2,
          "name": "second-layers",
          "item": "https://(domein)/second-layers/",
          "nextItem": {
            "@type": "ListItem",
            "@id": "https://(domein)/second-layers/third-layers/#listItem",
            "name": "third-layers"
          },
          "previousItem": {
            "@type": "ListItem",
            "@id": "https://(domein)/#listItem",
            "name": "HOME"
          }
        },
        {
          "@type": "ListItem",
          "@id": "https://(domein)/second-layers/third-layers/#listItem",
          "position": 3,
          "name": "third-layers",
          "previousItem": {
            "@type": "ListItem",
            "@id": "https://(domein)/second-layers/#listItem",
            "name": "second-layers"
          }
        }
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://(domein)/#organization",
      "name": "(WebSite-NAME)",
      "url": "https://(domein)/"
    },
    {
      "@type": "WebPage",
      "@id": "https://(domein)/second-layers/third-layers/#webpage",
      "url": "https://(domein)/second-layers/third-layers/",
      "name": "third-layers - (WebSite-NAME)",
      "description": "(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)",
      "inLanguage": "ja",
      "isPartOf": {
        "@id": "https://(domein)/#website"
      },
      "breadcrumb": {
        "@id": "https://(domein)/second-layers/third-layers/#breadcrumblist"
      },
      "datePublished": "2025-04-03T13:24:17+09:00",
      "dateModified": "2025-04-03T13:25:20+09:00"
    },
    {
      "@type": "WebSite",
      "@id": "https://(domein)/#website",
      "url": "https://(domein)/",
      "name": "(WebSite-NAME)",
      "inLanguage": "ja",
      "publisher": {
        "@id": "https://(domein)/#organization"
      }
    }
  ]
}
</script>

(B):「Yoast SEO」が出力するJSON-LD(パンくずリスト・ページ説明・サイト説明)


<script type="application/ld+json" class="yoast-schema-graph">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://(domein)/second-layers/third-layers/",
      "url": "https://(domein)/second-layers/third-layers/",
      "name": "third-layers - (WebSite)",
      "isPartOf": {
        "@id": "https://(domein)/#website"
      },
      "datePublished": "2025-04-03T04:24:17+00:00",
      "dateModified": "2025-04-03T04:25:20+00:00",
      "breadcrumb": {
        "@id": "https://(domein)/second-layers/third-layers/#breadcrumb"
      },
      "inLanguage": "ja",
      "potentialAction": [
        {
          "@type": "ReadAction",
          "target": [
            "https://(domein)/second-layers/third-layers/"
          ]
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://(domein)/second-layers/third-layers/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "HOME",
          "item": "https://(domein)/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "second-layers",
          "item": "https://(domein)/second-layers/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "third-layers"
        }
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://(domein)/#website",
      "url": "https://(domein)/",
      "name": "(WebSite)",
      "description": "(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)",
      "potentialAction": [
        {
          "@type": "SearchAction",
          "target": {
            "@type": "EntryPoint",
            "urlTemplate": "https://(domein)/?s={search_term_string}"
          },
          "query-input": {
            "@type": "PropertyValueSpecification",
            "valueRequired": true,
            "valueName": "search_term_string"
          }
        }
      ],
      "inLanguage": "ja"
    }
  ]
}
</script>

1)パンくずリスト(BreadcrumbList)について:(A)5~50行目、(B)28〜50行目

基本的に、@idをURLフラグメント(#breadcrumblist)付きで指定することは、SEO的に特別なプラス評価を得る要素ではない。パンくずリストのJSON-LDでは、@idは必須プロパティではなく、もし指定する場合は、以下のようなシンプルなURLの方が望ましい。
"@id": "https://(ドメイン)/second-layers/third-layers/"
理由:フラグメント識別子(#breadcrumblist)は、ページ内のセクションを指し示すものであり、SEOの文脈では特に意味を持たない。余分な識別子を付けることで、かえってデータの複雑さが増す可能性がある。


2)WebPageについて:(A)58〜72行目、(B)5〜27行目

まず、@idをフラグメント(#webpage)付きで指定するのことは上記パンくずリストでも触れたが、特別なプラス評価をえる要素でとなく、Vドメインサイトの一部分としての記述、パンくずリストで階層を示しているが、これもパンくずリストと重複となる。(B)では、ページ説明(Description)もない。改善策としては、descriptionプロパティの追加、mainEntityOfPageの追加、imageプロパティの追加、と考えられる。
SyntaxHubプラグインの改善ポイント:mainEntityOfPageの追加、imageプロパティの追加。


3)WebSiteについて:(A)73〜82行目、(B)51〜72行目

上記と関連するが@idが必須ではなくシンプルに重複した余計な記述と思える。(A)は、URL、Name、言語、作成者で、(B)は、URL、Name、説明、poentialAction、SearchAction、EntryPoint、言語、といった内容。少々難解なのが「PropertyValueSpecification」これは、Schema.orgに定義されているタイプの1つで、ある入力項目(たとえばフォームや製品仕様のフィールドなど)に対して、具体的な値の仕様(条件)を記述するための構造化データの一つであり、ここに記述する意味が弱いと感じざるを得ない。そして、この記述がSEO的には直接的なプラス要因とはされていない。


4)Organizationについて:(A)51〜56行目、(B)なし

Organization: 企業、団体、組織の詳細情報(住所、連絡先など)を提供するために使用される記述です。ただ、企業、団体、組織を表すtypeは、Organization(企業・組織団体など)以外にCorporation(企業・会社)、LocalBusiness(診療所・店舗・地域密着でサービス提供する事業体)があり、これらをOrganizationで統一するのは無理があるよう感じる。同時に、記載されている内容が、名称とURL(ドメイン)のみなので、検索からプラス評価に直結するとは考えづらい。


5)previousItemについて:(A)32~48行目、(B)なし

  • Schema.orgのBreadcrumbListの標準仕様では、「itemListElementの配列」「各要素のpositionプロパティ」「各要素のitem(URL)」「各要素のname」 これらが必要十分な情報となっています。
  • 現在の実装では、
    「previousItemとnextItemで冗長な相互参照が行われています」
    「これらの情報はitemListElement配列の順序とpositionプロパティで既に表現されています」
    「余分なデータ量が増えることでJSONが複雑になっています」
  • SEOの観点から、
    ・Googleなどの検索エンジンはpositionプロパティと配列の順序で階層関係を理解します
    ・previousItemとnextItemは検索エンジンによって特別な意味を持つものとして扱われません
  • (結論)
    したがって、previousItemとnextItem両方を削除することで、JSON-LDをよりシンプルかつ効率的にすることができます。これにより「データサイズの削減」「構造の簡略化」「メンテナンス性の向上」 が期待できます。

    (C):SyntaxHub-JLDが出力するJSON-LD(パンくずリスト・ページ説明・サイト説明)

    
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "HOME",
          "item": "https://(domein)/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "second-layers",
          "item": "https://(domein)/second-layers/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "third-layers"
        }
      ]
    }
    </script>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebPage",
      "url": "https://(domein)/second-layers/third-layers/",
      "name": "third-layers",
      "description": "(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)(lorem ipsum)[…]",
      "mainEntityOfPage": "https://(domein)/second-layers/third-layers/",
      "headline": "third-layers",
      "inLanguage": "ja",
      "isPartOf": {
        "@type": "WebSite",
        "url": "https://(domein)"
      }
    }
    </script>