技術深入

JSON-LD Schema 完整教學:答案引擎優化(AEO)必學嘅 FAQ / HowTo / LocalBusiness / Service 4 種標記

2026-08-23作者: · 技術總監10 分鐘

直答: JSON-LD 係放喺網頁 <head> 嘅一段結構化資料,等 AI 爬蟲快速確認「呢頁講緊乜、邊間公司、幾錢、點做」。寫法係用 <script type="application/ld+json"> 包住一段 JSON,最實用嘅 4 種係 FAQPage(常見問題)、HowTo(步驟教學)、LocalBusiness(本地商戶)、Service(服務項目)。以下附完整可 copy 嘅範例。

測試環境同日期: 本文範例喺 Node.js 20 + Next.js 16(App Router)測試通過,用 Google Rich Results Test 同 Schema.org Validator 驗證,最後更新 2026-08-23。JSON-LD 語法本身跨框架通用(WordPress、Webflow、純 HTML 一樣可用),但插入方式(server-render vs client inject)會因框架而異,下文會講點揀。

技術文過期快,schema.org vocabulary 同各引擎嘅解讀方式每年都有微調,如果你睇緊呢篇文已經係 2027 年或之後,建議去 aeo.weblnno.info 做一次診斷,睇下你間公司現時嘅 schema 覆蓋率仲啱唔啱用。

Schema 唔係萬能藥,但一定要部署

想知 AI 而家點講你間公司?

輸入網址,1–2 分鐘睇 ChatGPT / Gemini 有冇推薦你 — 唔使登記

睇下 AI 點講你

先講白:業界最嚴謹嘅一個 controlled study(Ahrefs,1,885 個已被 AI 引用嘅頁面)發現,幫已經被引用嘅頁加 schema,對 ChatGPT / AI Mode 嘅引用率提升幾乎係雜訊範圍內(+2.2%、+2.4%),對 Google AI Overviews 仲係統計顯著負(-4.6%)。即係話——如果你間公司已經被 AI 引用緊,加多幾個 schema 唔會令你「引用率翻倍」。

咁點解仲要做?因為呢個 study 量度緊嘅係「已被引用頁」嘅邊際提升。Schema 真正嘅價值喺兩件事:

  1. 幫未被發現嘅頁入 retrieval pool。 AI 爬蟲爬到你網站時,schema 等佢快速判斷「呢頁值唔值得放入索引/候選答案池」,冇 schema 唔代表爬唔到,但揀你嘅機會會低過有結構化提示嘅對手。
  2. 餵 Knowledge Graph 做 entity disambiguation。 Organization/LocalBusiness schema 配合 sameAs 連返 Wikidata、Google Business Profile、LinkedIn,等 Gemini 呢類引擎清楚知道「呢個品牌名對應緊邊個實體」,減少估錯(hallucination)。

結論:schema 照部署,但唔好當佢係主力槓桿去谷 citation 數字,佢嘅角色係「打底」而唔係「翻盤」。

一個常見誤區:靠 JSON-LD 餵答案,但可見 HTML 冇對應內容

呢個係好多香港網站(包括 Webka 自己以前)踩過嘅坑:以為將答案寫喺 JSON-LD 入面,AI 就會讀到,於是可見畫面淨係得個標題,實際答案文字只存在於 <script> block 入面。

問題係:LLM 提取內容嘅主要路徑係可見文字,JSON-LD 會被 tokenize 成純文字一齊處理,但佢嘅角色偏向「routing / 分類」用途,唔係取代可見答案。如果你個 FAQ schema 寫死咗一個價錢,但頁面畫面完全冇顯示呢個數,AI 讀到嘅資訊同用戶睇到嘅唔一致,甚至可能完全唔用嗰段。

鐵律:JSON-LD 入面嘅每一句答案,都要喺可見 HTML 度有一句幾乎一模一樣嘅文字。 Schema 係補充,唔係替代。

一個更技術嘅陷阱:Server-render vs Client-inject

如果你用 React / Next.js / Vue 呢類前端框架,最常見嘅錯誤係用 next/script 或者 JS 動態插入 schema——即係瀏覽器執行 JS 之後先喺 DOM 度出現 <script type="application/ld+json">。

