Skip to content
Blume
English
Esc
navigateopen⌘Jpreview
On this page

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 site title.
  • <meta name="description"> and og:description — the page description, falling back to the site description.
  • og:title and og:site_name — the page title and your site title.
  • <link rel="canonical"> and og:url — the page’s absolute URL (when deployment.site is set).
  • og:typearticle on blog posts and changelog entries, website elsewhere. Article pages also emit article:published_time and article:modified_time from the page’s date and last-modified timestamp.
  • og:image — the OG image for the page. A generated card also declares its og:image:width, og:image:height, og:image:type, and og:image:alt, so a crawler can lay the card out without fetching it first; an seo.image you 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 wide summary_large_image variant; pages without one still get the compact summary card 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
---
PropType
seo.title?string

Override the <title> and og:title for this page.

Typestring
seo.description?string

Override the meta + og:description.

Typestring
seo.image?string

Custom social image (see Open Graph images).

Typestring
seo.canonical?string

Override the canonical URL.

Typestring
seo.noindex?boolean

Emit robots noindex and skip structured data.

Typeboolean
seo.x.creator?string

Credit this page to an X account (twitter:creator), overriding seo.x.creator from your config.

Typestring

A noindex page also drops out of the sitemap and skips structured data.

Was this page helpful?