提供結構化資料

本頁說明如何新增搜尋運算子所需的結構化資料。

網頁通常會填入任意形式的文字,雖然使用者容易閱讀,但電腦較難理解。部分網頁的資訊結構更清晰易讀,例如在網址或標題中嵌入網頁日期,或是在 HTML 程式碼中嵌入電腦可讀取的欄位。Google 會從網頁擷取各種結構化資料。本頁說明 Google 擷取的結構化資料類型,可用於自訂程式碼片段結構化搜尋

  1. 總覽
  2. 提供資料給程式化搜尋引擎
  3. 提供資料給網站簡介
  4. 查看擷取的結構化資料

總覽

當你閱讀銷售 DVD 的網頁時,可以快速瞭解影視內容、審查人員對電影的看法,以及對該電影的評價。但電腦無法做到這一點,因為電腦不知道資訊的結構。

舉例來說,如果網頁上有 DVD 的相關內容 (包括推薦其他商品、其他商店的廣告,以及客戶的意見),那麼該網頁可能會針對所售 DVD 等各種層面而有不同的價格。您可以在關閉其他價格時輕鬆算出 DVD 的價格,但電腦無法這麼做。有些複雜的程式可能會在網頁中找到價格,但無法決定只找到 DVD 價格的規則。

結構化資料格式是標準化網頁結構和內容的規則。它們是可套用至文字程式碼片段的標記,方便電腦處理其含義或語意。標記不會變更網站的格式,只會讓 XHTML 標記中包含的中繼資料和文字對電腦更具意義。

程式化搜尋引擎可識別下列格式:

  • PageMaps:在頁面中加入中繼資料的 XML 隱藏區塊。
  • JSON-LD:採用 JSON 格式的隱藏結構化資料。
  • 微格式:用來搭配預先定義類型標記可見網頁內容的標記。
  • RDFa:一種替代標準,用於標記可見的網頁內容及任意類型。
  • 微資料:用於標記可見網頁內容的新 HTML5 標準。
  • <meta> 標記:標準 HTML 標記,是 Google 剖析的部分。
  • Page Date (網頁日期):網頁上的功能,用於指出 Google 嘗試剖析的日期

您可以根據自己的偏好,使用其中一種或多種格式。請注意,與程式化搜尋引擎不同的是,Google 搜尋在產生複合式搜尋結果時,只會使用 JSON-LD、微資料和 RDFa,並且具有專屬的演算法和政策來決定要向使用者顯示哪些資訊。因此,雖然您新增至網頁的結構化資料元素可能會顯示在程式化搜尋引擎上,但這項資料可能不會用於 Google 搜尋結果中。

以下是評論網站的理想純 HTML 程式碼片段:

<div>
    <div>
        <h1>Pizza My Heart</h1>
    </div>
    <span>88%</span> like it
    <a href="#reviews">See all 12 reviews</a>
    <span>Under $10 per entree</span>
<div>

下列程式碼片段是前述 HTML 程式碼的延伸,其格式名為 microformats

<div class="hreview-aggregate">
    <div class="vcard item">
        <h1 class="fn">Pizza My Heart</h1>
    </div>
    <span class="rating average">88%</span> like it
    <a href="#reviews">See all <span class="count">12</span> reviews</a>
    <span class="pricerange">Under $10 per entree</span>
<div>
如要查看程式化搜尋引擎擷取的功能,請參閱這個方法

將標準結構化資料格式整合至網頁後,您不僅可將資料提供給程式化搜尋引擎,也可用於支援相同標準的服務或工具。套用結構化資料至網頁中最重要的資訊,便可直接顯示在搜尋結果中。舉例來說,如果您的網站販售 Android 裝置,請加入評分、價格、供應情形和內容相關的結構化資料。使用者搜尋 Android 裝置時,可以快速查看評分、價格和空房資訊。

