/ โ† AI Schema Generator Fixes / AI Schema for Editorial
In this guide
  1. What article markup does and does not do
  2. Matching article types to your content kinds
  3. What the template owns and what the generator adds
  4. The workflow, step by step
  5. Bylines that need a decision
  6. Syndication, updates and live coverage
  7. Editorial platforms
  8. Questions and answers

What article markup does and does not do

Google uses Article, NewsArticle and BlogPosting markup to understand a story's headline, images, dates and authors, and to show them more accurately in search features. Its documentation lists no required properties for articles, only recommended ones, so almost any sensible block is valid. That is exactly why editorial markup errors go unnoticed: nothing fails, the details are simply wrong.

It is worth being clear about what markup does not do. Appearing in Top stories and other news surfaces does not depend on special markup; Google has not required AMP for Top stories since 2021, and it assesses news content on its own merits. Article markup is not a ranking boost. What it does is remove ambiguity: which date is the publication date, who the author really is, which image represents the story. For a publisher, getting those facts right across thousands of stories is the job.

PropertyWhat it should sayWhere a generator goes wrong
headlineThe story's headline as publishedUses the SEO title tag, which may differ, or shortens it
imageLarge images that represent the storyPicks a logo, an advert or an author headshot
datePublishedWhen the story first went liveUses the date in a "last updated" line
dateModifiedThe last meaningful changeOmitted, or set to today
authorThe people or organisation creditedMerges two bylines into one name, or credits a photographer
publisherYour publicationCredits the original source of a syndicated story

Matching article types to your content kinds

Most publications have a handful of content kinds: news reports, features, opinion, reviews, explainers, live coverage, sponsored content. Decide the type for each once, so that it does not depend on what the model infers from a single story's tone.

Content kindSensible typeNotes
News reportNewsArticleThe default for reporting on current events
Blog postBlogPostingFor posts on a blog, including company blogs
Feature or long readNewsArticle or ArticleFollow the publication's nature, not the story length
Opinion or columnOpinionNewsArticle or NewsArticleThe subtype exists in schema.org; Google's documentation only names the three main types
Product or film reviewReview, or an article containing oneOnly for a genuine verdict on one identifiable thing
Live coverageLiveBlogPostingCheck Google's current documentation before relying on any live badge
Explainer or how-to guideArticle or TechArticleHowTo rich results were removed in 2023
Sponsored or advertorialAs its format, plus clear labelling on the pageMarkup does not replace visible disclosure

The finer news subtypes, such as OpinionNewsArticle, AnalysisNewsArticle, BackgroundNewsArticle and ReportageNewsArticle, describe your journalism more precisely. Use them if they match your own labels and your CMS can assign them reliably. Do not let a generator pick between them story by story; the line between analysis and reportage is an editorial judgement, and inconsistent choices look arbitrary. For a longer discussion of choosing types, see the wrong schema type guide.

What the template owns and what the generator adds

Publishing systems already hold most article facts as structured data: the headline field, the byline field, the publication timestamp, the featured image. Asking a language model to rediscover them from the rendered page adds a chance of error for no gain. The workable division is a two-layer model.

Layer one: the template

Your CMS template, or your SEO plugin, should output the facts it already knows exactly: headline, datePublished, dateModified, author references, publisher, mainEntityOfPage and the main image. These change with the story, and the template changes with them. Nobody has to remember to update the markup when a sub-editor fixes a headline.

Layer two: the generator

The generator is valuable for what the CMS does not know as data: the people, places, organisations and events the story is about, the item under review, a structured list inside a feature, or a recipe inside a food column. Use generated output to fill properties such as about, mentions and itemReviewed, or to create a separate linked entity like an Event or Recipe. These describe the story's content, which is exactly what a model reading the text is good at.

๐Ÿ’ก If your template does not output article markup at all, generated markup is a reasonable way to start. Treat the first few outputs as a specification for what the template should print, then move the fixed facts into the template as soon as you can.

