Free 48h audit
Structured data13 min read

Schema.org for generative search: Organization, Person, Article, FAQPage.

Structured data does not make a page appear in a generated answer; it tells the engine who is speaking, in what capacity and since when. Four schema.org types carry the bulk of that information: Organization, Person, Article and FAQPage. For each, here are the properties that matter, a complete JSON-LD example ready to adapt, then the validation method that avoids contradictory markup.

Article contents

What structured data is for in a generative engine

Structured data serves one precise purpose: making the publishing entity readable, without ambiguity. A generative engine chooses its sources among passages, then checks who signs them. Schema.org markup, inserted as JSON-LD in the HTML, gives it that identity in a form a program reads without interpretation: a name, a legal form, an author, a date, linked profiles. It is the third of the four conditions for a citation described in our complete method: after accessible and citable, identified.

We must be honest about what is known. Google documents the use of structured data to understand a page and trigger rich results; AI Overviews and AI Mode rely on the same index as classic search, and Google's documentation on its AI features refers to the same fundamentals, insisting on the match between the markup and the visible content. Bing uses schema.org markup, and Copilot relies on the Bing index. By contrast, neither OpenAI, nor Anthropic, nor Perplexity has published documentation describing the use of JSON-LD in source selection. To our knowledge, their AI search crawlers read the full HTML, markup included; what they then do with it is not public.

This uncertainty does not change the decision. Markup costs a few hours on a template, it is read with certainty by Google and Bing, and it imposes a discipline that benefits all engines: a single name, a named author, a truthful date, consistent profiles. In our audits, the sites cited regularly by all four engines almost all have a marked-up, consistent entity; the reverse is not true, but the absence of markup almost always goes with a blurry entity.

Diagram 1The four schema.org types that carry the identity of a source, and the question each one answers.
  1. 1OrganizationWho publishes: name, legal form, contact details, identifiers, official profiles.Otherwise: the source is a domain without an owner.
  2. 2PersonWho writes: job title, employer, areas of expertise, profiles.Otherwise: the text is anonymous.
  3. 3ArticleWhat and when: headline, author, publisher, publication and update dates.Otherwise: the content has no readable date or signature.
  4. 4FAQPageWhich questions: self-contained question-answer pairs, identical to the visible text.Otherwise: the answers stay buried in the page.

Other types exist and serve depending on the business: LocalBusiness for an establishment, Product and Offer for a catalogue, Event, Course, SoftwareApplication. They are added to the four base types; they do not replace them. A site that marks up its products without describing the organisation that sells them leaves the engine to guess half the information.

Organization: the publisher's identity record

The Organization block describes the company that publishes the site. It must appear once, on every page, with the same content and the same @id identifier, so that all the other blocks can refer to it. The name declared here becomes the canonical name of the entity: it is the one that must be found, to the letter, on LinkedIn, in the registers and in the directories.

For this type, Google documents a list of properties extended since 2024, covering administrative identifiers: legalName, vatID, taxID, leiCode, duns, iso6523Code, numberOfEmployees, foundingDate. These properties have no visible effect in the results; they serve to link the site's entity to the entity in the registers, which is exactly what an engine tries to do before granting its trust to a source.

PropertyRoleAdvice
nameTrading nameA single spelling, reused everywhere else
legalNameLegal nameAs entered in the companies register
urlSite addressCanonical domain, with the protocol
logoLogoImage accessible to crawlers, legible at small size
sameAsOfficial profilesOnly pages that exist and belong to you
addressRegistered officeComplete PostalAddress object, country included
vatID, taxIDTax identifiersIntra-community VAT number, national tax identifier
foundingDate, founderOriginYear of creation, founder linked by @id
knowsAboutAreas of expertiseThree to six topics, in everyday terms

