Writing Content
Content lives in your vault’s blog/ and docs/ folders as plain Markdown files. Nothing is published unless you explicitly opt in.
Frontmatter fields
Every file can include YAML frontmatter between --- fences. All fields except title are optional.
| Field | Type | Default | Description |
|---|---|---|---|
title | string | — | Required. Page title. Build fails without it. |
publish | boolean | false | Set to true to include the page in the built site. |
date | string | — | Publication date in YYYY-MM-DD format. Used for sorting and RSS. |
author | string | string[] | — | Single author name or an array: ["Alice", "Bob"]. |
featured_image | string | — | Path relative to vault root, e.g. img/hero.jpg. |
description | string | — | Short summary. Used in OG meta tags and RSS. |
tags | string[] | — | Tag list, e.g. [writing, tutorial]. Enables tag pages at /tags/[tag]. |
reading_time | number | — | Estimated read time in minutes. Auto-set by karaoke-enrich if you use it. |
comments | boolean | — | Override the module default. Blog defaults to true, docs to false. |
Example frontmatter
---
title: "Getting Started with Astro"
publish: true
date: 2026-03-10
author: "Alice"
featured_image: "img/astro-banner.jpg"
description: "A practical introduction to building static sites with Astro."
tags: [astro, tutorial, beginner]
reading_time: 6
comments: true
---
Draft workflow
Files are private by default. Use this workflow to write drafts and publish when ready:
- Create a new
.mdfile inblog/ordocs/. - Write freely — without
publish: true, the file never enters the build. - When the post is ready, add
publish: trueto the frontmatter. - Rebuild the site. The page now appears in navigation, RSS, and search.
To unpublish, remove publish: true or set it to false. The page disappears from the next build.
AI enrichment (optional)
Run npx @karaoke-cms/enrich to auto-generate description, tags, and reading_time for published notes using OpenAI or Anthropic. Already-enriched notes are skipped via a local cache. You can also set up karaoke-enrich as a pre-commit hook to enrich notes automatically on commit.
Fields set by enrichment are written directly into the frontmatter of the source file — you can edit or override them at any time.