Collections
Toda pasta cujo nome começa com _, exceto _errors, é uma Collection. A pasta precisa conter _collection.yaml; sua pasta pai precisa conter index.blade.php ou index.mdx como página-mãe irmã.
Content/Pages/blog/
├── index.blade.php
├── meta.yaml
└── _posts/
├── _collection.yaml
├── primeiro.mdx
└── 2026/segundo.mdx
O segmento _posts é removido antes do roteamento normal. Os itens acima geram /blog/primeiro e /blog/2026/segundo.
_collection.yaml
type: article
mdx_source: true
feed: true
defaults:
sitemap:
priority: 0.7
changefreq: monthly
social:
openGraph:
article:
section: Blog
type é obrigatório e string. defaults, quando presente, precisa ser um mapa de metadata válido; title não é exigido nesse mapa.
feed: true publica Atom e RSS para os itens MDX indexáveis da Collection em
/manual/atom.xml e /manual/rss.xml (ou no caminho da página-mãe). O título
e a descrição vêm da página-mãe. Itens Blade são ignorados. O conteúdo completo
é publicado em HTML, e a página-mãe anuncia os dois feeds no <head>.
Uma Collection composta somente por MDX pode publicar todo o seu conteúdo em um único arquivo Markdown:
type: article
llms_full:
output: llms-full.txt
order_by:
- extra.nav.sectionOrder
- extra.nav.pageOrder
A presença de llms_full habilita a saída. output é obrigatório, relativo à rota da página-mãe, precisa terminar em .txt e não aceita caminho absoluto ou segmentos ./... order_by aceita dot-paths de metadata em ordem crescente; quando ausente, usa title. Valores ausentes ficam por último, e title e path são desempates determinísticos.
Para disponibilizar as fontes originais dos itens, habilite mdx_source: true no _collection.yaml. Cada item indexável recebe uma cópia literal do arquivo em uma URL com o sufixo .mdx: /blog/primeiro também fica disponível em /blog/primeiro.mdx. O arquivo mantém o front matter completo, Markdown, HTML e componentes Blade escritos pelo autor; nada é executado nessa saída. O llms.txt lista a fonte ao lado da página HTML. Collections com itens Blade não podem habilitar esse recurso.
Para uma página-mãe /manual e output: llms-full.txt, o arquivo público é /manual/llms-full.txt. O consolidado usa título e descrição da página-mãe, remove o front matter, cria um H2 por item, informa sua URL absoluta e normaliza os headings internos sem alterar code fences. Itens noindex ficam de fora. A presença de Blade, uma colisão com rota ou outra saída e configuração insegura interrompem o build. O llms.txt raiz aponta para cada consolidado habilitado.
Slugs aceitos:
article
book
profile
music.album
music.playlist
music.radio_station
music.song
video
Somente article possui enriquecimento automático: datas Git podem produzir publishedTime e modifiedTime. Os demais tipos são reconhecidos, mas não possuem DTO de metadata de usuário ou preenchimento automático no pipeline atual.
Agregação
Todas as páginas recebem $items['posts'], incluindo a página-mãe, cada item e
páginas independentes como a home. Cada elemento é um ContentSummary somente
leitura:
| Propriedade | Origem |
|---|---|
title |
metadata title |
path |
rota calculada |
excerpt |
description |
date |
criação no Git; fallback para mtime |
cover |
social.image explícito |
extra |
mapa livre do item |
readingTime |
tempo de leitura gerado do corpo MDX; nulo para Blade |
Os resumos são ordenados por date decrescente. Empates preservam apenas o resultado da ordenação executada; não há segundo critério documentado. Filtragem, paginação e outra ordem pertencem ao Blade consumidor.
Collections irmãs com nomes diferentes são chaves diferentes em $items. O nome é usado globalmente para configuração e agregação; nomes repetidos em áreas distintas podem misturar itens e sobrescrever a associação da página-mãe. Use nomes globalmente únicos e não aninhe Collections.
Precedência
Da menor para a maior precedência:
defaultsda Collection;- datas Git do tipo
article; - metadata já resolvida do item.
O merge é raso no nível raiz. Declarar social, sitemap ou extra substitui o bloco anterior inteiro. O item é validado antes da aplicação dos defaults; portanto defaults.title não pode fornecer o título ausente.
Sem histórico Git, o resumo usa mtime e emite warning. O build falha se faltar configuração ou página-mãe, se o tipo for desconhecido, se defaults não for mapa, se mdx_source não for booleano, se llms_full for inválido, se uma Collection habilitar mdx_source ou llms_full com item Blade, ou se a metadata for inválida. feed ignora itens Blade e publica apenas os itens MDX indexáveis. Pastas utilitárias _nome também são Collections e ficam sujeitas a essas regras.