這樣一來,電腦就能瞭解網頁中的資料類型還得而電腦也可以開始尋找並結合不同網頁中的資訊,是不可或缺的工作。這麼做可讓使用者擺脫一勞永逸的任務,例如快速瀏覽多個頁面來找出所需項目。搜尋引擎 (例如程式化搜尋引擎) 可以處理網頁上的結構化資料,並以更實用、更有意義的方式顯示,例如自訂程式碼片段結構化搜尋

返回頁首

提供資料給程式化搜尋引擎

Google 支援多種資料,主要供程式化搜尋引擎使用:網頁地圖、部分 <meta> 標記,以及大概網頁日期。

使用 PageMaps

PageMaps 是一種結構化資料格式,可將網頁上的資料提供給 Google。可讓網站創作者在網頁上嵌入資料和附註。雖然結構化資料無法讓使用者或 Google 網頁搜尋看到,但程式化搜尋引擎在為網頁建立索引時會辨識出結構化資料,並直接透過程式化搜尋元素傳回這些資料。

您可以在網頁中明確加入 PageMaps,或是使用 Sitemap 提交 PageMaps。 Google 也會使用網頁上的其他資訊 (例如網站簡介標記或 meta 標記資料) 建立 PageMap。

與下述其他結構化資料格式不同,PageMaps 不需要遵循標準屬性或字詞,甚至不會參照現有的詞彙、結構定義或範本。您只需建立適合網站的自訂屬性值即可。與微格式、微資料和 RDFa 的結構化資料屬性不同 (在 HTML 內文中使用者可看見的內容周圍新增),PageMaps 中繼資料會納入 HTML 網頁的 head 區段。這個方法支援應用程式可能需要的任意資料,但您可能不想向使用者顯示這些資料。

建立 PageMap 後,您可以使用以下任何一種方法將其提交給 Google:

PageMap 標記定義

下表概述將 PageMap 資料加入 Sitemap 的需求條件。

標記 是否必要? 說明
PageMap 包含相關網址的所有 PageMap 資訊。
DataObject 包含單一元素的所有資訊 (例如動作)。
Attribute 每個 DataObject 包含一或多個屬性。

注意:PageMaps 是 XML 區塊,因此格式必須正確無誤;特別是 XML 中的 PageMapDataObjectAttribute 標記需要區分大小寫,例如 typenamevalue 屬性。

直接將 PageMap 資料加到 HTML 網頁

以下是羽球相關網頁的 PageMap 資料範例:

<html>
  <head>
   ...
  <!--
  <PageMap>
     <DataObject type="document">
        <Attribute name="title">The Biomechanics of a Badminton
        Smash</Attribute>
        <Attribute name="author">Avelino T. Lim</Attribute>
        <Attribute name="description">The smash is the most
        explosive and aggressive stroke in Badminton. Elite athletes can
        generate shuttlecock velocities of up to 370 km/h. To perform the
        stroke, one must understand the biomechanics involved, from the body
        positioning to the wrist flexion. </Attribute>
        <Attribute name="page_count">25</Attribute>
        <Attribute name="rating">4.5</Attribute>
        <Attribute name="last_update">05/05/2009</Attribute>
     </DataObject>
     <DataObject type="thumbnail">
        <Attribute name="src" value="http://www.example.com/papers/sic.png" />
        <Attribute name="width" value="627" />
        <Attribute name="height" value="167" />
     </DataObject>
  </PageMap>
  -->
  </head>
   ...
</html>

在 Sitemap 中新增 PageMap 資料

如果您不想在網頁的 HTML 中加入 PageMap 資料,則可在 Sitemap 中加入 PageMap 資料,並透過 Search Console Sitemap 工具提交該 Sitemap。

以下 Sitemap 範例包含了兩個網址的 PageMap 資訊:http://www.example.com/foo 和 http://www.example.com/bar。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>http://www.example.com/foo</loc>
   <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0">
     <DataObject type="document" id="hibachi">
       <Attribute name="name">Dragon</Attribute>
       <Attribute name="review">3.5</Attribute>
     </DataObject>
   </PageMap>
 </url>
 <url>
   <loc>http://www.example.com/bar</loc>
   <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0">
     <DataObject type="document" id="biggreenegg">
       <Attribute name="name">Ribs</Attribute>
       <Attribute name="review">4.0</Attribute>
     </DataObject>
   </PageMap>
 </url>
