活动 (Event) 结构化数据

您可以利用 Google 上的活动搜索服务,让用户可通过 Google 搜索结果和其他 Google 产品(如 Google 地图)找到并参加这些活动。该功能的优势如下:

活动体验在 Google 搜索中的外观 点击特定活动后,Google 搜索中出现的活动详情

您可以通过以下三种方式使您的活动显示在 Google 上:

  • 如果您通过第三方网站(例如票务网站或社交平台)发布活动,请检查活动发布商是否已参与 Google 的活动搜索服务。如果活动发布商已经与 Google 集成,那么您可以继续在第三方网站上发布活动,无需再继续阅读下文。
  • 如果您使用 CMS(如 WordPress)且无权修改 HTML,请查看该 CMS 是否有可向您的网站添加结构化数据的插件。 或者,您也可以使用数据标注工具在不修改网站 HTML 的情况下将活动信息提供给 Google。
  • 如果您有能力修改 HTML,可以使用结构化数据直接与 Google 集成。您将需要修改活动网页的 HTML。

如何添加结构化数据

结构化数据是一种提供网页相关信息并对网页内容进行分类的标准化格式。如果您不熟悉结构化数据,可以详细了解结构化数据的运作方式

下面概述了如何构建、测试和发布结构化数据。如需获得向网页添加结构化数据的分步指南,请查看结构化数据 Codelab

  1. 添加必要属性。根据您使用的格式,了解在网页上的什么位置插入结构化数据
  2. 遵循指南
  3. 使用富媒体搜索结果测试验证您的代码,并修复所有严重错误。此外,您还可以考虑修正该工具中可能会标记的任何非严重问题,因为这些这样有助于提升结构化数据的质量(不过,要使内容能够显示为富媒体搜索结果,并非必须这么做)。
  4. 部署一些包含您的结构化数据的网页,然后使用网址检查工具测试 Google 看到的网页样貌。请确保您的网页可供 Google 访问,不会因 robots.txt 文件、noindex 标记或登录要求而被屏蔽。如果网页看起来没有问题,您可以请求 Google 重新抓取您的网址
  5. 为了让 Google 随时了解日后发生的更改,我们建议您提交站点地图Search Console Sitemap API 可以帮助您自动执行此操作。

示例

标准活动

下面是一个 JSON-LD 格式的标准 Event 示例。标准活动表示活动仅在实地按计划举办。您也可以使用微数据或 RDFa 语法。

<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventScheduled",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

带有状态更新的活动

设置活动状态的方法有多种。下面是一些状态更新的活动的常见示例。有关详情,请参阅 eventStatus 属性。

已取消

下面是一个已取消的活动示例。


<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventCancelled",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

已改期

下面是一个已重新安排的活动示例。


<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventRescheduled",
      "previousStartDate": "2025-03-21T19:00-05:00",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

推出地区和支持的语言

我们非常高兴能够面向全球更多地区推出 Google 上的活动搜索服务。我们已在以下地区推出该服务,并在右侧列出了支持的语言。

区域 支持的语言
澳大利亚 英语
巴西 葡萄牙语
加拿大 英语
德国 德语
印度 英语
拉丁美洲 西班牙语
西班牙 西班牙语
英国 英语
美国 英语

指南

您的活动必须遵循以下指南,才能显示在 Google 上的活动搜索服务中。

技术指南

  • 目标网页必须包含 schema.org 上活动类型的结构化数据项。
  • 每个活动都必须具有唯一的网址(叶级页)并对该网址添加标记。
  • Google 上的活动搜索服务仅支持侧重于单个活动的网页。我们建议您重点为活动信息网页(而非列有日程表或多个活动的网页)添加标记。
  • 正确标记举办多日的活动:
    • 如果您的活动信息或门票信息针对的是举办时间为多天的活动,请指定该活动的开始日期和结束日期。
    • 如果在不同的几天里有几场不同的表演,并且每场表演有单独的门票,请为每场表演添加一个单独的 Event 元素。

