Saltar para o conteúdo
Blume is now publicly available.
Blume
Português
Esc
navegarabrir⌘Jpré-visualizar
Nesta página

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.

Esta página foi útil?