</urlset>

剖析 PageMap 資料

使用 Programmable Search Element 時,系統會在每個結果的 Richsnippet 屬性中傳回自訂屬性,以便與 Search Element Callbacks 搭配使用。

<r n="1">
 <u> http://www.xyz.com/business/vending_machine.html </u>
 ...
 <t> In Italy, a Vending Machine Even Makes the <b>Pizza</b> </t>
 ...
 <s>The European vending machine industry has annual sales of about #33
 billion, much of it coming from factories and offices.</s>
 ...
 <PageMap>
  <DataObject type="image">
   <Attribute name="image_src" value="http://www.nytimes.com/images/2009/03/14/business/14vend.751.jpg"/>
  </DataObject>
  <DataObject type="publication">
   <Attribute name="author" value="John Tagliabue"/>
   <Attribute name="date" value="March 14, 2009"/>
   <Attribute name="category" value="Business/World Business"/>
  </DataObject>
 </PageMap>
 ...
</r>

返回頁首

使用 <meta> 標記

雖然 PageMaps 可讓您精確地指定各個頁面需要的資料,但有時您可能會有大量不想加上註解的內容。Google 會從 <meta name="KEY" content="VALUE"> 格式的 META 標記中擷取所選內容。不支援 META 標記的變體,例如使用 property 而非 name

雖然我們會明確排除通常由網頁編寫工具 (例如 robotsdescriptionkeywords) 以程式輔助方式插入的常見標記,但系統會擷取您網站特有的較稀有標記,並放入 metatags 類型的特殊資料物件中,而該物件可與所有 Custom Search 的所有結構化資料功能搭配使用。例如,以下是 <meta> 標記:

<meta name="pubdate" content="20100101">

建立 PageMap DataObject,在 XML 結果中傳回,如下所示:

<r n="1">
 ...
 <PageMap>
  <DataObject type="metatags">
   <Attribute name="pubdate" value="20100101"/>
  </DataObject>
 </PageMap>
 ...
</r>

凡是可用於您頁面內容中明確納入的 PageMap 資料的地方,都可使用這個自動建立的 PageMap 中的資料。例如,它可與 Sort by Attribute 等結構化搜尋運算子搭配使用:

https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=metatags-pubdate

或使用 Programmable Search Element

...
<div class="gcse-search" sort_by="metatags-pubdate:d:s"></div>
...

以下是 Google 排除的 <meta> 標記:

  • 機器人
  • description
  • 關鍵字
  • 再次造訪
  • 產生器
  • 驗證-v1
  • googlebot
  • google-site-verification
  • mssmarttagspreventparsing
  • 不快取

Google 會嘗試加入所有其他 <meta> 標記,同時請注意,系統可能無法正確剖析 <meta> 標記 name 欄位中的標點符號、特殊字元和內嵌空格。程式化搜尋引擎可明確支援 <meta> 標記名稱中的句號和破折號。程式化搜尋引擎未明確支援 <meta> 標記名稱中的其他特殊字元,但如果這些特殊字元是網址編碼,系統就能正確接受。

限制

只要所有已處理屬性的文字總大小不超過 1 MB,程式化搜尋引擎就能將多達 50 個 <meta> 標記轉換為 PageMaps,且各個屬性的文字大小總和不得超過 1024 個字元。

返回頁首

使用頁面日期

除了您在網頁上明確指定的中繼資料外,Google 也會根據網頁功能 (例如標題和網址中的日期) 推測網頁日期。程式化搜尋引擎可讓您使用 date 的特殊中繼資料索引鍵,使用這個日期來排序、調整和限制結果。此預估日期可用於所有使用 &sort= 網址參數的運算子,包括 Sort by AttributeBias by Attribute限制範圍

注意:網頁日期不會加入 PageMap,因此不會以 JSON API 結果傳回,也無法用於程式化搜尋引擎元素,也無法與依屬性篩選功能搭配使用。