好多 AI 爬蟲(GPTBot、ClaudeBot、PerplexityBot)唔行 JavaScript,佢哋攞到嘅係第一次 request 返嚟嘅 raw HTML。如果你個 schema 係靠 client-side JS 注入,爬蟲攞到嘅原始碼度根本冇呢段 <script>,等於冇部署過。

自查方法(30 秒):

curl -A "GPTBot" https://你嘅domain.com/服務頁 | grep -c "application/ld+json"

如果結果係 0,即係你嘅 schema 用緊 client-inject,爬蟲讀唔到。應該要係 1 或以上(睇你一頁放幾多個 schema block)。

Next.js App Router 正確做法: 喺 Server Component 入面直接 return 一個 <script type="application/ld+json"> tag,唔好用 next/script 或者 useEffect 注入——Server Component 出嘅係 server-render HTML,爬蟲第一次 request 就攞到。

// app/services/[slug]/page.tsx — Server Component,直接 render,唔用 next/script
export default function ServicePage() {
  const schema = {
    "@context": "https://schema.org",
    "@type": "Service",
    name: "AI 搜尋優化診斷",
    provider: { "@type": "Organization", name: "Webka" },
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      {/* 頁面其餘內容 */}
    </>
  );
}

4 種必學 Schema(可直接 copy 嘅範例)

1. FAQPage — 常見問題

用喺任何有 Q&A 段落嘅頁面。要求:頁面畫面上一定要有對應嘅可見 FAQ(H3 問句 + 答案),schema 淨係將呢啲已存在嘅文字結構化,唔係憑空造多幾條。

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "JSON-LD schema 一定要用先可以被 AI 引用?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "唔一定,冇 schema 都可以被引用,但 schema 幫 AI 更快判斷你頁面內容分類,等於加快入索引池嘅速度,尤其對未被發現嘅新頁面幫助較大。"
      }
    },
    {
      "@type": "Question",
      "name": "一個頁面可以放幾多個 schema block?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "冇上限,但要每個 @type 對應返頁面實際存在嘅內容區塊,例如一個服務頁可以同時有 Service + FAQPage + BreadcrumbList 三個 schema block。"
      }
    }
  ]
}

2. HowTo — 步驟教學

用喺任何「點做/教學」類內容,好似呢篇文本身。要求:step 數量要同頁面實際 H2/H3 步驟一致。

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "點樣喺 Next.js 網站部署 JSON-LD Schema",
  "step": [
    {
      "@type": "HowToStep",
      "name": "確認 schema 類型",
      "text": "根據頁面內容性質,揀 FAQPage、HowTo、LocalBusiness 或 Service 其中一種或多種。"
    },
    {
      "@type": "HowToStep",
      "name": "喺 Server Component 度直接 render script tag",
      "text": "唔好用 next/script 或 useEffect 注入,確保 curl 攞到嘅 raw HTML 已含 schema。"
    },
    {
      "@type": "HowToStep",
      "name": "確保可見 HTML 有對應文字",
      "text": "schema 入面嘅每句答案,頁面畫面都要有幾乎一模一樣嘅可見文字。"
    },
    {
      "@type": "HowToStep",
      "name": "用工具驗證",
      "text": "用 Google Rich Results Test 或 Schema.org Validator 檢查語法有冇錯誤。"
    }
  ]
}

3. LocalBusiness — 本地商戶

用喺有實體地址/服務範圍嘅香港中小企。要求:地址、電話一定要同 Google Business Profile 一致——呢個係 Webka 自己踩過嘅坑(live serve 緊已搬走嘅舊地址 schema,等於主動餵 AI 錯資料),改咗地址一定要三個地方同步:GBP、網站可見文字、schema。

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "你間公司名",
  "image": "https://你嘅domain.com/logo.jpg",
  "telephone": "+852-xxxx-xxxx",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "你嘅街道地址",
    "addressLocality": "香港",
    "addressCountry": "HK"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "18:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/你嘅專頁",
    "https://www.linkedin.com/company/你嘅公司"
  ]
}

4. Service — 服務項目

用喺服務型公司(agency、顧問、專業服務)嘅服務頁。可以巢狀 offers 講清楚收費結構,令 AI 引用時連價錢都答得準。

{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "AI 搜尋優化診斷",
  "provider": {
    "@type": "Organization",
    "name": "Webka",
    "url": "https://webka.hk"
  },
  "areaServed": {
    "@type": "AdministrativeArea",
    "name": "香港"
  },
  "offers": {
    "@type": "Offer",
    "priceCurrency": "HKD",
    "url": "https://aeo.weblnno.info"
  }
}

