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

不執行腳本的爬蟲只看得到伺服器送出的 HTML。兩個檢查就能確認價格與庫存狀態有沒有在裡面。

適用情況
商品頁在瀏覽器裡顯示正確價格,但助理引用時沒有價格、是舊價格或幣別錯誤,而且價格是由幣別轉換 app、B2B 定價 app、登入後才看得到價格的 app,或無頭前端寫上去的。 [1] [6]
不適用情況
透過 Shopify Catalog 送到 ChatGPT、Copilot 或其他已啟用通路的價格,是 Shopify 從你的商品資料直接傳送,不依賴頁面。本篇只處理開放網頁這條路徑。 [6]
為什麼重要
Google 寫明並非所有機器人都能執行 JavaScript,也寫明動態產生的 Product 標記會讓 Shopping 爬取變得較不頻繁、較不可靠,對價格與庫存這類變動快的內容尤其如此。 [1] [2]
要做的事(也可能是不用做)
讀網頁原始碼而不是渲染後的頁面,確認價格數字與庫存狀態在 HTML 裡,再與公開的商品 JSON 比對。如果價格是腳本寫上去的,找出是哪個 app 或區段在做這件事。 [1] [4]
你能親眼看到的結果
商品頁的原始 HTML 含有與商品 JSON 相同的價格與庫存狀態,沒有等腳本之後才填入的佔位元素。 [4] [5]
這個結果不能證明什麼
讀得到的價格證明不跑 JavaScript 的爬蟲看得到它。這無法證明有任何爬蟲抓取了頁面、頁面被索引,或助理引用了這個商品。 [1] [6]
查證於
2026年9月5日

操作步驟

  1. 用未登入的視窗開啟商品頁,開啟網頁原始碼而不是檢查工具,搜尋價格數字與 Offer 這個字。記下每一項是出現了,還是只有佔位元素。 [1] [2]
  2. 把商品網址結尾改成 .js 後開啟,讀取 price 與 available。把兩個值記下來。 [4]
  3. 如果原始碼的價格與庫存狀態和 JSON 相同,就停在這裡。如果原始碼只有佔位元素、幣別不同或什麼都沒有,代表價格是腳本寫的,下一步去找出它。 [4] [5]
  4. 在網路商店、佈景主題、編輯程式碼裡開啟商品價格的 section 或 snippet,讀它是印出 Liquid 價格,還是留一個容器給 app 填。指出是哪個 app 或前端填進去的。 [5] [3]

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

進度只存在這台裝置的這個瀏覽器。我們只記錄你開啟了哪個官方畫面,以及你自行回報做完或停在哪一步。AI Commerce Ready 和 Shopify 都不會替你檢查結果,也不會在這裡變更商店。

官方畫面在哪
Shopify 管理介面 → 網路商店 → 佈景主題 → 在相關的佈景主題上按 ··· 選單 → 編輯程式碼
動手前你會看到
佈景主題程式碼編輯器開啟,顯示主題的目錄,包括 sections 與 snippets。
你能親眼看到的結果
商品頁的原始 HTML 含有與商品 JSON 相同的價格與庫存狀態,沒有等腳本之後才填入的佔位元素。
可以停手,或本來就不用做
原始 HTML 已含有 JSON 回報的價格與庫存狀態時,不用改動,直接停止。如果某個 app 同時負責商店的幣別或 B2B 定價工作,而替代方案還沒準備好,先不要移除或重新設定它。 [4] [2]
前往 Shopify 管理介面佈景主題程式碼編輯器

做完回到這裡: 保持這個頁面開著。讀完價格區段或指出 app 之後,回到這個分頁,記錄是哪個系統在寫價格,以及原始 HTML 現在有沒有帶著它。

你要回報什麼?

什麼時候第三方值得付錢,你又不必買什麼

什麼時候付錢請人做才划算
只有在無頭或自訂店面需要開發者把價格與 Offer 標記搬進伺服器渲染的 HTML,或某個定價 app 必須保留而需要另建伺服器端後備時,付錢請人做才划算。 [2] [3]
你不必買什麼
Liquid 佈景主題會用 product 物件把商品價格印進 HTML,Shopify 也公開提供商品 JSON,所以這兩個檢查只需要一個瀏覽器視窗。 [5] [4]