Table: scroll horizontally.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://seo360.tech/#organization",
  "name": "SEO360",
  "legalName": "SEO 360 ALICANTE S.L.",
  "url": "https://seo360.tech",
  "logo": "https://seo360.tech/img/logo.png",
  "description": "Search and generative search (GEO) agency, with offices in Alicante, Valencia, Madrid and Paris.",
  "email": "hola@seo360.tech",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Elche",
    "addressRegion": "Alicante",
    "addressCountry": "ES"
  },
  "vatID": "ES…",
  "founder": { "@id": "https://seo360.tech/#kamel-malek" },
  "knowsAbout": ["Organic search", "Generative search", "Structured data"],
  "sameAs": [
    "https://www.linkedin.com/company/…",
    "https://www.wikidata.org/wiki/Q…"
  ]
}

Two rules for sameAs. Only include pages that really exist and that are about you: an empty profile or a dead address weakens the record instead of strengthening it. And keep the list short: five to eight profiles kept up to date are worth more than twenty links, half of which point to abandoned accounts. Building this list, with the registers and Wikidata, is the subject of a dedicated article on the brand entity.

Person: the author, linked to the organisation

A generative engine evaluates a source partly by the person who signs it. The Person block describes that author with verifiable properties: job title, employer, areas of expertise, public profiles, publications. It too carries a stable @id, so that each article, each author page and the Organization block designate the same person without describing them again.

The properties that carry weight are those a third party can confirm. jobTitle and worksFor situate the person; knowsAbout declares their topics; sameAs points to profiles where the same name, the same job title and the same topics appear; alumniOf, hasCredential and award document training and distinctions when they exist. Conversely, a three-line biography in description, with no external link, proves nothing.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "@id": "https://seo360.tech/#kamel-malek",
  "name": "Kamel Malek",
  "jobTitle": "Founder and director",
  "worksFor": { "@id": "https://seo360.tech/#organization" },
  "url": "https://seo360.tech/#equipe",
  "image": "https://seo360.tech/img/auteur-kamel-malek.jpg",
  "description": "SEO practitioner since 2001, author of three books on generative search.",
  "knowsAbout": ["Generative search", "Organic search", "Entities and structured data"],
  "knowsLanguage": ["fr", "es", "en"],
  "sameAs": [
    "https://www.linkedin.com/in/…",
    "https://www.amazon.fr/…"
  ]
}

The link between Person and Organization works both ways: worksFor on one side, founder or employee on the other. This reciprocity is what lets an engine conclude that the author and the publisher form a single consistent entity, and not two names placed side by side. What an author page must contain, beyond the markup, is detailed in the article on author pages.

Article and BlogPosting: what is said, by whom, when

The Article block, or its BlogPosting subtype for a blog, attaches a piece of content to its author, its publisher and its dates. For this type, Google documents a small number of recommended properties: headline, image, datePublished, dateModified, author with name and url. That is the minimum. For generative search, three additional properties have practical value: mainEntityOfPage, which designates the canonical address; inLanguage, which avoids confusion on a multilingual site; about or mentions, which link the article to the entities it deals with.

The absolute rule is the match with what is visible. The declared date must be the one displayed on the page; the declared author must be the one in the byline; the declared headline must be the main title. A gap between the markup and the text is the kind of inconsistency an engine detects easily and which discredits the whole record. The question of dates, and what a truthful update means, is covered in the article on freshness signals.

