Pular para o conteúdo
Navegar na documentação
Nesta página

Metadata

Chaves desconhecidas são erros em todos os blocos tipados. Somente extra aceita chaves livres.

MDX recebe ainda o campo gerado readingTime, que não pode ser declarado no front matter. Ele é um objeto com words, images, minutes e text; o campo fica nulo em páginas Blade.

Campos de nível raiz

Campo Tipo Obrigatório Default
title string não vazia sim nenhum
description string ou null não null
date data ISO-8601 não data do Git
cover string não vazia ou false não covers.cover
showInNav bool não false
navLabel string ou null não último segmento quando showInNav
extra mapa/array livre não vazio
robots string de tokens não tag omitida
sitemap mapa em rota indexável nenhum
social mapa não cards automáticos

Cover

cover seleciona a view Blade usada para gerar a imagem social da rota:

cover: covers.article

A view é procurada em Content/Views e recebe as mesmas variáveis da rota, além de $assets, $cover, $domain, $fontStylesheet e $fontPreloads. Use $cover->asset('/'.$fontStylesheet) para carregar o stylesheet local de fontes quando ele existir e $cover->asset($fontPreload) para preloads; para outros CSS ou fontes publicados, use $cover->asset($assets->path('css/nome.css')). Durante o build, esses recursos são servidos por um php -S temporário sobre dist/. Use cover: false para não gerar o arquivo. Em MDX, o campo participa da cascata de _defaults.yaml; itens de Collection também podem herdá-lo de defaults em _collection.yaml. A página-mãe configura a própria cover em seu metadata e não transmite esse valor automaticamente aos itens. Veja o fluxo completo, incluindo layout e CSS da imagem, em Personalizar templates, componentes e covers.

Robots

robots aceita index, noindex, follow e nofollow, separados por vírgula. A saída é normalizada para uma diretiva de indexação e uma de links. Uma rota com noindex não entra no sitemap ou llms; páginas de erro nunca são indexáveis.

Sitemap

sitemap:
  priority: 0.7
  changefreq: monthly

Os dois campos são obrigatórios no bloco. priority é número entre 0 e 1. changefreq aceita always, hourly, daily, weekly, monthly, yearly ou never.

Social

social:
  image: https://cdn.example.com/card.png
  url: https://example.com/url-social
  openGraph:
    type: article
    article:
      publishedTime: "2026-08-17T10:00:00-03:00"
      modifiedTime: "2026-08-17T11:00:00-03:00"
      expirationTime: null
      author:
        - https://example.com/autores/ana
      section: Engenharia
      tag:
        - php
        - blade
  twitterCard:
    card: summary_large_image

social.image e social.url são strings ou null. openGraph.type e twitterCard.card são validados somente como strings ou null. No bloco article, datas e section são strings ou null; author e tag precisam ser arrays, mas o tipo de cada elemento não é validado.

Quando openGraph existe sem type, seu default é article. Quando twitterCard existe sem card, seu default tipado é summary. Sem bloco social, os defaults automáticos usam a capa da rota e Twitter summary_large_image. Com cover: false, os grupos Open Graph e Twitter são omitidos, exceto quando social.image fornece outra imagem.

Efeitos no head

Toda página normal recebe charset UTF-8, viewport, regras declarativas de prerender com eagerness moderate, três favicons, canonical, hreflang derivado de site.locale (normalizado para BCP47, como pt_BRpt-BR) e theme color. Links autorais com data-prefetch podem gerar no máximo dois prefetches por página. Páginas de erro recebem noindex, mas omitem canonical e hreflang. Open Graph e Twitter Card são incluídos quando existe uma cover gerada ou social.image explícito.

Na home, <title> é o título puro. Nas demais rotas, ele é title | site.name. description, quando presente, gera meta description e alimenta os cards.

Sem social.image, a imagem é /cover.png na home ou /<rota>/cover.png. Páginas de erro seguem a mesma regra e também recebem o arquivo correspondente. URLs root-relative em social.image e social.url recebem site.basePath; URLs absolutas permanecem intactas. Canonical deriva de site.domain, site.basePath e da rota com barra final.

Open Graph recebe site.locale e site.name. Twitter recebe site.twitter.site, site.twitter.creator e alt automático. JSON-LD WebSite aparece somente na home. JSON-LD Article aparece quando social.openGraph.article existe.

Arquivos globais

sitemap.xml inclui todas as rotas indexáveis e usa data de modificação do Git. A política de fallback é configurada em content.dates.policy; mtime usa o mtime com warning, fail interrompe o build e explicit exige o campo date.

robots.txt permite crawling, aponta ao sitemap, explicita crawlers de IA conhecidos e emite Content-Signal: ai-train=yes, search=yes, ai-input=yes. Ele não é derivado do robots de cada página.

llms.txt usa nome e descrição do site. Toda rota indexável reconhecida como página-mãe gera uma seção de resumos; as demais rotas não cobertas aparecem em Pages. Uma Collection com llms_full acrescenta nessa seção um link para seu conteúdo Markdown consolidado; uma Collection com mdx_source: true acrescenta um link .mdx ao lado de cada item.

llms.about adiciona prosa e llms.external_resources adiciona links externos conforme a Configuração.