The 4 schema categories that actually drive AI citations in 2026 Entity Content Product / Review Action / Process "Who / what is this" "This is an article / content" "What's it worth / how good" "How to do it / process" • Organization • LocalBusiness • Person • WebSite • Article • BlogPosting • NewsArticle • WebPage • Product • Offer • AggregateRating • Review • HowTo • Recipe • FAQPage • Course Must-do (any site) Must-do for content sites Must-do for e-commerce Must-do for tutorial content

Why this article is necessary: the 90/10 rule of schema.org

The Schema.org vocabulary has 800+ types. But in practice:

Below we break down the 4 categories of schema that actually work, the logic for choosing a type, nested structures, and 5 real misuse cases I’ve seen.


Category 1: Entity schemas — a must for any website

These answer “who / what is behind this website.”

Organization (company / organization)

Use on: homepage, about-us page

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "您的公司名稱",
  "alternateName": "Your Company",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "foundingDate": "2018-03-15",
  "description": "B2B SaaS demand generation 行銷顧問",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "信義路五段 7 號",
    "addressLocality": "台北市",
    "postalCode": "110",
    "addressCountry": "TW"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+886-2-1234-5678",
    "contactType": "customer service",
    "email": "[email protected]"
  },
  "sameAs": [
    "https://www.linkedin.com/company/example",
    "https://twitter.com/example_tw",
    "https://www.crunchbase.com/organization/example"
  ]
}

Key fields:

LocalBusiness (physical store / local service)

Use on: local services, restaurants, clinics, retail stores, etc.

Extends Organization, adding:

Why it matters: for local search and “X near me” type queries, AI preferentially cites results that have LocalBusiness schema.

Person (personal brand / author)

Use on: personal websites, author pages

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "陳大華",
  "jobTitle": "B2B 行銷顧問",
  "worksFor": {
    "@type": "Organization",
    "name": "您的公司名稱",
    "url": "https://example.com"
  },
  "alumniOf": "國立台灣大學",
  "image": "https://example.com/photo.jpg",
  "url": "https://example.com/about",
  "sameAs": [
    "https://www.linkedin.com/in/daihua-chen",
    "https://github.com/daihua",
    "https://medium.com/@daihua"
  ]
}

See also: Getting started with GEO for personal brands / freelancers.

WebSite

Use on: homepage

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "url": "https://example.com",
  "name": "您的公司名稱",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://example.com/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

Why it matters: SearchAction tells AI how to operate your on-site search. Some AI agents invoke it when handling “find X on this website” type requests.


Category 2: Content schemas — a must for content sites

Article / BlogPosting / NewsArticle — pick one

Their inheritance relationship:

CreativeWork
  └── Article
       ├── BlogPosting       ← for blogs
       ├── NewsArticle       ← for news
       └── ScholarlyArticle  ← for academic work

How to choose:

A complete Article schema

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "10 個 GEO 常見迷思",
  "description": "本文拆 10 個常見 GEO 迷思...",
  "image": "https://example.com/blog/myths-hero.png",
  "author": {
    "@type": "Person",
    "name": "陳大華",
    "url": "https://example.com/author/daihua"
  },
  "publisher": {
    "@type": "Organization",
    "name": "您的公司名稱",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2026-04-30T08:00:00+08:00",
  "dateModified": "2026-04-30T08:00:00+08:00",
  "mainEntityOfPage": "https://example.com/blog/post-1",
  "wordCount": 2400
}

The most commonly overlooked key fields:

WebPage (general pages)

Use on: non-article content pages (product intros, services, pricing, about)

{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "服務介紹 - B2B SaaS demand generation",
  "description": "...",
  "url": "https://example.com/services",
  "isPartOf": {
    "@type": "WebSite",
    "url": "https://example.com"
  },
  "breadcrumb": {
    "@type": "BreadcrumbList",
    "itemListElement": [
      {"@type": "ListItem", "position": 1, "name": "首頁", "item": "https://example.com"},
      {"@type": "ListItem", "position": 2, "name": "服務", "item": "https://example.com/services"}
    ]
  }
}

Category 3: Product / review schemas — a must for e-commerce

The Product + Offer + AggregateRating trio

These three must be done together — doing Product alone, without a price and without ratings, is of limited help for AI product recommendations.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "[產品名] CRM 標準版",
  "image": ["https://example.com/products/crm-1.jpg"],
  "description": "中小企業適用的客戶管理系統,含潛客、商機、自動化。",
  "sku": "CRM-STD-001",
  "brand": {
    "@type": "Brand",
    "name": "您的公司名稱"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/crm-standard",
    "priceCurrency": "TWD",
    "price": "9900",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "您的公司名稱"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "127"
  },
  "review": [
    {
      "@type": "Review",
      "author": {"@type": "Person", "name": "王大明"},
      "datePublished": "2025-12-15",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5"
      },
      "reviewBody": "導入後 6 個月業務循環縮短 25%..."
    }
  ]
}

Why this combination is especially critical

When a user asks “recommend an X tool” or “what Y software is out there,” AI preferentially selects the option that has the Product + Offer + AggregateRating trio — because AI can answer directly:

