Blog
Veröffentliche Beiträge als Inhalte, erhalte kostenlos einen RSS-Feed und strukturierte Artikeldaten und erstelle eine eigene Übersichtsseite.
Ein Blog ist in Blume einfach Inhalt mit einem Typ. Markiere eine Seite mit type: blog und Blume stattet sie automatisch mit einem RSS-Feed und umfangreicheren Artikel-Metadaten aus. Anders als beim Changelog wird keine Übersichtsseite generiert – die Landingpage stellst du selbst zusammen, wodurch das Design vollständig in deiner Hand bleibt.
Einen Beitrag schreiben
Ein Beitrag ist eine ganz normale .md- oder .mdx-Seite mit type: blog im Frontmatter. Üblicherweise liegen Beiträge unter blog/, entscheidend ist aber der Typ – nicht der Ordner:
---
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.
Gib jedem Beitrag ein date, damit Feed-Einträge neueste zuerst sortiert werden und ein pubDate erhalten, sowie eine description – sie wird sowohl für die Feed-Zusammenfassung als auch für SEO verwendet.
Der RSS-Feed
Blume erzeugt einen Blog-Feed unter /blog/rss.xml, sortiert nach date mit den neuesten Einträgen zuerst. Feeds benötigen eine absolute Site-URL, setze daher deployment.site; Blume fügt dann auf jeder Seite ein <link rel="alternate">-Tag ein, damit Leser den Feed automatisch finden.
Der Feed ist standardmäßig aktiviert. Feinjustieren kannst du ihn unter seo.rss:
seo: {
rss: {
enabled: true,
types: ["blog", "changelog"],
limit: 50,
},
}
Entferne "blog" aus rss.types, um den Feed zu überspringen.
Strukturierte Daten
Wenn strukturierte Daten aktiviert sind, wird jeder Beitrag als schema.org-BlogPosting mit seiner Beschreibung und seinem Veröffentlichungsdatum ausgegeben – dem umfangreicheren Artikeltyp, den Suchmaschinen bei Blog-Inhalten erwarten.
Eine Übersichtsseite erstellen
Blume generiert keine /blog-Landingpage, du erstellst sie also selbst. Die einfachste Möglichkeit ist eine Inhaltsseite, die jeden Beitrag von Hand verlinkt:
---
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>
Um Beiträge stattdessen automatisch aufzulisten, füge unter pages/blog/index.astro eine eigene Seite hinzu, die aus Astros docs-Content-Collection liest und jeden Eintrag mit seiner Route aus blume:data verknüpft:
---
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>
Wie du das in das vollständige Site-Layout einbettest, erfährst du unter Eigene Seiten.