How to write blog posts in Coding Capybaras
A quick tutorial covering frontmatter fields, MDX body conventions, and the publish flow. The same mechanism you're reading this post through.
· Coding Capybaras
The blog you're reading is part of the Coding Capybaras boilerplate. Every deploy ships with it. This post walks through how to publish your own posts — the same way this site does it.
The pattern
Coding Capybaras uses a file-based MDX blog:
- Posts live as
.mdxfiles inwebsite/content/blog/ - Each file's name (minus the
.mdx) becomes its URL slug —my-first-post.mdxbecomes/blog/my-first-post - Frontmatter at the top drives SEO, listing order, and publish state
- The body is markdown (with MDX extensions if you want them)
No database. No admin GUI. No CMS to keep updated. Posts are version-controlled with the rest of your code, and a git push is your publish action.
This is intentional. The boilerplate is built for founders using AI coding tools — Claude Code, Cursor, Cowork. Your AI assistant writes a post, saves it as a file, commits it. There's no admin form to wrestle with.
The frontmatter
Every post has a YAML frontmatter block at the top.
Required fields:
title— the post title (also used as the<h1>)description— short summary (used as<meta description>for SEO and on the index)date— publish date inYYYY-MM-DDformat
Optional fields:
author— defaults to your site name if omittedtags— array of tag strings (no tag index pages yet, but the frontmatter is captured)updated— date of last update; appears in JSON-LD asdateModifiedpublished— defaults totrue. Set tofalseto keep a draft from appearing on the index or sitemap
The build fails on malformed frontmatter — intentional, so broken posts can never silently deploy.
Writing the body
Standard markdown. Use ## and ### for section headings (your title is the page's only <h1>). Bold, italic, inline code, and links all work. Fenced code blocks render with syntax highlighting:
function example() {
return "hello, world";
}
Lists, blockquotes, and tables all work as expected.
Publishing
- Create a new
.mdxfile inwebsite/content/blog/ - Add the frontmatter and body
git commitandgit push- Vercel auto-deploys
- Your post is live at
/blog/your-slugand added to your sitemap
From draft to live in about 60 seconds.
What ships for SEO
Every post automatically gets:
- A
<title>and<meta description>populated from frontmatter - Open Graph tags (
og:type=article, published/modified times, author) - Twitter card metadata
- JSON-LD Article schema with publisher = your branding's legal entity name
- A canonical URL
- Inclusion in your
sitemap.xml
You don't have to configure any of it — it ships in the boilerplate.
What's next
Obvious extensions for when you outgrow v1:
- RSS / Atom feed at
/blog/feed.xml - Tag index pages at
/blog/tags/[tag] - Pagination on the index page
- Cover images and dynamic OG image generation
- Custom MDX components (callouts, embeds)
None ship in v1 — deliberately deferred until there's a real need.
Happy writing.