blog.json sits at the root of your site folder. Every setting is optional except name, and the whole file is optional too, so without it the site builds with the defaults below and the site name from the dashboard.
JSON Schema
Start the file with$schema to get autocomplete and inline errors in VS Code, Cursor, Zed and JetBrains editors:
blog.json
Validation
Every build checksblog.json before it builds anything, and mistakes stop the build, with the deployment log and the GitHub check naming the setting and what to change:
- Notra ignores an unknown top-level setting with a warning that suggests the closest match, like
Unknown setting "navBar" is ignored. Did you mean "navbar"?. - Unknown keys inside
authors,integrationsandsecuritystop the build, because a typo there would silently turn something off. - Notra ignores other unknown nested keys.
Site
Design
See Design and CSS.Navigation
See Logo, navigation and banner.
Link labels are up to 60 characters.
Blog
See Layouts.Changelog
Authors
authors is an object of author id → author. See Authors.
SEO
See SEO, share images and redirects.Redirects
redirects is a list of up to 500 rules. See Redirects.
Variables
variables is an object of name → value, used as {{ name }} in posts. See Variables.
Names start with a letter and use letters, digits, _ and -, up to 40 characters, and values are up to 500 characters. Variables also work in description, banner.content and the title and description of blog and changelog.
Integrations
See Analytics and scripts.Security
See Content-Security-Policy.Full example
blog.json