GEO Guide

Schema for AI: JSON-LD that ChatGPT actually uses

12 min readΒ·Updated May 9, 2026

Most schema generators output one type at a time. AI engines extract entities better when types are bundled into a single @graph with @id cross-references. This guide explains how to build the bundle that wins citations.

Quick answer

Schema for AI is JSON-LD structured data optimized for AI search engines. The pattern: bundle Article (or Product, HowTo, Recipe) with Person, Organization, FAQPage, and WebPage with Speakable into a single @graph block, cross-referenced via @id. AI engines extract bundled entities significantly more accurately than isolated schemas.

Why @graph bundling beats single-type schema

Most schema markup tools output one entity per page. You get an Article schema or a Product schema, but rarely a connected graph showing the relationships between content, author, and publisher. This works for traditional Google rich results, but it leaves AI engines guessing about important relationships.

AI engines like ChatGPT, Perplexity, and Gemini are entity-extraction systems at their core. They identify the people, organizations, products, and topics mentioned on a page, then build a relationship map: Article was written by Person, Person works for Organization, Organization publishes WebPage, WebPage marks certain selectors as Speakable. The @graph format with @id cross-references gives them this map directly.

The result: better entity recognition, more accurate authority attribution, and significantly higher citation rates from AI search engines compared to single-type schema. This is the difference between handing AI a paragraph and handing it a structured profile.

The 5-entity AI-ready bundle

  1. 1.Main entity (Article, Product, HowTo, Recipe) β€” what the page is about
  2. 2.Person β€” who wrote it (critical for E-E-A-T)
  3. 3.Organization β€” who published it
  4. 4.WebPage with Speakable β€” which parts AI should quote
  5. 5.FAQPage β€” Q&A pairs in structured form
Underused signal

Speakable: the schema property AI engines love

SpeakableSpecification is a property of WebPage schema that points to specific CSS selectors containing content "appropriate to be read aloud" by voice assistants. Originally designed for Google Assistant News, it has quietly become one of the strongest signals for AI search engines selecting passages to quote.

Why? Because Speakable explicitly tells AI engines: these are the parts most worth quoting. Most pages have nav, footer, sidebar widgets, and ad copy that should not be cited. Speakable filters all of that out at the schema level.

{
  "@type": "WebPage",
  "@id": "https://yoursite.com/post#webpage",
  "url": "https://yoursite.com/post",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      "h1",
      ".summary",
      ".lead",
      "[data-speakable]"
    ]
  }
}

Recommended Speakable selectors:

  • h1The primary headline of the page
  • .summary or .leadYour TL;DR or opening paragraph
  • [data-speakable]Custom attribute you can add to any element AI should quote
  • .faq-answerFAQ answer paragraphs (if you have them)
  • .key-findingHighlighted research findings or stats

A complete AI-ready schema bundle

This is the canonical bundle. Article + Person + Organization + WebPage with Speakable + FAQPage, all linked via @graph and @id. Paste it inside <head> on any blog post or guide.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://yoursite.com/blog/post#article",
      "headline": "How to Optimize for AI Search",
      "description": "A complete guide to making your website citable by AI engines.",
      "url": "https://yoursite.com/blog/post",
      "datePublished": "2026-05-09",
      "dateModified": "2026-05-09",
      "author": { "@id": "https://yoursite.com/blog/post#author" },
      "publisher": { "@id": "https://yoursite.com#organization" },
      "mainEntityOfPage": { "@id": "https://yoursite.com/blog/post#webpage" },
      "image": ["https://yoursite.com/images/cover.jpg"]
    },
    {
      "@type": "Person",
      "@id": "https://yoursite.com/blog/post#author",
      "name": "Jane Author",
      "url": "https://yoursite.com/about",
      "description": "Senior SEO strategist with 10 years of experience"
    },
    {
      "@type": "Organization",
      "@id": "https://yoursite.com#organization",
      "name": "Your Company",
      "url": "https://yoursite.com",
      "logo": { "@type": "ImageObject", "url": "https://yoursite.com/logo.png" },
      "sameAs": [
        "https://twitter.com/yourcompany",
        "https://www.linkedin.com/company/yourcompany"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://yoursite.com/blog/post#webpage",
      "url": "https://yoursite.com/blog/post",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": ["h1", ".summary", ".lead", "[data-speakable]"]
      }
    },
    {
      "@type": "FAQPage",
      "@id": "https://yoursite.com/blog/post#faqpage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "What is schema for AI?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "JSON-LD structured data bundled with @graph and @id for AI extraction."
          }
        }
      ]
    }
  ]
}
</script>

