Article Metadata

2026-08-02

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

FieldRequiredDescription
titleRecommendedPage title; used to auto-generate slug when slug is not specified
slugRecommendedURL path segment; commonly index for the homepage
created_atRecommendedCreation time, RFC3339 format
updated_atOptionalUpdate time, RFC3339 format
idOptionalStable unique ID; lint can auto-fill this
tagsOptionalPost tags (array of strings); normalized at index time—see below
summaryOptionalSummary; 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.md with slug: hello typically generates /blog/hello-{id}.html (depends on folders.url_id_suffix)
  • Directory index page: slug: index or filename index.md
  • Root directory HOME.md with slug: index serves 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 worldhello-world); consecutive hyphens are collapsed.
  • Use / for multi-level tags: tech/rust attaches 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 private still work as before (lists exclude posts tagged private by default)—see Everkm Markdown Format and the posts() 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