操作步驟 在 AI 上賣商品

我的價格要等 JavaScript 跑完才出現,怎麼確認 AI 代理程式讀得到?

比較原始碼的價格、幣別與供應狀態,以及同一訪客情境的 Shopify 回應。確定的缺漏交開發者處理。

· 更新於 2026年9月21日

適用情況
你需要確認公開商品頁的伺服器端 JSON-LD 是否包含價格、幣別與供應狀態,包括商店檢查指出缺漏之後。 [1] [4]
不適用情況
Shopify Catalog 透過 Shopify 將商品資料傳送至已啟用的 AI 通路。本篇處理另一條開放網頁路徑,不處理 Catalog 傳送。 [6]
為什麼重要
並非所有爬蟲都會執行 JavaScript。Google 提醒,動態產生的 Product 標記可能讓 Shopping 對價格與供應狀態的爬取較不頻繁、較不可靠。 [1] [2]
怎麼做
在網頁原始碼中找出商品的 JSON-LD Offers,將最低價格、幣別與合併判讀的供應狀態,與同一訪客情境的商品 .js 和 cart.js 回應比對。修正已確認的缺漏後重做比較。 [4] [5]
何時完成
每個已檢查頁面的伺服器端 JSON-LD 都指向該商品,且每筆 Offer 都完整、價格不小於零;最低價格、幣別與合併判讀的供應狀態,都與同一情境的 Shopify 回應一致。 [4] [5]
不能證明什麼
一致的證據只涵蓋已檢查的頁面與訪客情境,無法證明爬蟲已抓取或索引頁面、助理已引用商品,或 Shopify Catalog 已傳送商品資料。 [1] [6]
查證於
2026年9月21日

操作步驟

  1. 用未登入的視窗開啟公開商品頁並檢視原始碼。找出屬於該商品的 application/ld+json 區塊,以及其中的 Offer 或 AggregateOffer 資料。只有可見的價格文字並不足夠。 [1] [5]
  2. 維持相同訪客情境,在商品網址的商品路徑後加上 .js,並開啟相應語系路徑的 cart.js。記下 price_min 除以 100 的金額、available,以及購物車的 currency。 [4]
  3. 依下方說明比較每筆 Offer 的價格、幣別與供應狀態。最低價格及合併判讀的供應狀態一致,就保持頁面不變。情境或幣別不同時先停止,不要據此判定主題故障。 [4]
  4. 確認 Offer 缺漏或內容不一致後,請主題或店面開發者修正伺服器送出的標記,再重做比較並重新檢查商店。如果無法安全修改程式碼,將觀察到的證據交給該開發者。 [5] [2]

開啟官方畫面,再回報進度

開啟頁面與自行回報的完成或停止步驟只保存在此裝置的瀏覽器。AI Commerce Ready 和 Shopify 都不會替你檢查結果,也不會在這裡變更商店。

官方頁面
Shopify 管理介面 → 網路商店 → 佈景主題 → 在相關的佈景主題上按 ··· 選單 → 編輯程式碼
操作前先確認
佈景主題程式碼編輯器開啟,顯示主題的目錄,包括 sections 與 snippets。
何時完成
每個已檢查頁面的伺服器端 JSON-LD 都指向該商品,且每筆 Offer 都完整、價格不小於零;最低價格、幣別與合併判讀的供應狀態,都與同一情境的 Shopify 回應一致。
何時停止
抽樣證據一致時,不需改動。證據無法讀取、訪客情境或幣別不同,或標記形式無法用這項檢查比較時,先停止並交給開發者確認。保留原先預期的登入與定價限制。 [4] [3]
前往 Shopify 管理介面佈景主題程式碼編輯器

回來後: 請保留這份解答的分頁。修正後回來重新比較同一個頁面。如果是從商店檢查進入,請重新檢查並閱讀實際涵蓋範圍,再判斷該發現是否已解決。

你要回報什麼?

付費協助與免費選項

何時值得付費協助
已確認的標記缺漏若需修改自訂主題、定價整合或無頭店面,同時保留預期的價格與存取規則,請開發者協助可能有價值。 [2] [5]
現有免費選項
瀏覽器能顯示網頁原始碼與 Shopify 的公開商品 JSON。Shopify 也提供產生商品 JSON-LD 的 Liquid structured_data 篩選器;主題必須使用它,才會包含這份輸出。 [4] [5]

