我的價格要等 JavaScript 跑完才出現,怎麼確認 AI 代理程式讀得到?
不執行腳本的爬蟲只看得到伺服器送出的 HTML。兩個檢查就能確認價格與庫存狀態有沒有在裡面。
- 適用情況
- 商品頁在瀏覽器裡顯示正確價格,但助理引用時沒有價格、是舊價格或幣別錯誤,而且價格是由幣別轉換 app、B2B 定價 app、登入後才看得到價格的 app,或無頭前端寫上去的。 [1] [6]
- 不適用情況
- 透過 Shopify Catalog 送到 ChatGPT、Copilot 或其他已啟用通路的價格,是 Shopify 從你的商品資料直接傳送,不依賴頁面。本篇只處理開放網頁這條路徑。 [6]
- 為什麼重要
- Google 寫明並非所有機器人都能執行 JavaScript,也寫明動態產生的 Product 標記會讓 Shopping 爬取變得較不頻繁、較不可靠,對價格與庫存這類變動快的內容尤其如此。 [1] [2]
- 查證於
- 2026年9月5日
操作步驟
- 用未登入的視窗開啟商品頁,開啟網頁原始碼而不是檢查工具,搜尋價格數字與 Offer 這個字。記下每一項是出現了,還是只有佔位元素。 [1] [2]
- 把商品網址結尾改成 .js 後開啟,讀取 price 與 available。把兩個值記下來。 [4]
- 如果原始碼的價格與庫存狀態和 JSON 相同,就停在這裡。如果原始碼只有佔位元素、幣別不同或什麼都沒有,代表價格是腳本寫的,下一步去找出它。 [4] [5]
- 在網路商店、佈景主題、編輯程式碼裡開啟商品價格的 section 或 snippet,讀它是印出 Liquid 價格,還是留一個容器給 app 填。指出是哪個 app 或前端填進去的。 [5] [3]
開啟官方畫面,再回報進度
進度只存在這台裝置的這個瀏覽器。我們只記錄你開啟了哪個官方畫面,以及你自行回報做完或停在哪一步。AI Commerce Ready 和 Shopify 都不會替你檢查結果,也不會在這裡變更商店。
- 官方畫面在哪
- Shopify 管理介面 → 網路商店 → 佈景主題 → 在相關的佈景主題上按 ··· 選單 → 編輯程式碼
- 動手前你會看到
- 佈景主題程式碼編輯器開啟,顯示主題的目錄,包括 sections 與 snippets。
- 你能親眼看到的結果
- 商品頁的原始 HTML 含有與商品 JSON 相同的價格與庫存狀態,沒有等腳本之後才填入的佔位元素。
做完回到這裡: 保持這個頁面開著。讀完價格區段或指出 app 之後,回到這個分頁,記錄是哪個系統在寫價格,以及原始 HTML 現在有沒有帶著它。
什麼時候第三方值得付錢,你又不必買什麼
一個商品頁可以對每個打開它的人顯示正確價格,卻對爬蟲什麼價格都不顯示。差別在 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 就會回傳商品與每個子類的 price、price_min、compare_at_price 與 available。這個檔案是你的參考值:它是 Shopify 為這個商品持有的資料,與佈景主題或 app 畫出來的東西無關。
兩個檢查
- 讀網頁原始碼。 用未登入的視窗開啟商品頁。用瀏覽器的檢視原始碼指令,不要用檢查工具;檢查工具顯示的是腳本執行後的頁面,原始碼才是伺服器送出的內容。搜尋價格數字與
Offer這個字。如果兩者都出現且數字正確,價格不靠 JavaScript 也讀得到。 - 讀商品 JSON。 把商品網址結尾改成
.js後開啟。讀price與available。這是 Shopify 持有的值。
如果原始碼與 JSON 一致,停在這裡。如果原始碼只有佔位元素(例如一個空的 span)、幣別與 JSON 不同,或根本沒有價格,就是腳本在寫價格,你需要指出它是誰。
找出是什麼在寫價格
開啟網路商店、佈景主題,對正在使用的主題選編輯程式碼,開啟渲染商品價格的 section 或 snippet。大多數主題會用價格來命名它。讀它是印出 Liquid 價格,還是留了一個容器讓 app 填。主題自己的程式碼會寫出擁有那個容器的 app 或區塊。
如果是無頭前端,佈景主題編輯器不是該去的地方;負責前端的開發者能說出價格與 Offer 標記是在伺服器上渲染,還是之後才抓取。
拿到結果之後怎麼做
把 Liquid 價格留在 HTML 裡,如果 app 必須改寫,讓它之後再改。大多數幣別與定價 app 都可以設定成保留伺服器價格、只在畫面上替換,這樣爬蟲拿到基準價格,人拿到轉換後的價格。登入前隱藏價格的批發 app 是商業決定,隱藏的價格本來就對爬蟲隱藏;請確認打算放在開放網頁上的商品不在那條規則之內。
可觀察結果是一個商品頁,它的原始 HTML 帶著與商品 JSON 相同的價格與庫存狀態。這證明不跑 JavaScript 的爬蟲讀得到它們。它無法證明有任何爬蟲抓取了頁面、頁面被索引,或助理引用了這個商品。