本頁說明如何新增搜尋運算子所需的結構化資料。
網頁通常會充滿任意形式的文字,雖然文字容易閱讀,但電腦難以理解。部分網頁中的資訊結構更加易於閱讀,例如在網址或標題中嵌入網頁日期,或是在 HTML 程式碼中嵌入機器可讀取的欄位。Google 會從網頁擷取各種結構化資料。本頁說明 Google 擷取的結構化資料類型,可供您在自訂摘要和結構化搜尋中使用。
總覽
閱讀販售 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 程式碼,以名為 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>
標記子集,以及大概網頁日期。
使用 PageMap
PageMaps 是一種結構化資料格式,可向 Google 提供網頁資料的相關資訊。可讓網站建立者在網頁中嵌入資料和附註。雖然您的使用者或 Google 網頁搜尋不會看到結構化資料,但程式化搜尋引擎在為網頁建立索引時就能加以辨識,並直接在程式化搜尋元素中傳回。
你可以明確地將 PageMap 加入網頁,或使用 Sitemap 提交 PageMaps。
Google 也會使用網頁上的其他資訊 (例如網站簡介標記或 meta
標記資料) 建立 PageMap。
與下述其他結構化資料格式不同,PageMaps 不需要使用標準屬性或字詞,甚至指現有的詞彙、結構定義或範本。只要建立適合您網站的自訂屬性值即可。與微格式、微資料和 RDFa 的結構化資料屬性不同,微資料和 RDFa 是在 HTML 內文中向使用者顯示的內容周圍,PageMaps 中繼資料包含在 HTML 網頁的 head
區段中。這個方法支援應用程式可能需要的任意資料,但您可能不想向使用者顯示這些資料。
建立 PageMap 後,您可以透過下列任一方法將其提交給 Google:
- 直接在 HTML 網頁中加入 PageMap 資料。 Google 在檢索網站時會找到 PageMap 資訊。
- 將 PageMap 資料加入 Sitemap,然後提交該 Sitemap 以建立索引。如果您不希望 PageMap 在網頁的 HTML 原始碼中公開,可以選擇這個選項。
PageMap 標記定義
下表概略說明將 PageMap 資料加入 Sitemap 的相關規定。
標記 | 是否必要? | 說明 |
---|---|---|
PageMap |
是 | 包含相關網址的所有 PageMap 資訊。 |
DataObject |
是 | 包含與單一元素 (例如動作) 相關的所有資訊。 |
Attribute |
是 | 每個 DataObject 都包含一或多個屬性。 |
注意:PageMaps 是 XML 區塊,因此格式必須正確。具體來說,XML 中的 PageMap
、DataObject
和 Attribute
標記須區分大小寫,以及 type
、name
和 value
屬性。
直接將 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>
將 PageMap 資料新增至 Sitemap
如果不想在網頁的 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 時,自訂屬性會在每個結果的 RTF 屬性中傳回,可與搜尋元素回呼搭配使用。
<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">
的中繼標記中擷取所選內容。我們不支援中繼標記的變化版本,例如使用 property
而非 name
。
雖然我們會明確排除通常由網站編寫工具 (例如 robots
、description
和 keywords
) 以程式輔助方式插入的常見標記,但系統會擷取您網站專用的罕見標記,並放入 metatags
類型的特殊資料物件,以便和自訂搜尋的所有結構化資料功能搭配使用。例如,表單的 <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 的資料。舉例來說,這項屬性可以與「排序依據屬性」等結構化搜尋運算子搭配使用:
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
- ms 智慧標記防止流離
- 無快取
Google 會嘗試納入所有其他 <meta>
標記。請注意,系統可能無法正確剖析 <meta>
標記 name
欄位中的標點符號、特殊字元和內嵌空格。程式化搜尋引擎會明確支援 <meta>
標記名稱中的句號和破折號。程式化搜尋引擎不會明確支援 <meta>
標記名稱內的其他特殊字元,但部分特殊字元經過網址編碼後,仍可以正確接受。
限制
只要所有已處理屬性的文字大小不超過 1 MB,程式化搜尋引擎最多可以將 50 個 <meta>
標記轉換成 PageMaps,且個別屬性不得超過 1024 個字元。
使用網頁日期
除了您在網頁上明確指定的中繼資料外,Google 還會根據網頁的功能 (例如標題和網址中的日期) 估算網頁日期。程式化搜尋引擎可讓您使用 date
的特殊中繼資料鍵,使用這個日期來排序、偏誤和範圍限制結果。這個預估日期可用於所有使用 &sort=
網址參數的運算子,包括依屬性排序、Bias by 屬性、限制為範圍。
注意:頁面日期不會新增至 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 的預估網頁日期功能,以隱含方式提供日期資訊,藉此偵測網頁網址、標題或其他功能中的嵌入日期,或是以結構化資料格式提供日期,明確提供日期資訊。無論是哪一種情況,有效使用日期格式都需要正確設定日期格式。
針對程式化搜尋引擎的依屬性排序、依屬性區分的分數、僅限範圍功能,Google 會嘗試使用傳統日期格式和正式標準 (例如 ISO 8601 和 IETF RFC 850) 剖析日期。系統接受下列完整日期格式:
日期格式 | 範例日期 |
---|---|
YYYY-MM-DD (西元年-月-日) | 2009-12-31 |
YYYY/MM/DD | 2009 年 12 月 31 日 |
YYYYMMDD | 20091231 |
YYYY 年 DD 月 | 2009 年 12 月 31 日 |
YYYY 年 DD 月 | 2009 年 12 月 31 日 |
Google 會嘗試剖析這些日期格式的變體,例如 MM/DD/YYYY
和 DD/MM/YYYY
。不過,日期越明確,Google 正確剖析的日期就越不容易。舉例來說,06/07/08
日期極為模稜兩可,因此 Google 不太可能指派到您要的解讀。為獲得最佳結果,請使用完整的 ISO 8601 日期格式以及完整指定的年份。
複合式摘要
Google 也會擷取 JSON-LD、Microformats、RDFa 和微資料的各種結構化資料,以便用於
複合式搜尋結果,也就是標準 Google 搜尋結果的延伸呈現方式。
可在程式化搜尋引擎的結構化資料運算子中使用類似的資料,通常是在複合式搜尋結果中使用的資料。舉例來說,如果您使用 Microformat 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 的圖形結構轉換為樹林。
- 樹系會向下縮減為與部分 schema.org 類型子集相關的分支版本。子集包含 schema.org 類型樹狀結構, 如果還有其他類型適合您特定用途,請前往支援論壇告訴我們。
- 從其中一種所選類型中,每個 JSON-LD 節點都會從 JSON-LD 樹狀結構中提取分支版本。該分支版本的樹狀結構中包括祖系節點,以及其所有子節點。舉例來說,我們可能有一個根層級在 MusicComposition 的樹狀結構,其中 firstPerformance 屬性含有 Event 值,該屬性含有完整的 Event 屬性。從 MusicComposition 的屬性到 Event 的屬性和其任何子系中,所有節點都會保留,保留包含第一個成效事件的有意義的樹狀結構分支。
... "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>
元素和類別屬性,以及簡短和描述性的屬性名稱 (例如 dtreviewed
或 rating
,分別代表評論項目的日期及其評分)。
以下是純 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 和 Microformat 的概念直接納入 HTML 標準本身。微資料會使用 HTML 標記中的簡單屬性 (通常是 span
或 div
) 為項目和屬性指派簡短且描述性名稱。
與 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。「自訂搜尋」適合先於本機探索可能的 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"
會說明人名。請注意,span
和 div
不受限制;itemprop="url"
標記已附加至 a
(錨點) 標記中。
如要進一步瞭解微資料,請參閱 結構化資料說明文件和 HTML 微資料標準。
查看擷取的結構化資料
JSON-LD 結構化資料具備 Google 支援的特殊驗證工具,也就是複合式搜尋結果測試工具。它會檢查 JSON-LD 的語法以及部分語意,尤其是結構化資料是否包含必要屬性和建議屬性。如要檢查其他形式的結構化資料,請使用結構定義標記驗證工具。這項工具會驗證結構化資料的語法,並顯示解讀後的格式。
程式化搜尋引擎會保留結構化資料的一部分,因此您可以使用程式化搜尋引擎來檢查程式化搜尋引擎對網頁的結構化資料檢視畫面,方法如下:
如果您尚未為任何網頁加上結構化資料標記,但想查看擷取的結構化資料外觀,可以輸入其他網站的網址。如果熱門網站有評論資訊或聯絡人清單,則特別可能含有結構化資料。
找到含有結構化資料的網頁後,您可以查看該網頁的來源,瞭解該網站實作的結構化資料。舉例來說,假設有以下 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
探索其他功能
結構化資料可用於多項程式化搜尋引擎功能,包括: