Blog
Publique posts como conteúdo, obtenha um feed RSS e dados estruturados de artigo gratuitamente, e crie uma página de índice personalizada.
Um blog no Blume é apenas conteúdo com um tipo. Marque uma página com type: blog e o Blume lhe dá automaticamente um feed RSS e metadados de artigo mais ricos. Diferentemente do changelog, não há página de índice gerada — você compõe a página inicial por conta própria, o que mantém o design inteiramente em suas mãos.
Escreva um post
Um post é uma página .md ou .mdx comum com type: blog em seu frontmatter. Por convenção, os posts ficam em blog/, mas o que importa é o tipo — não a pasta:
---
title: Introducing Blume
type: blog
date: 2026-06-22
description: Why we built a markdown-first docs framework.
---
Documentation should be fast, AI-ready, and zero-config — down to not needing a starter template at all. Here's the thinking behind Blume.
Dê a cada post uma date para que os itens do feed sejam ordenados do mais recente para o mais antigo e carreguem uma pubDate, e uma description — ela é usada tanto no resumo do feed quanto no SEO.
O feed RSS
O Blume cria um feed do blog em /blog/rss.xml, ordenado do mais recente para o mais antigo por date. Feeds precisam de uma URL absoluta do site, então defina deployment.site; o Blume então injeta uma tag <link rel="alternate"> em todas as páginas para que os leitores a descubram automaticamente.
O feed está ativado por padrão. Ajuste-o em seo.rss:
seo: {
rss: {
enabled: true,
types: ["blog", "changelog"],
limit: 50,
},
}
Remova "blog" de rss.types para dispensar o feed.
Dados estruturados
Quando os dados estruturados estão ativados, cada post é emitido como um BlogPosting do schema.org com sua descrição e data de publicação — o tipo de artigo mais rico que os mecanismos de busca esperam para conteúdo de blog.
Criando um índice
O Blume não gera uma página inicial /blog, então você a constrói. A opção mais simples é uma página de conteúdo que liga a cada post manualmente:
---
title: Blog
description: News and writing from the team.
---
<CardGroup cols={2}>
<Card title="Introducing Blume" href="/blog/introducing-blume">
Why we built a markdown-first docs framework.
</Card>
</CardGroup>
Para listar os posts automaticamente, adicione uma página personalizada em pages/blog/index.astro que leia da coleção de conteúdo docs do Astro e associe cada entrada à sua rota vinda de blume:data:
---
import { getCollection } from "astro:content";
import data from "blume:data";
const routeById = new Map(data.routes.map((route) => [route.id, route.path]));
const posts = (await getCollection("docs"))
.filter((entry) => entry.data.type === "blog" && !entry.data.draft)
.map((entry) => ({
date: entry.data.date,
description: entry.data.description,
href: routeById.get(entry.id),
title: entry.data.title,
}))
.toSorted((a, b) => Number(new Date(b.date)) - Number(new Date(a.date)));
---
<ul>
{
posts.map((post) => (
<li>
<a href={post.href}>{post.title}</a>
<p>{post.description}</p>
</li>
))
}
</ul>
Veja Páginas Personalizadas para envolver isso no layout completo do site.