提供結構化資料

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

網頁通常充滿任意形式的文字,不但容易閱讀,但電腦較難理解。部分網頁含有結構較大且易於閱讀的資訊,例如嵌入網址或頁面標題中的網頁日期,或者嵌入 HTML 程式碼中可供機器讀取的欄位。Google 會從網頁中擷取各種結構化資料。本頁將說明 Google 擷取的結構化資料類型,可用於自訂摘要結構化資料

  1. 總覽
  2. 將資料提供給程式化搜尋引擎
  3. 提供資料到複合式搜尋結果
  4. 查看已擷取的結構化資料

總覽

閱讀 DVD 的網頁時,您可以快速瞭解標題是什麼、審查者對電影的看法,以及評論的評分方式。但電腦無法做到相同的事情,因為電腦無法瞭解資訊的結構。

舉例來說,如果網頁有關於 DVD 的內容、其他商店的廣告、其他商店的廣告以及客戶留言,則網頁內容可能會有不同的價格,而不只是針對所銷售的 DVD 而有不同價格。您關閉其他價格時,可以輕鬆算出 DVD 的價格,但電腦無法執行這項動作。有些精密的程式可能會在網頁上找到價格,但無法決定只找出 DVD 價格的規則。

結構化資料格式可用來將網頁的結構和內容標準化。這類標記是可以套用至文字片段的標記,方便電腦處理其含義或語意。標記不會改變網站的格式,只會讓 XHTML 標記內的中繼資料和文字更適合電腦。

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

  • PageMaps:在網頁中加入中繼資料的 XML 隱形區塊。
  • JSON-LD:使用 JSON 格式的隱藏結構化資料。
  • 微格式:用來搭配預先定義的類型標記可見網頁內容的標記。
  • RDFa:這是用來搭配任意類型標記可見網頁內容的替代標準。
  • 微資料:新的 HTML5 標準,用於標記可見的網頁內容。
  • <meta> 標記:標準 HTML 標記,Google 可剖析的一部分標記。
  • 網頁日期:網頁上的功能會指出網頁日期,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 程式碼:

<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 的結構化資料屬性不同,微資料和 RDFa 都是在使用者可見內容周圍加入的 HTML 網頁,而 PageMaps 中繼資料則是包含在 HTML 網頁的 head 部分。這個方法支援應用程式可能需要,但您可能不想向使用者顯示的任意資料。

PageMap 建立完成後,您可以使用下列任一方法將頁面提交給 Google:

PageMap 標記定義

下表概述在 Sitemap 中加入 PageMap 資料的相關規定。

標記 是否必要? 說明
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 資料,您可以將 PageMap 資料新增至 Sitemap,然後透過 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 時,自訂屬性會在每項結果的複合式搜尋結果屬性中傳回,並可與搜尋元素回呼搭配使用。

<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
  • 關鍵字
  • 回訪
  • 產生器
  • verify-v1
  • googlebot
  • google-site-verification
  • mssmarttags 預防剖析
  • 無快取

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

限制

程式化搜尋引擎會將 50 個 <meta> 標記轉換成 PageMaps,只要所有已處理屬性的文字總大小不超過 1 MB,且單一屬性不超過 1024 個字元即可。

返回頁首

使用網頁日期

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

注意:頁面日期不會新增至 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 日至 2010 年 2 月 1 日的結果 (含) https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:r:20100101:20100201 限定範圍

Google 會根據新聞報導的署名日期或文件標題中明確指定日期等功能,來估算出網頁的正確日期。如果網頁指定的日期不足或不一致,Google 預估頁面日期的日期可能不夠合理,程式化搜尋引擎可能會以您預期外的順序傳回結果。

設定日期格式

網站可能會運用 Google 的預估頁面日期功能,以隱含方式提供日期資訊,偵測網頁網址、標題或其他功能中的內嵌日期,或是透過結構化資料格式明確提供日期。無論是哪一種情況,有效的日期格式都需要正確設定日期格式。

以程式化搜尋引擎的排序依據屬性Bias by AttributeRestrict to Range 功能為例,Google 會嘗試使用 ISO 8601IETF RFC 850 等正式標準來剖析日期。系統接受下列完整日期格式:

日期格式 範例日期
YYYY-MM-DD 2009-12-31
YYYY/MM/DD 2009/12/31
YYYYMMDD 20091231
月份 DD YYYY 2009 年 12 月 31 日
日期/月份 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 格式,並放在 <script> 標記中,並以 type="application/ld+json" 表示。

以下是採用簡單 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 的圖形結構轉換為樹木森林。
  • 樹系與部分 schema.org 類型相關的分支版本。子集是由 schema.org 類型樹狀結構組成: 如果您有其他類型適合特定用途使用,請前往支援論壇告訴我們。
  • 所選類型中的每個 JSON-LD 節點都會從其 JSON-LD 樹狀結構中提取分支版本。該分支版本的樹狀結構包含祖系節點及其所有子系節點。舉例來說,我們可能擁有一個位於 MusicComposition 的樹狀結構,且其中有 firstPerformance 屬性,且該屬性具有 Event 值,且該屬性包含完整的 Event 屬性。這些節點 (從 MusicCompositionMusicComposition 的屬性和其子系) 都會保留,以保留包含 MusicComposition 的有效樹狀分支。
針對上述 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 內容加上標記後的程式碼:請注意,在本範例中,我們使用了尚未正式納入 schema.org 的屬性「nickname」。先在本機探索可能有 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

返回頁首

探索其他功能

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

  • 如要進一步瞭解如何在程式碼片段中使用結構化資料,請參閱自訂結果摘要
  • 如要進一步瞭解如何變更搜尋結果的順序,請參閱結構化搜尋一文。