
在 JSON-LD 檢查器的脈絡下,「選擇」真正的意思
當你已經在使用 JSON-LD 檢查器時,選擇正確的結構化資料檢查器作法,取決於你需要工具揭示什麼:實際嵌入在 HTML 中的項目、每個項目所宣告的類型與屬性,以及阻礙搜尋功能辨識該頁面的聚焦屬性缺口。以萃取為優先的工具會在瀏覽器內部檢查一份你的原始碼副本,把每一個 JSON-LD 物件、陣列與 @graph 節點展開成個別項目,走訪有界線的 Microdata 結構,並把剖析錯誤與設定檔警告分開,以免一個壞掉的腳本遮蔽文件中其他位置的有效腳本。結構化資料檢查與萃取工具遵循這個以萃取為優先的契約:貼上經授權的 HTML,檢視盤點結果,再以你所針對的搜尋功能之官方工具驗證已部署的 URL。語法有效性與複合結果的資格是不同層次的問題,因此檢查器回報的是關於貼上文件的證據,而非預測搜尋呈現結果。
「正確作法」這個詞組通常藏著三個較小的決定:工具能讀取哪一種結構化資料格式、工具是去抓取你的頁面還是只剖析你貼上的內容,以及工具是依據明確的規則集評分你的標記,還是只做盤點。每一個決定都會改變這項結果能對你的模板證明什麼、不能證明什麼。
三種真正的萃取作法
大多數自稱為 JSON-LD 檢查器的工具都屬於以下三種作法之一,而其中的取捨比行銷文案所暗示的更為重要。
僅 JSON-LD 的檢查器聚焦於文件內部的腳本區塊。它們使用標準瀏覽器的 JSON 處理來剖析每個腳本,把 @graph 容器與陣列展開成節點清單,並回報每個區塊的剖析錯誤。它們完全略過 Microdata 與 RDFa——若你的模板只輸出 JSON-LD,這沒問題;但如果你的 CMS 在另一個模板上也嵌入了 Microdata,這類工具就會對該標記視而不見。純粹聚焦於 JSON-LD 雖然符合Google 對許多結構化資料功能的建議格式,卻不是對文件可能包含的每一種格式的完整稽核。
僅 Microdata 的檢查器會走訪剖析後的 DOM,尋找 itemscope、itemtype 與 itemprop 屬性。它們從內容屬性、連結、媒體來源、日期屬性與文位元組點讀取值,並且讓巢狀項目保持可見的巢狀呈現,而非將其攤平。它們會略過 JSON-LD 與 RDFa,因此僅 Microdata 的工具對任何腳本區塊的標記都未做檢查。
合併式本機萃取器在一次處理中同時處理兩種格式。結構化資料檢查與萃取工具會在同一份文件中找到 JSON-LD 腳本區塊與 Microdata 項目,把 JSON-LD 容器展開成個別項目,走訪有界線的頂層 Microdata 結構,並依格式分開輸出結果。格式錯誤的 JSON 區塊會被單獨回報,因此一個壞掉的腳本不會抹除同一份文件中其他位置找到的有效項目。RDFa 仍落在目前的產品範圍之外;這個限制會被顯示出來,而不會被當作缺少的結構化資料略過。
依使用情境比較萃取作法
正確的選擇取決於你的模板實際輸出的內容,而非哪個工具的品牌最為人熟知。下表摘要列出實務上的取捨。
| 作法 | 檢查的內容 | 略過的內容 | 最適合的情境 |
|---|---|---|---|
| 僅 JSON-LD 的檢查器 | 腳本區塊、@graph 節點、頂層陣列 | Microdata、RDFa、頁面內的 itemprop | 只輸出 JSON-LD 的模板 |
| 僅 Microdata 的檢查器 | itemscope、itemtype、itemprop、巢狀範圍 | JSON-LD 腳本、RDFa 屬性 | 沒有腳本區塊的原生 HTML 模板 |
| 合併式本機萃取器 | 兩種格式、巢狀項目、有界線的計數 | RDFa、即時頁面抓取、腳本執行 | 混合式模板與飛行前檢查 |
如果你的 CMS 或框架會在不同模板之間切換格式(Product 頁面輸出 JSON-LD,Article 頁面輸出 Microdata,舊式 FAQ 區塊輸出 RDFa),就只有合併式作法能稽核到實際存在的格式;它無法告訴你貼上內容中不存在的格式。
以正確的方式執行結構化資料檢查器
以萃取為優先的檢查器在你把它視為結構化的飛行前檢查,而非是非題的關卡時最為有用。以下確切步驟反映了經驗證的貼上式萃取操作程序。
- 複製該頁面的已交付 HTML 原始碼;若框架會在載入後注入標記,則匯出受控的渲染後 DOM 快照。檢查器絕不會去抓取或執行頁面,因此你所貼上的內容就是被剖析的內容。
- 把 HTML 貼進結構化資料檢查與萃取工具。剖析發生在與外部隔離的瀏覽器模板片段中,因此你文件中的腳本不會執行,也不會請求任何資源。
- 執行萃取,再依下列順序讀取結果:先看 JSON-LD 剖析錯誤,再看 Microdata 項目,接著是宣告的類型與屬性,最後才是聚焦的缺漏屬性警告。把這些層次分開,可避免單一格式錯誤的腳本遮蔽其他位置的有效項目。
- 把萃取出的盤點結果與頁面應該揭露的內容進行比對。預期的類型是否出現?模板是否輸出了重複的項目?某個變體是否缺少必要欄位?是否有 JSON-LD 區塊剖析失敗,而 Microdata 卻涵蓋了同一個實體?
- 修正原始碼模板,讓這項變更能在多筆紀錄間重現。僅為了消除警告而新增欄位,可能讓實作變得更不可信;因此與其用通用或捏造的值填出更大的物件,不如選擇更少但完整且真實的屬性。
- 以你所針對的特定搜尋功能所對應的官方工具驗證已部署的 URL,然後在重新檢索後於 Search Console 中檢視強化報告。
解讀檢查器回傳的結果,但別過度承諾
一項沒有剖析錯誤、也沒有設定檔警告的結果,只能證明貼上的 HTML 含有預期的項目與屬性,並不能保證搜尋引擎會顯示複合結果。語法有效性、內容正確性、部署、索引與個別消費者的政策是各自獨立的問題。有效的 JSON 可能描述了不正確、隱藏或不相關的內容;一個看似完整的物件仍可能違反搜尋政策、與可見頁面不一致,或在部署測試中失敗。不屬於 Google 功能的 Schema.org 屬性,對其他消費者仍可能是有意義的。
一個不熟悉的 Schema.org 類型可能會出現在萃取清單中而不被評分。萃取是一般性的,但必要屬性規則因消費者與功能而異,因此檢查器不會在沒有書面化契約的情況下自行虛構一套驗證設定檔。因此,一則警告只代表本機設定檔沒有找到該屬性;它並不證明搜尋引擎會拒絕該頁面,也不會因此阻擋發布。請把這些警告當作手動對照連結文件進行檢視的聚焦起點,而非裁決結果。
這項結果也無法保證你所貼上的內容與爬蟲實際看到的內容一致。如果框架會在載入後注入標記,則原始 HTTP 回應、渲染後的 DOM 與爬蟲可見的輸出可能彼此不同。貼上的 HTML 就是那次萃取的單一事實來源;在對部署做出結論之前,請先調和這些差異。
本機檢查之後:驗證已部署的 URL
本機的貼上式檢查器是透明的飛行前檢查,而不是最終結論。頁面上的結構化資料仍必須與可見內容相符、遵守消費者的內容政策,並通過部署的考驗。在原始碼模板修正完成後,請以你所針對的搜尋功能之官方驗證工具——若該類型對應 Google 功能,即為 Google 的複合結果測試——對已部署的 URL(而非本機貼上的內容)執行檢驗。
就 Microdata 而言,WHATWG HTML Microdata 規格定義了 itemscope、itemtype 與 itemprop 如何組合;把你的萃取結果對照該規格閱讀,可以判斷空白 URL 是因為屬性錯誤、漏掉內容屬性,還是某個巢狀範圍被默默地攤平。就 JSON-LD 而言,請確認部署的腳本是透過不依賴 JS 的路徑遞送,且框架並未在伺服器端將其移除。在重新檢索之後,請檢視 Search Console 的強化報告,看看消費者是否同意你的本機分析。
搜尋引擎決定是否以及何時顯示強化後的呈現方式。沒有任何本機檢查器能保證索引、排名或複合結果;因此正確的作法,是讓它為你提供一份透明的盤點,清楚說明你的貼上內容包含什麼、把剖析錯誤與設定檔警告乾淨地分開,並順暢地交接給你所針對的特定功能之官方驗證工具。
延伸閱讀:選擇正確的 AI 機器人 Robots.txt 檢查作法。
延伸閱讀:比較生成 GEO 品牌問題的各種作法。