CLUSTER SEO BLOG
テクニカルSEOにフォーカスしたSEO対策をまとめています

イベントの構造化データの書き方

こんにちは、テクニカルSEOによるSEO対策サービス「CLUSTER SEO」開発チームの江頭です。

SERP(検索結果画面)にイベントのリッチリザルトを表示するには、Web ページに構造化データをマークアップします。たとえば、コンサートやセミナー・試験などの日程を検索結果に表示できるので、他サイトとの差別化にもなります。

また、構造化データをマークアップすると、Google 検索エンジンがページの内容を正しく理解できることにつながるので、SEO上の効果も見込めます。

本記事では、HTML にイベントの構造化データを正しくマークアップする方法を詳しく説明します。

リッチリザルトについては、以下の記事を参考にしてください。

構造化データの書式

Googleは、JSON-JDとmicrodataの2つの書式に対応しています。

形式説明
JSON-LDJSON形式でscriptタグとして記載する。
microdataHTMLタグ上で項目に該当する場所に属性を追加する。

ただし、microdata形式は、ページに表示する内容と構造化データとして指定する内容が微妙に異なる場合に対応が難しくなってしまいます。 JSON-LD形式の方が柔軟に設定できるので、Googleも推奨しています。

この記事では、JSON-LD形式のみを解説します。

JSON-LD形式の例

JSON-LD 形式では、構造化データを JSON 形式として、script タグ内に記載します。記載する場所は、head 内でも、body 内でも構いません。

以下は、セミナーのイベント例です。

<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Event",
  "name" : "自社サイトの課題が分かるアクセス解析実践セミナー",
  "startDate" : "2020-03-28T15:00+09:00",
  "endDate" : "2020-03-28T16:30+09:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location" : {
    "@type" : "Place",
    "name" : "シンメトリック内セミナールーム",
    "address" : "東京都渋谷区富ケ谷2丁目43番15号 山崎ビル6F"
  },
  "performer": {
    "@type": "PerformingGroup",
    "name": "株式会社シンメトリック"
  }
}
</script>

検索結果には、次のようなリッチリザルトとして表示されます。

スニペットの下に 、「イベントの開始日」「イベント名」「開催場所」が表示されます。それ以外の項目は検索結果には表示されません。

イベント構造化データの設定項目

イベントの構造化データでは、「イベント概要」「開催場所」「出演者/主催者」「チケット・予約情報」「イベント日程の変更」に関する情報を指定します。

※以下の例はすべて架空のイベントです。

イベント概要

項目説明
nameイベント名前です。
検索結果に表示されます。必須項目です。
(例)渋谷SEOフェス
startDateイベントの開始日もしくは開始日時です。
ISO-8601形式で指定します。
検索結果に表示されます。必須項目です。
(例1)2020-03-28
(例2)2020-03-28T10:00+09:00
endDateイベントの終了日もしくは終了日時です。
ISO-8601形式で指定します。
(例1)2020-03-29
(例2)2020-03-28T17:00+09:00
descriptionイベントの詳細を示す説明文です。
(例)親子で楽しくSEOが学べるイベントです。
   豪華賞品が当たるクイズ大会もあります。
image画像のURLです。
(例)https://example.com/images/seo-festival.jpg

開催場所

項目説明
eventAttendanceModeオンラインで開催されるイベントかどうかを指定します。

OfflineEventAttendanceMode:実際の場所で開催(デフォルト)
OnlineEventAttendanceMode:オンラインで開催
MixedEventAttendanceMode:オフラインとオンラインの両方

(例)https://schema.org/OnlineEventAttendanceMode
location.typeイベントの開催場所です。

@Place:オフラインイベントのときに指定します。
@VirtualLocation:オンラインのときに指定します。
location.nameイベント(オフライン)の開催場所の名前です。
検索結果に表示されます。
オフラインイベントの時は必須項目です。
(例)代々木公園
location.addressイベント(オフライン)の開催場所の住所です。
(例)東京都渋谷区代々木神園町2−1
location.urlイベント(オンライン)の開催URLです。
(例)https://meet.google.com

出演者/主催者

項目説明
performer.typeイベントの出演者の種別です。

@PerformingGroup:団体
@Person:個人
performer.name出演者(団体もしくは個人)の名前です。
(例)株式会社シンメトリック
organizer.typeイベント主催者の種別です。

@Organization:組織
@Person:個人
organizer.name主催者の名前です。
(例)代々木公園振興協会
organizer.url主催者のURLです。
(例)https://yoyogipark.example.com/

チケット・予約情報

イベントの参加費や申込に関する情報です。

