Live demo — shared accounts, sample data, reset regularly. Don't enter anything real.Get the source

Recipe: Add a blog post

Recipe: Add a blog post

  1. Create content/blog/your-slug.mdx — the filename (minus .mdx) is the URL slug (/blog/your-slug).
  2. Add frontmatter:
    ---
    title: "Your post title"
    description: "One sentence — becomes the meta description and OG description."
    date: "2026-08-26"
    tags: ["nextjs"]       # optional, first tag shows on the index card
    published: true        # optional, omit or set false to keep it a draft
    ---
  3. Write the body in Markdown/MDX below the frontmatter — standard Markdown plus GFM tables/strikethrough (remark-gfm) and fenced code blocks get Shiki syntax highlighting automatically (```ts → highlighted TypeScript).
  4. Verify: npm run dev, visit /blog — the new post appears (newest date first), and /blog/your-slug renders with headings, code blocks, and the JSON-LD Article script in the page source. Setting published: false removes it from both the index and the sitemap while still being reachable if you know the direct URL — remove the flag (or delete the file) to unpublish for real.
  5. npm run build — the post's route shows up as a prerendered (●) static page, alongside the others, and /sitemap.xml includes its URL.