AI systems use datePublished and dateModified from Article and BlogPosting schema (schema-org vocabulary) to assess content freshness when deciding whether to cite it. Content without schema dates is treated as undated — LLMs answering time-sensitive questions will deprioritize undated articles in favor of sources that explicitly declare recency. For topics where currency matters (security advisories, pricing, API docs, tutorials), missing dates actively suppresses citation rates. This also affects Google AI Overviews, which surfaces fresher content preferentially when date signals are available.
Low because missing article dates reduce AI citation preference for time-sensitive content but don't block indexing or expose security or data-loss risk.
Add Article or BlogPosting JSON-LD to each blog post with at least datePublished set. Generate the schema at render time from your post's frontmatter or CMS metadata so dates stay accurate.
// app/blog/[slug]/page.tsx
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify({
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": post.title,
"datePublished": post.publishedAt, // ISO 8601: "2026-04-02"
"dateModified": post.updatedAt ?? post.publishedAt,
"author": { "@type": "Person", "name": post.author }
})}} />
At minimum, datePublished is required. Including dateModified when content is updated signals freshness to AI systems more precisely — a post from 2024 updated in 2026 should reflect the 2026 dateModified date.
ID: geo-readiness.ai-readable-structure.article-dates-in-schema
Severity: low
What to look for: If blog posts or articles exist, count all blog/article page routes. Search for Article or BlogPosting JSON-LD schema — look for "@type": "Article" or "@type": "BlogPosting" in structured data blocks. If found, check whether datePublished and dateModified fields are present. Count how many blog pages have schema with dates vs. total blog pages.
Pass criteria: Count all blog/article pages. At least 1 blog or article page must have Article/BlogPosting JSON-LD schema with at least the datePublished field set. If multiple blog pages exist, at least 80% should have Article schema with datePublished. Bonus: also including dateModified is noted in detail on pass.
Fail criteria: Blog content exists but either has no Article/BlogPosting schema at all (0 Article schemas found), or has the schema without date fields (datePublished missing from all schema instances). Report: "X of Y blog pages have Article schema with datePublished — Z% (threshold: 80%)" or "0 Article/BlogPosting schemas found across Y blog pages".
Skip (N/A) when: No blog or article content exists on the site.
Detail on fail: "0 Article/BlogPosting schemas found across 3 blog pages — AI systems cannot determine content freshness from structured data" or "BlogPosting schema present on 1 of 3 pages but datePublished is missing from all instances"
Remediation: Article schema with dates helps AI systems assess content freshness:
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify({
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Post title",
"datePublished": "2026-04-02",
"dateModified": "2026-04-02",
"author": { "@type": "Person", "name": "Author Name" }
})}} />
For comprehensive structured data coverage, the Advanced SEO audit covers schema validation in depth.