Configuration
All the site settings live in a single file — markdown-publish.config.json in the repository root (next to the notes folder).
{
"siteName": "My Notes",
"siteDescription": "Notes and ideas",
"siteLang": "en",
"siteUrl": "https://your-username.github.io/your-repo-name",
"siteFooter": "",
"vaultDir": "vault",
"buildMode": "full",
"baseHref": "/",
"out": "dist"
}
What each key means
| Key | What it does | Default |
|---|---|---|
siteName |
The name in the header and in <title> |
the vault folder name |
siteDescription |
Description for search engines and social networks | — |
siteLang |
Content language (ru, en, …) |
en |
siteUrl |
The site's full URL — needed for the sitemap and OG cards | — |
siteFooter |
A caption at the bottom of the sidebar (empty — not shown) | — |
vaultDir |
The notes folder inside the repository | . (root) |
buildMode |
full — all notes are published; public — only those with publish: public in the frontmatter |
full |
baseHref |
The site's sub-path. For GitHub Pages — /your-repo-name/, for Netlify/Vercel/Cloudflare — / |
/ |
out |
Where to put the built site | dist |
Settings priority
CLI flags override environment variables, which override the config file, which overrides the defaults.
Hidden notes
In buildMode: public mode, only notes that have this at the top of the file get published:
---
publish: public
---
The rest won't make it onto the site, into the search, or into the graph.
The number one gotcha — baseHref
If the site opens but looks broken and notes don't load, it's almost certainly baseHref. See FAQ.