Implementing GEO Schema: Writing and Validating DefinedTerm, FAQPage, and HowTo Markup
Your documentation may be technically stronger than competitors', but AI cites theirs instead. Usually the issue isn't content quality, it's structure. This guide provides copy-and-paste templates for DefinedTerm, FAQPage, and HowTo markup in JSON-LD, plus verification steps to turn your answers into self-contained, quotable passages that generative engines can extract and cite.
By
Tenten AI FDM 團隊
前線部署行銷
Published
March 29, 2026
Read time
8 分鐘

A client with enterprise software showed me their backend documentation last month. The product pages were thorough, clear definitions, complete workflows, nothing a reader would fault. But searching for the same question types in Perplexity or ChatGPT returned citations to a competitor's article with less depth.
The difference wasn't content quality. Their pages appeared to AI as continuous text without structural boundaries. The model had to guess which section held the definition and which described the process. The competitor had used structured markup to slice their answer into labeled pieces, removing all friction from extraction.
That's what GEO schema does: JSON-LD tells the model 'This passage is directly quotable and belongs to this entity.' This guide covers DefinedTerm, FAQPage, and HowTo with working templates and verification methods.
Why these markup types matter most for AI extraction
Generative engines favor self-contained, attributed content fragments, passages that stand alone and trace back to a source. Each schema type corresponds to a high-frequency question pattern.
| Markup Type | Corresponds to | What AI Extracts |
|---|---|---|
| DefinedTerm | "What is X?" | A single, directly quotable sentence |
| FAQPage | "Can X...? How do you...?" | A complete question-and-answer pair |
| HowTo | "How do I do X?" | An ordered, actionable step list |
The power isn't just having markup, it's that markup shapes your content into what AI needs: definitions as standalone sentences, Q&A as matched pairs, steps as numbers. The markup is the output; content structure is the root cause.
DefinedTerm: making definitions into quotable sentences
DefinedTerm marks a technical term and its explanation. Use it in glossary sections or where you introduce terminology at the start of articles.
{
"@context": "https://schema.org",
"@type": "DefinedTerm",
"name": "前線部署工程(FDE)",
"description": "一種企業 AI 導入模式:工程師實際進駐客戶現場,將 AI 系統推上生產環境並負責到上線與內部採用,而非只交付 Demo 或原型。",
"inDefinedTermSet": {
"@type": "DefinedTermSet",
"name": "Tenten AI 術語表",
"url": "https://tenten.co/glossary"
}
}
Write the description field without 'it means...' at the start. Put the subject first. Make the sentence work if pulled out on its own. That's required for quotation.
FAQPage: question-and-answer pairs, kept clean
FAQPage tags common questions on a page. Its value is that Question and Answer stay locked as a unit, AI doesn't guess which answer belongs to which question.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "GEO 和傳統 SEO 有什麼不同?",
"acceptedAnswer": {
"@type": "Answer",
"text": "SEO 優化的是在搜尋結果頁的排名;GEO 優化的是被生成式引擎(如 ChatGPT、Perplexity)在答案中引用的機率。兩者可以並存,但 GEO 更看重內容的結構化與可歸屬性。"
}
}, {
"@type": "Question",
"name": "FAQ schema 會不會被 Google 當成濫用?",
"acceptedAnswer": {
"@type": "Answer",
"text": "只要頁面上確實有對應的可見問答內容,且問題是使用者真正會問的,就不算濫用。標記內容必須與頁面可見文字一致,不能只塞在 JSON-LD 裡。"
}
}]
}
Don't put text in the text field that doesn't appear on your page. This gets flagged as inconsistent and breaks the markup entirely. Whatever you markup must match what readers see.
HowTo: step markup for procedures
HowTo tags a process with each step as HowToStep, containing a name and description. AI extracts this as a numbered list, which is what users expect from how-to questions.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "如何驗證你的 JSON-LD 標記",
"step": [{
"@type": "HowToStep",
"name": "貼進測試工具",
"text": "把頁面網址或程式碼貼進 Google 複合式搜尋結果測試工具。"
}, {
"@type": "HowToStep",
"name": "檢查解析結果",
"text": "確認工具正確辨識出標記類型,且沒有紅色錯誤。"
}, {
"@type": "HowToStep",
"name": "比對可見內容",
"text": "逐項核對標記內的文字與頁面上實際顯示的文字是否一致。"
}]
}
Verifying markup before publishing
Untested markup doesn't work. Run this process before going live.
Paste your URL into Google's Rich Results Test and check that it identifies the markup type with no red errors. Run it through Schema.org Validator to catch syntax mistakes, typos in @type, missing fields. Then go through each sentence in the markup and compare it word-for-word to the visible text on the page. The first two steps validate syntax; the third validates accuracy.
Drop your target question directly into Perplexity or ChatGPT and see who gets cited. That's more reliable than any tool for determining whether AI treats your content as quotable material.
Structured markup translates content you've already written into machine-readable form. When working with clients on FDE/GEO, start by reshaping content: definitions as independent sentences, questions paired with answers, steps as numbered items. Markup is the final layer. Follow this sequence and citations happen naturally.

One stuck workflow
is enough to begin
Tell us what the team does today, where it breaks down, and what a better working day should look like.