Skip to main content
Every post starts with a frontmatter block between --- lines, and the rest of the file is Markdown or MDX, with components if you need them.

Blog posts

blog/2026/launch.mdx

Changelog entries

changelog/2026-10-01.mdx
author, updated and noindex only apply to blog posts, and Notra ignores unknown fields. When the frontmatter is missing or wrong, the build stops and names the file and the field.

Authors

Describe the people who write for you once in blog.json, then name them by id in a post’s author:
blog.json
Notra lists a known author with avatar and title under “Written by”, beside the post in the wide layout or under the title otherwise, and gives them an author page at /blog/author/jan listing their posts. Search engines and AI answers get a schema.org Person with the profile links, which ties the post to a real person. Notra shows any other value in author, like author: Guest Writer, as a plain name. Notra hides author pages from search engines unless you set "seo": { "indexing": "all" }.

Images

Put images in public/ and use paths from the root of the site:
  • image in the frontmatter is the cover at the top of the post, on cards (when blog.card.image is on) and the social preview, and since social networks don’t show SVG, use PNG or JPEG.
  • Posts without an image get a generated share image with the title, your site name and your brand color. See Share images.
  • Wrap a screenshot in <Frame> to give it a border and a caption.

Drafts

draft: true keeps a post off the live site, its feeds and sitemaps, but shows it in every preview. Remove the line or set it to false to publish. Drafts you write in the Notra editor work differently, because they never reach the repository until you publish them.

Variables

Define values once in blog.json and use them in any post with {{ name }}:
blog.json
Variables work in posts, changelog entries, their frontmatter, header.mdx, footer.mdx and slots. Notra leaves them as they are inside code, so to show the braces themselves, put them in inline code like `{{ name }}`. An unknown name shows a warning in the build log and stays as written. In frontmatter, Notra doesn’t replace variables in values that contain characters like :, #, @ or quotes. See variables for the rules.

Posts published from Notra

When you publish a post from Notra to a site, Notra writes the frontmatter for you with the title, description, date, the cover image and you as the author, using your blog.json id when the name matches.
Last modified on October 8, 2026