Diagram 2The graph of an article page: four nodes linked by their identifiers, each declared only once.
Node 1
Organization · @id #organization · declared on every page
Node 2
Person · @id #kamel-malek · worksFor → #organization
Node 3
BlogPosting · author → #kamel-malek · publisher → #organization · datePublished, dateModified
Node 4
FAQPage · mainEntity: the page's visible questions, in the same order
Linking
A single JSON-LD script per page, one @graph array, no duplicated node
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "@id": "https://seo360.tech/blog/schema-org-pour-la-recherche-generative.html#article",
  "mainEntityOfPage": "https://seo360.tech/blog/schema-org-pour-la-recherche-generative.html",
  "headline": "Schema.org for generative search: Organization, Person, Article, FAQPage",
  "description": "Four schema.org types are enough for a generative engine to identify who publishes, who writes, what and when.",
  "image": "https://seo360.tech/blog/img/027-schema-org-pour-la-recherche-generative.jpg",
  "inLanguage": "fr",
  "datePublished": "2026-06-25",
  "dateModified": "2026-06-25",
  "articleSection": "Structured data",
  "author": { "@id": "https://seo360.tech/#kamel-malek" },
  "publisher": { "@id": "https://seo360.tech/#organization" },
  "about": [
    { "@type": "Thing", "name": "Schema.org" },
    { "@type": "Thing", "name": "Generative search" }
  ]
}

On a site of several hundred pages, this block is not written by hand: it is generated from the template, with the fields of the content management system. The only discipline to impose on writers is to fill in a real author and an honest update date; the rest is mechanical.

FAQPage: the format closest to a generated answer

A question-and-answer section marked up as FAQPage is the content whose form most resembles what a generative engine produces: a question in natural language, a self-contained answer of fifty to ninety words. The markup lists these pairs in mainEntity, each as a Question object whose accepted answer is an Answer object.

You need to know this type's limitation at Google. Since August 2023, Google only shows FAQ rich results for recognised government and health websites; for everyone else, the markup remains valid and read, but it produces no particular display. That is no reason to abandon it: it keeps a descriptive value, it forces you to write self-contained answers, and it costs nothing more than a well-structured section. Simply, do not expect it to be a display lever.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do you need one JSON-LD block per type or a single graph?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A single JSON-LD script with an @graph array is preferable: the Organization, Person, BlogPosting and FAQPage nodes are declared there once and reference each other by @id, which avoids contradictory duplicates."
      }
    },
    {
      "@type": "Question",
      "name": "Does FAQPage markup still produce a rich result?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "At Google, only for recognised government or health websites, since August 2023. For the others, the markup remains valid but has no dedicated display."
      }
    }
  ]
}

Three content rules condition the validity of this block: each marked-up question must be visible on the page, with its answer, in the same terms; the markup must not be used to insert promotional answers absent from the text; and a page must carry only one FAQPage block. A section of four to six questions, each answering a phrasing actually used by your buyers, is worth more than a list of twenty rhetorical questions.

The markup mistakes that discredit a source

