以前に構造化データの記述方法についての記事を投稿しましたが、今回はGoogleがサポートしている構造化データの中で実際に使用しそうなものをいくつか見てみます。
記事(Article・NewsArticle・BlogPosting)
記事はニュースやブログなどの記事ページに対して追加する構造化データです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "記事タイトル",
"image": "https://example.com/photos/photo.jpg",
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author": [
{
"@type": "Organization",
"name": "組織名",
"url": "https://example.com/"
}
]
}
</script>
構造化データの項目(推奨)
| author | 記事の作成者。 個人の場合はPerson、組織の場合はOrganizationを@typeに設定。 |
|---|---|
| author.name | 作成者の名前。 |
| author.url | 記事の作成者を一意に識別するページへのリンク。 Personの場合はその個人のSNSや略歴ページなど、Organizationの場合はその組織のホームページなどを設定。 |
| dateModified | 記事の更新日時。 ISO 8601(YYYY-MM-DDThh:mm:ss)の形式。 |
| datePublished | 記事の公開日時。 ISO 8601(YYYY-MM-DDThh:mm:ss)の形式。 |
| headline | 記事のタイトル。 |
| image | 記事を表す画像。 ImageObjectかURLの繰り返し(配列)で設定。 |
パンくずリスト(BreadcrumbList)
パンくずリストは該当ページがサイト内のどの階層に位置するかを示すための構造化データです。
<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/blog/"
},{
"@type": "ListItem",
"position": 3,
"name": "カテゴリ名",
"item": "https://example.com/blog/category/"
},{
"@type": "ListItem",
"position": 4,
"name": "記事タイトル"
}]
}
</script>
ページを辿るルートが複数ある場合、パンくずリストを複数指定することもできます。
<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/blog/"
},{
"@type": "ListItem",
"position": 3,
"name": "カテゴリ名",
"item": "https://example.com/blog/category/"
},{
"@type": "ListItem",
"position": 4,
"name": "記事タイトル"
}]
}, {
"@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/blog/"
},{
"@type": "ListItem",
"position": 3,
"name": "タグ名",
"item": "https://example.com/blog/tag/"
},{
"@type": "ListItem",
"position": 4,
"name": "記事タイトル"
}]
}]
</script>
構造化データの項目(必須)
| itemListElement | パンくずリストの配列。 |
|---|
構造化データの項目(推奨)
| item | パンくずリストの項目を表すページURL。 パンくずリストの最後のアイテムである場合、item は必須ではない。(そのページのURLが使用される) |
|---|---|
| name | パンくずリストの項目のタイトル。 |
| position | パンくずリスト内の項目の位置。 |
イベント(Event)
イベントに対して設定できる構造化データです。
イベントはオフライン・オンラインのどちらの開催でも設定できますが、ここにあるように、イベント以外をイベントとして設定することはできません。
イベントの構造化データを設定するメリットとしてGoogleのイベント検索機能がありますが、記事作成時点では日本は利用対象に入っていないようです。
まず例として、オフラインで開催されるイベントの場合です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "イベントタイトル",
"startDate": "2025-07-21T19:00:00",
"endDate": "2025-07-21T23:00:00",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "Place",
"name": "東京スカイツリー",
"address": {
"@type": "PostalAddress",
"name": "東京都墨田区押上1丁目1−2"
}
},
"image": "https://example.com/photos/photo.jpg",
"description": "イベントの説明文です。",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/buy/12345",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00:00"
},
"performer": {
"@type": "Person",
"name": "パフォーマー名"
},
"organizer": {
"@type": "Organization",
"name": "主催者名",
"url": "https://example.com"
}
}
</script>
構造化データの項目(必須)
| location | イベントの場所。 物理的な場所で開催される場合はPlace、オンラインで開催される場合はVirtualLocationを@typeに設定。 |
|---|---|
| location.address | イベント会場の所番地。 @typeがPlaceの場合に設定。 |
| location.url | オンラインイベントのURL。 @typeがVirtualLocationの場合に設定。 |
| name | イベントのタイトル。 |
| startDate | イベントの開始日時。 ISO 8601(YYYY-MM-DD や YYYY-MM-DDThh:mm:ss)の形式。 |
構造化データの項目(推奨)
| location.name | イベント会場の名前。 @typeがPlaceの場合に設定。 |
description | イベントの説明。 |
|---|---|
| endDate | イベントの終了開始日時。 ISO 8601(YYYY-MM-DD や YYYY-MM-DDThh:mm:ss)の形式。 |
| eventAttendanceMode | イベントの開催がオンラインかオフラインを指定。 指定がない場合はOfflineEventAttendanceModeになる。 https://schema.org/OfflineEventAttendanceMode の場合、オフラインで参加できるイベント。 https://schema.org/OnlineEventAttendanceMode の場合、オンラインで参加できるイベント。 https://schema.org/MixedEventAttendanceMode の場合、オンラインでもオフラインでも参加できるイベント。 |
| eventStatus | イベントのステータス。 指定がない場合はEventScheduledになる。 https://schema.org/EventCancelled の場合、イベントはキャンセル。 https://schema.org/EventMovedOnline の場合、イベントはオフライン参加からオンライン参加に変更。 https://schema.org/EventPostponed の場合、イベントは延期で日程はまだ不明。 https://schema.org/EventRescheduled の場合、イベントの日時変更。startDateとendDateを該当する新しい日付で更新する。 https://schema.org/EventScheduled の場合、イベントは開催予定。 |
| image | イベントやツアーの画像やロゴ画像。 ImageObjectかURLの繰り返し(配列)で設定。 |
| offers | チケットに関する情報。 @typeにはOfferを設定。 |
| offers.availability | チケットの在庫状態。 チケットがまだ販売されていない場合、この項目を省略して後述のvalidFromを使用する。 https://schema.org/InStock の場合、 在庫あり。 https://schema.org/SoldOut の場合、完売。 https://schema.org/PreOrder の場合、予約購入可。 |
| offers.price | チケットの販売価格。 イベント参加が無料の場合は0を設定。 |
| offers.priceCurrency | チケット価格の通貨コード。 priceが0より大きい場合に設定。 |
| offers.validFrom | チケット販売日時。 ISO 8601(YYYY-MM-DDThh:mm:ss)の形式。 |
| offers.url | チケットを購入できるページURL。 |
| organizer | イベントをホストしている個人または組織。 個人の場合はPerson、組織の場合はOrganizationを@typeに指定。 |
| organizer.name | イベントをホストする個人名または組織名。 |
| organizer.url | イベントホストのドメインURL。 |
| performer | イベントでパフォーマンスを行う参加者。 グループの場合はPerformingGroup、個人の場合はPersonを設定。 |
| performer.name | イベントでパフォーマンスを行う参加者名。 |
| previousStartDate | イベントの日程が変更された際の、変更前のイベント開始日。 eventStatusでEventRescheduledを設定した際に必要に応じて設定。 |
最初にオフラインで開催されるイベントの場合の例を確認しましたが、それ以外のパターンもいくつか確認してみます。
オンラインで開催されるイベントの場合です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "イベントタイトル",
"startDate": "2025-07-21T19:00:00",
"endDate": "2025-07-21T23:00:00",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "VirtualLocation",
"url": "https://example.com/stream/12345/"
},
"image": "https://example.com/photos/photo.jpg",
"description": "イベントの説明文です。",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/buy/12345",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00:00"
},
"performer": {
"@type": "Person",
"name": "パフォーマー名"
},
"organizer": {
"@type": "Organization",
"name": "主催者名",
"url": "https://example.com"
}
}
</script>
オンラインとオフラインの両方で開催されるイベントの場合です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "イベントタイトル",
"startDate": "2025-07-21T19:00:00",
"endDate": "2025-07-21T23:00:00",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": [
{
"@type": "VirtualLocation",
"url": "https://example.com/stream/12345/"
},
{
"@type": "Place",
"name": "東京スカイツリー",
"address": {
"@type": "PostalAddress",
"name": "東京都墨田区押上1丁目1−2"
}
}
],
"image": "https://example.com/photos/photo.jpg",
"description": "イベントの説明文です。",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/buy/12345",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00:00"
},
"performer": {
"@type": "Person",
"name": "パフォーマー名"
},
"organizer": {
"@type": "Organization",
"name": "主催者名",
"url": "https://example.com"
}
}
</script>
イベントがキャンセルになった場合です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "イベントタイトル",
"startDate": "2025-07-21T19:00:00",
"endDate": "2025-07-21T23:00:00",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"eventStatus": "https://schema.org/EventCancelled",
"location": {
"@type": "Place",
"name": "東京スカイツリー",
"address": {
"@type": "PostalAddress",
"name": "東京都墨田区押上1丁目1−2"
}
},
"image": "https://example.com/photos/photo.jpg",
"description": "イベントの説明文です。",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/buy/12345",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00:00"
},
"performer": {
"@type": "Person",
"name": "パフォーマー名"
},
"organizer": {
"@type": "Organization",
"name": "主催者名",
"url": "https://example.com"
}
}
</script>
イベントが日程変更になった場合です。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "イベントタイトル",
"startDate": "2025-07-21T19:00:00",
"endDate": "2025-07-21T23:00:00",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"eventStatus": "https://schema.org/EventRescheduled",
"previousStartDate": "2025-03-21T19:00:00",
"location": {
"@type": "Place",
"name": "東京スカイツリー",
"address": {
"@type": "PostalAddress",
"name": "東京都墨田区押上1丁目1−2"
}
},
"image": "https://example.com/photos/photo.jpg",
"description": "イベントの説明文です。",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/buy/12345",
"price": "2000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00:00"
},
"performer": {
"@type": "Person",
"name": "パフォーマー名"
},
"organizer": {
"@type": "Organization",
"name": "主催者名",
"url": "https://example.com"
}
}
</script>
よくある質問(FAQPage・Question・Answer)
各質問に対する回答が1つだけのよくある質問に対して追加する構造化データです。
1つの質問に対してユーザーが他の回答を送信できるページの場合、QAPageの構造化データになります。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "質問A",
"acceptedAnswer": {
"@type": "Answer",
"text": "<p>回答内容</p>"
}
}, {
"@type": "Question",
"name": "質問B",
"acceptedAnswer": {
"@type": "Answer",
"text": "回答内容."
}
}]
}
</script>
構造化データの項目(必須)
| mainEntity | よくある質問の配列。 |
|---|---|
| mainEntity.acceptedAnswer | 質問に対する回答。 |
| mainEntity.name | 質問の全文 |
| mainEntity.acceptedAnswer.text | 質問に対する回答の全文。 下記HTMLタグを含むことができる。 <h1>~<h6>、<br>、<ol>、<ul>、<li>、<a>、<p>、<div>、<b>、<strong>、<i>、<em> |
組織(Organization)
組織の情報について示すための構造化データです。
企業情報ページなどのような、組織の説明を掲載した単一のページに対して構造化データを実装します。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"image": "https://www.example.com/example_image.jpg",
"url": "https://www.example.com",
"logo": "https://www.example.com/images/logo.png",
"name": "会社名",
"description": "会社に関する説明",
"email": "contact@example.com",
"telephone": "+81-00-0000-0000",
"address": {
"@type": "PostalAddress",
"streetAddress": "押上一丁目1番2号他",
"addressLocality": "墨田区",
"addressCountry": "JP",
"addressRegion": "東京都",
"postalCode": "1310045"
}
}
</script>
構造化データの項目(推奨)
| name | 組織の名前。 |
|---|---|
| description | 組織の詳細な説明。 |
| logo | 組織を表すロゴ。 ImageObjectかURLで設定。 |
| url | 組織のウェブサイトの URL。 |
| telephone | 顧客の問い合わせ窓口の電話番号。 電話番号には国コードと市外局番を含める。 |
| ユーザーの問い合わせ窓口のメールアドレス。 | |
| address | 組織の住所。 LocalBusinessまたはそのサブタイプを使用している場合は必須。 |
| address.streetAddress | 番地。 |
| address.addressLocality | 市区町村。 |
| address.addressRegion | 地域(都道府県や州など)。 |
| address.postalCode | 郵便番号。 |
| address.addressCountry | 国。 2文字の国コードで指定。 |
| image | 組織の画像。 |
サイトリンク検索ボックス(WebSite)
サイトリンク検索ボックスを使用すると、Googleの検索結果画面からサイト内検索をすることができるようになります。
サイトのトップページに構造化データを実装します。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://cly7796.net/blog/",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://cly7796.net/blog/?s={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
構造化データの項目(必須)
| potentialAction | 検索クエリの送信先の情報を指定。 |
|---|---|
| potentialAction.query-input | 後述のtargetで使用する、検索クエリの設定位置の指定。 |
| potentialAction.target | EntryPointオブジェクトの指定。 |
| potentialAction.target.urlTemplate | 前述のquery-inputで指定した値を使った形でのエンドポイントの指定。 |
| url | 検索先のサイトURLを指定。 |
コメントが承認されるまで時間がかかります。