News
お知らせ
JSON-LDの書き方完全ガイド|業種別・タイプ別サンプルコードをコピーして使える形で徹底解説
「JSON-LDの書き方を調べたが、サンプルコードが自社の業種に合っていない」「コピーして使えるテンプレートがほしい」「複数タイプを@graphでまとめる方法がわからない」
この記事では、構造化マークアップで使用する主要タイプのJSON-LDサンプルコードを、業種別・タイプ別にコピーしてすぐ使える形で掲載します。各コードの意味・プロパティの説明・注意点もあわせて解説します。
この記事でわかること
- JSON-LDの基本構造と@graphの使い方
- FAQPage・LocalBusiness・Article・BreadcrumbListのサンプルコード
- Product・Review・Event・HowTo・JobPostingのサンプルコード
- 複数タイプを@graphでまとめる実践サンプル
- 業種別(サービス業・飲食・EC・士業など)の推奨セット
- サンプルを使う際の注意点と必須確認事項
本記事の構成
1. JSON-LDの基本構造と@graphの使い方
― まずここを理解すれば、どのタイプでも応用できる ―
単一タイプの基本構造
<script type="application/ld+json"> { "@context": "https://schema.org", // 必須。常にこの値 "@type": "タイプ名", // 必須。FAQPage・LocalBusiness等 "@id": "https://example.com/#id", // 推奨。このスキーマの固有ID // タイプに応じたプロパティを以下に記述 "name": "値" } </script>
複数タイプを@graphでまとめる構造(推奨)
同一ページに複数のスキーマタイプを実装する場合は、@graphを使って1つの<script>タグにまとめることをGoogleは推奨しています。
<script type="application/ld+json"> { "@context": "https://schema.org", "@graph": [ { "@type": "タイプ1", // タイプ1のプロパティ }, { "@type": "タイプ2", // タイプ2のプロパティ } ] } </script>
JSON記述のルール(必ず守る3点)
プロパティ名・文字列値は必ず
"(ダブルクォート)で囲む。シングルクォート'はエラーになる。
配列・オブジェクトの最後の要素の後にカンマをつけると構文エラーになる。
"name": "値",→最後だけ"name": "値"
{}(オブジェクト)と[](配列)の開き・閉じが必ず対応している必要がある。ネストが深くなるほど漏れやすい。
2. FAQPage(よくある質問)のサンプルコード
― 全業種で最優先。AI検索での引用率向上にも直結する ―
FAQPageは最もよく使われるタイプの一つで、検索結果のQ&A展開表示とAI検索での引用促進の両方に効果があります。質問は3〜5問程度が推奨です。
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "@id": "https://example.com/page/#faq", "mainEntity": [ { "@type": "Question", "name": "1問目の質問文をここに記入", "acceptedAnswer": { "@type": "Answer", "text": "1問目の回答文をここに記入" } }, { "@type": "Question", "name": "2問目の質問文", "acceptedAnswer": { "@type": "Answer", "text": "2問目の回答文" } }, { "@type": "Question", "name": "3問目の質問文", "acceptedAnswer": { "@type": "Answer", "text": "3問目の回答文" } } ] } </script>
@type(FAQPage)・mainEntity・Question内のname・acceptedAnswer内のtext
質問・回答はページ上に実際に表示されていること。ページに存在しない内容の記述はガイドライン違反。
3〜5問が最適。10問を超えるとGoogleが全問表示しない場合がある。AI検索での引用を狙うなら具体的な回答文を記述する。
3. LocalBusiness(店舗・会社情報)のサンプルコード
― 来店型ビジネス必須。トップページのheadタグに実装する ―
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "LocalBusiness", // 業種別サブタイプ例は下記参照 "@id": "https://example.com/#organization", "name": "店舗名・会社名", "url": "https://example.com", "telephone": "096-XXX-XXXX", "email": "info@example.com", "description": "会社・店舗の簡単な説明文", "address": { "@type": "PostalAddress", "postalCode": "860-0000", "addressRegion": "熊本県", "addressLocality": "熊本市中央区", "streetAddress": "下通1-1-1 ○○ビル3F", "addressCountry": "JP" }, "geo": { "@type": "GeoCoordinates", "latitude": 32.8038, // Googleマップで確認 "longitude": 130.7079 }, "openingHours": [ "Mo-Fr 10:00-19:00", "Sa 10:00-17:00" ], "priceRange": "¥30,000〜", "areaServed": { "@type": "Country", "name": "日本" }, "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }, "sameAs": [ "https://www.instagram.com/yourhandle", "https://www.facebook.com/yourpage" ] } </script>
RestaurantHairSalonMedicalClinicDentistMedicalBusinessLodgingBusinessRealEstateAgentLegalServiceAccountingServiceLocalBusiness
4. Article(記事・ブログ)のサンプルコード
― ブログ・コラムページに実装。E-E-A-T評価と著者情報を強化する ―
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "@id": "https://example.com/archives/xxx/#article", "headline": "記事のタイトル(110文字以内)", "description": "記事の概要・説明文(メタディスクリプションと同じでOK)", "image": "https://example.com/wp-content/uploads/ogp-image.jpg", "datePublished": "2026-03-05", // ISO 8601形式(YYYY-MM-DD) "dateModified": "2026-03-05", // 更新時に変更する "author": { "@type": "Organization", // 個人の場合は"Person" "name": "株式会社○○" }, "publisher": { "@type": "Organization", "name": "株式会社○○", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" } }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://example.com/archives/xxx/" } } </script>
dateModifiedを最新の更新日に保つことで、Googleが「このページは最新情報に更新されている」と判断しやすくなります。WordPressのSEOプラグインを使用している場合はほぼ自動で設定されますが、手動実装の場合は更新のたびに変更してください。
5. BreadcrumbList(パンくずリスト)のサンプルコード
― 全ページに実装推奨。サイト構造をGoogleに正確に伝える ―
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "ホーム", "item": "https://example.com/" }, { "@type": "ListItem", "position": 2, "name": "カテゴリ名", "item": "https://example.com/category/" }, { "@type": "ListItem", "position": 3, "name": "現在のページタイトル", "item": "https://example.com/archives/xxx/" } ] } </script>
最後の階層(現在のページ)にもitemプロパティを記述してください。省略するとGoogleが正しく認識しない場合があります。WordPressのSEOプラグインを使用している場合はBreadcrumbListは自動出力されるため、手動での重複実装は避けてください。
6. Product・Review・Event・HowTo・JobPostingのサンプルコード
Product(商品)― ECサイト・オンラインショップ向け
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Product", "name": "商品名", "description": "商品の説明文", "image": "https://example.com/product-image.jpg", "sku": "商品コード", "offers": { "@type": "Offer", "price": "12800", "priceCurrency": "JPY", "availability": "https://schema.org/InStock", "url": "https://example.com/product/xxx/" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "36" } } </script>
Event(イベント)― セミナー・展示会・ライブ向け
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Event", "name": "イベント・セミナー名", "description": "イベントの概要説明", "startDate": "2026-04-10T14:00:00+09:00", "endDate": "2026-04-10T16:00:00+09:00", "eventStatus": "https://schema.org/EventScheduled", "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode", "location": { "@type": "Place", "name": "会場名", "address": { "@type": "PostalAddress", "addressLocality": "熊本市中央区", "addressRegion": "熊本県", "addressCountry": "JP" } }, "organizer": { "@type": "Organization", "name": "主催会社名", "url": "https://example.com" }, "offers": { "@type": "Offer", "price": "0", // 無料の場合は"0" "priceCurrency": "JPY", "availability": "https://schema.org/InStock" } } </script>
JobPosting(採用情報)― Googleしごと検索への表示
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "JobPosting", "title": "募集職種名", "description": "仕事内容・募集要項の説明", "datePosted": "2026-03-05", "validThrough": "2026-06-30", // 募集終了日 "employmentType": "FULL_TIME", // PART_TIME・CONTRACTOR等 "hiringOrganization": { "@type": "Organization", "name": "採用企業名", "url": "https://example.com" }, "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "熊本市", "addressRegion": "熊本県", "addressCountry": "JP" } }, "baseSalary": { "@type": "MonetaryAmount", "currency": "JPY", "value": { "@type": "QuantitativeValue", "value": 250000, "unitText": "MONTH" } } } </script>
7. 複数タイプを@graphでまとめる実践サンプル
― 記事ページにArticle+FAQPage+BreadcrumbListを一括実装する例 ―
<script type="application/ld+json"> { "@context": "https://schema.org", "@graph": [ // ① Article { "@type": "Article", "@id": "https://example.com/archives/xxx/#article", "headline": "記事タイトル", "datePublished": "2026-03-05", "dateModified": "2026-03-05", "author": { "@type": "Organization", "name": "株式会社○○" }, "breadcrumb": { "@id": "https://example.com/archives/xxx/#breadcrumb" } }, // ② FAQPage { "@type": "FAQPage", "@id": "https://example.com/archives/xxx/#faq", "mainEntity": [ { "@type": "Question", "name": "質問文", "acceptedAnswer": { "@type": "Answer", "text": "回答文" } } ] }, // ③ BreadcrumbList { "@type": "BreadcrumbList", "@id": "https://example.com/archives/xxx/#breadcrumb", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "ホーム", "item": "https://example.com/" }, { "@type": "ListItem", "position": 2, "name": "カテゴリ", "item": "https://example.com/category/" }, { "@type": "ListItem", "position": 3, "name": "記事タイトル", "item": "https://example.com/archives/xxx/" } ] } ] } </script>
上記サンプルのようにArticleのbreadcrumbプロパティからBreadcrumbListの@idを参照することで、「このArticleにはこのBreadcrumbListが対応する」という関連性をGoogleに明示できます。このような@id参照の活用が、高品質な構造化マークアップの実装ポイントです。
8. 業種別・推奨実装セット一覧
― 「まず何を入れればいいか」を業種別にまとめた早見表 ―
| 業種 | 最優先(必ず実装) | 追加推奨 |
|---|---|---|
| 士業・コンサル・BtoB | Organization・FAQPage・BreadcrumbList | Article・Person(代表者) |
| クリニック・歯科・整骨院 | LocalBusiness(MedicalClinic等)・FAQPage・BreadcrumbList | Review・OpeningHours詳細 |
| 美容院・エステ・サロン | LocalBusiness(HairSalon等)・FAQPage・BreadcrumbList | Review・Event(キャンペーン) |
| 飲食店・カフェ | Restaurant・FAQPage・BreadcrumbList | Review・Menu・Event |
| リフォーム・建設・塗装 | LocalBusiness・FAQPage・BreadcrumbList | Review・Article・HowTo |
| ECサイト・通販 | Product・BreadcrumbList・FAQPage | Review・Organization |
| セミナー・スクール・教室 | Event・FAQPage・BreadcrumbList | Course・Review・Organization |
| ホームページ制作・IT | Organization・Article・FAQPage・BreadcrumbList | JobPosting・HowTo |
9. サンプルを使う際の注意点
必ず守る3つのルール
サンプルコードのexample.com・「会社名」「質問文」などはすべて自社の実際の情報に置き換えてください。サンプルのまま使用するとガイドライン違反になります。
FAQPageの質問・回答、Productの価格・在庫など、構造化データに記述した内容はページ上に実際に表示されている必要があります。「構造化データだけに情報を入れてページには載せない」はガイドライン違反です。
貼り付けた後にGoogleのリッチリザルトテストでURLを入力し、エラーがないかを必ず確認してください。エラーがあるとリッチリザルトは表示されません。
リッチリザルトテストやSearch Consoleで表示されるエラーの意味・修正方法は、「構造化マークアップのエラー確認・修正方法」で詳しく解説しています。
10. よくある質問(FAQ)
構造化マークアップの実装・ご相談はCREVIAへ
「サンプルをもとに実装したがエラーが出る」「業種に合ったコードを正確に設定してほしい」「SEO・GEO対策とまとめて依頼したい」など、どの段階でもお気軽にご相談ください。
熊本・全国対応|構造化マークアップ・SEO対策・GEO対策・ホームページ制作
関連記事
株式会社CREVIA|構造化マークアップ・SEO対策・GEO対策・ホームページ制作|熊本・全国対応
熊本から全国へ。検索対策・AI検索対策・ホームページ制作を一気通貫でご支援します。
