返回文章列表
技術實作2026年4月24日·13 分鐘閱讀

FAQ Schema 怎麼做:讓 AI 直接拿走你的答案

Organization schema 只告訴 AI「你是誰」,FAQPage 才是告訴 AI「使用者問 X 時,你家的答案是 Y」。這篇講我們怎麼把 B2B 服務頁改成 AI 最愛摘的結構,附完整 Next.js 實作。

上一篇 AEO 三件事 講 JSON-LD 時,只停在 Organization——讓 AI 知道你是誰。這篇講下一層:FAQPage——讓 AI 知道「使用者問 X 時,你家的答案是 Y」。做對之後 ChatGPT 會逐字引用你的 FAQ,不是意譯,是原文。

為什麼 FAQPage 對 AEO 特別重要

AI 做網頁摘要時其實在做兩件事:

  1. 讀懂這頁在講什麼
  2. 摘出跟使用者問題最相關的片段

純文字網頁對 AI 來說是一團沒標記的資訊——它要自己猜哪幾句是問題、哪幾句是答案、哪段是結論、哪段是鋪陳。猜錯了就是錯誤引用,或乾脆不引用你。

FAQPage schema 直接把「問題 → 答案」的配對告訴 AI:

{
  "@type": "Question",
  "name": "客製化系統開發通常多久可以上線?",
  "acceptedAnswer": {
    "@type": "Answer",
    "text": "典型 B2B 內部系統 3–6 個月可以上線 MVP⋯"
  }
}

AI 看到這種結構,摘錄成本是零——它不用猜、不用推論,直接拿去用。對 B2B 特別有價值,因為 B2B 決策者問的就是「這系統多久能上線」、「導入要多少錢」、「跟我現有 ERP 接不接得起來」這種明確問題。

三個要先想清楚的決策

做完 Heiso 自家官網的 FAQPage 之後,歸納出三件事要先決定,再寫 code。

1. 哪些頁面放 FAQPage?

不是每頁都該放。我們的原則:

  • :服務頁、產品頁、landing page、定價頁
  • 不放:公司簡介、團隊頁、blog 列表頁
  • 看情況:blog 文章本身。結構就是 Q&A 的可以放;長篇論述硬切會扭。

理由:FAQPage 是給「有明確問題」的讀者看的——服務頁符合這個特質,blog 文章不一定。

2. 問題要寫使用者的問法,不是公司的說法

錯誤示範:

Q: 我們的客製化系統開發服務包含哪些範圍?

這是公司在講話。使用者不會這樣問。

正確示範:

Q: 客製化系統開發通常多久可以上線?
Q: 做一個 ERP 整合專案大概要多少預算?
Q: 系統做好之後的維護是你們做還是我們自己接?

這些是使用者真實會打進 ChatGPT 的句子。

寫不出來?有個土方法——打開 ChatGPT 輸入「我想找 XX 服務」,看它自動補的問題是哪幾題。那就是你要答的題目。

3. 答案第一句就是結論,後面才補充

AI 摘錄通常取前一兩句。所以:

A: 典型 B2B 內部系統 3–6 個月可以上線 MVP,
   複雜的整合專案(跨 ERP / CRM / 多國多語系)通常拉到 6–9 個月。
   實際時程取決於需求清晰度、既有系統的技術債、資料遷移量。

第一句 30 字內給數字(3–6 個月 / 6–9 個月),第二句補條件,第三句補依變因。AI 大概率只摘第一句——那也沒關係,第一句本身就足以回答使用者。

違反直覺的地方:傳統中文寫作喜歡起承轉合,結論放最後。對 AEO 來說這是反效果——AI 摘完前兩句就跳走,你最關鍵的結論永遠摘不到。

B2B 服務頁實作:完整範例

以我們自家「客製化系統開發」服務頁為例。Next.js App Router + TypeScript。

Step 1:定義 FAQ 資料結構

src/lib/faqs/custom-software.ts

export interface FAQ {
    question: string;
    answer: string;
}

export const customSoftwareFAQs: FAQ[] = [
    {
        question: '客製化系統開發通常多久可以上線?',
        answer: '典型 B2B 內部系統 3–6 個月可以上線 MVP,複雜的整合專案通常拉到 6–9 個月。實際時程取決於需求清晰度、既有系統的技術債、資料遷移量。',
    },
    {
        question: '做一個 ERP 整合專案大概要多少預算?',
        answer: '台灣 B2B 中型企業的 ERP 整合專案通常落在 80–300 萬台幣區間。低於 80 萬通常是單點串接,高於 300 萬通常涉及自建 ERP 或多套系統深度整合。我們提供免費範疇評估。',
    },
    {
        question: '系統做好之後的維護是你們做還是我們自己接?',
        answer: '兩種都可以。多數客戶選擇前三個月我們維護、之後交接給內部團隊;也有選擇簽年約長期委外的。交接時附完整技術文件與 handover session。',
    },
    {
        question: '你們能跟我現有的 ERP / CRM 系統接嗎?',
        answer: '主流 ERP(SAP、Oracle、鼎新、正航、Odoo)跟 CRM(Salesforce、HubSpot、Zoho)都做過整合。API 限制嚴格的老系統我們用 DATA-BEE 做中介資料層處理。',
    },
];