項目説明
offers.availabilityチケットの発売状況です。
InStock:発売中・空席あり
SoldOut:完売・満席
PreOrder:先行予約
(例)https://schema.org/SoldOut
offers.priceチケットの最低料金です。
無料のイベントの場合、0にします。
(例)300
offers.priceCurrency価格の通貨コード(3桁)です。
(例)JPY
offers.validFrom期間限定でチケットが販売されるときの発売開始日。
ISO-8601形式で指定します。
offers.urlチケットを購入できるURLです。
(例)https://example.com/order?event=seofes

イベント日程の変更

イベント中止や延期などを示す項目です。

項目説明
eventStatusイベント日程の変更状態です。

EventScheduled:開催予定(デフォルト)
EventCancelled:イベント中止
EventMovedOnline:オンラインに変更
EventPostponed:延期(日程未定)
EventRescheduled:日程変更

(例)https://schema.org/EventPostponed
previousStartDateイベントが日程変更されたときの、もともとのイベント開催日です。

イベント構造化データの例

無料イベント

参加受付中の無料イベントの例です。

※以下は説明のための架空のイベントです。

<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Event",
  "name" : "第10回 富士山をみんなで登る会",
  "description": "富士山の5合目から吉田ルートで頂上を目指します。初めての人でも参加OKです。",
  "startDate" : "2019-08-01",
  "endDate" : "2019-08-02",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location" : {
    "@type" : "Place",
    "name" : "吉田口登山道 五合目",
    "address" : "山梨県富士吉田市上吉田"
  },
  "offers" : {
    "@type" : "Offer",
    "price" : "0",
    "priceCurrency" : "yen",
    "url" : "https://example.com/entry",
    "availability" : "https://schema.org/InStock",
    "validFrom": "2019-05-01"
  },
  "image": "https://example.com/images/mountain-climbing.jpg",
  "performer": {
    "@type": "PerformingGroup",
    "name": "富ヶ谷登山愛好家"
  }
}
</script>

延期したイベント(日程未定)

有料イベントが延期した例です。

<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Event",
  "name" : "東京オリンピック 開会式",
  "description" : "各国選手団が登場、奇跡の時間を共有しよう。",
  "startDate" : "2020-07-24T20:00+09:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventPostponed",
  "location" : {
    "@type" : "Place",
    "name" : "オリンピックスタジアム",
    "address" : "東京都新宿区霞ヶ丘町10番1号"
  },
  "offers" : {
    "@type" : "Offer",
    "price" : "12000",
    "priceCurrency" : "yen",
    "url" : "https://example.com/entry",
    "availability" : "https://schema.org/SoldOut",
    "validFrom": "2019-05-01"
  },
  "performer": {
    "@type": "PerformingGroup",
    "name": "各国選手団"
  }
}
</script>

リッチリザルトで表示されないときのチェックポイント

構造化データをマークアップしても、イベント情報がリッチリザルトとして表示されない場合は、以下の原因が考えられます。

原因1.構造化データの構文エラー

まずは、JSON-LD の構文エラーがないかどうかを Googleサーチコンソール で確認します。手順は以下の通りです。

  1. URL を入力して Enter を押下する
  2. URL 検査画面で [公開URLをテスト]ボタンをクリックする

以下は、JSON の書式エラーがあった場合の画面です 。

エラーの対処方法については、以下ページにも詳しくまとめています。

原因2.当該URLがまだインデックスされていない

クローラーがまだページをクローリングしていない可能性があります。
Googleサーチコンソール で URL を入力し、[インデックス登録をリクエスト]ボタンをクリックしてください。

早ければ数分~数十分程度でクローリングされ、検索結果画面に表示されるようになります。

原因3.イベントの開催日程が過ぎた

すでに開催されたイベントは表示されません。

原因4.構造化データで指定したイベント情報をページに表示していない

Google の構造化データガイドラインでは、ページに表示されている内容と構造化データを一致させるように記載されています。

ページの読者に表示されないコンテンツをマークアップしないでください。たとえば、JSON-LD マークアップでパフォーマーが記述されている場合、HTML の本文でも同じパフォーマーが記述されている必要があります。

https://developers.google.com/search/docs/guides/sd-policies#content

構造化データで指定したイベントをページ内で表示していない場合や、内容が大きく異なる場合は Google のガイドライン違反となります。ガイドライン違反があると、構造化データが認識されなかったり、最悪の場合は検索順位への影響もあります。

まとめ

以上、イベントを構造化データとしてマークアップする方法を説明しました。

イベントの構造化データは、現在のところ、検索結果に表示されるだけですが、将来的にはGoogleカレンダーやスマートスピーカーからも利用されるなど、広がっていきそうです。

Page Top