免費工具 · PRODUCT SCHEMA 產生器

商品結構化資料產生器(Product schema)

一次描述一件商品,就拿到 Product+Offer 的 JSON-LD,Google 商家資訊的規則邊打邊檢查——價格要大於零、要有幣別、價格期限不能已經過去——另外附上一段值完全相同的可見商品區塊。新臺幣寫成 1290 和 TWD,不是 NT$1,290。免費、免註冊,全部在你的瀏覽器裡跑完。

免費即時免註冊不上傳任何資料

其他語言:English繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)

Product + Offer · 產生器
商品本身

必要屬性。Google 建議同一張照片給 1x1、4x3、16x9 三種比例,寬乘高至少 5 萬像素。

只填一個品牌名稱。

只填數字,8、12、13 或 14 碼,不支援網址形式。向 GS1 Taiwan 申請的條碼是 471 開頭;範例的 952 是 GS1 保留給示範用的前綴。

販售條件(Offer)

只寫數字,要小數就用小數點。不要 NT$、不要「元」、不要千分位逗號——這是 schema.org 的規則,不是個人偏好。台灣的定價依法內含營業稅,填的就是那個含稅價。

日期一旦過去,Google 說這筆商家資訊可能完全不會顯示。

運送與退貨(選填)

填你在 Organization 下標記的那份運送政策的網址。Google 偏好這樣引用,而不是每個 Offer 各複製一份。

網購有消保法第 19 條的七天解除權,標準政策的 merchantReturnDays 至少是 7。

累計評分(選填)

只能用你自己的網站向買家收集的評分。蝦皮或 momo 賣場上的星等不能搬過來。

留空的話,Google 會當成 5 分制。

