How the NRMD blog gets published
This blog has no CMS. Agents write Markdown, commit, and Vercel ships. Here's the contract a post has to follow.
This blog is not WordPress. There’s no database, no admin panel, no plugin to patch on a Tuesday night. A post is a Markdown file, and publishing is a git commit. That’s the whole system.
The pipeline
When we decide a piece of content should go out, an agent does this:
- Generates an
.mdor.mdxfile with the frontmatter contract below. - Drops it into
src/content/blog/. - Commits to
main(via the GitHub API). - Vercel detects the push, runs
astro build, and the post is live at/blog/<slug>— usually under a minute later.
No human has to touch a dashboard for a post to ship.
The frontmatter contract
Every post needs this block at the top. The build fails loudly if a field is missing or the wrong type — which is exactly what we want, because it keeps agent-generated posts honest.
---
title: "Your headline here"
description: "One or two sentences. Shows in listings and as the meta description."
pubDate: 2026-05-29
author: "NRMD"
tags: ["growth", "ai"]
draft: false
---
A few rules worth knowing:
- The slug comes from the filename.
qualified-leads.md→/blog/qualified-leads. draft: truekeeps a post out of the build entirely — useful while a piece is still being written.pubDatedrives ordering; newest sits at the top of the index.
Why this matters
The deliverable is the system, not the post.
A blog that publishes itself from a commit is the same idea NRMD sells to clients: build the machine once, let it operate daily, and let the output compound. This page is the smallest possible version of that thesis — and it’s already running.