Article schema states who wrote a post, when it was published, when it was last changed, and what it is called, in a block a machine reads directly. The way to implement it on every post is to generate it from the same fields that render the page, so the markup can never drift from the visible content. The bottom line: build it once in your template, keep dateModified honest, and confirm it appears in the raw HTML of every post.

See also: answer engine optimization, explained step by step.

What Article schema is and what Google asks for

Article, with its subtypes BlogPosting and NewsArticle, is a schema.org type for written content. Google's Article structured data documentation lists no required properties and recommends headline, image, datePublished, dateModified, and author with a name and URL. Those fields matter to AI systems for a practical reason. Freshness and authorship are signals a retrieval system can weigh, and AirOps research summarized by Quattr found that content updated within the past three months was cited roughly twice as often. That is one study, which Quattr treats as directional, but it is a reason to keep dates accurate and visible.

The fields to include

PropertyWhat to put in itCommon mistake
headlineThe post title, matching the visible H1A different title than the page shows
imageA full URL to the main imageA relative path
datePublishedThe original publication date in ISO 8601Changing it on every edit
dateModifiedThe date of the last meaningful changeUpdating it automatically on every deploy
authorA Person with name and url, or an OrganizationLeaving out the author, or using a generic name
publisherYour Organization, with name and urlMissing, or mismatched with the site's Organization block

Steps to implement it on every post

  1. Store the fields with each post. Title, description, image URL, published date, modified date, and author.
  2. Write one function that turns those fields into the JSON-LD object. A short example follows.
  3. Render it in the page template, server side. It must be in the raw HTML, because the major AI crawlers do not run JavaScript, according to Vercel's analysis of AI crawler traffic.
  4. Set dateModified only when the content changes. A real edit, a corrected fact, a new section. Not a redeploy.
  5. Add BreadcrumbList to the same block. It costs a few lines and gives every post a place in your site structure.
  6. Validate a sample. Test three different posts at validator.schema.org.
  7. Spot check after each release. View source on the newest post and confirm the block is present.
function articleJsonLd(post) {
  return {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": post.title,
    "description": post.description,
    "image": post.imageUrl,
    "datePublished": post.publishedAt,   // ISO 8601, e.g. 2026-09-28
    "dateModified": post.modifiedAt,     // only when content really changed
    "author": { "@type": "Person", "name": post.authorName, "url": post.authorUrl },
    "publisher": { "@type": "Organization", "name": "Example Co", "url": "https://www.example.com" },
    "mainEntityOfPage": post.url
  };
}
// In the page template, render it into the raw HTML:
// <script type="application/ld+json">{JSON.stringify(articleJsonLd(post))}</script>

Why generate it instead of writing it by hand

Hand written markup goes stale. A title gets edited on the page but not in the JSON, or a post is updated and the date is not. Generating both the visible page and the markup from one record removes the gap. It also lets you apply the change to hundreds of existing posts at once, which is how a large blog gets consistent markup without editing each file.

What to expect

Google says no special schema is needed for AI Overviews or AI Mode, and a controlled Ahrefs test found no citation lift from adding JSON-LD to pages that were already heavily cited. Article markup is about clarity and accuracy of your dates and authorship, not a citation lever.

Questions people ask

What properties should Article schema include?

Headline, image, datePublished, dateModified, and author with a name and URL are the properties Google recommends. Publisher is a useful addition.

Should I use Article or BlogPosting?

BlogPosting is a subtype of Article and fits blog posts. Both are valid, so choose the most specific type that matches the content.

When should dateModified change?

Only when the content meaningfully changes, such as a corrected fact or a new section. Updating it on every deploy makes the date meaningless.

Where should Article schema be rendered?

In the raw HTML of the page, generated on the server, because major AI crawlers do not run JavaScript.

Sources