以下範例說明如何搭配這些運算子使用網頁日期:

If you want to... 傳送此網址... 若要瞭解詳情,請參閱...
依日期遞減排序結果 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date 依屬性排序
對較新日期產生偏誤的結果 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:d:s Bias (按屬性)
對較舊日期的結果略有偏誤 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:a:w Bias (按屬性)
傳回 2010 年 1 月 1 日至 2 月 1 日 (含) 的結果 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:r:20100101:20100201 限制範圍

Google 會根據報導的署名日期,或文件標題中明確指定的日期等功能,計算出網頁的正確日期。如果網頁指定了不正確或不一致的日期,Google 對網頁日期的估計可能並不合理,且您的程式化搜尋引擎可能會以非預期的方式傳回結果。

設定日期格式

網站可能會以隱含方式提供日期資訊,使用 Google 的預估網頁日期功能,以結構化資料格式提供日期,藉此偵測內嵌在網頁網址、標題或其他功能中的日期。不論是哪一種情況,有效使用日期格式都必須正確設定日期格式。

針對程式化搜尋引擎的 Sort by AttributeBias by 屬性限制範圍功能,Google 會嘗試同時使用傳統日期格式和正式標準 (例如 ISO 8601IETF RFC 850) 剖析日期。 系統接受以下完整日期格式:

日期格式 範例日期
YYYY-MM-DD 2009-12-31
YYYY/MM/DD 2009 年 12 月 31 日
YYYYMMDD 20091231
YYYY 年 MM 月 DD 日 2009 年 12 月 31 日
DD 月份 YYYY 2009 年 12 月 31 日

Google 會嘗試剖析這些日期格式的變化版本,例如 MM/DD/YYYYDD/MM/YYYY。不過,日期越明確,Google 就越不可能正確剖析此日期。舉例來說,06/07/08 日期明顯模稜兩可,Google 不可能將其指派為您想要的解釋。為獲得最佳效果,請使用完整的 ISO 8601 日期格式,並包含完整指定的年份。

返回頁首

複合式摘要

Google 也會從 JSON-LD、微格式、RDFa 和微資料中擷取各種結構化資料,用於 網站簡介,以更延伸的方式呈現標準 Google 搜尋結果。 程式化搜尋引擎的結構化資料運算子可使用類似的資料,通常與網站簡介中使用的資料相同。舉例來說,如果您已使用微格式 hrecipe 標準標記網頁,便可使用 &sort=recipe-ratingstars 這樣的運算子來排序食譜的評分星級。Google 會持續擴充所擷取的資料,以及能在程式化搜尋引擎中使用多少這些資料。如要查看 Google 目前擷取的資料,您可以使用 Search Console 中的結構化資料測試工具

返回頁首

使用 JSON-LD

JSON-LD 是結構化資料廣泛使用的標準格式。 資料會採用 JSON 格式,並以 type="application/ld+json" 放在 <script> 標記中。

以下為含有簡單 JSON-LD 的精簡 HTML 程式碼:

<script type="application/ld+json">
      {
        "@id": "http://event.example.com/events/presenting-foo",
        "@type": "http://schema.org/Event",
        "http://schema.org/description": "Please attend. You'll love it!",
        "http://schema.org/name": "Presenting Foo",
        "http://schema.org/startdate": "2022-05-24",
        "http://schema.org/location": "Back room"
      }
    </script>

Google 會從程式化搜尋引擎中擷取一部分的資料,並將資料正規化。正規化程序簡化了 JSON-LD,可以移除許多 JSON-LD 慣用語。經過正規化的資料會進一步處理:

  • 而是從 JSON-LD 的 graph 結構轉換為樹狀結構。
  • 樹系會劃分為與部分 schema.org 類型相關的分支版本。子集包含 schema.org 類型樹狀結構 如果您還有其他類型對特定用途有所助益,請前往支援論壇告訴我們。
  • 其中一個所選類型的 JSON-LD 節點會從其 JSON-LD 樹狀結構中提取分支。該分支版本包含其在樹狀結構中的祖系節點及其所有子系節點。舉例來說,我們可能有一個位於 MusicComposition 的樹狀結構,而其 firstPerformance 屬性具有完整的 Event 值。這些節點 (透過 Event 屬性及其任何子系所擷取的 MusicComposition 節點) 都會保留為內含 firstPerformance Event 的有意義的樹狀結構。
