Schema 結構化資料教學:JSON-LD 入門與驗證
發佈 2026-11-03 · 更新 2026-11-02 · 閱讀約 7 分鐘 · AI 工作術(法芮可有限公司)
這篇 schema 結構化資料教學講清楚幾件事:為什麼選 JSON-LD,Article、FAQ、Product 三種最常用的標記怎麼寫、哪些欄位必填,以及怎麼用複合式搜尋結果測試、Schema Markup Validator 與 Search Console 驗證上線,最後整理常見錯誤。
想學 schema 結構化資料,先記結論:格式一律用 JSON-LD,文章頁掛 Article,商品頁掛 Product,頁面上真的有問答才掛 FAQPage。寫完先用 Google 的複合式搜尋結果測試和 Schema Markup Validator 各跑一次,上線後固定看 Search Console。大多數網站做到這裡就夠了。
結構化資料不會直接把排名推上去,Google 官方也一直這樣講。它有兩個用處。第一,搜尋結果有機會出現星等、價格、庫存這類複合式結果,點擊率會差很多。第二,Google 和各家 AI 搜尋能更準確看懂「這頁在講什麼、誰寫的、賣多少錢」。在 AI 搜尋分走流量的時代,第二點只會越來越重要。
下面直接給三種標記的範本、必填欄位、驗證流程,還有我們自己做內容產線時踩過的坑。
結構化資料是什麼?為什麼一律選 JSON-LD
結構化資料就是用 schema.org 這套共用詞彙,把頁面內容寫成機器讀得懂的格式。同樣是「680」,人一看就知道是價格,爬蟲不一定看得出來。標成 "price": "680"、"priceCurrency": "TWD" 之後,就不會被誤讀了。
寫法有三種,Google 都支援,但官方建議用 JSON-LD:
| 格式 | 寫在哪 | 維護難度 | 建議 |
|---|---|---|---|
| JSON-LD | 獨立一段 script,放 head 或 body 都可以 | 低,和版型分開 | 首選 |
| Microdata | 屬性直接寫在 HTML 標籤裡 | 高,改版型容易弄壞 | 舊站沿用即可 |
| RDFa | 同樣寫在 HTML 屬性裡 | 高 | 不建議新做 |
JSON-LD 最大的好處是和畫面完全分開。前端改版不會動到標記,後端也能直接從資料庫欄位產生。但有一條鐵律:標記的內容必須是頁面上看得到的。頁面上沒有任何評價卻標了 4.9 顆星,輕則不顯示,重則被 Google 人工處置。
Article 怎麼掛:部落格、知識庫的基本款

Article 沒有硬性必填欄位,但下面這幾個建議都填:
- headline:標題,和頁面上的 h1 一致
- image:封面圖,用絕對網址
- datePublished/dateModified:用 ISO 8601 格式並帶時區,台灣是 +08:00
- author:作者,type 用 Person 或 Organization,附上 url 指向作者介紹頁
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Schema 結構化資料教學",
"image": ["https://example.com/cover.jpg"],
"datePublished": "2026-11-03T09:00:00+08:00",
"dateModified": "2026-11-03T09:00:00+08:00",
"author": [{
"@type": "Person",
"name": "王小明",
"url": "https://example.com/about"
}]
}
</script>新聞網站可以改用 NewsArticle,一般部落格用 BlogPosting 或 Article 都行,差別不大,不用在這裡花時間。
dateModified 是最多人亂填的欄位。有些系統每次重新部署,就把所有文章的日期改成當天,等於告訴 Google 每篇都剛改過,久了這個訊號就沒有參考價值。只有內容真的改了才更新。author 的 url 則和 E-E-A-T 有關,讓作者頁和文章互相連得起來,比只寫一個名字有用。
再進階一點,可以用 @graph 把 Organization、WebSite、Article 放在同一段,再用 @id 互相引用。整站「誰寫的、屬於哪個品牌」的關係會更清楚,對 GEO 優化也有幫助。
FAQPage 怎麼掛:先搞清楚現在還能換到什麼
先講實話:Google 從 2023 年起,只對知名的政府和醫療網站顯示 FAQ 複合式結果。一般商業網站就算掛了,搜尋結果裡也幾乎看不到展開的問答。網路上還在說「掛 FAQ 就能多佔兩行版面」的教學,已經過時了。
那還要不要掛?我們的做法是:內容裡本來就有問答就掛,不要為了掛而硬寫問答。FAQPage 把問題和答案的對應寫得很明確,AI 搜尋擷取答案時比較好抓,而且幾乎不花成本。我們這個知識庫每篇文章最後的常見問題,都用固定格式寫,再由系統自動轉成 FAQPage,不用另外手動維護一份 JSON。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "JSON-LD 要放在 head 還是 body?",
"acceptedAnswer": {
"@type": "Answer",
"text": "兩邊都可以,Google 都讀得到。"
}
}]
}
</script>掛 FAQPage 的四條規矩:
- 問題和答案要和頁面上的文字一致,不能標記隱藏起來的內容
- 一個問題有多位使用者各自回答的頁面(論壇、問答社群),要用 QAPage,不是 FAQPage
- 一頁放一段 FAQPage 就好,不要在好幾個區塊重複標記
- 純廣告的問答(「為什麼選我們最划算?」)不建議標
Product 怎麼掛:電商最該先做的一種