檢查隨網頁送出的價格資料,不能只看畫面上的價格。 JSON-LD 是主題放在網頁原始碼中的商品資料。將其中的價格、幣別與供應狀態,和 Shopify 的公開商品及購物車回應比對。

本篇處理公開網頁。Shopify 的資料分享說明將它與 Catalog 傳送分開。

1. 讀網頁原始碼

未登入時開啟商品頁,選擇檢視網頁原始碼。瀏覽器的檢查工具可能顯示 JavaScript 執行後的內容。

找到 application/ld+json,再找屬於這件商品的 Product 或 ProductGroup 及其 offers,包含子類。用網址、識別碼或商品證據確認身分。推薦商品的 Offer、可見價格或單獨的 Offer 字樣都不夠。

Google 表示並非所有機器人都執行 JavaScript。動態產生的 Product 標記也可能讓 Shopping 較少爬取,價格與庫存較不可靠;這些說明不保證特定代理的行為。

2. 取得同一情境的 Shopify 資料

保持相同網域、語系、市場與未登入情境。商品在 /products/example 時,開啟 /products/example.js,保留語系前綴。記下 price_min / 100 與商品層級的 available。

Shopify Ajax 商品文件表示,價格採用顧客的顯示幣別。從同一情境、相應語系的 cart.js 讀取 currency。商品回應不是所有訪客共用的基準幣別資料。

回應讀不到、重新導向改變商品或情境,或幣別不同時,以「無法比較」停下來。不能因此認定主題、app 或 JavaScript 出錯。

3. 比對這件商品的 Offers

每筆 Offer 都要有完整的 price、priceCurrency 與 availability;價格須為數值且不小於零。不能拼接不同的不完整 Offers。

  • 最低 Offer 價格等於 price_min / 100。
  • 每筆幣別等於購物車 currency。
  • 合併供應狀態符合商品 available:true 表示至少一筆可購買,false 表示全部不可購買。最便宜的子類可以售罄,其他子類仍有貨。

商店檢查接受的可購買狀態是 InStock、PreOrder、BackOrder、LimitedAvailability;不可購買狀態是 OutOfStock、SoldOut、Discontinued。schema.org 網址讀最後的名稱,其他值需另查。

AggregateOffer 要比對 lowPrice 與 priceCurrency。若有子層 Offers,每筆須完整,最低價格符合 lowPrice,並由子層提供合併供應狀態;彙總層若有供應狀態,也須一致。沒有子層時,彙總層須自行提供供應狀態。

只使用 priceSpecification 或不支援的供應狀態時,交給開發者確認。即使標記正確,重新檢查仍可能顯示證據缺漏或不一致;不要只為通過檢查而改掉正確標記。Google 商家資訊規則是另一套要求;本檢查接受零元不代表 Google 也接受。

4. 修正確定的缺漏,再比對

交給開發者商品網址、訪客情境、JSON-LD 與商品/購物車值。不熟悉程式碼時,先停在這裡。

Liquid 主題可從主題程式碼編輯器處理。Shopify 的 structured_data 篩選器能產生 JSON-LD;開發者應修正來源,避免互相矛盾的重複 Offers。無頭店面的回應由店面開發者負責,主題編輯器不一定能控制。

保留市場定價、登入與 B2B 限制。不要移除定價 app 或公開受限價格。修正後重新比對同一批回應。

若從發現進入,回到商店檢查並重新檢查,閱讀涵蓋範圍與證據狀態。它以匿名訪客檢查主要網域最多三個已發布頁面,情境可能與你不同。網域/路徑重新導向、缺少幣別情境或幣別不同,都維持「未檢查」。

資料一致只確認這些頁面與情境,不能證明爬蟲已抓取、建立索引、助理已引用,或 Catalog 已傳送。

來源

  1. JavaScript SEO basics
  2. Generate structured data with JavaScript
  3. Merchant listing structured data
  4. Ajax API product endpoint
  5. Liquid structured_data filter
  6. Data sharing and privacy for agentic storefronts