針對上述 JSON-LD,搜尋結果會以 JSON 格式傳回結構化資料,如下所示:
 ...
 "event": {
   "name": "Presenting Foo",
   "description": "Please attend. You'll love it!",
   "startdate": "2022-05-24",
   "location": "Back room"
 },
 ...

如要查看 Google 搜尋擷取的網頁內容並驗證 JSON-LD,請使用 Google Search Console 網站上的複合式搜尋結果測試工具

如要進一步瞭解 JSON-LD,請參閱結構化資料說明文件json-ld.org

返回頁首

使用微格式

微格式是代表常用項目 (例如評論、人員、產品和商家) 的規格。一般而言,微格式包含 <span><div> 元素和類別屬性,還有簡短且描述性的屬性名稱 (例如 dtreviewedrating,分別代表項目審查日期及其評分)。

以下提供純 HTML 程式碼片段。

<p><strong>Kevin Grendelzilla</strong></p>
<p>Technical writer at Google</p>
<p>555 Search Parkway</p>
<p>Googlelandia, CA 94043</p>

以下程式碼片段為先前的 HTML 程式碼擴充了微格式:

<div class="vcard">
   <p><strong class="fn">Kevin Grendelzilla</strong></p>
   <p><span class="title">Technical writer</span> at <span class="org">Google</span></p>
   <p><span class="adr">
      <span class="street-address">555 Search Parkway</span>
      <span class="locality">Googlelandia</span>, <span class="region">CA</span>
      <span class="postcode">94043</span>
      </span></p>
</div>

Google 會擷取這些資料的部分內容、進行正規化及重新編排,以配合該資料在網站簡介中的顯示方式。這個子集會在 XML 結果中傳回,如下所示:

<r n="1">
 ...
 <PageMap>
  <DataObject type="person">
   <Attribute name="location" value="Googlelandia"/>
   <Attribute name="role" value="Technical Writer"/>
  </DataObject>
 </PageMap>
 ...
</r>

如要查看 Google 為網頁擷取的內容,請使用 Google Search Console 網站上的結構化資料測試工具。Google 從網頁擷取的資料會持續增加,因此請定期返回查看,確認是否已提供所需資料。在此同時,如果您需要不對應到已定義的微格式的自訂資料,可以使用 PageMaps

如要進一步瞭解微格式,請參閱結構化資料說明文件microformats.org

返回頁首

在屬性中使用資源說明架構 (RDFa)

屬性中的資源說明架構 (RDFa) 比微格式更有彈性。微格式可指定語法,可將結構化資料納入 HTML 文件,以及一組微格式類別,每個類別都有專屬的允許屬性詞彙。另一方面,RDFa 只會指定語法,並可讓您使用現有的屬性詞彙表或建立自己的屬性。甚至還能讓您自由組合多個詞彙如果現有詞彙不符合需求,您可以建立新欄位,定義自己的標準和詞彙。

以下提供純 HTML 程式碼片段。

<div>
   <h3>5 Centimeters Per Second</h3>
   <h4>Makoto Shinkai</h4>
    ...
</div>

下列程式碼片段為先前的使用 RDFa 擴充的 HTML 程式碼:

<div>
   <h3 property="dc:title">5 Centimeters Per Second</h3>
   <h4 property="dc:maker">Makoto Shinkai</h4>
   ...
</div>

如要進一步瞭解 RDFa,請參閱 結構化資料說明文件。如要進一步瞭解如何定義 RDF 結構定義,請參閱 RDF 基本概念

返回頁首

使用微資料

