JSON-LDの書き方|構造化データを手書きするときの基本と、間違いやすい点【コピペ用の見本つき】
公開日: / カテゴリ: 構造化データ / 執筆: エラバレル

「構造化データはJSON-LDで書くといいと聞いたけれど、記号ばかりでどこから読めばいいのか分からない」「見本をコピーして貼ったのに、エラーが出て動かない」。構造化データを自分で書こうとした方から、こうした声をよく聞きます。
先に結論をお伝えします。JSON-LDは、「項目名」と「中身」を組にして並べるだけの、決まりの少ない書き方です。 覚える決まりは、ダブルクォートで囲む、カンマで区切る、波かっこと角かっこの使い分け、の3つが中心です。エラーの多くは、全角の記号や、最後の余分なカンマといった、小さな書き間違いから起きています。
選ばれるAI診断が22業種・2,296件の公式サイトを診断したところ、構造化データ(JSON-LD)がない、または壊れているサイトが59%ありました。この記事では、JSON-LDの基本の形から、入れ子や複数の型の書き方、貼る場所、間違いやすい点と確かめ方までを、見本のコードつきで説明します。
この記事でわかること
- JSON-LDとは何か、ほかの書き方との違い
- JSON-LDの基本の形(@context・@type・項目)
- 入れ子と配列の書き方
- 複数の型を@idでつなぐ書き方
- 貼る場所と、WordPressでの入れ方
- 間違いやすい点と、確かめ方
JSON-LDとは?
JSON-LDは、構造化データを書くための書式の一つです。構造化データとは、ページに書かれている情報を、AIや検索エンジンが間違いなく読み取れるように、決まった形で書いたものです。「この会社の名前は〇〇」「住所は〇〇」「営業時間は〇〇」と、機械向けにラベルをつけて伝えるイメージです。
構造化データの書き方には、JSON-LD・microdata・RDFaの3種類があります。
| 書き方 | 書く場所 | 特徴 |
|---|---|---|
| JSON-LD | ページのどこか1か所に、まとめて書く | ページの見た目のHTMLと分けて書けるので、直しやすい |
| microdata | 本文のHTMLのタグの中に、属性として書く | 見た目のHTMLと混ざるので、直すときに崩しやすい |
| RDFa | 本文のHTMLのタグの中に、属性として書く | microdataと似ている。使われる場面は少なめ |
Googleは、構造化データの書き方としてJSON-LDをおすすめしています。ページの見た目を作るHTMLとは別の場所にまとめて書けるので、あとから直すのも、間違いを探すのも簡単だからです。
「JSON」と「LD」の意味
JSON(ジェイソン)は、データを「項目名:中身」の組で書くための、広く使われている書式です。LDは「Linked Data(つながったデータ)」の略で、データどうしを結びつけられることを表しています。JSON-LDは、JSONの書き方で、schema.org(構造化データの語彙を決めている共同の取り組み)の項目名を使って書くもの、と覚えておけば十分です。
JSON-LDの基本の形
まずは、いちばん簡単な見本を見てみましょう。会社(組織)の名前とURLだけを伝えるJSON-LDです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "〇〇株式会社",
"url": "https://example.com/"
}
</script>
1行ずつ見ていきます。
| 行 | 意味 |
|---|---|
<script type="application/ld+json"> | 「ここからJSON-LDです」という合図。必ずこの形で書く |
{ | データの始まり |
"@context": "https://schema.org" | schema.orgの項目名を使います、という宣言。毎回同じ |
"@type": "Organization" | 何についてのデータか(ここでは組織) |
"name": "〇〇株式会社" | 名前 |
"url": "https://example.com/" | 公式サイトのURL |
} と </script> | データの終わりと、合図の終わり |
守る決まりは3つ
JSON-LDの書き方で、最低限守る決まりは次の3つです。
- 項目名と中身は、半角のダブルクォート(")で囲む。
"name": "〇〇株式会社"のように書きます。数字や true/false は囲まなくてもかまいません。 - 項目と項目の間は、半角のカンマ(,)で区切る。 ただし、最後の項目のあとにはカンマを付けません。
- **ひとまとまりのデータは波かっこ
{ }、並べたいものは角かっこ[ ]で囲む。**
この3つを守れば、あとは項目を増やしていくだけです。改行や字下げ(行の頭の空白)は、読みやすくするためのもので、なくても動きます。
記号はすべて半角で書く
日本語の文章を書いたあとにそのまま記号を打つと、全角のダブルクォート(")や全角のカンマ(,)、全角のコロン(:)が混ざりやすくなります。JSON-LDの記号は、すべて半角です。中身の文字(会社名や住所)は日本語のままでかまいません。
入れ子と配列の書き方
入れ子:データの中にデータを入れる
住所のように、いくつかの項目をひとまとまりにしたいときは、項目の中身を波かっこで囲み、そこに別の型のデータを入れます。これを「入れ子」と呼びます。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "〇〇整体院",
"url": "https://example.com/",
"telephone": "+81-52-000-0000",
"address": {
"@type": "PostalAddress",
"postalCode": "460-0000",
"addressRegion": "愛知県",
"addressLocality": "名古屋市中区",
"streetAddress": "〇〇1-2-3",
"addressCountry": "JP"
}
}
</script>
address の中身が、PostalAddress(住所)という別の型のデータになっています。入れ子の中にも @type を書くのがポイントです。住所の分け方は構造化データの住所(PostalAddress)の書き方の記事で詳しく説明しています。
配列:同じ項目に、いくつかの中身を並べる
公式SNSのURLのように、同じ種類のものをいくつも書きたいときは、角かっこ [ ] で囲んで、カンマで区切って並べます。
"sameAs": [
"https://www.instagram.com/〇〇/",
"https://www.facebook.com/〇〇/",
"https://x.com/〇〇"
]
営業時間のように、曜日ごとに時間が違う場合も、配列の中に入れ子のデータを並べて書きます。
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "19:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "13:00"
}
]
中身の書き方の決まり
項目によっては、中身の書き方にも決まりがあります。手書きで間違えやすいものを挙げます。
- 電話番号:国番号つきの
+81-52-000-0000の形が確実です。市外局番の最初の0を取って、+81 のあとに続けます。 - 時刻:
09:00のように、24時間制の「時:分」で書きます。「午前9時」や「9時」とは書きません。 - 曜日:
MondaySaturdayのように英語で書きます。「月曜」とは書きません。 - 日付:
2026-10-09のように「年-月-日」で書きます。時刻まで書くなら2026-10-09T09:00:00+09:00の形です。 - 国:日本なら
JPと書きます。 - 画像やURL:
https://から始まる完全な形で書きます。
決まった形で書くのは、AIや検索エンジンが、国や地域の違う書き方を迷わず読み取れるようにするためです。日本語の書き方のままだと、正しく読み取られないことがあります。
複数の型をつなぐ書き方(@graph と @id)
1つのページで、「サイト全体(WebSite)」「運営している会社(Organization)」「このページの記事(Article)」のように、いくつかの型を書きたいことがあります。その場合は、@graph という項目に、データを並べて書くのが分かりやすい方法です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "〇〇株式会社",
"url": "https://example.com/",
"logo": "https://example.com/logo.png"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"name": "〇〇株式会社 公式サイト",
"publisher": { "@id": "https://example.com/#organization" }
}
]
}
</script>
@id は、データにつける「名札」です。WebSiteの publisher(運営者)に、Organizationの名札 https://example.com/#organization を書くことで、「このサイトの運営者は、上に書いた〇〇株式会社です」とつながります。同じ情報を何度も書かずに済み、AIや検索エンジンにも関係が伝わります。
@id は本当のURLでなくてもいい
@id は、データを区別するための名札なので、実際に開けるページである必要はありません。「サイトのURL+#organization」のように、自分のサイトの中で重ならない名前にしておくのが一般的です。一度決めたら、ほかのページでも同じ @id を使ってください。
JSON-LDを貼る場所
JSON-LDは、ページのHTMLの <head> の中か、<body> の中のどこにでも置けます。見た目には表示されません。
- WordPress(SEOプラグインあり):多くはプラグインが自動で出しています。足りない項目だけを足します。
- WordPress(プラグインなし):テーマの設定にあるコードを入れる欄か、コード挿入用のプラグインを使います。
- ホームページ作成サービス:ヘッダーにコードを入れる欄を使います(サービスによって名前が違います)。
- 手作りのHTML:
<head>の中に直接書きます。
会社の情報(OrganizationやLocalBusiness)は、トップページか全ページに1回出せば十分です。記事の情報(Article)やパンくずリスト(BreadcrumbList)は、そのページごとに中身が変わるので、ページごとに出します。パンくずリストの書き方はパンくずリストの構造化データの記事で説明しています。
WordPressでの貼り方は、WordPressに構造化データをプラグインなしで入れる方法の記事で、3通りの方法を説明しています。
二重に出していないか確かめる
SEOプラグインやテーマが、すでにOrganizationやLocalBusinessを出していることがあります。そこへ手書きのJSON-LDを足すと、同じ型が2つになり、中身が食い違うことがあります。足す前に、ページのソースを開いて「application/ld+json」で検索し、今どんなデータが出ているかを確かめてください。
手書きで間違いやすい点
JSON-LDのエラーの多くは、次のような小さな書き間違いです。
| 間違い | 例 | 直し方 |
|---|---|---|
| 全角の記号が混ざる | "name":"〇〇" | コロン・カンマ・ダブルクォートを半角にする |
| 最後の項目にカンマ | "url": "https://example.com/",} | 最後の項目のあとのカンマを消す |
| カンマの付け忘れ | "name": "〇〇" "url": "…" | 項目の間にカンマを入れる |
| かっこの閉じ忘れ | { の数と } の数が合わない | 字下げをそろえて、対になっているか確かめる |
| 飾りのクォート | ワープロで書いて “〇〇” になる | メモ帳など、文字の飾りがつかないところで書く |
| URLが途中まで | "url": "/about/" | https:// から始まる完全なURLにする |
| コメントを書く | // 会社の情報 | JSONにはコメントを書けないので消す |
書き間違いが1つでもあると、そのJSON-LDは全体が読まれなくなることがあります。「一部だけ間違っているから、ほかは伝わるだろう」とは考えないでください。
書き方は正しくても、伝わっていないことがある
もう一つの落とし穴は、「エラーはないのに、中身が足りない」状態です。選ばれるAI診断が473サイトを調べたときには、構造化データがある263件のうち78%が、エラーは出ないのに、運営者の情報(住所・電話・ロゴ・SNSなど)が足りない状態でした。
構造化データの調査の結果
- 22業種・2,296件で、構造化データ(JSON-LD)がない・壊れているサイトは59%
- 同じく、運営者の情報が構造化データに十分入っていないサイトは97%
- 473サイトの調査で、構造化データがある263件のうち78%は、エラーが出ないのに運営者の情報が足りなかった
ページに書かれていない内容を、JSON-LDだけに書くのも避けてください。Googleは、構造化データの中身はページに表示されている内容と一致させるよう求めています。たとえば、ページにない口コミの点数をJSON-LDだけに書くのは、ガイドラインに反します。
書いたJSON-LDの確かめ方
書き終えたら、次の2つの無料ツールで確かめます。
- リッチリザルトテスト(Google):URLかコードを入れると、Googleが読み取れた構造化データと、エラー・警告が表示されます。検索結果の特別な表示(リッチリザルト)に使える型かどうかも分かります。
- スキーマ マークアップ検証ツール(Schema Markup Validator):schema.orgのすべての型について、書き方が正しいかを確かめられます。リッチリザルトの対象でない型(Organizationの細かい項目など)を確かめるのに向いています。
確かめ方の詳しい手順と、「エラーなし」のあとに見る項目は、構造化データの確認方法の記事で説明しています。直したのに反映されないときは、キャッシュの削除や、Googleがページを読み直すのを待つ必要があることもあります。
JSON-LDを貼る前のチェックリスト
<script type="application/ld+json">で始まり、</script>で終わっている"@context": "https://schema.org"が入っている- 記号(ダブルクォート・カンマ・コロン・かっこ)がすべて半角
- 最後の項目のあとにカンマがない
- URLは
https://から始まる完全な形 - 中身が、ページに表示されている内容と一致している
- 同じ型を、プラグインやテーマが二重に出していない
手書きがむずかしいときは、作成ツールを使う
項目が増えると、かっこやカンマの数を合わせるのが大変になります。入力欄に会社名や住所を書き込むだけで、JSON-LDのコードを作れる無料ツールもあります。作ったコードを貼り、上のツールで確かめるだけで済みます。
構造化データ作成ツールを使う(無料)よくある質問
JSON-LDは、ページのどこに貼ってもいいのですか?
<head> の中でも <body> の中でもかまいません。ただし、<script type="application/ld+json"> のタグで囲むことは必須です。WordPressなどでは、ヘッダーにコードを入れる欄に貼るのが一般的です。
1つのページに、JSON-LDを2つ以上書いてもいいですか?
書いてもかまいません。型ごとに別のscriptタグに分けても、@graph で1つにまとめても読み取られます。ただし、同じ会社のOrganizationを2つ書いて中身が食い違うと、どちらが正しいか伝わりにくくなるので、同じ型は1つにまとめるのがおすすめです。
日本語をそのまま書いて大丈夫ですか?
会社名・住所・説明文などの中身は、日本語のままで大丈夫です。半角にするのは、項目名と記号だけです。項目名(name、address など)はschema.orgで決まっている英語の名前を、大文字・小文字まで正確に書いてください。
どの型(@type)を使えばいいか分かりません。
会社や事務所全体ならOrganization、地域で来店や訪問を受ける店や事務所ならLocalBusiness(または歯科医院・美容室などの細かい型)、ブログの記事ならArticleが基本です。会社の場合の書き方はOrganizationの構造化データの書き方の記事、店の場合はLocalBusinessの構造化データの書き方の記事で説明しています。
JSON-LDを入れると、検索の順位が上がりますか?
構造化データそのものが、順位を直接上げるわけではありません。ただ、検索結果の特別な表示につながったり、AIや検索エンジンが会社の情報を正しく理解したりする助けになります。AIが店や会社を取り違えないための材料として、入れておく価値があります。
書いたJSON-LDが正しいか、どうやって確かめますか?
リッチリザルトテストと、スキーマ マークアップ検証ツールの2つで確かめます。エラーが出なくても、住所や電話番号などの大事な項目が入っているかを、自分の目でも確かめてください。
まとめ
JSON-LDの書き方の基本と、間違いやすい点をまとめます。
この記事のまとめ
- JSON-LDは、Googleがおすすめする構造化データの書き方で、ページの見た目と分けて書ける
- 基本は「scriptタグ」「@context」「@type」と、項目名と中身の組
- 決まりは、半角のダブルクォート、項目の間のカンマ(最後は付けない)、波かっこと角かっこの使い分け
- 住所などは入れ子、SNSなどは配列で書き、複数の型は @graph と @id でつなぐ
- 22業種・2,296件では、構造化データがない・壊れているサイトが59%、運営者の情報が不十分なサイトが97%
- 書いたら、リッチリザルトテストとスキーマ マークアップ検証ツールで確かめる
自分のサイトの構造化データが足りているかは、診断で確かめられます。選ばれるAI診断なら、URLを入れるだけで、22項目の判定と理由を無料で確認できます。
自分のサイトを、無料で診断する参考にした資料
調査の方法:2026年10月、選ばれるAI診断で、工務店・税理士事務所・歯科医院・クリニック・整体院・美容室・行政書士事務所・不動産会社など22業種の公式サイト2,296件を、2026年10月2日に見直した採点基準で再診断した結果です。割合は「不足」または「一部不足」と判定されたサイトの割合です。473サイトの数字は、2026年9月に5業種の公式サイトを調べた結果です(構造化データの確認方法の記事を参照)。個別のサイト名と点数は公開していません。