The YAML block at the top of a Markdown file is called Front Matter, describing page metadata such as title, identifier, and timestamps. everkm-publish reads these fields when indexing content.
Minimal Example
Create HOME.md in the site root:
---
title: Welcome
slug: index
created_at: 2026-06-19T10:00:00+08:00
---
This is the homepage body content.
After saving, run everkm-publish serve and open http://localhost:9081 in your browser to see the rendered result.
Common Fields
| Field | Required | Description |
|---|---|---|
title | Recommended | Page title; used to auto-generate slug when slug is not specified |
slug | Recommended | URL path segment; commonly index for the homepage |
created_at | Recommended | Creation time, RFC3339 format |
updated_at | Optional | Update time, RFC3339 format |
id | Optional | Stable unique ID; lint can auto-fill this |
tags | Optional | Post tags (array of strings); normalized at index time—see below |
summary | Optional | Summary; when omitted, the index auto-extracts one from the body |
The old field date is deprecated; please use created_at. lint --auto-fix can migrate it automatically. The legacy categories field is no longer used for list filtering—use tags instead.
Time Format
RFC3339, for example:
created_at: 2026-06-19T10:00:00+08:00
updated_at: 2026-06-19T15:30:00+08:00
slug and URL
- A file
blog/hello.mdwithslug: hellotypically generates/blog/hello-{id}.html(depends onfolders.url_id_suffix) - Directory index page:
slug: indexor filenameindex.md - Root directory
HOME.mdwithslug: indexserves as the site homepage
URL rules are detailed at Directory Configuration.
Post tags
tags:
- Rust
- hello world
- tech/rust
After you write tags in Front Matter, the index normalizes them into a site-wide format used for tag pages, links, and posts() filtering:
- Letters, digits, and characters such as Chinese are kept; case is preserved. Spaces and other symbols become hyphens (e.g.
hello world→hello-world); consecutive hyphens are collapsed. - Use
/for multi-level tags:tech/rustattaches both the parent and the full path, so the “tech” tag page also lists the post. - Entries that are only symbols and cannot form a valid tag are dropped (e.g.
+++). - Business exclusion tags such as
privatestill work as before (lists exclude posts taggedprivateby default)—see Everkm Markdown Format and theposts()docs.
When themes display multi-level tags, they typically show the internal connector as / again. For filtering or building tag URLs, use the normalized values (multi-level form like tech__rust)—see Built-in Functions.
Pre-publish Check
everkm-publish lint ./my-site
# Auto-fix: fill in id, date -> created_at, resolve some slug conflicts, etc.
everkm-publish lint ./my-site --auto-fix
lint checks Front Matter completeness and slug uniqueness, and reports [[...]] internal link ambiguities in the body by line number. See Export and Publish.
Auto-fix a single file during preview:
everkm-publish serve --auto-fix-on-update
Body and Heading
If the first h1 in the body has the same text as the Front Matter title, it will be automatically hidden during rendering to avoid duplicate heading display. See Everkm Markdown Format.
Next Steps
- Everkm Markdown extensions (internal links, macros, dCard): Links and Inner Links, Everkm Markdown Format
- Documentation site chapter navigation: Navigation and Table of Contents
- Multilingual content directories: Internationalization (i18n)