A short fictional example from a local news site, The Exampleton Courier. The template supplied everything except the about and mentions values, which came from a reviewed generator run on a story about a new footbridge:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "@id": "https://news.example.co.uk/2026/09/footbridge-approved#article",
  "headline": "Council approves new footbridge over the River Example",
  "datePublished": "2026-09-21T08:30:00+01:00",
  "dateModified": "2026-09-22T14:10:00+01:00",
  "image": [
    "https://news.example.co.uk/img/footbridge-16x9.jpg",
    "https://news.example.co.uk/img/footbridge-4x3.jpg",
    "https://news.example.co.uk/img/footbridge-1x1.jpg"
  ],
  "author": [{ "@id": "https://news.example.co.uk/staff/sam-writer#person" }],
  "publisher": { "@id": "https://news.example.co.uk/#organization" },
  "mainEntityOfPage": "https://news.example.co.uk/2026/09/footbridge-approved",
  "about": {
    "@type": "Place",
    "name": "River Example",
    "address": { "@type": "PostalAddress", "addressLocality": "Exampleton", "addressCountry": "GB" }
  },
  "mentions": [
    { "@type": "GovernmentOrganization", "name": "Exampleton Borough Council" }
  ]
}
</script>

The author and publisher are references to entities published once, elsewhere on the site. How to set those up is covered in the Organization and Person references guide.

The workflow, step by step

Step 1

Map your content kinds to article types

List the kinds of content you publish, such as news, features, opinion, reviews, live coverage and sponsored posts, and assign one schema type to each. Base the choice on your editorial labels, not on the tone of individual stories. Store the type as a field or category in the CMS so the template can print it. Share the mapping in your style sheet, so writers and editors know which label drives which markup.

Step 2

Let the template own the fixed parts

Check that your template or SEO plugin prints the headline, publication and modification dates, featured image, author references, publisher and page address from CMS fields. Where it does not, add them there rather than relying on generated output. These facts already exist as data, so reading them directly removes a whole class of errors, and they stay correct when an editor changes the story after publication.

Step 3

Generate the story-specific layer at publication

Once a story is final, run its public address through the AI Schema Generator and keep only the parts the template does not supply: the subjects in about and mentions, a reviewed item, or a linked Event or Recipe. Delete any generated headline, dates, author or publisher, since the template already outputs them. Check every remaining name and place against the story text before saving the additions to the article.

Step 4

Check the byline against the page

Compare the credited authors in the markup with the visible byline. Each writer should be a separate entry pointing at their own profile, with only the name in the name field, not a job title or "Reporter". Agency copy should credit the agency as an organisation. Photographers and illustrators are not authors of the article. Stories credited to "Staff" should name the publication as the author rather than an invented person.

Step 5

Choose images that meet the guidelines

Make sure image points at pictures that represent the story and appear on the page, not the site logo or an advert. Google recommends high-resolution images of at least 50,000 pixels when width is multiplied by height, and suggests supplying 16:9, 4:3 and 1:1 versions. If your CMS already creates crops in those ratios, list the three URLs; otherwise one large, crawlable image is fine.

Step 6

Handle updates, corrections and paywalls

When a story changes substantially, let the CMS update dateModified and leave datePublished alone. For corrections, show the correction note on the page and consider the correction property. For paywalled stories, mark the article with isAccessibleForFree set to false and a hasPart entry whose cssSelector matches the paywalled section, so search engines can tell a legitimate paywall from cloaking. Agree the selector with your developers first.

Step 7

Audit a sample each month

Each month, pick a handful of stories from each content kind, including updated and co-written ones, and test the live pages in the Rich Results Test. Compare the dates, byline and images in the markup with what readers see. Check Search Console for new article warnings. Sampling across kinds matters, because a template bug usually affects one kind of story, such as live blogs or reviews, while the rest look fine.

Bylines that need a decision

A generator reads the byline text and does its best. Editorial bylines are full of cases where the text alone does not tell you the answer.

โš ๏ธ Never let generated markup name an author who is not credited on the page. It is tempting to "fix" an unbylined story by adding the editor's name, but markup should describe the page as readers see it. If a named author matters to you, add the byline to the story.

Syndication, updates and live coverage

Syndicated and republished stories

When you republish a story from a partner, the page on your site is still published by you, but the original is elsewhere. The usual signal is a canonical link to the original if the partner asks for one. In markup, isBasedOn can point to the source article's address, and the author should be whoever wrote it. A generator seeing a "first published by" line may credit the partner as the publisher; correct it to your publication unless the arrangement says otherwise.

Rolling updates

Breaking stories are edited many times. The CMS should update dateModified on substantial changes, and the visible "updated" time on the page should match. If you regenerate markup after each update, you risk a model picking up the updated time as the publication time; with the dates owned by the template, regeneration only needs to happen when the subjects of the story change. The date format guide covers the formatting side, including British Summer Time offsets.

