Front Matter
Front matter é um bloco YAML opcional no início de cada arquivo .seed, delimitado por ---. Ele configura metadados e comportamento da página.
Referência completa
| Chave | Tipo | Descrição |
|---|---|---|
title | string | Título da página — aparece na tag <title> |
description | string | Descrição da página — gera <meta name="description"> no <head> (útil para SEO) |
og_description | string | Sobrescreve description apenas na tag og:description — o <meta name="description"> continua usando description |
lang | string | Idioma da página — atributo lang do <html> (ex: "pt-BR", "en") |
layout | string ou false | Caminho para um layout específico, relativo ao arquivo .seed. Se omitido, o Seed busca default.layout automaticamente. Use false para desativar o layout na página. |
css | string ou lista | Arquivo(s) CSS a incluir no <head> (ex: /static/tema.css) |
js | string ou lista | Arquivo(s) JS a incluir antes do </body> (ex: /static/meu-script.js) |
favicon | string | URL do ícone da aba do browser — gera <link rel="icon" href="..."> no <head> (ex: /static/favicon.ico) |
body-class | string | Classes CSS adicionadas ao elemento <body> da página |
publish_date | data ou datetime | Início da publicação. Página fica oculta do build até essa data. Alimenta datePublished (JSON-LD) e article:published_time |
update_date | data ou datetime | Última atualização. Alimenta dateModified (JSON-LD), article:modified_time e <lastmod> do sitemap |
expire_date | data ou datetime | Fim da publicação (exclusivo). Página some do build a partir dessa data |
creation_date | data ou datetime | Data de criação, apenas informativa — nunca inferida automaticamente |
draft | bool | draft: true marca a página como rascunho — ela não é construída: não vai para dist/, nem para o sitemap, nem para o llms.txt |
image | string ou false | Imagem social (og:image/twitter:image). false desativa até a imagem global do seed.yaml |
image_alt / image_width / image_height | string / número | Metadados da imagem social — og:image:alt, og:image:width, og:image:height (e equivalentes Twitter) |
alt | string | Atalho para image_alt — usado como fallback quando image_alt não está definido |
og_type | string | Sobrescreve og:type (padrão: article quando há publish_date, senão website) |
schema_type | string | Sobrescreve o @type do JSON-LD gerado (padrão: Article) — ex: BlogPosting, NewsArticle |
author, author_name, author_url, author_sameas | bool / string | Autoria da página. Veja SEO & Metadados para a precedência completa (página → coleção → person: global) |
hreflang | lista | Alternativas de idioma explícitas ({lang, href}) — Seed nunca inventa URLs traduzidas |
robots / noindex | string / bool | <meta name="robots">. noindex: true também remove a página do sitemap |
sitemap | bool | sitemap: false remove a página do sitemap sem afetar indexação |
llms | bool | llms: false exclui a página apenas do llms.txt/llms-full.txt — o resto do build não é afetado |
tags | lista | Tags de um item de coleção — alimentam as páginas de arquivo por tag (tags: true na coleção) |
Para o conjunto completo de campos de SEO/metadados (Open Graph, Twitter Cards, JSON-LD, breadcrumbs), veja SEO & Metadados.
Exemplos
Página simples
```seed --- title: Home lang: pt-BR --- ```
Com CSS e JS
```seed --- title: Dashboard lang: pt-BR css: /static/dashboard.css js: - /static/chart.min.js - /static/dashboard.js --- ```
Com descrição para SEO
```seed --- title: Sobre nós description: Conheça a equipe e a missão da empresa. --- ```
Com favicon
```seed --- title: Minha Página favicon: /static/favicon.ico --- ```
O favicon pode ser definido no layout para aplicar a todas as páginas, ou em páginas individuais para sobrescrever o padrão do layout.
No build, se nenhuma página definir favicon, o Seed injeta automaticamente um favicon padrão com path relativo — sem erros 404.
Com classes no body
```seed --- title: Página escura body-class: bg-gray-950 text-white min-h-screen --- ```
Isso gera: <body class="bg-gray-950 text-white min-h-screen">
Valores padrão no build
Quando uma chave não é definida no front matter, o Seed aplica automaticamente:
| Chave | Fallback automático |
|---|---|
title | Nome do arquivo sem extensão (ex: about.seed → about) |
description | Valor de title (definido ou gerado) |
favicon | Favicon padrão do Seed copiado para dist/static/favicon.ico |
Uso no template
Qualquer valor definido no front matter (incluindo campos customizados) pode ser acessado no template .seed ou no layout usando a sintaxe de chaves {chave}:
```seed
---
title: Meu Projeto
author: Ana Silva
---
@h1
{title}
@p
Escrito por: {author}
```Isso funciona tanto no corpo do arquivo .seed quanto no arquivo de layout. Se a chave não existir, o texto {chave} permanece literal no HTML final.
Merge com o layout
O front matter da página se mescla com o do layout — a página sempre tem a palavra final. Para body-class, o merge é inteligente: as classes são combinadas usando a mesma regra dos componentes, onde a página vence conflitos por tipo de classe.
Exemplo: se o layout define body-class: font-sans antialiased e a página define body-class: bg-gray-950 text-white, o resultado é font-sans antialiased bg-gray-950 text-white — as classes de tipografia do layout são preservadas e as classes de cor da página são adicionadas.