BlogPosting fields that help machines attribute authorship and freshness, plus the mistakes that void the block.
Blog posts get cited when they answer something clearly and look attributable: who wrote this, for which brand, and when was it last true? Article schema (BlogPosting / Article) will not invent those qualities, but it helps machines attach authorship and freshness when the page already has them.
If your byline is "Team" and dateModified jumps every deploy, the markup cannot save you.
What Article schema should do
For a BrandKnown-style educational post — or Northstar Analytics' "How we calculate retention" — BlogPosting should reinforce:
- Headline
- Author (a real Person when possible)
- Publisher (your Organization)
- Dates that match reality
- Canonical URL and image if you use one
That supports entity clarity and source attribution. It is adjacent to classic SEO, not a replacement for sources AI answers cite.
Core fields (and the ones that void the block)
| Field | Need it? | Failure mode |
|---|---|---|
@type | Yes | Use BlogPosting for blog URLs |
headline | Yes | Clickbait that does not match H1 |
author | Yes | Empty Organization "Marketing" with no Person |
publisher | Yes | Missing or conflicting with site Organization |
datePublished | Yes | Future dates, or missing entirely |
dateModified | When changed | Bumping on every build without edits |
mainEntityOfPage / url | Yes | Pointing at a different canonical |
image | Recommended | Broken URLs; decorative noise only |
description | Useful | Pure pitch language |
wordCount | Optional | Lying about length |
Example
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Article schema for blog posts that get cited",
"description": "BlogPosting fields that help machines attribute authorship and freshness, plus the mistakes that void the block.",
"datePublished": "2026-09-07",
"dateModified": "2026-09-07",
"author": {
"@type": "Person",
"name": "Jerah Cameron",
"url": "https://www.brandknown.help/about"
},
"publisher": {
"@type": "Organization",
"name": "BrandKnown",
"logo": {
"@type": "ImageObject",
"url": "https://www.brandknown.help/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.brandknown.help/blog/article-schema-for-blog-posts"
}
}
Keep publisher aligned with your sitewide Organization block so you do not create two publishers with slightly different names (entity SEO: one brand, one entity).
Freshness without lying
Answer engines and users both punish fake freshness. Rules that hold up:
- Set
datePublishedonce, when the post first goes public. - Update
dateModifiedwhen substance changes — new steps, corrected stats, rewritten advice. - Do not auto-bump dates on typo fixes or CDN redeploys.
- If you cite industry numbers, attribute them (for example, Similarweb / TechCrunch (June 2025): AI platforms sent ~1.13B referrals to the top 1,000 sites, up 357% YoY). When those figures age, edit the post and then touch
dateModified.
Gartner (Feb 2024 forecast) that traditional search volume may drop 25% by 2026 due to AI agents is a forecast — if you mention it, label it as such in the article body, not as an observed metric on your blog.
Writing the body so schema has something to annotate
Schema cannot fix a post that never answers the title. For AEO-friendly articles:
- Answer in the first screenful.
- Use H2s that could stand alone as chunks.
- Include a table or steps when you compare or instruct.
- Name the brand consistently when you mention yourself.
Pew Research (March 2025) found users clicked a citation inside an AI Overview only about 1% of visits — so when you are cited, the snippet quality and brand clarity still matter for the minority who click, and for branded search lift afterward. Write definitions machines can lift without embarrassment.
How to implement
- Add visible byline + publish date in HTML.
- Create or link a real author page (credentials beat ghostwriters).
- Emit
BlogPostingJSON-LD from your CMS template. - Map CMS fields → schema fields; do not hardcode one date for all posts.
- Validate a sample of old and new URLs.
- Include Article checks in periodic AEO audits.
Mistakes that void the block
author:{"@type":"Person","name":"Admin"}- Publisher logo 404
headlinedisagrees with<title>and H1 in three different wordings- Copy-pasted JSON-LD with another site's URL in
@id - Marking landing pages as BlogPosting to "look active"
How to verify
- Spot-check view-source on a post from 2024 and one from this month.
- Confirm
dateModifiedonly changes when the CMS "content updated" does. - Validator clean; no duplicate conflicting Article graphs on one page.
- Fetch as text; ensure author name appears in HTML, not only in JSON-LD.
Honest ceiling
Great BlogPosting markup on thin content is still thin content. Weak markup on a sharp original explainer is a missed ease-of-parsing opportunity, not a death sentence. Prioritize the explainer; then make authorship and dates machine-obvious.
A readiness scan may flag missing or invalid Article JSON-LD. Fix the template once so every post inherits the discipline — that is worth more than hand-decorating a single "pillar" page.
Author pages worth linking
When author.url points somewhere, that somewhere should help entity resolution: name, role, same brand, maybe LinkedIn. A thin /author/admin page with one sentence helps less than no link at all.
If multiple writers contribute, still use Person entities. Do not collapse everyone into the Organization as author unless the piece is genuinely editorial-board unsigned — and even then, be consistent sitewide.
Internal linking without spam
Article body links to sibling explainers (for example FAQ schema or HowTo schema) help humans and give crawlers connected context. They are not a substitute for isPartOf gymnastics. One or two natural links beat a related-posts module stuffed with every URL on the site.
