我在每一份 commerce 診斷裡都會找到的 10 個 JSON-LD bug(以及它們要您多少錢)
在 4 萬 5 千頁以上的 PDP 目錄裡悄悄失敗的欄位層 JSON-LD bug。每一個都映射到它幹掉的豐富結果、把您從中踢出的 AI 引擎,以及我為客戶建模的美元成本。
今年我審過的 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 驗證關卡執行這份路線圖、讓修復維持上線狀態的那一階段。