内容指南

  • 每个活动都必须准确地描述活动名称、开始日期和举办地点。
  • 避免将非活动内容标记为活动:
    • 不要将非活动产品或服务(例如“旅行套餐:圣地亚哥/洛杉矶之旅,7 晚”)作为活动宣传。
    • 不要添加短期折扣或购买机会,例如:“音乐会 - 立即订票”或“音乐会 - 周六前订票可享受五折优惠”。
    • 不要将营业时间标记为活动,例如:“冒险乐园上午 8 点至下午 5 点开放”。
    • 不要将优惠券或代金券标记为活动,例如:“首次订购可享受九五折优惠”。
  • 活动必须可供公众预订。需要先成为会员或受邀才能购买门票或参加活动的活动不符合活动体验的条件。
  • 如果观看者活动的主要参与者和观众为未成年人,且活动在学校内举办,则不符合活动体验的条件。例如,在校园内举办的学生活动。
  • 不支持宣传不含现实世界元素的虚拟体验。活动必须在实际地点举行。

日期和时间指南

在实施 startDateendDatepreviousStartDate 属性时,请遵循以下日期和时间指南。

如何指定时区

通过添加 UTC 或 GMT 时区设定来指定时区。如果活动于 9 月 5 日晚上 7 点在纽约开始,在采用标准时间期间 startDate 值为 GMT/UTC-5;在采用夏令时期间为 GMT/UTC-4。如果采用标准时间,startDate 值分别为 "2019-09-05T19:00:00-05:00""2019-09-05T19:00:00-04:00"。如果未提供时区,Google 会使用 location 中指定的活动地点的时区。

最佳做法

  • 活动持续一段日期:如果活动持续多天,请同时指明开始日期和结束日期。如果您不知道时间,请不要指明时间。

    建议

    "startDate": "2019-07-01T10:00:00-05:00",
    "endDate": "2019-07-26T17:00:00-05:00"

    建议

    "startDate": "2019-07-01",
    "endDate": "2019-07-26"

    不建议

    "startDate": "2019-07-01T00:00:00+00:00",
    "endDate": "2019-07-26T23:59:59+00:00"
  • 活动从特定时间开始:如果活动从特定时间开始,例如本地下午 5 点,请使用 2019-07-20T17:00:00。添加相应的 UTC 时差(例如,如果活动在加利福尼亚州发生,请使用 2019-07-20T17:00:00-07:00)。
  • 活动持续一整天:如果活动全天发生,请不要指定开始日期的具体时间。例如,您可以使用 2019-08-15 同时作为持续一整天活动的 startDateendDate
  • 活动开始时间未知:如果您不知道活动的开始时间,请不要指定具体时间。例如,您可以使用 2019-08-15 同时作为活动的 startDateendDate

    建议"startDate": "2025-07-21"

    不建议"startDate": "2019-08-15T00:00:00+00:00"

    不建议"startDate": "2019-07-20T00:00:00"

Google 如何解读日期的示例

下面是一些说明 Google 如何解读开始日期和时间的示例:

开始日期和时间解读
2019-08-15T00:00:00+00:00 Google 将 startTime 解读为 2019-08-14T17:00:00-07:00(如果 location 设为加利福尼亚州)或 2019-08-15T09:00:00(如果 location 设为韩国)。
2019-08-15T23:59:59+00:00 除非活动发生在 GMT 时区,否则这并不意味着 2019-08-15 的结束。 Google 将 startTime 解读为 2019-08-15T16:59:59-07:00(如果 location 设为加利福尼亚州)或 2019-08-16T08:59:59(如果 location 设为韩国)。
2019-07-10 这表示日期,不考虑时区。在 startDate 中使用时,表示活动从当天的某个时间在 location 开始。在 endDate 中使用时,表示活动在当天的某个时间在 location 结束。
2019-07-20T00:00:00 这表示活动发生的时区的 2019-07-20 午夜。除非活动原定于午夜开始,否则该时间也可能是错误的。

结构化数据类型定义

如需了解 Event 的完整定义,请访问 schema.org/Event