Replace yoursite.com URLs, the headline, dates, and author info. Keep the @id pattern β€” that is what makes it AI-friendly.

Which main entity to use by content type

Person + Organization + WebPage stay constant. The main entity type changes based on page purpose.

Article

Use for

Blog posts, guides, editorials, news

What to include

Article (or NewsArticle, BlogPosting). Required: headline, datePublished, author, image. Strongly recommended: dateModified, description.

Product

Use for

Product pages, SaaS pricing, ecommerce listings

What to include

Product. Required: name, description, image. Strongly recommended: brand, offers (with price), aggregateRating, sku.

HowTo

Use for

Step-by-step tutorials and process guides

What to include

HowTo with array of HowToStep. Required: name, step. Strongly recommended: totalTime (ISO 8601), supply (materials), image.

Recipe

Use for

Cooking recipes, baking, meal prep

What to include

Recipe. Required: name, recipeIngredient, recipeInstructions. Strongly recommended: prepTime, cookTime, recipeYield, nutrition.

FAQPage

Use for

Pages with multiple Q&A pairs

What to include

FAQPage with array of Question. Each Question needs a name and acceptedAnswer.text. Bundle with Article on guides that contain FAQs.

Course

Use for

Online courses, lesson sequences

What to include

Course. Required: name, description, provider. Strongly recommended: hasCourseInstance, educationalLevel, syllabusSections.

Free tool

Generate the bundle in 30 seconds

The Schema for AI generator outputs spec-compliant JSON-LD bundles for Article, Product, HowTo, Recipe, and FAQ pages. All @id cross-references are wired up automatically.

Schema for AI Generator

Pick a content type, fill in the fields, toggle Speakable / Breadcrumb / FAQ bundles, copy the generated <script> tag. Output is a complete @graph with all @id cross-references resolved. Validates with Google Rich Results Test out of the box.

Generate JSON-LD bundle
Avoid these

6 schema mistakes that hurt AI extraction

Common errors that make schema look right in validators but fail at AI extraction.

Single-type schema with no @graph

A standalone Article schema with no Person, no Organization, no @id linking. Validators pass. AI engines extract weakly because there is no entity relationship to anchor the citation.

Missing @id properties

Without @id on each entity, you cannot create cross-references. AI engines treat each entity as standalone. The fix: assign every entity a stable @id (typically a URL with a fragment like #author or #organization).

No Person schema for the author

Author shown only as plain text in HTML, not in JSON-LD. AI engines cannot establish authorship relationships. Add Person + reference it from Article via "author": { "@id": "..." }.

Organization without sameAs

Organization schema with name and url but no sameAs array linking to social profiles. sameAs is how AI engines connect your entity to Knowledge Graph entries on other platforms. Always include 2-5 social URLs.

No Speakable specification

WebPage schema present but missing the speakable property. AI engines fall back to extracting from any visible text. Adding Speakable explicitly tells them which selectors are most quotable.

Multiple competing schemas in separate scripts

Three separate <script type="application/ld+json"> blocks on the same page. Some AI parsers only read the first. Consolidate into one @graph. Validators handle either pattern, but AI engines prefer the unified bundle.

Frequently asked

Everything to know about schema for AI.

Schema for AI is JSON-LD structured data optimized for AI search engines rather than traditional Google rich results. The key difference: bundling. Standard schema generators output one type at a time (Article alone, Product alone). Schema for AI bundles multiple types β€” Article + Person + Organization + Speakable + FAQPage β€” into a single @graph with @id cross-references that AI engines extract more cleanly.

Want every page to ship AI-ready schema?

GrandRanker adds full @graph schema bundles to every article it publishes β€” Article + Person + Organization + Speakable + FAQ β€” wired up automatically.