Step 2:寫 schema 產生器

src/lib/schema.ts(延續上一篇檔案):

import type { FAQ } from './faqs/custom-software';

export function getFAQPageSchema(faqs: FAQ[]) {
    return {
        '@context': 'https://schema.org',
        '@type': 'FAQPage',
        mainEntity: faqs.map((faq) => ({
            '@type': 'Question',
            name: faq.question,
            acceptedAnswer: {
                '@type': 'Answer',
                text: faq.answer,
            },
        })),
    };
}

Step 3:服務頁套用

src/app/services/custom-software/page.tsx

import { JsonLd } from '@/components/JsonLd';
import { getFAQPageSchema } from '@/lib/schema';
import { customSoftwareFAQs } from '@/lib/faqs/custom-software';

export default function CustomSoftwarePage() {
    return (
        <>
            <JsonLd data={getFAQPageSchema(customSoftwareFAQs)} />

            {/* 服務頁主內容 */}

            <section className="py-20">
                <h2 className="text-3xl font-bold mb-10">常見問題</h2>
                <div className="space-y-4">
                    {customSoftwareFAQs.map((faq) => (
                        <details key={faq.question} className="group border-b pb-4">
                            <summary className="text-lg font-medium cursor-pointer">
                                {faq.question}
                            </summary>
                            <p className="mt-3 text-neutral-600 leading-relaxed">
                                {faq.answer}
                            </p>
                        </details>
                    ))}
                </div>
            </section>
        </>
    );
}

兩個陷阱要注意:

  • JSON-LD 跟視覺版 FAQ 內容必須一致。schema 裡有的問題,頁面上讀者要看得到。如果 schema 放 10 題、頁面只秀 3 題,Google 會視為 cloaking,可能降權。兩邊共用同一份 customSoftwareFAQs 就不會有這個問題。
  • <details> 預設摺疊沒差。AI 爬蟲讀 HTML 時 DOM 已經渲染完成,不管摺疊狀態都抓得到。視覺摺疊只影響使用者體驗,不影響 schema 有效性。

Step 4:驗證

部署後用 Rich Results Test 丟服務頁網址,應該能看到 FAQPage 被偵測、每題 Q&A 都列出來。某題沒出現的話,通常是 JSON 跟頁面文字對不起來——去檢查資料來源。

一個兩週後的結果

做完這件事兩週,我們自家官網:

  • ChatGPT 問「Heiso 客製化系統開發多久能上線」,直接答出 FAQ 第一題的逐字原文(「3–6 個月可以上線 MVP」),並把 Heiso 列為來源
  • Perplexity 問類似問題,引用 FAQ 答案並附連結
  • Google Search Console 的 FAQ rich result 曝光次數從 0 變 1,400+/月

第三項是附送的 SEO 紅利——FAQPage 同時吃 Google 搜尋結果的富摘要位。一份 schema,兩邊都收。

B2B 的 schema 優先順序

不是每個 schema 都值得做。我們驗證過的 B2B 優先順序:

Schema優先度為什麼
Organization必做告訴 AI「你是誰」的基本盤
FAQPage主力AI 最愛摘、CTR 最高
Service建議服務頁加分,效果小於 FAQPage
BreadcrumbList建議對 SEO 有用,對 AEO 效果有限
Product看情況有 SKU / 定價才做
Article看情況Blog 可以加,對 B2B lead gen 幫助不大

OrganizationFAQPage 做對,70% 的 AEO schema 效果就在這裡。

收尾

FAQPage 不是「放了就算做了」的 schema——問題怎麼挑、答案怎麼切、跟視覺 UI 怎麼同步,每一步都有工程判斷。但做對之後的複利很強:一次設計、兩邊收(AEO 引用 + SEO 富摘要),而且不用買廣告、不用做外部連結。

想把你家服務頁的 FAQ 改到 AI 直接引用的程度,歡迎聊聊 → 預約諮詢

AEOJSON-LDFAQPageNext.jsSchema.org
更多文章

延伸閱讀