若要让您的内容显示在增强的搜索结果中,必须添加必需的属性。还有一些建议添加的属性,能帮助您添加更多与您的内容相关的信息,进而提供更好的用户体验。

必要属性
location

Place

活动的地点。将 @type 设置为 Place。并添加 location.addresslocation.name 属性。

location.address

PostalAddress

举办场所的详细街道地址。

不建议:北京

建议:中国北京朝阳区朝外大街 20 号

美国示例

"location": {
  "@type": "Place",
  "name": "Snickerpark Stadium",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 West Snickerpark Dr",
    "addressLocality": "Snickertown",
    "postalCode": "19019",
    "addressRegion": "PA",
    "addressCountry": "US"
  }
}

日本示例

您可以通过其他方式写日本地址,Google 仍可理解该地址。下面是一个在不同字段中显示街道地址、市行政区和国家/地区的示例。

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "江東区青海1-10",
    "addressLocality": "東京",
    "addressCountry": "日本"
  }
}

下面是一个在不同字段中显示街道地址和地址国家/地区的示例。

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "東京都江東区青海1-10",
    "addressCountry": "日本"
  }
}

下面是一个在一行中显示整个地址的示例。

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "name": "東京都江東区青海 1-1-10 ダイバーシティ東京プラザ"
   }
}

地址最佳做法

  • 如果活动是在多条街道举办,请定义一个起始地点,并在说明中提供详细的信息。
  • 如果举办的活动没有明确定义的地点,请使用城市名称或最具代表性的地点。
  • 如果同时在多个地点举办活动,请为每个地点创建不同的活动。
name

Text

活动的全称。

不建议:北京

不建议:**限时销售 - 王菲演唱会 - 500 元**

建议:王菲“幻乐一场”上海演唱会

建议:王菲见面会

最佳做法

  • 请勿将活动类型用作活动名称。例如,“音乐会”不是活动的描述性名称。
  • 请勿添加网址、价格或表演者等无关信息,而应在相应的属性中添加这些值。
  • 在标题中突出活动的独特方面。这有助于用户更快地做出决定(例如,“艺术家专题问答”)。
  • 不要添加短期宣传(例如,“立即订票”)。
startDate

DateTime

活动的开始日期和开始时间,采用 ISO-8601 格式。 请同时添加日期和时间,以便用户找到适合其时间安排的活动。

"startDate": "2025-07-21T19:00"
建议属性
description

Text

活动的说明。对活动的所有详情加以说明,以便用户更容易了解和参加活动。

最佳做法

  • 为具体活动添加简明扼要的说明。
  • 重点说明活动详情,而不是网站的功能。
  • 不要重复日期和地点等其他信息;请改为将这些信息添加到相应的属性中。
"description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance."
endDate

DateTime

活动的结束日期和结束时间,采用 ISO-8601 格式。格式与 startDate 相同。请同时添加日期和时间,以便用户找到适合其时间安排的活动。

"endDate": "2025-07-21T23:00"
eventStatus EventStatusType

活动的状态。如果您不使用此字段,Google 会将 eventStatus 理解为 EventScheduled。如果适用的话,您可以使用多种状态。下面列出了一些支持的值。

EventCancelled

活动已取消。

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventCancelled",
  "startDate": "2020-07-21T19:00"
}
EventPostponed

活动已推迟到未来的某个日期,但具体日期未知。保留活动的 startDate 中的原定日期,直到您知道活动的举办时间时再更改。获知新的日期信息后,请将 eventStatus 更改为 EventRescheduled,并根据新的日期信息更新 startDateendDate

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventPostponed",
  "startDate": "2020-07-21T19:00"
}
EventRescheduled

活动已重新安排到未来的某个日期。使用相关的新日期更新 startDateendDate。您也可以将 eventStatus 字段标记为已重新安排并添加 previousStartDate

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventRescheduled",
  "startDate": "2020-07-21T19:00",
  "endDate": "2025-07-21T23:00",
  "previousStartDate": "2025-03-21T19:00"
}
EventScheduled

活动按计划举办。此值是活动的默认状态。如果您未设置 eventStatus,Google 会认为该活动将按计划举办。