Metadados
As tags de head que toda página renderiza — title, description, canonical, Open Graph e tags de card do X — e como sobrescrevê-las por página a partir do frontmatter.
Toda página renderiza as tags <head> padrão a partir da sua config e do frontmatter — sem nenhuma configuração necessária. Quando um valor pode ser ajustado, ele fica sob a chave seo no blume.config.ts ou sob seo no frontmatter de uma página.
<title>— o título da página mais otitledo seu site.<meta name="description">eog:description— adescriptionda página, com fallback para adescriptiondo site.og:titleeog:site_name— o título da página e otitledo seu site.<link rel="canonical">eog:url— a URL absoluta da página (quandodeployment.siteestá definido).og:type—articleem posts de blog e entradas de changelog,websiteno restante. Páginas de artigo também emitemarticle:published_timeearticle:modified_timea partir dadateda página e do timestamp de última modificação.og:image— a imagem OG da página. Um card gerado também declara seusog:image:width,og:image:height,og:image:typeeog:image:alt, para que um crawler consiga montar o layout do card sem precisar buscá-lo antes; umseo.imageque você mesmo fornece não declara nenhum desses, já que seu tamanho e formato são desconhecidos.twitter:card,twitter:title,twitter:description,twitter:image— o card do X. Páginas com imagem recebem a variante largasummary_large_image; páginas sem imagem ainda recebem o card compactosummaryem vez de aparecerem como um link simples.
Atribuição no X
O X lê todo o resto do card a partir das tags og:*, então os únicos valores que ele não consegue inferir são as contas a creditar. Defina-as sob seo.x e o Blume emite twitter:site (a conta do seu site) e twitter:creator (a do autor). O @ é opcional — acme e @acme funcionam do mesmo jeito.
seo: {
x: { handle: "@acme", creator: "@jane" },
}
Uma página pode reivindicar seu próprio autor, que é o que você quer para um post convidado:
---
title: How we shipped it
seo:
x:
creator: "@guestauthor"
---
Suas próprias tags
Para qualquer coisa para a qual o Blume não tem uma opção, adicione tags sob seo.metatags e todas as páginas vão carregá-las, incluindo páginas personalizadas e referências de API. Isso serve para tokens de verificação de site do Google, Bing ou Facebook, um theme-color ou um banner de app:
seo: {
metatags: {
"google-site-verification": "abc123",
"msvalidate.01": "def456",
"theme-color": "#0b5fff",
"apple-itunes-app": "app-id=123456789",
},
}
Cada chave é o nome da tag e cada valor, o seu conteúdo. As famílias do Open Graph (og:, fb:, article: e as demais) são renderizadas com property, como o protocolo as nomeia, e todo o resto com name. As tags que o próprio Blume escreve, listadas no topo desta página, não podem ser definidas aqui, então uma página nunca carrega dois valores para a mesma tag. O build informa qual opção controla cada uma: og:image vem de seo.og ou do seo.image de uma página, e robots vem do seo.noindex de uma página.
Sobrescritas por página
Sobrescreva qualquer uma das outras tags por página com o frontmatter seo:
---
title: Pricing
description: Plans and pricing for every team size.
seo:
title: Plans and pricing
canonical: https://acme.com/pricing
noindex: false
---
seo.title?string
Replace the page's title in <title>, og:title, and twitter:title. Your site title is still appended: on a site titled Acme Docs, the example above renders “Plans and pricing - Acme Docs”.
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.
stringUma página com noindex também sai do sitemap e pula os dados estruturados.