Live blogs

Schema.org has a LiveBlogPosting type with coverageStartTime, coverageEndTime and liveBlogUpdate entries. Live pages change every few minutes, so generated snapshots are not a good fit: any list of updates will be out of date almost at once. If you use the type, have the live blog software output it.

Corrections and retractions

A correction should appear on the page first. Schema.org's correction property can then point to or describe it. If a story is withdrawn entirely, remove the article markup along with the content, rather than leaving a detailed block describing a story that is no longer there.

Editorial platforms

WordPress

Most news and blog sites on WordPress get their Article markup from an SEO plugin, which reads the post title, dates and author from WordPress directly. That is layer one done for you. Add generated subject markup separately, as described in the WordPress guide, and make sure co-authors plugins are supported by your SEO plugin, or multiple bylines may collapse into one author.

Headless and custom newsroom systems

Build the article block from the same content API that renders the page, so headline, dates and bylines cannot drift. Store generated about and mentions data as a field on the story, reviewed by an editor, and merge it into the block at render time.

Hosted newsletter and blogging platforms

Some hosted platforms output their own article markup and do not allow custom scripts. Check what the platform prints before spending time on generation; if you cannot add code, generated markup has nowhere to go, and the platform's defaults are what search engines will see.

Questions and answers

1. Does a story need NewsArticle markup to appear in Top stories?

No. Google does not require any specific structured data for Top stories or other news features, and it stopped requiring AMP for Top stories in 2021. Eligibility depends on Google's assessment of the content and the site, including its news content policies. Article or NewsArticle markup still helps by making the headline, images, dates and authors unambiguous, which can improve how a story is shown, but it is not a ticket into news features.

2. Should I regenerate the markup every time a story is edited?

Not if the template owns the headline, dates and byline, which it should. Those update automatically from the CMS. Regenerate only when the substance of the story changes, such as new people or places becoming central to it, because that is what the generated layer describes. Regenerating after every small edit adds review work and increases the chance that a model mistakes the updated time for the publication time or drops an author.

3. How should multiple authors be marked up?

List each author as a separate entry in the author property, each with their own name and ideally a reference to their profile page on your site. Do not combine them into a single name such as two names joined with and, and do not include job titles in the name field. Google's article guidance asks for exactly this pattern. If your byline lists contributors separately, decide as a house rule whether they count as authors and apply it consistently.

4. What image should article markup use?

Use images that represent the story and are visible on the page, typically the lead photograph, rather than your logo, an advert or a small thumbnail. Google recommends high-resolution images of at least 50,000 pixels when you multiply width by height, and suggests 16:9, 4:3 and 1:1 versions for the best results. The images must be crawlable, so check they are not blocked by robots.txt or served only after a script runs.

5. How do I mark up paywalled articles?

Set isAccessibleForFree to false on the article and add a hasPart entry, itself marked isAccessibleForFree false, with a cssSelector that matches the class of the element wrapping the paywalled text. This tells Google that the difference between what its crawler sees and what a non-subscriber sees is a paywall rather than cloaking. The selector must match your real page markup, so agree the class name with your developers before relying on it.

6. Can the AI generator decide whether a story is opinion or news?

It can make a reasonable guess from the language, but that decision belongs to your editors. Readers and search engines should see consistent labelling, and the line between analysis, opinion and reporting is an editorial judgement. Store the content kind as a field in your CMS, set by the desk that publishes the story, and let the template print the matching type. Use the generator for describing the story's subjects, not for classifying your journalism.

7. Is it acceptable to use AI-generated markup on a news site?

Yes, provided the markup is accurate and reviewed. Google judges structured data by whether it truthfully describes the visible page, not by how it was produced. The risk on a news site is that a generated block credits the wrong author or date, which undermines the trust signals the markup is meant to support. Keeping the facts your CMS knows in the template, and using generation only for subject detail that an editor checks, keeps that risk low.

Add story-level detail to your article markup

The AI Schema Generator reads your page content with an AI model, writes JSON-LD tailored to the content type and validates it against schema.org and Google rich result criteria, giving your editors a reviewed starting point for each story.

Open AI Schema Generator Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All AI Schema Generator Fixes  ·  Organization and Person Reference Loss  ·  Date Format Errors in Generated Schema  ·  Author Bio Fixes  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.