我在每一份 commerce 診斷裡都會找到的 10 個 JSON-LD bug(以及它們要您多少錢)

在 4 萬 5 千頁以上的 PDP 目錄裡悄悄失敗的欄位層 JSON-LD bug。每一個都映射到它幹掉的豐富結果、把您從中踢出的 AI 引擎,以及我為客戶建模的美元成本。

2026-05-02

今年我審過的 commerce 站點足夠多,看到了同樣的 10 個 JSON-LD bug 一再出現。Schema 驗證器全綠。Rich Results Test 說有資格。然而 Product 豐富結果從來沒在 Google Shopping 出現,本應是品牌贏的查詢裡 ChatGPT 引用的是對手,團隊也說不清哪個修復才挪動了指針。

這是那份目錄。每一個 bug 都包含失效模式、它破壞的引擎,以及在一個 4.5 萬頁 PDP、客單價 $80、基線轉換率 2.1% 的目錄上我推算的大致營收帶。數字是示意性的,不是承諾。重點是數學,不是數字。

1. Organization @id 每頁都漂

最常見的 bug。CMS 在每個模板上都發出一個 Organization JSON-LD 區塊,但 @id 每次都設成頁面 URL。驗證器通過,因為每個區塊內部一致。AI 引擎看到的是五萬個名字相同的不同組織。品牌實體合併失敗。引用崩塌。

修法:把 Organization 釘在一個穩定的單一 @id 上,例如 https://yoursite.com/#organization。所有地方都引用它。

營收帶:高。在解決之前,五個引擎全線的 AI 引用份額下降 30 到 60%。(每個引擎對 @id 的處理差異參見 AI 答案引擎到底是怎麼解析您的 @graph。)

2. Product 實體用嵌套物件而不是 @id 引用品牌

{
  "@type": "Product",
  "name": "Acme Widget",
  "brand": { "@type": "Brand", "name": "Acme" }
}

看起來沒問題。也通過驗證。ChatGPT 的解析器把每個 PDP 上的每個 Product 當作屬於一個碰巧同名的不同 Brand 實體。在 4.5 萬的目錄上您會得到 4.5 萬個 Brand 實體。知識圖譜碎掉。

修法:在 @graph 裡把 Brand 提到頂層實體,帶穩定 @id,然後從每個 Product 引用它:

{ "@type": "Brand", "@id": "https://yoursite.com/#brand", "name": "Acme" }
{ "@type": "Product", "name": "Acme Widget", "brand": { "@id": "https://yoursite.com/#brand" } }

營收帶:中高。影響您本應是顯然答案的長尾「品牌+商品」查詢。

3. 缺少 offers.priceValidUntil

Google 會讓過期的 Offer 豐富結果失效。沒有 priceValidUntil,即使價格從未變過,90 天後豐富結果也會從 Shopping 裡悄悄消失。大多數團隊以為 Google 還在渲染。

修法:發出 priceValidUntil 為一年後的日期,在每次頁面渲染時刷新。實作便宜,效果立竿見影。

營收帶:中。在豐富結果是差異點的品類查詢上,純粹的點擊率損失。

4. AggregateRating 的 reviewCount 是 0 或 1

Google 要求至少 3 條評論才會渲染星級。低於此不僅是被壓制,而且是會影響頁面更廣泛信任訊號的豐富結果資格違規。帶 reviewCount: 1 的 AggregateRating 的站點,明確比什麼都不發的站點更糟。

修法:在伺服器端檢查 reviewCount >= 3 之後再輸出 AggregateRating。

營收帶:單條低,合計高。帶 1-2 條評論的 PDP 長尾在目錄上悄悄失去豐富結果。

5. 圖片 URL 404 或者重新導向

Google 會去抓 JSON-LD 的圖片。如果它 404、重新導向或回傳非圖片內容,整個 Product 豐富結果會被壓制。常見原因:Schema 產生器從一個被棄用的 CDN 路徑取圖、圖片被刪但 JSON-LD 沒重新產生。

修法:在 Schema 發出時驗證圖片 URL。RankLabs 把這個標為模板層硬錯誤而不是頁面層,這樣報告指向產生器函式,而不是 12,000 個獨立 PDP。