錯誤與警告
    JSON-LD — 貼進商品頁
    
                
    可見 HTML — 同一組值,放在頁面上
    
                

    全部在這個頁面裡執行,商品名稱、價格、圖片網址都不會離開你的瀏覽器。可見區塊裡的每個值都和 JSON-LD 逐字相同;欄位標題可以配合版面改寫,值不要動。

    資料來源:Google 搜尋中心〈商家資訊 (Product、Offer) 結構化資料〉與〈商家退貨政策 (MerchantReturnPolicy) 結構化資料〉;Google Merchant Center 說明〈價格 [price]〉(台灣須提交含稅價,以及會員價、優惠券價的規定)與〈支援的語言與貨幣〉(台灣、新臺幣 TWD、購物分頁);全國法規資料庫的加值型及非加值型營業稅法第 32 條、消費者保護法第 19 條與通訊交易解除權合理例外情事適用準則;GS1 Taiwan 前置碼國家代碼一覽表(471 與示範用的 952)。SHOPLINE 自動導入結構化資料一事出自其說明中心〈商品頁面|結構化資料〉。以上皆於 2026 年 9 月 26 日查閱。

    商品結構化資料怎麼產生

    Product 三個必要屬性、Offer 兩個,再加上幾條決定商家資訊會不會出現的規則。產生器在你打字時逐條檢查,並用同一組值寫出可見區塊。

    1. 填商品名稱,加上圖片。 name 和 image 是商家資訊的必要屬性。同一張照片的多種比例勝過只有一張,而且每個網址都必須可供檢索、可建立索引。
    2. 填販售條件。 一個大於零的價格,加上三個字母的幣別代碼:新臺幣就是 1290 和 TWD。這兩個值,讓一個 Product 變成 Google 可以列為「販售中」的商品。
    3. 設定庫存狀態和價格期限。 availability 和 itemCondition 會輸出成 Google 支援的簡稱(InStock、NewCondition)。檔期結束的日期寧可留空,也不要讓它停在昨天。
    4. 引用政策,不要複製政策。 運送與退貨在 Organization 下標記一次——退貨天數至少是消保法的七天——這裡只用 @id 指過去。Google 建議全域政策優先於每個 Offer 各放一份。
    5. 兩份輸出都貼上。 JSON-LD 放進商品頁;可見區塊帶著和標記一模一樣的價格、庫存狀態與條碼——這本來就是標記必須滿足的規則。

    商品上要有三個屬性,Offer 上要有兩個

    商品結構化資料產生器會把商品資料轉成 Product 與 Offer 的 JSON-LD——也就是 Google 用來讀取價格、庫存狀態與商品識別碼的結構化資料。Google 的繁中文件把「可以直接下單的商品頁」叫做商家資訊,把只介紹、不販售的頁面叫做產品摘要。這個產生器做的是前者,而它的必要屬性其實很短:

    層級必要屬性少了會怎樣
    Productname、image、offers沒有商家資訊。offers 必須是 Offer——AggregateOffer 只有產品摘要接受,因為商家資訊的前提是你就是賣方。
    Offerprice(或 priceSpecification.price)、priceCurrency沒有東西可以列。給了 price 就必須有 priceCurrency,而商家資訊另外要求價格大於零。

    其餘的——brand、sku、gtin、description、availability、itemCondition、priceValidUntil、aggregateRating——都是建議屬性。建議不等於裝飾:商品條碼是其他網站比對「這是同一件商品」的依據。台灣廠商向 GS1 Taiwan 申請的 GTIN 以 471 開頭;GS1 Taiwan 自己也提醒,這個前綴代表的是廠商登記在哪裡,不代表商品在哪裡製造。至於一個不把十四個欄位填滿就不肯輸出的產生器,它執行的是自己的表單,不是 Google 的規則。

    新臺幣價格:NT$1,290 不是 price

    價格,是商品標記常常「驗證通過、卻始終沒有出現」的地方。台灣商品頁上習慣的幾種寫法,沒有一種能原封不動放進 price:

    頁面上顯示pricepriceCurrency
    NT$1,2901290TWD
    1,290 元1290TWD
    $380380TWD
    • 寫數字,不寫呈現方式。schema.org 的使用指南要小數點用「.」、不要用逗號分千位,幣別放在 priceCurrency,而不是在數字前面塞一個符號。新臺幣的代碼是 TWD,Merchant Center 的幣別表也這樣列;NT$、NTD、「元」都不是。產生器會標出 NT$ 和「元」,但 NTD 剛好是三個大寫字母,形狀檢查攔不住它——這一個要靠你自己。
    • 含稅價就是那個價。營業稅法第 32 條規定,營業人對應稅貨物或勞務的定價「應內含營業稅」;Merchant Center 也把台灣列在價格必須包含加值稅的國家裡,並要求到達網頁顯示的價格和資料一致。所以 price 填的,就是消費者在頁面上看到、結帳時付的那個數字。
    • 零元不是價格。和產品摘要不同,商家資訊要求價格大於零。「價格請洽客服」用 0 佔位,這筆 Offer 就失去資格。
    • 過期的日期比沒有日期更糟。Google 寫得很直接:priceValidUntil 指定為過去日期,你的商家資訊可能無法顯示。檔期結束後沒人回頭改的「限時優惠」標記,就是典型的標記腐壞。產生器拿它和今天比,過期就當成錯誤,不只是提醒。

    特價不要蓋掉原價:現行的特價留在 price,原價另外寫成 priceType 為 StrikethroughPrice 的 UnitPriceSpecification——Google 明講不要用 priceType 標示現行價格。會員價與「結帳再折」也有規矩:Merchant Center 不收放在 price 裡的會員價(結構化資料要用 validForMemberTier 另外標),不接受「在購物車查看價格」,優惠券價只有在所有人都拿得到、頁面上也看得到時,才能當成 price。

    賣在蝦皮、momo,還是自己的官網?

    商家資訊有一個很容易被略過的前提。Google 的原文是:只有購物者可購買產品的網頁,才可提供商家資訊體驗,不適用於提供其他產品銷售網站連結的網頁。如果你的品牌官網只放商品介紹,「立即購買」按鈕連到蝦皮或 momo 的賣場,那一頁就不是商家資訊頁——它該用的是產品摘要,寫再完整的 Offer 也不會讓它變成可以列為販售中的商品。

    • 賣場的評價不是你的。評論摘錄規範寫著「請勿匯總其他網站的評論或評分」。賣場上的 4.9 顆星屬於那個賣場頁面;抄到官網再標成 aggregateRating,就是違規,數字是真的也一樣。
    • 開店平台可能已經替你輸出一份。以 SHOPLINE 為例,它的說明中心寫著:方案包含「網路開店」的商店會自動導入結構化資料,商品頁帶出名稱、描述、價格與供貨狀況;豪華、O2O、企業旗艦計畫則要到擴充功能商店安裝「SEO 結構化資料」。貼上這裡的 JSON-LD 之前,先用複合式搜尋結果測試看頁面上是不是已經有一個 Product,避免同一頁出現兩份價格對不起來的標記。
    • 免費產品資訊在台灣可以用。Merchant Center 的支援清單把台灣列為使用者可以看到購物分頁的國家,幣別是新臺幣(TWD)。Google 也說,網頁結構化資料和 Merchant Center 動態饋給同時提供時,有些體驗會合併兩邊的資料——所以兩邊的價格更要一致。

    如果你也用港幣賣到香港:Google 要求每一種貨幣使用不同的網址,而 Merchant Center 明文禁止依使用者所在位置改變到達網頁上的價格。同一個網址用 IP 切換幣別,兩條規則一起踩到。

    七天鑑賞期與退貨政策:標在 Organization,用 @id 指過來

    運送與退貨常被講成必填。我們做表單前先查了原文:shippingDetails 和 hasMerchantReturnPolicy 都列在 Offer 的建議屬性,而且 Google 說得更進一步——建議改在 Organization 標記下提供全域的運送與退貨政策;只有部分商品需要覆寫全域政策,或你根本沒有標準政策時,才在 Offer 底下使用。從 Offer 引用另一頁上的全域政策,只要 @id。這個表單的兩個欄位產生的就是這個形狀。

    台灣網購的退貨政策有一條法定下限。消費者保護法第 19 條:通訊交易的消費者,得於收受商品後七日內,以退回商品或書面通知方式解除契約,無須說明理由及負擔任何費用或對價。Google 的 merchantReturnDays 正好是「從送達日期起算」的天數,所以 Organization 上那份標準政策至少長這樣:

    "hasMerchantReturnPolicy": {
            "@type": "MerchantReturnPolicy",
            "@id": "https://example.com/returns#policy",
            "applicableCountry": "TW",
            "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
            "merchantReturnDays": 7
          }

    例外也要照實標。行政院的〈通訊交易解除權合理例外情事適用準則〉列了易腐敗或保存期限較短的商品、依消費者要求客製化的給付、經拆封的影音商品或電腦軟體、已拆封的個人衛生用品等情形——前提是企業經營者有事先告知。這類商品在 Offer 上用另一個 @id,指向一份 MerchantReturnNotPermitted 的政策,不要讓它默默繼承七天。

    運費同樣放在 Organization。要知道的一個限制:Google 搜尋的 DefinedRegion 若用 addressRegion 指定區域,目前只支援美國、澳洲和日本——本島與離島的不同運費,沒辦法用縣市代碼表達。評分的完整規則,包括哪些評價不能標,在 評論摘錄結構化資料產生器;FAQ 區塊則交給 FAQ schema 產生器。

    常見問題

    什麼是商品結構化資料產生器?

    商品結構化資料產生器會把商品資料轉成 Product 與 Offer 的 JSON-LD——也就是 Google 用來讀取價格、庫存狀態與商品識別碼的結構化資料。這個產生器在你輸入時檢查商家資訊的規則,並用同一組值寫出可見的商品區塊。

    Product 結構化資料一定要填哪些欄位?

    商品上是 name、image、offers;Offer 上是 price 和 priceCurrency,而且商家資訊體驗要求價格大於零。offers 必須是 Offer 而不是 AggregateOffer,因為商家資訊的前提是你就是賣方。其餘欄位都是建議屬性。

    價格要寫 NT$1,290 還是 1290?

    寫 1290,幣別另外寫 TWD。schema.org 的使用指南要求 price 是單純的數字、用小數點表示小數、不用千分位逗號,幣別放在 priceCurrency。台灣的定價依營業稅法應內含營業稅,所以填的就是頁面上那個含稅價。

    官網的購買按鈕連到蝦皮賣場,還能用商家資訊嗎?

    不能。Google 規定只有購物者可以在該網頁購買產品,才可提供商家資訊體驗,不適用於提供其他產品銷售網站連結的網頁。這種介紹頁該用產品摘要的標記。賣場上的評價也不能搬到官網標記,Google 禁止匯總其他網站的評論或評分。

    標記驗證都通過了,為什麼商品還是沒出現?

    一個常見的原因是 priceValidUntil 已經過期,Google 明說這樣商家資訊可能無法顯示。價格為零、少了 priceCurrency,或圖片網址無法檢索,也會讓 JSON-LD 在技術上有效、實際上卻不出現。

    運送和退貨政策一定要寫在每個商品頁嗎?

    不用。shippingDetails 和 hasMerchantReturnPolicy 都是 Offer 的建議屬性,Google 建議改在 Organization 標記下提供全域政策,再從每個 Offer 用 @id 引用。台灣網購依消保法第 19 條有七天解除權,標準退貨政策的 merchantReturnDays 至少是 7。

    特價和會員價要怎麼標?

    現行的特價留在 price,原價另外寫成 priceType 為 StrikethroughPrice 的 UnitPriceSpecification,不要用 priceType 標示現行價格。會員價不能直接放進 price:Merchant Center 要求用會員方案屬性提交,結構化資料則用 validForMemberTier 另外標示。

    clize seo check — 檢查自己的網域免費

    上萬個商品頁,Google 實際收錄了哪幾頁?

    檢查自己的網域不用錢:每一頁當下的 HTTP 狀態與是否已被 Google 編入索引、和上一個週期相比的曝光與排名,以及依來源拆開的流量(AI 引擎單獨計算)。在你的 agent 裡一行指令就跑完。

    $ npm i -g @clize/clize && clize install
    $ clize seo check --domain yourshop.com.tw
    [ Clize 的 Agent SEO → ]