SEO新聞

Google 更改 JSON-LD 解析規則:只有一次 HTML Unescaping 對香港網站結構化數據嘅影響

Google 搜尋嘅工程副總裁 Gary Illyes 喺 LinkedIn 上公布咗一個對技術 SEO 有深遠影響嘅變更:Googlebot 已更改 JSON-LD 結構化數據嘅提取方式,由原本兩次 HTML unescaping 減為只做一次。呢個改動看似細微,但對於使用 CMS 系統或者有程式自動生成結構化數據嘅香港網站嚟講,可能會導致 Rich Results 突然消失、Google Search Console 出現大量解析錯誤。本文會詳細解釋呢個變化嘅技術背景,以及香港企業應該點樣應對。

一、Google 改變咗啲咩?

一直以嚟,Googlebot 喺讀取網站上嘅 JSON-LD script 標籤嗰陣,會自動執行兩次 HTML unescaping。呢個「寬容」嘅做法令唔少網站即使結構化數據嘅格式唔完全符合 JSON 標準,Google 仍然可以正確解讀。但 Illyes 表示,Google 為咗「將解析器提升至符合 JSON 及其他標準」,決定改為只做一次 HTML unescaping。

佢特別指出:「如果你想知道 JSON 嘅『正確跳脫』方法係咩,我有好消息——RFC 8259 第 7 節已經有非常清晰嘅定義。」換句話說,Google 以後會嚴格跟隨 JSON 標準,唔再幫網站「執漏」。

二、呢個改動實際影響啲咩?

簡單講,如果你嘅 JSON-LD 入面有 雙重跳脫嘅 HTML 實體(例如 & 或者 ✔),Googlebot 而家唔會再幫你「解開」佢哋。實際例子:

  • ❌ 舊寫法(而家會出錯): { "description": "我哋提供專業&可靠嘅服務" } —— Google 會睇到「&」而唔係「&」
  • ✅ 正確寫法: { "description": "我哋提供專業\u0026可靠嘅服務" } —— 用 Unicode 十六進制跳脫
  • ✅ 亦可以: { "description": "我哋提供專業&可靠嘅服務" } —— 直接使用原始字元

呢個問題尤其常見於:

  • CMS 系統自動生成嘅 JSON-LD——例如 WordPress 嘅 SEO plugins(Yoast、Rank Math 等)可能會將內容先跳脫一次,再放入 JSON-LD,形成雙重跳脫
  • 手寫嘅結構化數據模板——開發者習慣用 PHP/JS 嘅 htmlspecialchars() 之類嘅函數處理文字,然後再放入 JSON,同樣會造成雙重跳脫
  • 第三方 API 輸出嘅數據——由外部系統匯入嘅產品資料、評價內容,可能本身已經含有跳脫字元

三、對香港中小企嘅實際影響評估

根據 Google Search Console 嘅數據,香港大約 30-40% 嘅中小企網站有使用結構化數據(主要係 LocalBusiness、Product、FAQ 同 Article Schema)。其中唔少網站透過以下方式產生 JSON-LD:

  • Shopify、WordPress 等平台嘅自動 Schema 生成功能
  • 香港本地網頁設計公司開發嘅自訂 CMS
  • Google Tag Manager 透過自訂 HTML 標籤注入嘅結構化數據

如果呢啲系統有使用雙重跳脫,你可能會發現:

  • Google Search Console 嘅「增強功能」報表出現大量「無法解析」或者「缺少必要欄位」錯誤
  • Google 搜尋結果中嘅 Rich Results(星級評價、FAQ 摺疊、產品價格)突然消失
  • 結構化數據測試工具顯示 JSON 格式錯誤

四、點樣檢查你嘅網站有冇受影響?

1. 用 Google Search Console 檢查

入去 Search Console > 「增強功能」報表,檢查有冇出現任何新的錯誤或者警告。特別留意「解析錯誤」或者「缺少欄位」嘅類別,呢啲可能係 JSON-LD 提取失敗嘅跡象。

2. 用 Rich Results Test 檢查

將你嘅網頁 URL 放入 Google Rich Results Test,如果測試工具回報 JSON 解析錯誤,咁就係受影響。

3. 直接檢查 JSON-LD 原始碼

打開你嘅網頁原始碼,搵出 <script type="application/ld+json"> 區塊,檢查入面有冇 &amp;、&lt;、&gt;、&quot;、&#xxxx; 之類嘅 HTML 實體編碼。如果有的話,就需要修正。

五、修正方法(按技術程度排序)

選項 1:直接改為標準 JSON 跳脫(推薦)

將所有 HTML 實體編碼(如 &amp;)改為 JSON 標準嘅 Unicode 跳脫(如 \u0026),或者直接使用原始字元(確保 JSON-LD 嘅字串係合法 UTF-8)。呢個係最徹底嘅解決方案。

選項 2:更新 CMS 插件

如果你用緊 WordPress 嘅 Yoast SEO 或者 Rank Math,檢查有冇更新。呢啲主流插件通常會好快適應 Google 嘅變更。同樣,Shopify 用戶可以檢查主題開發者有冇發布更新。

選項 3:透過 GTM 修正

如果你用 Google Tag Manager 注入結構化數據,檢查自訂 HTML 標籤入面嘅 JSON-LD,確保輸出嘅時候冇多餘嘅 HTML 跳脫。

選項 4:用 JavaScript 動態生成

如果靜態 JSON-LD 經常有跳脫問題,可以考慮改用 JavaScript 喺客戶端動態生成結構化數據。咁樣可以避免伺服器端嘅雙重跳脫問題。

六、預防未來類似問題嘅建議

  • ✅ 建立 JSON-LD 嘅自動化測試流程,每次更新後用 Rich Results Test 檢查
  • ✅ 喺開發流程中加入結構化數據驗證步驟
  • ✅ 避免使用 HTML 專用嘅跳脫函數(如 htmlspecialchars)處理 JSON-LD 內容
  • ✅ 直接用 JSON 標準嘅跳脫規則:雙引號用 \u0022、反斜線用 \\、& 符號直接用原始字元或者 \u0026
  • ✅ 訂閱 Google Search Central 嘅更新通知,呢類改動通常會喺 LinkedIn 或者官方 Blog 公布

七、仲有一個問題:Google 會唔會修復已收集嘅數據?

Barry Schwartz 喺 Search Engine Roundtable 嘅報導中問咗呢個問題——如果 Google 之前已經成功爬取咗雙重跳脫嘅 JSON-LD,呢啲數據會唔會突然失效?Illyes 嘅回應係,新規則只影響之後嘅爬取。但因為 Google 會定期重新爬取網頁,所以如果唔修正,下次 Googlebot 再訪時就可能會讀取失敗。建議盡快修正。

需要幫手檢查網站嘅結構化數據?

我哋為香港企業提供全面嘅技術 SEO 審計服務,包括結構化數據診斷、JSON-LD 錯誤修正同 Rich Results 優化。立即預約免費諮詢,確保你嘅網站繼續享有 Google 搜尋嘅增強顯示功能。

預約免費諮詢

準備好提升您的搜尋排名了嗎?

聯絡我們的SEO專家,獲取免費的網站分析報告

免費諮詢 →