營收帶:在被影響的模板上很高。一旦命中,經常擊中目錄的 20 到 40%。

6. SKU 與 gtin13 在變體之間缺失或重複

Google 的 Merchant Center 用 gtin13 去重。如果您的變體不小心共享了 GTIN,只有一個變體被索引。如果 GTIN 完全缺失,AI 購物引擎(ChatGPT 外掛、Perplexity Shopping)無法把您的庫存與價格比較結果匹配上。

修法:在資料庫層面強制 GTIN 唯一性,只在設定時發出。sku 作為變體層穩定識別符發出。

營收帶:在多變體目錄上很高。服飾、美妝、家居受打擊最嚴重。

7. BreadcrumbList 項目引用不一致的 URL

一半麵包屑用 https://yoursite.com/category,另一半用 https://yoursite.com/category/。Google 的麵包屑合併失敗。即使一切都通過驗證,搜尋結果裡那條藍色的導航麵包屑也消失。

修法:只發出規範 URL。尾斜線政策在 @id 建構器上強制。

營收帶:單條低,但麵包屑跨整棵品類樹消失,會累積成可衡量的 CTR 損失。

8. JSON-LD 在 hydration 之後由客戶端注入

Schema 只存在於渲染後的 DOM,不在初始 HTML 回應裡。大多數 AI 引擎抓取器(ChatGPT 的、ClaudeBot、PerplexityBot)不執行 JavaScript。它們看不到任何 Schema。驗證器跑在渲染後的 DOM,所以團隊以為沒問題。

修法:在初始 HTML 回應裡以伺服器端方式發出 JSON-LD。標籤管理器模板和僅 React 的 Schema 元件是常見嫌疑犯。

營收帶:災難性。在修復之前 AI 引擎引用您的頁面是零。每三次合作裡大約一次會找到這個。一份架構良好的 Schema 在沒有監控的情況下半衰期是 60 到 90 天,這就是 CI 驗證關卡不可商量的原因。(Schema 會衰減。這是我測出來的半衰期。)

9. Review 實體沒有 itemReviewed 的 @id 引用

每個 Review 區塊的 itemReviewed 設成了嵌套的 Product 物件,而不是回指頁面 graph 裡規範 Product 實體的 @id 引用。結果:評論訊號沒有按 Google 期望的方式聚合到 Product 上,AggregateRating 是從錯誤的樣本上構建的。

修法:每個 Review 的 itemReviewed{ "@id": "/products/123#product" },絕不嵌套物件。

營收帶:中。影響有強評論專案的 PDP 上的豐富結果資格。

10. 品類頁 ItemList 沒有 position

品類頁發出 ItemList,每個 ListItem 上沒有 position 編號。Google 沒辦法構造輪播豐富結果。每條修復就是一行,但因為大多數 ORM 支撐的 Schema 產生器都忘了設置 position,這個 bug 到處都是。

修法:把項目用 1-索引的 position 列舉出來。

營收帶:中。ItemList 輪播越來越多地是 Google AI Overviews 浮出品類層答案的方式。

這份清單怎麼用

如果您運營一個 commerce 站點,把一個 Schema 抓取器對準您的前十大模板,逐一檢查這十個 bug。大多數團隊至少會發現四個。每個 bug 的修復都很小。複合成本不小。

如果您想讓我替您做,Audit 就是這個合作。RankLabs 跑這十項檢查,加上跨 Schema 圖譜、麵包屑鏈、AI 引擎模擬、爬蟲可達性層的另外四十項,然後我建模逐項修復的營收影響,交付 90 天優先順序路線圖。Sprint 是帶著 CI 驗證關卡執行這份路線圖、讓修復維持上線狀態的那一階段。

05contact

Stop pouring budget into a broken foundation.

If your SEO retainer hasn’t compounded, your AI citations have stalled, or your last technical audit ended in a deck nobody read, that’s not a content problem. It’s an engineering problem. The same engineer who diagnoses ships the fix.

Book a 30-min call30-min call · no deck · engineer to engineer
or write me directly
每一封訊息我都會親自看。24 小時內回覆。// 正當利益 (GDPR Art. 6(1)(f)) —— 由您主動發起聯絡。 隱私權政策