Nostos GEO

GEO · TECHNICAL MARKUP

What is Schema.org, and why can't AIs see you without it?

By Fabián Torres June 30, 2026 7 min read

When ChatGPT answers a question about a service, a company, or a product, it isn't reading websites the way you read them. It doesn't "understand" text in the human sense. What it does is identify entities — people, organizations, services, products — and the relationships between them. To do that, it needs the content to be marked up in a specific way. That format is called Schema.org.

Without that markup, a language model can read your text, but it can't reliably identify what you are, what you do, where you're located, or why it should cite you. The site technically exists, but for the information-retrieval systems that feed LLMs, it's invisible.

44%
of active websites on the web have no Schema.org markup implemented at all, according to the 2024 Web Almanac (HTTP Archive)

Nearly half the web has no such markup. And among the sites that do have it, most implement it incompletely: the organization type is missing, the author is missing, update dates are missing. Those sites also don't get recognized well by the models.

What Schema.org actually is

Schema.org is a standard metadata vocabulary created in 2011 by Google, Microsoft, Yahoo, and Yandex — the four most-used search engines in the world at the time. The idea was to create a common language so any site could explicitly declare what kind of content it contains and what entities it describes.

In practice, Schema.org is implemented as a JSON-LD code block inside the HTML <head>. It's not visible to the human user browsing the site. It's information for machines: search engines, data aggregators, and, more recently, the retrieval systems that feed language models.

A minimal example for an organization looks like this:

// Schema.org for an organization — minimal implementation { "@context": "https://schema.org", "@type": "Organization", "name": "Nostos", "url": "https://nostosgeo.app", "description": "GEO analysis platform for AI visibility", "founder": { "@type": "Person", "name": "Fabián Torres" } }

This block tells any system that processes the page: "this site is an organization, it's called Nostos, its URL is this, it does this, and it was founded by this person." Without this block, the system has to infer that information from the visible text — and inferences are less reliable than explicit declarations.

Why LLMs depend on Schema.org

Large language models don't crawl the web in real time to answer questions. They were trained on huge volumes of text, and that training includes information about which entities exist and how they describe themselves. But when they're used in systems with retrieval — like Perplexity, Bing Chat, or ChatGPT's search modes — they do consult sources in real time.

In those systems, Schema.org plays a critical role: it lets the retrieval system quickly identify whether a page is relevant to the query, what type of entity it describes, and whether that entity has enough authority signals to be worth citing. A site without Schema has to compete at a disadvantage in that selection process.

Schema.org isn't a quality signal a model weighs: it's a declaration format. The difference is in the verb. Without markup, a retrieval system has to infer what you are by reading your prose. With markup, it reads it declared: entity type, name, founder, service. That difference lives in the specification of the standard, not in a measurement — which is why it doesn't depend on which engine reads you, or when.

Dang et al.'s research (Université de Nantes, LLM4Schema.org, Semantic Web Journal 2025) works on the inverse problem —using language models to generate this markup at scale— and that is where the figure opening this article comes from: roughly three quarters of web pages don't have it.

The Schema types that matter most for GEO

Not every Schema type has the same impact on visibility to LLMs. These are the ones Nostos evaluates as priorities:

Organization. Declares that the site belongs to a real entity with a name, URL, description, and founder. It's the most basic identity signal. Without it, systems can't tell whether your site is a company, a personal blog, or a spam page.

Person. Identifies the author or founder with a name, profile URL (LinkedIn, personal site), and area of expertise. This signal activates the E-E-A-T criterion (Experience, Expertise, Authoritativeness, Trustworthiness) that Google formalized and that LLMs adopted as a quality proxy.

FAQPage. Marks frequently asked questions and answers in a format models can extract directly to answer queries. It's one of the types with the biggest direct impact on citation likelihood, because LLMs are looking for answers to questions — and this schema hands them exactly that.

Article / BlogPosting. For each blog post: declares the title, publication date, modification date, and author. The modification date is particularly important for the Freshness criterion — models prefer to cite updated content.

Service / Product. Describes what you offer with specific attributes. For e-commerce or professional services, this schema turns generic descriptions into concrete entities that models can identify and recommend.

The most common mistake: incomplete or poorly implemented Schema

Having Schema.org isn't enough if it's done poorly. In Nostos's analyses, the most frequent pattern isn't "no Schema" but "incomplete Schema": the block exists, but the founder field is missing from Organization, or author is missing from the articles, or publication dates are in a format the systems can't parse.

Incomplete Schema is almost as problematic as having none, because it generates inconsistencies: the system can identify the entity but can't verify its authority, or it can read the content but doesn't know who wrote it or when it was last updated.

The reference tool for checking Schema is Google's Schema Markup Validator. You can paste in the URL of any page and see exactly which types are implemented and which fields are missing. It's free and requires no account.

Case study — B2B independent consultant · June 2026

Nostos analyzed the site of a digital strategy consultant with more than 12 years of experience. The site had an extensive bio, detailed case studies, and well-written articles. Even so, it didn't show up in any ChatGPT or Perplexity answer about digital consulting in Argentina. Initial Technical markup score: 12/100.

The analysis found: zero JSON-LD blocks. All the information about the consultant — name, specialty, years of experience, clients — existed only as visible text. Models could read the text, but couldn't identify the author as an entity or the site as an authoritative source on the topic.

12
Initial score
Technical markup
82
Projected score
after implementation

Nostos's plan included implementing four Schema.org blocks: Person (with verified LinkedIn), Organization (with description and canonical URL), Service (with the three main services and their technical descriptions), and FAQPage (with the five most common client questions). Estimated implementation time: 2-3 hours. Projected impact on Technical markup: from 12 to 82 out of 100.

How to implement it if you're not a developer

If your site runs on WordPress, Wix, or Squarespace, there are plugins and tools that generate Schema automatically from the information you fill in on the platform. On WordPress, Rank Math and Yoast SEO are the most-used options. On Wix, basic Organization Schema is generated automatically if you complete your business profile in the site settings.

If your site is custom-built (static HTML, Next.js, Astro, or similar), Schema is added directly in the <head> as a <script type="application/ld+json"> block. It requires no changes to the design or visible content — it's invisible code to the user.

Either way, Google's Schema Markup Validator is the final checkpoint. If the tool shows the types correctly with no errors, language model systems will be able to process them.

Does your site have Schema.org?

Nostos automatically detects which Schema types you have implemented, which are missing, and what the impact is on your visibility to AIs. The analysis is free and takes 30 seconds.

Check your technical markup →