驗證清單:部署完之後點確認真係得

  1. curl -A "GPTBot" 你嘅網址 | grep "application/ld+json" — 確認 raw HTML 有出現 schema,唔係要等 JS 執行先出現。
  2. 貼去 Google Rich Results Test — 檢查語法有冇 error。
  3. 貼去 Schema.org Validator — 交叉驗證。
  4. 人手核對:schema 入面每句答案,喺頁面畫面度搵唔搵到幾乎一模一樣嘅可見文字。
  5. 用 Chrome DevTools「Disable JavaScript」重新載入頁面 — 主要內容(包括 schema 覆蓋嘅答案)唔應該消失。

以上 5 步全部過關,先算真正部署完成。淨係「有加 script tag」唔代表 AI 讀得到。

FAQ

FAQPage schema 一定要對應可見嘅 FAQ 區塊先可以用?

係。Google 明文要求 FAQPage schema 對應頁面上實際可見嘅問答內容,唔可以憑空喺 schema 度加問題但畫面冇顯示。除咗違反 Google 準則,AI 引擎亦會因為「schema 講嘅嘢」同「可見文字」對唔上而降低對呢頁嘅信任度。

加咗 schema 之後,幾耐先見到 AI 引用率有變化?

冇固定時間表,要視乎 AI 爬蟲重新爬取你網站嘅頻率同引擎更新索引嘅週期,一般要幾星期到幾個月先反映到。而且根據 Ahrefs 嘅 controlled study,schema 對已被引用頁嘅邊際提升本身就細,唔應該預期「加完 schema 即刻爆升」——佢嘅作用喺幫未被發現嘅頁入池,唔係即時特效藥。

一個網站要用幾多種 schema 先夠?

冇「夠唔夠」呢個絕對數字,原則係「頁面實際有乜內容就標記乜」:Organization/LocalBusiness 通常 site-wide 一個就夠(放喺全站共用嘅 layout),FAQPage、HowTo、Service、Product 呢類就跟返個別頁面嘅內容性質逐頁加。唔好為咗湊數量勉強加唔啱嘅 schema type。

JSON-LD 同 microdata / RDFa 有咩分別,應該揀邊種?

三種都係 schema.org 認可嘅格式,分別喺於寫法:JSON-LD 係獨立一段 <script> block,同頁面 HTML 結構分離;microdata / RDFa 就要直接喺 HTML tag 度加 attribute(例如 itemprop)。Google 官方推薦 JSON-LD,原因係佢改動同維護都唔使動到頁面 HTML 結構,出錯機率低過另外兩種,本文亦只示範 JSON-LD。

用 WordPress / Webflow 呢類 CMS,冇得直接寫 Server Component,點部署?

本文示範嘅 JSON-LD 語法本身係框架無關,WordPress 可以用支援自訂 <head> code 嘅 plugin,或者喺 theme 嘅 header.php 直接寫死 <script> tag(呢個等於 server-render,因為 PHP 係喺 server 執行完先送 HTML 出嚟);Webflow 可以喺頁面設定嘅「Custom Code」入面加入 head code。核心原則不變:確保呢段 script 出現喺伺服器送出嘅第一次 HTML,唔好靠前端 JS 額外注入。

想知你間公司網站而家有冇部署啱嘅 schema、覆蓋率去到邊? 去 aeo.weblnno.info 輸入網址做一次免費 AI 曝光診斷,即場問五引擎(ChatGPT、Gemini、Claude、DeepSeek、Perplexity),1–2 分鐘睇到你嘅結構化數據缺口喺邊、AI 爬蟲實際讀唔讀到你個站。有問題想問技術細節,可以電郵 hello@webka.hk。

想知 AI 而家點講你間公司?

輸入網址,1–2 分鐘睇 ChatGPT / Gemini 有冇推薦你 — 唔使登記

睇下 AI 點講你
分享這篇文章

AI 識唔識
你嘅品牌?

輸入你嘅網址,1–2 分鐘睇到 ChatGPT 點樣描述你。 如果答案唔理想 — 我們幫你改變。

Mr. Chao • Webka 技術總監
Rm 01, 11/F, Cameron Sino Technology Limited, 73 Chai Wan Kok St, Tsuen Wan, NT