Meta fields, JSON-LD structured data, sitemap, robots.txt, and AI visibility optimization.
SEO fields
Every document can have an _seo field in its data:
{
"data": {
"title": "My Post",
"_seo": {
"metaTitle": "My Post — Best Guide (30-60 chars)",
"metaDescription": "A comprehensive guide to... (120-160 chars)",
"keywords": ["keyword1", "keyword2"],
"ogImage": "/uploads/og-image.jpg",
"jsonLd": { "@type": "Article", "headline": "..." }
}
}
}Generating metadata in Next.js
export async function generateMetadata({ params }) {
const doc = getDocument('posts', (await params).slug);
const seo = doc?.data._seo ?? {};
return {
title: seo.metaTitle ?? doc?.data.title,
description: seo.metaDescription ?? doc?.data.excerpt,
openGraph: {
title: seo.metaTitle ?? doc?.data.title,
description: seo.metaDescription,
images: seo.ogImage ? [seo.ogImage] : [],
},
};
}Visibility scoring
The CMS admin includes a Visibility dashboard that scores every document on two axes:
SEO Score (13 rules) — meta title length, meta description, keywords, heading structure, content length, internal links, image alt text, and more.
GEO Score (8 rules) — optimizes content for AI platform citation:
- Answer-first structure
- Question-format headers
- Statistics and data points
- External citations
- Content freshness (updated within 90 days)
- JSON-LD structured data
- Named author
- Content depth (800+ words)
Build output
The CMS build pipeline automatically generates:
sitemap.xml— all published pages with hreflangrobots.txt— AI-aware crawler rules (4 strategies)llms.txt— AI-friendly site indexllms-full.txt— complete markdown exportfeed.xml— RSS 2.0 feed- Per-page
.mdfiles for AI consumption