Getting Started
System setup
Prerequisites: Node.js 20+, npm, Obsidian.
Create a new project:
npm create @karaoke-cms@latest my-site
cd my-site
Open the project folder in Obsidian as a vault. Configure karaoke.config.ts:
export default {
title: "My Site",
description: "What this site is about.",
vault: "./karaoke-template-vault/",
theme: "@karaoke-cms/theme-default",
};
Add two secrets to your GitHub repository for deployment:
| Secret | Where to get it |
|---|---|
CLOUDFLARE_API_TOKEN | Cloudflare dashboard → API Tokens |
CLOUDFLARE_ACCOUNT_ID | Cloudflare dashboard → Account overview |
Push to main — GitHub Actions builds and deploys to Cloudflare Pages automatically.
Open in Obsidian
Your project root is an Obsidian vault. Open this folder in Obsidian to write content with full wikilink navigation, templates, and graph view.
Configure your site
Edit karaoke.config.ts to set your title, theme, and modules:
const config: KaraokeConfig = {
title: "My Site",
description: "What this site is about.",
theme: "default", // or "minimal"
modules: {
search: { enabled: true },
},
};
Write content
- Blog posts →
content/blog/ - Documentation →
content/docs/ - Add
publish: trueto make a file public - Push to
main→ your site deploys automatically via GitHub Actions + Cloudflare Pages
Frontmatter reference
---
title: "My Post" # required
publish: true # required to appear on site
date: 2026-01-15 # optional, YYYY-MM-DD
author: "Name" # optional
description: "..." # optional, used in OG tags and RSS
tags: [tag1, tag2] # optional
---
Learn more
The Handbook explains everything — it lives inside your vault and is visible at /karaoke-cms in dev mode.