A plain HTML intro page lacks this structure, so when AI slices it up it can’t produce complete information.


Category 4: Action / process schemas — a must for tutorial content

HowTo (tutorial steps)

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "如何在 30 分鐘內設定 robots.txt 開放 AI 爬蟲",
  "description": "完整步驟引導...",
  "totalTime": "PT30M",
  "supply": [
    {"@type": "HowToSupply", "name": "你的網站 robots.txt 檔案存取權"}
  ],
  "tool": [
    {"@type": "HowToTool", "name": "文字編輯器"}
  ],
  "step": [
    {
      "@type": "HowToStep",
      "name": "找到 robots.txt 位置",
      "text": "進入網站根目錄...",
      "url": "https://example.com/blog/robots#step1"
    },
    {
      "@type": "HowToStep",
      "name": "加入 AI bot 開放規則",
      "text": "貼上以下內容..."
    }
  ]
}

FAQPage

FAQPage was discussed in depth in an earlier article: FAQPage and Q&A structure deep design (VIP).

Key point: every Question in the mainEntity array must contain a complete acceptedAnswer.text — no empty strings.

Course (courses)

Use on: online course platforms, educational institutions

{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "GEO 30 天起步課程",
  "description": "從零開始建立 GEO 月度節奏",
  "provider": {
    "@type": "Organization",
    "name": "您的公司名稱",
    "url": "https://example.com"
  },
  "hasCourseInstance": {
    "@type": "CourseInstance",
    "courseMode": "online",
    "duration": "P30D"
  }
}

5 real misuse cases

Below are real-world traps the industry has actually fallen into (common schema misuse cases compiled by AI).

Misuse 1: adding both Product and Article schema to a product page

Scenario: the client wants to “capture the benefits of both product search and content search at the same time,” and adds both schemas to every product page.

The problem: - The schema types conflict on the same page - AI is unsure whether the page is a “product intro” or an “article review” - Google will simply refuse to show a rich result

The fix: pick one. A product page uses Product; an intro/article page uses Article. One identity per page.

Misuse 2: tagging every page on the entire site as NewsArticle

Scenario: “We’re a content company, everything is news articles” — but in reality, the product intros, service pages, and pricing pages are also tagged NewsArticle.

The problem: - Tagging a service page as NewsArticle is schema misuse (a service page is not news) - AI detects the inconsistency and demotes the entire site - Google may directly issue a manual action penalty

The fix: choose the matching schema by page type — Product for product pages, WebPage for service pages, and NewsArticle only for actual news articles.

Misuse 3: faking AggregateRating numbers

Scenario: a product page adds "ratingValue": "5.0", "reviewCount": "1000" but there aren’t actually 1000 reviews.

The problem: - Users who click through don’t see the corresponding reviews → AI detects the inconsistency - Google has manual actions for “rating spam” - AI’s trust in this site’s schema permanently declines

The fix: the numbers must match the reviews actually displayed on the page. If there are no reviews, don’t add AggregateRating — adding it anyway is a negative signal.

Scenario: sameAs lists a Twitter account from 5 years ago (now deactivated), a LinkedIn company page from before a rename, and a Crunchbase entry that doesn’t exist.

The problem: - When AI aligns across platforms, it follows those links and finds 404s or mismatched content - The overall credibility of your entity signals drops

The fix: check sameAs once a year. Better to list fewer than to list wrong ones.

Misuse 5: the Article schema’s author uses a string instead of a Person object

Scenario:

"author": "陳大華"  ❌ 字串

vs

"author": {                      ✅ 物件
  "@type": "Person",
  "name": "陳大華",
  "url": "https://example.com/author/daihua"
}

The problem: - With the string version, AI cannot map it to the author page on your site - “Same author” identification across articles fails - Your site’s accumulated E-E-A-T gets scattered

The fix: always use a Person object for author + include a url linking back to the author page.


Advanced: nested structures and @id references

As your site accumulates a lot of schema, you’ll run into situations like “the same Person appears in multiple Articles” and “the same Organization appears across multiple pages.” Redefining it in full in every place is inelegant, and AI may treat them as different entities.

Use @id to unify the reference:

In the Person’s main definition (the author page):

{
  "@type": "Person",
  "@id": "https://example.com/author/daihua#person",
  "name": "陳大華",
  ...完整資訊...
}

Reference it in the Article schema:

"author": {
  "@id": "https://example.com/author/daihua#person"
}

The benefits:


Step one: run a schema validator to check your site’s schema health

Two free tools:

Run your homepage + 5 important pages, and check:

👉 The “structured data” dimension of the GeoWeb health check automatically surfaces the most common schema problems.

The sample schemas are skeletons, not paste-ready templates — actual deployment involves: which type combination fits your industry, designing a cross-page @id system, dynamically generating schema in the CMS / backend, integrating with your existing SEO structure, and validating regularly to avoid drift. Most companies choose GEO hosting to get this done correctly in one pass, avoiding the discovery six months later that the schema was written wrong and the entire site’s rich results have stopped working: [email protected]


GEO advanced series. Previous article: «The 5 content traits that LLMs prefer to cite»