Automatic validation and SEO
How the blog turns editorial metadata into routes, sitemap entries, RSS items, OG images, and JSON-LD without repetitive manual work.
1 min read

Good SEO starts before the page exists. In this blog, each content file carries enough information for the build to decide what can be published, how the URL is formed, and which signals belong in the final HTML.
Validation before routes
Content goes through Zod schemas to avoid ambiguous states. A published post needs a publishable locale, slug, title, description, and valid tags. If an image is referenced, the file must exist.
That protects editorial work and technical output at the same time. The author keeps writing MDX, while the build blocks broken routes before they ship.
SEO from one model
Canonical links, Open Graph, Twitter Cards, RSS, sitemap entries, and JSON-LD are not separate chores. They are derived from the same fields that render the post.
post.yml + en.mdx -> route -> metadata -> final HTMLWhen title or description changes, the page, social preview, and structured data move together.
No fake locale fallback
The build only publishes locales with localeStatus: published. A draft
translation can stay in the repository without entering hreflang, RSS, or the
sitemap.
The result is simple: the reader only sees languages that actually exist.
Related posts
Comments
Comments load on demand to preserve the article's initial load.