JSON-LDの書き方!コピペで使える実装コード5種類
JSON-LDは、Googleが構造化データの記述形式として最も推奨している方式です。2026年現在、AI検索(Google AI Overview・ChatGPT・Perplexity)の引用元としても重要な役割を果たしています。
本記事では、JSON-LDの基本的な書き方から、実際にSEGOが実装している構造化データのコードまで、すべて実装例つきで解説します。
Contents
JSON-LDとは?構造化データの基本と役割
JSON-LDは「JavaScript Object Notation for Linked Data」の略称で、Webページの情報をJSON形式で記述する構造化データの方式です。
たとえば「この記事を書いた人は誰か」「このサイトはどんなツールか」といった意味情報を、検索エンジンやAIが読み取れる形式で記述します。HTMLの<head>または<body>内に<script type="application/ld+json">タグで埋め込みます。
JSON-LDは、Microdataやrdfa.などの他の構造化データ形式と比べて、HTMLと分離して記述できるため管理しやすく、Googleも公式に推奨しています。
なぜ2026年にJSON-LDが重要なのか
結論から言うと、JSON-LDはAI検索時代において「AIに正しく情報を伝える唯一の公式な手段」だからです。
従来のSEOでは、検索エンジンがHTMLの文脈から情報を推測していました。しかしAI検索は、構造化データを優先的に参照して引用元を判断します。Google公式ドキュメント(構造化データの仕組み)でも、JSON-LD形式での実装が明記されています。
特にAI Overview・ChatGPT・Perplexityなどの生成AI検索は、JSON-LDで記述された著者情報・FAQ・HowToなどを重要なシグナルとして扱います。
| 構造化データ形式 | 特徴 | 推奨度 |
|---|---|---|
| JSON-LD | HTMLと分離、管理が容易 | ◎ Google推奨 |
| Microdata | HTMLタグに属性追加 | △ 旧式 |
| RDFa | HTMLタグに属性追加 | △ 旧式 |
JSON-LDの書き方|5つの基本ルール
JSON-LDを正しく書くために、以下の5つのルールを押さえておきましょう。
ルール1:script要素で囲む
必ず<script type="application/ld+json">で囲みます。タイプ指定を間違えると、Googleが認識しません。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "SEGO",
"url": "https://sego.jp"
}
</script>
ルール2:@contextと@typeは必須
@contextは常に"https://schema.org"を指定します。@typeは、そのエンティティが何なのかを指定する型です(Article、Person、FAQPageなど)。
ルール3:プロパティ名はSchema.orgの仕様に従う
自己流のプロパティ名は使えません。Schema.org公式で使えるプロパティ名を確認してください。
ルール4:文字列はダブルクォートで囲む
JSONの仕様に従い、キー名・文字列値ともにダブルクォート"で囲みます。シングルクォートは使えません。
ルール5:配列は複数要素を持てる
sameAs(同一エンティティの別URL)など、複数の値を持たせる場合は配列[]で記述します。
"sameAs": [
"https://x.com/OkaTakuma1",
"https://www.linkedin.com/in/takuma-oka-998a0b266/",
"https://note.com/takumaoka"
]
主要スキーマタイプ別・書き方テンプレート
ここでは、中小企業のサイトで最もよく使う4つのスキーマタイプを紹介します。
テンプレート1:Article(ブログ記事向け)
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "記事のタイトル",
"author": {
"@type": "Person",
"name": "著者名",
"url": "https://example.com/about"
},
"datePublished": "2026-04-18",
"dateModified": "2026-04-18",
"image": "https://example.com/og-image.jpg"
}
テンプレート2:FAQPage(よくある質問向け)
AI Overviewで特に引用されやすい形式です。
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "JSON-LDとは何ですか?",
"acceptedAnswer": {
"@type": "Answer",
"text": "構造化データをJSON形式で記述する方式です。"
}
}]
}
テンプレート3:HowTo(手順解説向け)
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "〇〇のやり方",
"step": [
{
"@type": "HowToStep",
"name": "ステップ1",
"text": "最初にやること"
},
{
"@type": "HowToStep",
"name": "ステップ2",
"text": "次にやること"
}
]
}
テンプレート4:Person(著者情報向け)
E-E-A-T強化のため、ブログ記事の著者情報として実装すべきスキーマです。
{
"@context": "https://schema.org",
"@type": "Person",
"name": "著者名",
"jobTitle": "職種",
"url": "https://example.com/about",
"sameAs": [
"https://x.com/username",
"https://linkedin.com/in/username"
],
"knowsAbout": ["専門分野1", "専門分野2"]
}
【実例公開】SEGOのJSON-LD完全解説
ここからは、私が実際に運用しているサイト「SEGO」のJSON-LD実装を全公開します。他の解説記事では見られない、現場のコードそのままです。
SEGOでは@graph配列を使い、WebApplication・HowTo・Personの3つのエンティティを1つのJSON-LDにまとめています。
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebApplication",
"name": "SEGO",
"url": "https://sego.jp",
"description": "SEOとAI検索の両方からサイトを診断する無料ツール",
"applicationCategory": "SEO Tool",
"operatingSystem": "Web",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "JPY"
},
"author": {
"@id": "https://sego.jp/#takuma-oka"
}
},
{
"@type": "HowTo",
"name": "SEGOでWebサイトを診断する方法",
"step": [
{"@type": "HowToStep", "name": "URLを入力", "text": "..."},
{"@type": "HowToStep", "name": "30秒待つ", "text": "..."},
{"@type": "HowToStep", "name": "改善点を確認", "text": "..."}
]
},
{
"@type": "Person",
"@id": "https://sego.jp/#takuma-oka",
"name": "Takuma Oka",
"alternateName": "岡 拓馬",
"jobTitle": "International SEO Consultant",
"sameAs": [
"https://x.com/OkaTakuma1",
"https://www.linkedin.com/in/takuma-oka-998a0b266/",
"https://note.com/takumaoka",
"https://github.com/takuma51"
],
"knowsAbout": [
"International SEO",
"Technical SEO",
"GEO (Generative Engine Optimization)",
"AI Search Optimization"
]
}
]
}
この実装のポイントは@idを使った参照構造です。WebApplicationのauthorでは詳細を書かず、"@id": "https://sego.jp/#takuma-oka"という参照だけにしています。
同じPerson情報を、別の場所(@graph内)でフルスペックで定義。この方法によって、Googleが「このWebApplicationの著者 = このPerson」という関係を明確に認識できます。将来ブログ記事を追加する際、同じPersonを参照すれば重複記述も不要です。
実装後、Schema.org Validatorで確認したところ、3エンティティすべてが正常に認識され、エラー・警告ともにゼロでした。
実装後の検証方法|2つのツールを使い分ける
JSON-LDは書いて終わりではありません。必ず検証ツールで正しく認識されているか確認します。
検証には2つのツールを使い分けます。目的が異なるため、両方の実行をおすすめします。
| ツール名 | 目的 | リンク |
|---|---|---|
| Rich Results Test | Googleのリッチリザルト対象か判定 | Google公式 |
| Schema.org Validator | Schema.org仕様に準拠しているか判定 | Schema.org公式 |
Rich Results Testは、Googleがリッチリザルト(検索結果での特殊表示)として扱うエンティティのみを検出します。たとえばPersonスキーマはリッチリザルト対象外のため、このツールでは表示されません。ただしKnowledge Graphへの寄与は発揮されているので、検出されないこと自体は問題ありません。
Schema.org Validatorは、Schema.org仕様に文法的に準拠しているかを判定します。全てのスキーマタイプが確認できるため、実装後の最終チェックに最適です。
よくある質問|実装時のハマりどころ
Q1:JSON-LDを実装したのに検索順位が上がりません。なぜですか?
JSON-LDは直接的な順位上昇要因ではなく、Googleに情報を正確に伝えるための仕組みです。順位向上の前提として、コンテンツの質や被リンクなど、他のSEO要素も重要です。
Q2:@graphは必ず使うべきですか?
必須ではありませんが、複数のエンティティを1つのページに定義する場合は@graphが便利です。単一エンティティのみなら、直接@typeを記述するだけでOKです。
Q3:headとbodyどちらに入れるべきですか?
Google公式ではどちらでもOKとされていますが、headに入れるのが一般的です。Next.jsの場合、App Routerならlayout.tsx内の<head>タグに挿入します。
Q4:テスト環境でもJSON-LDを入れて大丈夫ですか?
テスト環境はrobots.txtでクロール禁止にしておけば問題ありません。本番環境のみにJSON-LDを入れる運用も選べます。
JSON-LDは、AI検索時代における情報伝達の共通言語です。正しく実装することで、検索エンジンとAIの両方に、あなたのサイトの価値を正確に伝えられます。
まずは最もシンプルなArticleスキーマから始めて、段階的にFAQPage、HowTo、Personと拡張していくのがおすすめです。実装したら、必ずRich Results TestとSchema.org Validatorで検証する習慣をつけましょう。
あなたのサイトの構造化データ実装状況は、SEGOで30秒で診断できます。実装漏れがないかチェックしてみてください。