一個商品頁可以對每個打開它的人顯示正確價格,卻對爬蟲什麼價格都不顯示。差別在 JavaScript。瀏覽器會執行頁面的腳本,然後畫出價格。不執行腳本的爬蟲只讀伺服器送出的 HTML。如果價格是靠腳本送達的,那個爬蟲看到的是佔位元素,或什麼都沒有。

為什麼這是真實的缺口,不是理論

Google 的 JavaScript SEO 基礎描述自己爬取、渲染、索引三個階段,並寫明一個頁面在渲染佇列裡可能等超過幾秒。同一頁建議使用伺服器端渲染或預先渲染,理由是網站會更快,而且並非所有機器人都能執行 JavaScript。

針對商品頁,Google 關於用 JavaScript 產生結構化資料的頁面寫明,Google 能處理渲染後出現在 DOM 裡的標記,接著加上一條專門針對 Product 標記的警告:動態產生的標記會讓 Shopping 爬取變得較不頻繁、較不可靠,對商品庫存與價格這類變動快的內容是個問題。Google 的商家資訊要求規定 Offer 裡的價格必須大於零,頁面才符合資格。

Google 是把自家渲染器記載得最詳細的廠商。Shopify 的資料分享說明用一句話描述其他 AI 通路的開放網頁路徑:它們可以透過網頁爬取與索引取得商品資訊,只是那些資料未必總是完整、正確或最新。價格要等腳本跑完才存在,是讓那句話成真最直接的方式。

Shopify 的價格平常放在哪裡

Liquid 佈景主題用 product 物件印出價格,它的 price 屬性是所有子類中最低的價格(以幣別的最小單位計),available 屬性回報是否有任何子類可以購買。這個值在任何腳本執行之前就已經在 HTML 裡。會失去它的商店,是後來有東西把它改寫掉的那些:依訪客地區替換數字的幣別轉換器、登入前隱藏價格的 B2B 或批發定價 app、重新計算價格的組合或訂閱 app,或是頁面載入後才抓價格的無頭前端。

Shopify 也把每個商品的資料以公開 JSON 提供。Ajax 商品端點在商品網址後加上 .js 就會回傳商品與每個子類的 priceprice_mincompare_at_priceavailable。這個檔案是你的參考值:它是 Shopify 為這個商品持有的資料,與佈景主題或 app 畫出來的東西無關。

兩個檢查

  1. 讀網頁原始碼。 用未登入的視窗開啟商品頁。用瀏覽器的檢視原始碼指令,不要用檢查工具;檢查工具顯示的是腳本執行後的頁面,原始碼才是伺服器送出的內容。搜尋價格數字與 Offer 這個字。如果兩者都出現且數字正確,價格不靠 JavaScript 也讀得到。
  2. 讀商品 JSON。 把商品網址結尾改成 .js 後開啟。讀 priceavailable。這是 Shopify 持有的值。

如果原始碼與 JSON 一致,停在這裡。如果原始碼只有佔位元素(例如一個空的 span)、幣別與 JSON 不同,或根本沒有價格,就是腳本在寫價格,你需要指出它是誰。

找出是什麼在寫價格

開啟網路商店、佈景主題,對正在使用的主題選編輯程式碼,開啟渲染商品價格的 section 或 snippet。大多數主題會用價格來命名它。讀它是印出 Liquid 價格,還是留了一個容器讓 app 填。主題自己的程式碼會寫出擁有那個容器的 app 或區塊。

如果是無頭前端,佈景主題編輯器不是該去的地方;負責前端的開發者能說出價格與 Offer 標記是在伺服器上渲染,還是之後才抓取。

拿到結果之後怎麼做

把 Liquid 價格留在 HTML 裡,如果 app 必須改寫,讓它之後再改。大多數幣別與定價 app 都可以設定成保留伺服器價格、只在畫面上替換,這樣爬蟲拿到基準價格,人拿到轉換後的價格。登入前隱藏價格的批發 app 是商業決定,隱藏的價格本來就對爬蟲隱藏;請確認打算放在開放網頁上的商品不在那條規則之內。

可觀察結果是一個商品頁,它的原始 HTML 帶著與商品 JSON 相同的價格與庫存狀態。這證明不跑 JavaScript 的爬蟲讀得到它們。它無法證明有任何爬蟲抓取了頁面、頁面被索引,或助理引用了這個商品。

來源

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