Metadata
The head tags every page renders — title, description, canonical, Open Graph and X card tags — and how to override them per page from frontmatter.
Every page renders the standard <head> tags from your config and frontmatter — no configuration needed. Where a value can be tuned it lives under the seo key in blume.config.ts or under seo in a page’s frontmatter.
<title>— the page title plus your sitetitle.<meta name="description">andog:description— the pagedescription, falling back to the sitedescription.og:titleandog:site_name— the page title and your sitetitle.<link rel="canonical">andog:url— the page’s absolute URL (whendeployment.siteis set).og:type—articleon blog posts and changelog entries,websiteelsewhere. Article pages also emitarticle:published_timeandarticle:modified_timefrom the page’sdateand last-modified timestamp.og:image— the OG image for the page. A generated card also declares itsog:image:width,og:image:height,og:image:type, andog:image:alt, so a crawler can lay the card out without fetching it first; anseo.imageyou supply yourself declares none of these, since its size and format are unknown.twitter:card,twitter:title,twitter:description,twitter:image— the X card. Pages with an image get the widesummary_large_imagevariant; pages without one still get the compactsummarycard rather than rendering as a bare link.
X attribution
X reads everything else on the card from the og:* tags, so the only values it can’t infer are the accounts to credit. Set them under seo.x and Blume emits twitter:site (your site’s account) and twitter:creator (the author’s). The @ is optional — acme and @acme both work.
seo: {
x: { handle: "@acme", creator: "@jane" },
}
A page can claim its own author, which is what you want for a guest post:
---
title: How we shipped it
seo:
x:
creator: "@guestauthor"
---
Per-page overrides
Override any of the other tags per page with seo frontmatter:
---
title: Pricing
description: Plans and pricing for every team size.
seo:
title: Pricing — Acme
canonical: https://acme.com/pricing
noindex: false
---
seo.title?string
Override the <title> and og:title for this page.
stringseo.description?string
Override the meta + og:description.
stringseo.image?string
Custom social image (see Open Graph images).
stringseo.canonical?string
Override the canonical URL.
stringseo.noindex?boolean
Emit robots noindex and skip structured data.
booleanseo.x.creator?string
Credit this page to an X account (twitter:creator), overriding seo.x.creator from your config.
stringA noindex page also drops out of the sitemap and skips structured data.