HTML5,最新版的語言網頁編寫為「微資料」格式,可將 RDFa 和微格式的概念直接併入 HTML 標準本身。微資料會使用 HTML 標記中的簡單屬性 (通常是 spandiv),為項目和屬性指派簡短且描述性的名稱。

與 RDFa 和微格式一樣,微資料屬性可協助您指定內容描述特定類型的資訊,例如評論、人員、資訊或活動。例如,使用者可以擁有屬性名稱、暱稱、網址、標題和關聯。以下是一個簡短的 HTML 區塊範例,顯示 Bob Smith 的基本聯絡資訊:

<div>
  My name is Bob Smith but people call me Smithy. Here is my home page:
  <a href="http://www.example.com">www.example.com</a>
  I live in Albuquerque, NM and work as an engineer at ACME Corp.
</div>

以下為使用微資料加上標記的 HTML 程式碼 (內容與前述相同)。請注意,在這個範例中,我們使用的屬性「nickname」尚未正式屬於 schema.org。您可以先透過自訂搜尋,在本機探索可能的 schema.org 擴充功能,再向更廣大的社群發布相關建議。

<div itemscope itemtype="http://schema.org/Person">
  My name is <span itemprop="name">Bob Smith</span>
  but people call me <span itemprop="nickname">Smithy</span>.
  Here is my home page:
  <a href="http://www.example.com" itemprop="url">www.example.com</a>
  I live in Albuquerque, NM and work as an <span itemprop="title">engineer</span>
  at <span itemprop="affiliation">ACME Corp</span>.
</div>

這個範例的第一行含有內含 itemscope 屬性的 HTML div 標記,表示 div 包含微資料項目。相同標記中的 itemtype="http://schema.org/Person" 屬性可讓我們知道這是個人資料。個人項目的每個屬性都會使用 itemprop 屬性識別;舉例來說,span 標記上的 itemprop="name" 會說明人員的姓名。請注意,您使用的數量不限於 spandivitemprop="url" 標記會附加至 a (錨點) 標記。

如要進一步瞭解微資料,請參閱 結構化資料說明文件HTML 微資料標準。

返回頁首

查看擷取的結構化資料

JSON-LD 結構化資料有 Google 支援的特殊驗證工具,也就是複合式搜尋結果測試工具。這項工具會檢查 JSON-LD 的語法和部分語意,特別是結構化資料是否包含必要屬性和建議屬性。如要檢查其他形式的結構化資料,請使用結構定義標記驗證工具。這項工具會驗證結構化資料的語法,並顯示相關解譯形式。

程式化搜尋引擎可保留一部分結構化資料,因此使用程式化搜尋引擎,透過以下方式檢查程式化搜尋引擎對網頁的結構化資料檢視:

  1. 進階搜尋功能中開啟搜尋結果中的結構化資料

    啟用結構化資料的螢幕截圖

  2. 接著,使用搜尋引擎尋找你要查看資料的網頁,並在該網頁的搜尋結果中按一下「結構化資料」按鈕:

    搜尋結果中的結構化資料按鈕螢幕截圖

如果您尚未在任何網頁上加入結構化資料標記,但想查看擷取的結構化資料模樣,可以輸入其他網站的網址。如果有評論資訊或聯絡人清單的熱門網站,特別可能擁有結構化資料。

找到含有結構化資料的網頁後,您就可以查看該網頁的來源,查看網站實作的結構化資料。舉例來說,請參考以下 HTML 程式碼片段,其中包含以微格式實作的使用者相關結構化資料:

<div class="vcard">
    <h1 class="fn">
      <span class="given-name">Godzilla</span>
      <span class="family-name">Gigantis</span>
    </h1>
    <span class="title">Senior Giant Monster</span>,
    <span class="adr">
      <span class="locality">Tokyo</span>
    </span>
<div>

程式化搜尋引擎會擷取下列一部分的資料,以便用於結構化搜尋:

person (source = MICROFORMAT)
  location = Tokyo

返回頁首

探索其他功能

結構化資料可用於多項程式化搜尋引擎功能,包括: