Table of contents
When AI reads your blog post, it needs to answer one question first: "Is this content trustworthy?" Article schema is how you answer that question — not in words, but in structured data that AI can read immediately.
Without Article schema, AI can still read your post. But it has to guess: who wrote this? When was it written? Is it still current? When forced to guess, AI plays it safe — meaning it chooses another source it doesn't need to guess about.
Comparing Article, NewsArticle, and BlogPosting
| Schema type | Use when | Characteristic fields | Example |
|---|---|---|---|
Article | Guides, analyses, in-depth handbooks | articleSection, wordCount | "What Is AEO? A 2025 Guide" |
NewsArticle | Event-driven news, announcements | dateline, printSection | "Google Updates Algorithm August 2025" |
BlogPosting | Personal/business blog opinions | backstory | "5 Things I Learned After 1 Year of AEO" |
TechArticle | Technical guides | dependencies, proficiencyLevel | "How to Install Schema in Next.js App Router" |
For Vietnamese B2B/B2C business blogs: use Article for in-depth guides, BlogPosting for opinion and case study posts. No need to over-differentiate — both are handled similarly by Google and AI.
All Article Schema Fields
| Field | Data type | Priority | Description |
|---|---|---|---|
@type | Text | Required | "Article" or "BlogPosting" |
headline | Text (≤110 chars) | Required | Post title — matches the <h1> |
description | Text (150-160 chars) | Required | Content summary — AI uses for preview |
url | URL | Required | Canonical URL of the post |
image | ImageObject | Required | Featured image with url, width, height |
datePublished | DateTime (ISO 8601) | Required | Initial publication date |
dateModified | DateTime (ISO 8601) | Required | Most recent update date |
author | Person | Required | Object with @id, name, jobTitle |
publisher | Organization | Required | Object with name, logo |
inLanguage | Text | Recommended | "vi-VN" for Vietnamese |
mainEntityOfPage | WebPage | Recommended | Canonical URL as a WebPage object |
keywords | Text | Recommended | Main keywords, comma-separated |
articleSection | Text | Optional | Post category/section |
wordCount | Integer | Optional | Word count of the post |
isPartOf | WebSite | Optional | Link to WebSite schema |
Complete JSON-LD for a Business Blog Post
{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://aeosaigon.com/blog/eeat-va-ai-trust",
"headline": "E-E-A-T và AI Trust: Tại sao AI trích dẫn trang này mà không trang kia?",
"description": "E-E-A-T không chỉ là tiêu chí Google — AI cũng dùng cùng tín hiệu để quyết định trích dẫn ai. Hướng dẫn xây dựng tín hiệu tin cậy.",
"url": "https://aeosaigon.com/blog/eeat-va-ai-trust",
"datePublished": "2026-08-08T08:00:00+07:00",
"dateModified": "2026-08-08T08:00:00+07:00",
"inLanguage": "vi-VN",
"articleSection": "Kiến thức",
"wordCount": 1350,
"keywords": "E-E-A-T, AI trust, AEO, schema markup, content strategy",
"image": {
"@type": "ImageObject",
"url": "https://aeosaigon.com/images/blog/eeat-va-ai-trust-og.jpg",
"width": 1200,
"height": 630
},
"author": {
"@type": "Person",
"@id": "https://aeosaigon.com/tac-gia/nguyen-van-an",
"name": "Nguyễn Văn An",
"jobTitle": "Chuyên gia AEO",
"url": "https://aeosaigon.com/tac-gia/nguyen-van-an"
},
"publisher": {
"@type": "Organization",
"@id": "https://aeosaigon.com",
"name": "AEO Saigon",
"logo": {
"@type": "ImageObject",
"url": "https://aeosaigon.com/logo.png",
"width": 200,
"height": 60
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://aeosaigon.com/blog/eeat-va-ai-trust"
},
"isPartOf": {
"@type": "WebSite",
"@id": "https://aeosaigon.com",
"name": "AEO Saigon"
}
}
Freshness Signals — Article Schema's Secret Weapon
AI prioritizes fresh content when answering time-sensitive questions. The two fields datePublished and dateModified directly affect how likely AI is to choose your post.
Rules for dateModified:
- Update posts when there is genuinely new information — not just typo fixes
- Change
dateModifiedeach time the content is substantively updated - Add a note at the end of the post: "Updated August 2026 — added real-world examples on Gemini 2.0"
- Do not fake
dateModifiedto a future date — Google and AI detect it through crawl history
Rules for datePublished:
- Do not change
datePublishedwhen updating an older post — this is the date the post was first published - Use ISO 8601 with timezone:
2026-08-08T08:00:00+07:00instead of2026-08-08
Freshness by Industry
| Industry | Recommended update frequency | Reason |
|---|---|---|
| Finance/investment | Monthly | Interest rates, regulations change quickly |
| Healthcare/medicine | With each new guideline | YMYL — high accuracy required |
| Law | When legislation changes | Incorrect information has legal consequences |
| SEO/AEO/Marketing | Quarterly | Continuous algorithm updates |
| Technology | Every 6 months | Products, versions change |
| Culinary guides | Annually | Rarely changes |
Implementation in Next.js App Router
In Next.js 13+ App Router, place Article schema in the generateMetadata component or use a <script> tag in the layout:
// app/blog/[slug]/page.tsx
export default function BlogPost({ post }) {
const articleSchema = {
"@context": "https://schema.org",
"@type": "Article",
headline: post.title,
description: post.description,
datePublished: post.date,
dateModified: post.updatedAt || post.date,
author: {
"@type": "Person",
"@id": `https://aeosaigon.com/tac-gia/${post.authorSlug}`,
name: post.authorName,
},
publisher: {
"@type": "Organization",
"@id": "https://aeosaigon.com",
name: "AEO Saigon",
},
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema) }}
/>
{/* ... post content */}
</>
);
}
Pre-Publish Checklist
Before publishing any blog post, check:
-
headlineis no more than 110 characters and matches the<h1> -
descriptionis 150-160 characters, not truncated -
datePublishedis in correct ISO 8601 format with +07:00 timezone -
authoris an object with@idpointing to a real author page -
imagehasurl,width(1200),height(630) -
publisheruses an@idreference to the main Organization schema - Tested through schema.org validator — no red errors
- Google's Rich Results Test shows no errors
Article schema doesn't guarantee AI will cite you today. But without it, you're racing with one hand tied behind your back — while competitors have already declared everything AI needs to know about their content.
Frequently asked questions
How are Article, NewsArticle, and BlogPosting different?
All three are subtypes of Article in schema.org. Article: general-purpose posts (guides, analyses, handbooks). NewsArticle: event-driven news with an important datePublished for freshness. BlogPosting: personal or business blog posts. For a B2B/B2C business AEO blog, either Article or BlogPosting is appropriate.
Which fields in Article schema are most important for AEO?
Top 5: (1) headline — exact title; (2) author — Person schema with name, url, jobTitle; (3) datePublished + dateModified — freshness signal; (4) image — ImageObject with url, width, height; (5) description — 150-160 character summary. Missing any of these makes it harder for AI to identify the post as authoritative.
Do I need Article schema if a post already has FAQ schema?
Yes, because they serve different purposes. FAQPage says 'this post has Q&A.' Article says 'this is by whom, written when, about what topic.' AI needs both for a complete picture — Article schema establishes freshness and authorship, FAQPage schema establishes Q&A content.
Which is more important: datePublished or dateModified?
For AEO, dateModified is more important. AI prioritizes the most recent content when answering questions — dateModified tells AI the information is still being maintained. Update posts when new information is available and change dateModified. Do not fake dateModified — search engines and AI can detect it through crawl history.
AEO Saigon
An Answer Engine Optimization agency in Ho Chi Minh City — helping business websites get cited by AI. About AEO Saigon →
Want your website to be cited by AI like this?
Free Audit