如果你做電商,Product 的效益最高,星等、價格、庫存可以直接出現在搜尋結果上。Google 把商品結果分成兩種情況:只有評測內容的頁面(商品摘要),以及可以直接下單的頁面(商家資訊)。可以下單的頁面要求比較嚴,欄位細節以 Google Search Central 官方文件為準。
| 欄位 | 用途 | 重要程度 |
|---|---|---|
| name | 商品名稱 | 必填 |
| offers(price、priceCurrency、availability) | 價格、幣別、庫存 | 可下單頁面必備 |
| image | 商品圖 | 強烈建議 |
| aggregateRating/review | 星等與評價 | 有真實評價才放 |
| sku、gtin、brand | 辨識是哪一件商品 | 建議,有國際條碼就填 gtin |
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "手沖咖啡濾杯 02",
"image": ["https://example.com/dripper.jpg"],
"sku": "DRP-02",
"brand": { "@type": "Brand", "name": "範例咖啡" },
"offers": {
"@type": "Offer",
"url": "https://example.com/p/drp-02",
"price": "680",
"priceCurrency": "TWD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}
}
</script>最常見的三個坑:
- 價格和頁面對不上:頁面顯示特價 590,標記還是原價 680。或是幣別寫成 NTD,正確的 ISO 4217 代碼是 TWD。
- 同一頁有兩份標記:不少開店平台和佈景主題(例如 Shopify 的許多主題)已經內建 Product 標記,你再裝外掛或自己貼一段,頁面上就有兩組互相衝突的資料。動手前先用驗證工具看現況。
- 評價造假或搬運:從別的平台複製評價,或把星等寫死在模板裡,都違反規範。沒有評價,就不要放 aggregateRating。
驗證工具與上線流程:三個工具各管一段

| 工具 | 檢查什麼 | 什麼時候用 |
|---|---|---|
| 複合式搜尋結果測試(Rich Results Test) | 這頁能不能拿到 Google 支援的複合式結果,列出錯誤與警告 | 上線前,每種模板測一次 |
| Schema Markup Validator(validator.schema.org) | 語法和 schema.org 詞彙對不對,不限 Google 支援的類型 | 用到 Google 不支援的類型,或要查欄位名稱有沒有拼錯時 |
| Google Search Console | 已檢索頁面的結構化資料狀態,以及錯誤數量的變化 | 上線後每週看一次 |
建議的上線流程:
- 先決定每種頁面模板(文章、商品、分類)要掛哪些類型,列成一張表
- 從資料庫欄位自動產生 JSON-LD,不要每頁手動貼
- 每個模板挑一頁,用複合式搜尋結果測試跑過,錯誤一定要修,警告視情況處理
- 上線後,在 Search Console 用網址檢查功能,對幾個重要頁面要求重新建立索引
- 之後固定看 Search Console 報表,錯誤數突然增加,通常是某次改版弄壞了模板
第五步最常被漏掉。結構化資料最常見的壞法,不是一開始就寫錯,而是三個月後改版時壞掉卻沒人發現。頁面看起來一切正常,所以沒人察覺。我們經營工具站也遇過一樣的問題:標記跟著模板走,模板一改就要重新驗證。所以我們把這一步寫進上線檢查清單,不靠人記。
常見問題
Q:結構化資料會直接提升 Google 排名嗎?
不會,Google 官方明確說過結構化資料不是排名因素。它的效果是間接的:拿到星等、價格這類複合式結果後點擊率會提高,搜尋引擎也更容易看懂你的頁面。把它當成讓機器讀懂網站的基本功,而不是衝排名的捷徑。
Q:叫 ChatGPT 幫我寫 JSON-LD 可以嗎?
可以,打草稿很快,但一定要丟進驗證工具跑過。AI 常見的錯是編出不存在的屬性名稱、日期少了時區,或把頁面上沒有的評分也寫進去。最穩的做法是讓 AI 寫模板,數值由系統從資料庫帶入。如果你在意 AI 搜尋怎麼讀你的網站,也可以一起看 llms.txt 實戰。
Q:JSON-LD 要放在 head 還是 body?用 JavaScript 動態插入可以嗎?
head 或 body 都可以,Google 都讀得到。用 JavaScript 動態插入 Google 也能處理,但要多經過一道渲染,而且其他搜尋引擎和不少 AI 爬蟲不一定會執行 JavaScript。能在伺服器端直接輸出,就盡量這樣做。
Q:掛好之後多久會出現在搜尋結果?
要等 Google 重新檢索那一頁,通常要幾天到幾週,可以用 Search Console 的網址檢查加快。另外,標記正確不代表一定會顯示,Google 會依搜尋字詞和網站品質決定要不要給複合式結果。
Q:一頁可以同時掛好幾種類型嗎?
可以。商品頁同時掛 Product 和 BreadcrumbList,文章頁同時掛 Article 和 FAQPage,都很常見。重點是每一種描述的都是頁面上真的有的內容,而且同一種類型不要出現兩份互相矛盾的資料。