False markup is worse than no markup, because it gives the engine a precise reason to doubt. The mistakes below come up in almost all our audits; each can be corrected in less than a day.

  • Two contradictory Organization blocks on the same page, one injected by the theme, the other by a plugin, with two different names.
  • A generic author (“admin”, “editorial team”, the site's name) where a person's name is expected.
  • A dateModified refreshed at each page generation, without any change in content.
  • sameAs links to empty profiles, abandoned accounts or pages that do not mention the company.
  • An AggregateRating block on the organisation itself, fed by reviews collected on the site: Google excludes these self-serving ratings from its rich results, and a generative engine has no reason to believe them.
  • A FAQPage whose questions do not appear in the visible text.
  • Article markup on pages that are not articles: home page, categories, product pages.
  • A block that is syntactically valid but empty of meaning: name filled in, everything else missing.
Watch out

The SEO plugins of the main content management systems generate default markup. It is often correct, rarely complete, and it conflicts with any block added by hand. Before writing a line, take stock of what the site already emits, page by page, and decide on a single source of truth.

Validate, deploy, monitor

Markup is validated at three levels, and each level catches errors the others let through. The schema.org validator (validator.schema.org) checks the syntax and the existence of types and properties. Google's Rich Results Test checks eligibility for the displays Google supports, and flags the properties missing for those displays. Human reading, finally, checks what no tool controls: that the declared name, author and date are indeed those the page displays.

Diagram 3The validation loop for markup, from writing to monitoring; the decisive step is the comparison with the visible content.
  1. 01InventoryRecord all the JSON-LD blocks emitted by the template, the theme and the plugins.
  2. 02SyntaxRun each template through validator.schema.org: existing types and properties, valid JSON.
  3. 03EligibilityTest one page per template in Google's Rich Results Test.
  4. 04ConsistencyCompare name, author, dates and questions with the displayed text. Any gap is an error.
  5. 05MonitoringRead the Search Console enhancement reports after each deployment.

Deployment follows the order of the types. The organisation first, because everything else refers to it; the authors next; then the article templates and, last, the question sections. On an existing site, this sequence fits within a quarter, provided you start by removing stray markup rather than adding more.

Diagram 4A typical structured data deployment on an existing site, in three phases.
  1. Weeks 1 to 2Inventory and clean-up
    • Record of the blocks emitted by the theme and the plugins
    • Removal of duplicates and contradictory blocks
    • Choice of a single source of truth
  2. Weeks 3 to 6Entity graph
    • Organization with @id, on every page
    • Person for each author, author pages linked
    • Article or BlogPosting template generated from the CMS
  3. Weeks 7 to 12Extension and monitoring
    • FAQPage on pages that carry visible questions
    • Business types: LocalBusiness, Product, Event
    • Monthly check in Search Console and review of a sample

Monitoring does not stop at deployment. A theme update, a new plugin or a template change can reintroduce a stray block without anyone noticing. A monthly review of a sample of pages, cross-checked with the Search Console reports, is enough to detect these regressions before they cost citations.

What to remember

Key points
  • Structured data does not get a page cited; it makes the entity that signs it readable, which is the third condition for a citation.
  • Four types are enough to start: Organization, Person, Article or BlogPosting, FAQPage, linked by @id identifiers in a single graph.
  • Google and Bing read this markup in a documented way; OpenAI, Anthropic and Perplexity have published nothing on the subject, which takes nothing away from its value as a discipline.
  • The absolute rule is the match with what is visible: the declared name, author, dates and questions must be those of the page.
  • False markup is worse than no markup; take stock and clean up before adding, validate at three levels, review every month.

Frequently asked questions

Is structured data mandatory to be cited by ChatGPT or Perplexity?

No. None of these vendors has documented the use of schema.org markup in selecting its sources, and pages without markup are cited every day. On the other hand, Google and Bing read it in a documented way, and AI Overviews, AI Mode and Copilot rely on their indexes. Markup is therefore a certain investment for two engines, and a useful discipline for the others.

Do you have to choose between JSON-LD, microdata and RDFa?

Choose JSON-LD. It is the format Google recommends, the simplest to generate from a template and the only one that lets you describe a complete graph with shared identifiers, without touching the content's HTML. Microdata remains valid but is scattered across the page, which makes inconsistencies harder to spot.

How do you link an article's author to the publishing organisation?

Through stable identifiers. Declare the Organization with an @id, the Person with another @id and a worksFor property that points to the first; then, in each Article, reference these identifiers in author and publisher instead of describing the entities again. The engine thus reconstructs a single consistent entity.

Is FAQPage markup still useful for anything?

Yes, but no longer as a display lever. Since August 2023, Google reserves FAQ rich results for recognised government and health websites. The markup keeps a descriptive value and forces you to write self-contained answers, short and faithful to the visible text, which is precisely the format a generative engine extracts.

Which tools should you use to validate markup?

Three levels: the schema.org validator for syntax and vocabulary, Google's Rich Results Test for eligibility for the displays it supports, and a human review for consistency between the markup and the visible content. The Search Console enhancement reports then flag errors at site level.

Portrait of Kamel Malek
Kamel Malek
Founder & agency director

An SEO practitioner since 2001, Kamel Malek runs SEO360 (Alicante, Valencia, Madrid, Paris). He has published three books on visibility in generative engines, including Generative Engine Optimization and Rétablir les faits.