Astro-Blog von Grund auf: In 1 Stunde von der Startseite bis zum Deployment

Der Tech-Blog ist in 0,8 Sekunden vollständig geladen, Seitenwechsel sind butterweich. Der eigene WordPress-Blog? Drei Sekunden weißer Bildschirm – man möchte die Seite am liebsten schließen. Hexo, Hugo, sogar Gatsby – jedes Mal blieb irgendwo etwas hängen: undurchsichtige Docs, fragmentierte Tutorials, vom Installieren bis zum Deploy fehlte immer etwas. Astro ist schnell, die Entwicklung angenehm, und der gesamte Ablauf ist einfacher als erwartet.
Dieser Artikel führt Sie Schritt für Schritt vom Nullpunkt bis zum Deployment – in unter 1 Stunde ein vollständiger Blog mit Startseite, Artikelliste, Tags und RSS. Konkrete Handgriffe, keine leeren Versprechen.
Kapitel 1: Warum Astro? (Keine Werbung – wirklich gut)
Ist der Performance-Unterschied wirklich so groß?
Ehrlich gesagt war ich anfangs skeptisch. Die Website verspricht „40 % schneller als klassische React-Frameworks“ und „standardmäßig null JavaScript“ – klingt nach Marketing. Nach der Migration von WordPress zu Astro lügen die Zahlen nicht:
- First Paint: von 3,2 s auf 0,8 s
- Lighthouse: Vollwert 100 (WordPress vorher nur 65)
- JavaScript-Volumen: von 280 KB auf unter 20 KB
Wie ist das möglich? Das Geheimnis liegt in Astros Kernidee – Content-first, JavaScript on-demand. Standardmäßig reines HTML+CSS; JavaScript nur dort, wo Sie explizit Interaktivität brauchen. Das Gegenteil von React mit dem „Alles-auf-einmal“-Ansatz.
Ein interessanter Vergleich: Derselbe Artikel auf Next.js und Astro – Next.js lädt beim First Paint die Framework-Runtime (ca. 100 KB), Astro liefert eine schlanke HTML-Datei. Für leseorientierte Blogs macht der Unterschied den Tag.
Wie ist das Entwicklungserlebnis?
Zum Performance-Thema gesellt sich die Islands-Architektur – klingt technisch, bedeutet schlicht: JavaScript nur dort, wo Interaktivität nötig ist.
Beispiel Artikeldetailseite:
- Artikelinhalt → statisches HTML (schnell)
- Kommentare → React-Komponente (interaktiv)
- Navigation → Vue-Komponente (ja, mischbar!)
So wird die ganze Site nicht zur SPA wegen einer Kleinigkeit. Und für Einsteiger: Artikel direkt in Markdown schreiben, keine Datenbank, kein CMS. In VS Code schreiben, zu GitHub pushen, Auto-Deploy – angenehm.
Vergleich mit anderen Frameworks
Die Frage stellt sich jedem. Hier die Fakten in der Tabelle:
| Framework | Einsatz | Lernkurve | Performance | Wartung |
|---|---|---|---|---|
| Astro | Blog/Docs | Niedrig (HTML reicht) | ⭐⭐⭐⭐⭐ | Niedrig (fast null) |
| Next.js | Komplexe Apps | Mittel (React nötig) | ⭐⭐⭐⭐ | Mittel (API pflegen) |
| Hexo | Reiner Static Blog | Niedrig (wenig Erweiterbarkeit) | ⭐⭐⭐ | Niedrig |
| WordPress | CMS nötig | Mittel (Plugins) | ⭐⭐ | Hoch (Sicherheit, Updates) |
Empfehlung:
- Blog oder Tech-Docs → Astro, Performance und DX stimmen
- E-Commerce oder komplexe Interaktion → Next.js
- Minimaler Static Blog ohne Anpassung → Hexo reicht
- Redaktion ohne Tech-Team → WordPress
2025: Astros npm-Downloads über 3 Millionen, Marktanteil ca. 18 %. Immer mehr Entwickler setzen darauf – kein Nischen-Framework mehr.
Kapitel 2: Umgebung vorbereiten (5 Minuten)
Node.js installieren (falls noch nicht vorhanden)
Astro braucht Node.js v18+. Version prüfen:
node -v
npm -v
Version angezeigt? Diesen Schritt überspringen. Sonst Node.js LTS herunterladen.
Windows-Hinweis: Bei der Installation „Add to PATH“ aktivieren, sonst findet die Shell die Befehle nicht. Manche Antivirus-Software blockiert npm – nach der Installation die Konsole neu starten.
Astro-Projekt erstellen
Einfacher als gedacht. In der Konsole:
npm create astro@latest
Dann die Optionen – so wählen Sie sinnvoll:
- Projektname: z. B.
my-blog - Template: Blog (Pfeiltasten + Enter)
- Abhängigkeiten installieren: Yes
- TypeScript: Strict oder Strictest (Typprüfung spart Bugs)
- Git initialisieren: Yes
Dauert 1–2 Minuten, Template und Pakete werden geladen.
Warum Blog-Template? Artikelliste, Tags und RSS sind schon vorbereitet – beim Blank-Template habe ich allein für Paginierung zwei Stunden gebraucht.
Dev-Server starten
Ins Projektverzeichnis wechseln und starten:
cd my-blog
npm run dev
Bei Local: http://localhost:4321 im Browser öffnen – ein Blog-Grundgerüst sollte sichtbar sein.
Typische Stolpersteine:
- Port 4321 belegt →
server.portinastro.config.mjsändern EACCES→ Berechtigung, ggf.sudo npm run dev(Mac/Linux)- Zeichensalat → Konsole auf UTF-8 prüfen
Damit ist die Umgebung bereit. Als Nächstes: Was die Ordner bedeuten.
Kapitel 3: Projektstruktur (jeder Ordner erklärt)
Wie sieht das Verzeichnis aus?
my-blog in VS Code oder einem Editor öffnen:
my-blog/
├── src/
│ ├── pages/ # Routen – Dateiname = URL
│ ├── layouts/ # Layouts (Header, Footer)
│ ├── components/ # Wiederverwendbare Komponenten
│ └── content/ # Markdown-Artikel
├── public/ # Statische Assets (Bilder, Fonts, favicon)
├── astro.config.mjs # Astro-Konfiguration
└── package.json # Abhängigkeiten
Wie bei vielen Frontend-Projekten – mit ein paar Astro-Besonderheiten.
pages/: Datei ist Route
Kein separates Routing nötig:
pages/index.astro→/pages/about.astro→/aboutpages/blog/index.astro→/blogpages/blog/[...slug].astro→/blog/xxx
[...slug].astro ist dynamisch – der Teil in eckigen Klammern wird zur Variable. Alle /blog/-URLs laufen hier durch.
Deutlich einfacher als Next.js – beim Wechsel von Next war ich sofort überzeugt.
content/: Artikel ablegen
In src/content/blog/ liegen Beispielartikel als .md oder .mdx mit Frontmatter:
---
title: 'Mein erster Artikel'
description: 'Dies ist ein Testartikel'
pubDate: 'Dec 02 2025'
heroImage: '/blog-placeholder.jpg'
tags: ['Astro', 'Tutorial']
---
Hier beginnt der Fließtext...
Astro liest die Felder aus – in Seiten z. B. post.data.title. Typprüfung beim Build: falsche Feldnamen → Fehler. Für Perfektionisten angenehm.
layouts/ und components/: Code wiederverwenden
layouts/ für Seitenrahmen (Header, Footer, Sidebar). Im Blog-Template: BaseLayout.astro, BlogPost.astro.
components/ für kleine Bausteine (Button, Karte, Tag-Cloud). Astro-, React- oder Vue-Syntax – flexibel.
public/: 1:1 ins Build-Output
Dateien landen unverändert im Webroot. public/favicon.ico → https://ihre-domain.de/favicon.ico.
Typisch: Blog-Bilder, Fonts, robots.txt.
astro.config.mjs: Zentrale Konfiguration
export default defineConfig({
site: 'https://ihre-domain.de', // Deploy-Domain
integrations: [mdx()], // Plugins (Markdown, RSS usw.)
server: {
port: 4321 // Dev-Server-Port
}
})
Erstmal wenig ändern – später bei neuen Features anpassen.
Die Struktur zu verstehen lohnt sich. Viele starten blind und wissen nicht, wohin mit Dateien – 5 Minuten hier sparen später eine Stunde.
Kapitel 4: Kernfunktionen (das Herzstück)
4.1 Startseite: neueste Artikel
Das Blog-Template liefert schon ein Gerüst. src/pages/index.astro anpassen:
---
import { getCollection } from 'astro:content';
import BaseLayout from '../layouts/BaseLayout.astro';
// Alle Blog-Artikel, nach Datum, neueste 5
const allPosts = (await getCollection('blog'))
.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf())
.slice(0, 5);
---
<BaseLayout>
<h1>Willkommen in meinem Blog</h1>
<ul>
{allPosts.map((post) => (
<li>
<a href={`/blog/${post.slug}/`}>{post.data.title}</a>
<time>{post.data.pubDate.toDateString()}</time>
</li>
))}
</ul>
</BaseLayout>
Was passiert hier?
getCollection('blog')lädt alle Artikel- Sortierung nach
pubDateabsteigend slice(0, 5)– nur die fünf neuesten- Liste rendern
Häufiger Fehler: Beim Sortieren .valueOf() nutzen, sonst sortiert JavaScript Datumsstrings falsch.
4.2 Artikelliste mit Paginierung
src/pages/blog/index.astro (falls nicht im Template):
---
import { getCollection } from 'astro:content';
import BaseLayout from '../../layouts/BaseLayout.astro';
const allPosts = (await getCollection('blog'))
.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
const pageSize = 10;
const currentPage = 1;
const totalPages = Math.ceil(allPosts.length / pageSize);
const posts = allPosts.slice(0, pageSize);
---
<BaseLayout title="Artikelliste">
<h1>Alle Artikel</h1>
<div class="post-list">
{posts.map((post) => (
<article>
<h2><a href={`/blog/${post.slug}/`}>{post.data.title}</a></h2>
<p>{post.data.description}</p>
<time>{post.data.pubDate.toLocaleDateString('de-DE')}</time>
<div class="tags">
{post.data.tags?.map(tag => <span>#{tag}</span>)}
</div>
</article>
))}
</div>
{totalPages > 1 && (
<div class="pagination">
<span>Seite {currentPage} / {totalPages}</span>
</div>
)}
</BaseLayout>
Paginierung hier vereinfacht – in größeren Projekten Astros paginate(). Unter 100 Artikeln reicht oft eine Seite.
UX-Ideen:
- Lesezeit schätzen (Wörter ÷ 400 W/min)
- Teaser kürzen (150 Zeichen + …)
- Vorschaubild über
heroImage
4.3 Artikeldetailseite
Kernstück per dynamischer Route – src/pages/blog/[...slug].astro bearbeiten oder neu anlegen:
---
import { getCollection } from 'astro:content';
import BlogPost from '../../layouts/BlogPost.astro';
// Statische Pfade für alle Artikel
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map(post => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
const { Content } = await post.render();
---
<BlogPost {...post.data}>
<Content />
</BlogPost>
Die Mechanik:
getStaticPaths()läuft beim Build, erzeugt HTML pro Artikelpost.render()wandelt Markdown in eine Komponente<Content />ist der Artikeltext
Typische Hürden:
- Kein Syntax-Highlighting → Shiki (im Blog-Template meist dabei)
- Markdown-Styles flach →
@tailwindcss/typography - Bildpfade falsch → Bilder in
public/, Referenz/images/xxx.jpg
Inhaltsverzeichnis (TOC) mit remark-toc in astro.config.mjs:
import { defineConfig } from 'astro/config';
import remarkToc from 'remark-toc';
export default defineConfig({
markdown: {
remarkPlugins: [remarkToc],
},
});
4.4 Tag-System
src/pages/tags/[tag].astro:
---
import { getCollection } from 'astro:content';
import BaseLayout from '../../layouts/BaseLayout.astro';
export async function getStaticPaths() {
const allPosts = await getCollection('blog');
const allTags = [...new Set(allPosts.flatMap(post => post.data.tags || []))];
return allTags.map(tag => ({
params: { tag },
props: {
posts: allPosts.filter(post =>
post.data.tags?.includes(tag)
).sort((a, b) =>
b.data.pubDate.valueOf() - a.data.pubDate.valueOf()
),
},
}));
}
const { tag } = Astro.params;
const { posts } = Astro.props;
---
<BaseLayout title={`Tag: ${tag}`}>
<h1>#{tag} – Artikel ({posts.length})</h1>
<ul>
{posts.map((post) => (
<li>
<a href={`/blog/${post.slug}/`}>{post.data.title}</a>
</li>
))}
</ul>
</BaseLayout>
Pro Tag eine Seite, z. B. /tags/astro, /tags/tutorial.
Extra: Tag-Cloud unter src/pages/tags/index.astro – Schriftgröße nach Artikelanzahl.
4.5 RSS-Feed
Plugin installieren:
npx astro add rss
src/pages/rss.xml.js:
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';
export async function GET(context) {
const posts = await getCollection('blog');
return rss({
title: 'Mein Tech-Blog',
description: 'Frontend-Erfahrungen und Lerntipps',
site: context.site,
items: posts.map((post) => ({
title: post.data.title,
pubDate: post.data.pubDate,
description: post.data.description,
link: `/blog/${post.slug}/`,
})),
});
}
Nach dem Deploy: https://ihre-domain.de/rss.xml. RSS-Nutzer sind weniger – für Tech-Blogs trotzdem professionell.
Damit steht das Kernsystem: Startseite, Liste, Detail, Tags, RSS. Als Nächstes: SEO.
Kapitel 5: SEO (damit Sie gefunden werden)
Ein Blog ohne Sichtbarkeit hilft wenig. Astro bringt Vorteile mit: statisches HTML, schnelle Ladezeit, semantische Tags – alles, was Suchmaschinen mögen.
Meta-Tags in BaseLayout.astro
Im <head> der Basis-Layout-Datei:
---
interface Props {
title: string;
description?: string;
image?: string;
}
const { title, description = 'Mein Tech-Blog', image = '/og-image.jpg' } = Astro.props;
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
---
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>{title} | Mein Blog</title>
<meta name="description" content={description} />
<link rel="canonical" href={canonicalURL} />
<!-- Open Graph (Social Sharing) -->
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={new URL(image, Astro.site)} />
<meta property="og:url" content={canonicalURL} />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:image" content={new URL(image, Astro.site)} />
</head>
Jede Seite hat vollständige Meta-Daten – schöne Vorschaukarten beim Teilen.
Sitemap
Ein Befehl:
npx astro add sitemap
Domain in astro.config.mjs:
export default defineConfig({
site: 'https://ihre-domain.de',
integrations: [sitemap()],
});
Sitemap unter https://ihre-domain.de/sitemap-index.xml – in der Google Search Console einreichen.
Performance als SEO-Faktor
Astro ist schon schnell – noch ein paar Hebel:
1. Bilder
<Image> statt <img>:
---
import { Image } from 'astro:assets';
import myImage from '../assets/photo.jpg';
---
<Image src={myImage} alt="Beschreibung" />
Automatisch: WebP/AVIF, responsive Größen, Lazy Loading.
2. CSS/JS-Minifizierung
Production-Build komprimiert von selbst. Unbenutzte Pakete entfernen.
3. Schriften
Bei Google Fonts oder Custom Fonts: font-display: swap.
@font-face {
font-family: 'MyFont';
src: url('/fonts/myfont.woff2') format('woff2');
font-display: swap;
}
Nach diesen Schritten meist Lighthouse 95+. Bei mir nur „Best Practices“ wegen Drittanbieter-Skripten leicht abgesenkt – sonst Vollwert.
Kapitel 6: Deployment (kostenlose Plattformen)
Code fertig – jetzt live gehen. Zwei kostenlose, bewährte Optionen.
Option 1: Vercel (Empfehlung für Einsteiger)
Native Astro-Unterstützung, fast null Konfiguration.
Schritt 1: Code auf GitHub
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/IhrUsername/my-blog.git
git push -u origin main
Schritt 2: Projekt in Vercel importieren
- vercel.com – mit GitHub anmelden
- „New Project“
- Repository
my-blogwählen - Astro wird erkannt – Einstellungen meist unverändert lassen
- „Deploy“ – 1–2 Minuten warten
Schritt 3: Blog aufrufen
URL wie xxx.vercel.app – fertig.
Eigene Domain (optional)
In den Projekteinstellungen Domain hinzufügen, beim Registrar CNAME auf Vercel setzen – Anleitung in der Oberfläche.
Hinweise:
siteinastro.config.mjskorrekt setzen- Umgebungsvariablen in Vercel, nicht im Code
- Erstes Deploy kann 5 Minuten dauern
Option 2: Netlify
Ähnlich wie Vercel, in manchen Regionen etwas schneller erreichbar.
Schritt 1: GitHub (wie oben)
Schritt 2: Netlify
- netlify.com
- „Add new site“ → „Import an existing project“
- GitHub verbinden, Repository wählen
- Build:
- Build command:
npm run build - Publish directory:
dist
- Build command:
- „Deploy“
Schritt 3: xxx.netlify.app testen
Welche Plattform?
| Plattform | Vorteile | Nachteile | Zielgruppe |
|---|---|---|---|
| Vercel | Astro Auto-Config Schnelles Edge-Netz Gutes CI/CD | Gelegentlich langsam aus manchen Regionen | Maximale DX |
| Netlify | Stabil erreichbar Großzügiges Free-Tier Viele Plugins | Etwas mehr Konfiguration | DE-/EU-Publikum |
Tipp: Zuerst Vercel – bei langsamer Erreichbarkeit zu Netlify wechseln. Push auf GitHub → automatischer Build und Update.
Auto-Deploy im Alltag
- Artikel lokal in Markdown schreiben
git add .→git commit -m "Neuer Artikel"→git push- Nach ca. 2 Minuten online
Kein Server-Login, kein manuelles Build, kein FTP. Beim ersten Mal überraschend elegant.
Kapitel 7: Häufige Probleme (Stolpersteine vermeiden)
Echte Fehler aus eigener Praxis und der Community – Vorwissen spart Zeit.
Problem 1: Tailwind-Styles greifen nicht
Symptom: Klassen gesetzt, visuell nichts.
Ursache: content in tailwind.config.mjs scannt Ihre Dateien nicht.
Lösung:
export default {
content: [
'./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}',
],
theme: {
extend: {},
},
plugins: [],
}
Dev-Server neu starten (Ctrl+C, dann npm run dev).
Problem 2: Build-Fehler „Invalid frontmatter“
Symptom: Lokal ok, npm run build schlägt fehl.
Ursache: Frontmatter-Format oder fehlende Pflichtfelder.
Lösung – typische Blog-Anforderungen:
---
title: 'Artikeltitel' # Pflicht
description: 'Artikelbeschreibung' # Pflicht
pubDate: 'Dec 02 2025' # Pflicht, Datumsformat beachten
tags: ['Tag1', 'Tag2'] # Optional
---
Content Collections prüft beim Build – Fehler vor dem Live-Gang.
Problem 3: 404 nach Deploy, lokal ok
Symptom: Artikel lokal, auf Vercel/Netlify 404.
Ursache: Falsches base oder fehlendes site.
Lösung:
export default defineConfig({
site: 'https://ihre-domain.de', // Pflicht
// base: '/blog', // Nur bei Subdirectory-Deploy
});
Ohne Subdirectory-Deploy (domain.de/blog) kein base setzen.
Problem 4: Bilder laden langsam
Symptom: Artikelbilder bremsen die Seite.
Ursache: Keine Image-Optimierung oder zu große Dateien.
Lösung:
- Image-Komponente:
---
import { Image } from 'astro:assets';
---
<Image src="/images/photo.jpg" alt="Beschreibung" width={800} height={600} />
-
Komprimieren: TinyPNG oder Squoosh.app vor dem Upload
-
CDN: Cloudinary, Imgur o. Ä. für externe URLs
Problem 5: Kein Syntax-Highlighting
Symptom: Codeblöcke ohne Farben.
Ursache: Theme oder Shiki nicht konfiguriert.
Lösung:
export default defineConfig({
markdown: {
shikiConfig: {
theme: 'github-dark', // oder 'dracula', 'nord'
},
},
});
Blog-Template hat Shiki oft schon – sonst rm -rf node_modules && npm install.
Problem 6: Dev-Server startet langsam
Symptom: npm run dev dauert ewig.
Ursache: Viele Artikel oder Plugins.
Lösung:
node_modulesundpackage-lock.jsonlöschen, neu installieren- Unnötige Integrationen entfernen
- Astro aktualisieren (
npm install astro@latest)
Astro 5.x startet deutlich schneller – bei 4.x Upgrade erwägen.
Die meisten Probleme treffen Sie vielleicht nie – bei Bedarf dieses Kapitel als Spickzettel.
Fazit
Wenn Sie bis hier mitgegangen sind: Sie haben einen vollständigen, performanten Astro-Blog – einsatzbereit.
✅ Vollständiges System: Startseite, Liste, Detail, Tags, RSS
✅ SEO: Meta, Sitemap, Performance
✅ Modernes Deployment: CI/CD, Push = Publish
✅ Performance: Lighthouse 95+, 0,8 s First Paint
Wichtiger: Sie verstehen Content-first, Performance zuerst – nicht nur für Blogs, auch für andere Static Sites.
Was als Nächstes?
Sofort:
- Eine Stunde durchspielen, diesen Artikel parallel offen halten
- Ersten echten Artikel veröffentlichen – auch als Test
- Link teilen, Feedback sammeln
Erweiterungen (schrittweise):
- Kommentare: Giscus oder Disqus
- Suche: Algolia DocSearch oder Pagefind
- Dark Mode: Theme-Toggle
- Analytics: Google Analytics oder Plausible
- Vorheriger/Nächster Artikel: bessere Navigation
Lernen:
- Astro-Dokumentation – autoritativ, auch auf Deutsch
- Astro Paper – starkes Blog-Template mit SEO
- GitHub Discussions – Fragen und Erfahrungen
Community:
- Astro Discord
- GitHub: „awesome-astro“
- Eigenen Blog im Showcase-Channel vorstellen
Abschließend
Technik ist der leichte Teil – regelmäßig schreiben ist der schwere. Viele verbringen eine Woche am Framework und veröffentlichen zwei Artikel. Astro senkt die technische Hürde – Kontinuität liegt bei Ihnen.
Bei Problemen:
- Astro-Docs, Abschnitt „Troubleshooting“
- GitHub Issues durchsuchen
- Astro Discord (englisch, teils deutsch)
Fehler sind normal – mein erster Astro-Blog brauchte drei Tage. Danach ist Wartung deutlich leichter als bei WordPress.
Jetzt Konsole öffnen und loslegen! 💫
Astro-Blog von Grund auf aufbauen
In 1 Stunde von der Umgebungsvorbereitung bis zum Live-Deployment – mit Startseite, Artikelliste, Tags, RSS und SEO
⏱️ Estimated time: 1 hr
- 1
Step 1: Umgebung vorbereiten und Projekt erstellen
Umgebung:
• Node.js 18+ sicherstellen (node -v prüfen)
• Falls nicht installiert: von nodejs.org herunterladen
Projekt erstellen:
• Ausführen: npm create astro@latest my-blog
• Template wählen (Blog-Template empfohlen)
• TypeScript? (Yes empfohlen)
• Abhängigkeiten installieren? (Yes)
Dev-Server starten:
• In Projektverzeichnis: cd my-blog
• Ausführen: npm run dev
• http://localhost:4321 im Browser öffnen - 2
Step 2: Projektstruktur konfigurieren und Layouts erstellen
Projektstruktur:
• src/pages: Seitendateien
• src/components: Komponenten
• src/layouts: Layout-Dateien
• src/content: Markdown-Artikel
Layouts erstellen:
• src/layouts/BaseLayout.astro als Basis-Layout
- HTML-Struktur, Navigation, Footer
• src/layouts/BlogLayout.astro als Artikel-Layout
- Erbt BaseLayout, fügt Artikel-Styling hinzu - 3
Step 3: Startseite und Artikelliste implementieren
Startseite:
• src/pages/index.astro erstellen
• Neueste Artikel und Kategorien anzeigen
Artikelliste:
• Astro Content Collections nutzen
• Markdown aus src/content/posts lesen
• Nach Datum sortiert anzeigen
Paginierung:
• Bei vielen Artikeln Paginierung einbauen
• 10 Artikel pro Seite
Tags:
• tags aus Frontmatter extrahieren
• Tag-Cloud und Kategorieseiten generieren - 4
Step 4: Artikeldetailseite und RSS-Feed
Artikeldetailseite:
• Dynamische Route src/pages/posts/[...slug].astro
• Slug zu Markdown-Datei matchen und rendern
Markdown-Rendering:
• Astros eingebaute Markdown-Unterstützung
• Code-Highlighting, Links, Bilder automatisch
RSS:
• @astrojs/rss installieren
• src/pages/rss.xml.ts für RSS-Feed
• Titel, Beschreibung, Veröffentlichungsdatum aller Artikel - 5
Step 5: SEO-Optimierung und Deployment
SEO:
• Meta-Tags in Layout (title, description, og:image usw.)
• sitemap.xml automatisch generieren
• robots.txt konfigurieren
Performance:
• Astro Image-Komponente für Bilder
• Code-Splitting aktivieren
• Preloading konfigurieren
Deployment:
• Vercel (GitHub-Repo verbinden, Auto-Deploy)
• Netlify (dist hochladen oder Git verbinden)
• Cloudflare Pages (Git-Repo verbinden)
• Nach Deploy: HTTPS, globales CDN, kostenlos
FAQ
Warum Astro? Welche Performance-Vorteile gibt es?
• First Paint von 3,2 s auf 0,8 s
• Lighthouse-Vollwert 100 (WordPress vorher nur 65)
• JavaScript von 280 KB auf unter 20 KB
• Etwa 40 % schneller als React-Frameworks
Islands-Architektur:
• Content-first, JavaScript on-demand
• Standardmäßig reines HTML+CSS
• JS nur wo Interaktivität nötig
• React- und Vue-Komponenten mischbar
Entwicklungserlebnis: Artikel direkt in Markdown schreiben, keine Datenbank oder CMS nötig – in VS Code schreiben, zu GitHub pushen, Auto-Deploy.
Wie baue ich einen Astro-Blog von Grund auf auf?
• Node.js 18+
• npm create astro@latest my-blog
• Blog-Template, TypeScript, Abhängigkeiten installieren
• cd my-blog, npm run dev
Projektstruktur:
• src/pages, src/components, src/layouts, src/content
Layouts:
• BaseLayout.astro, BlogLayout.astro
Startseite & Liste:
• src/pages/index.astro
• Content Collections, Datumssortierung, Paginierung, Tags
Detailseite:
• src/pages/posts/[...slug].astro
RSS:
• @astrojs/rss, rss.xml.ts
Wie implementiere ich die Kernfunktionen eines Astro-Blogs?
• src/pages/index.astro
• Neueste Artikel und Kategorien
• Content Collections für src/content/posts
Artikelliste:
• Nach Datum sortiert
• Paginierung (10 pro Seite)
• Tags aus Frontmatter, Tag-Cloud und Kategorieseiten
Detailseite:
• src/pages/posts/[...slug].astro
• Slug-Matching, Markdown-Rendering mit Highlighting
Tags:
• tags aus Frontmatter, Tag-Cloud und Kategorieseiten
RSS:
• @astrojs/rss, src/pages/rss.xml.ts
• Titel, Beschreibung, Veröffentlichungsdatum
Wie optimiere ich SEO und Performance meines Astro-Blogs?
• Meta-Tags in Layouts (title, description, og:image)
• sitemap.xml, robots.txt
Performance:
• Astro Image-Komponente
• Code-Splitting, Preloading
Islands-Architektur:
• Reines HTML+CSS standardmäßig
• JS nur bei Interaktivität
• Etwa 40 % schneller, 90 % weniger JavaScript
Wie deploye ich einen Astro-Blog? Welche Optionen gibt es?
Vercel:
• GitHub-Repo verbinden
• Kostenlos, HTTPS, globales CDN
Netlify:
• dist hochladen oder Git verbinden
• Kostenlos, HTTPS
Cloudflare Pages:
• Git-Repo verbinden
• Kostenlos, globales CDN
Schritte:
• npm run build → dist
• dist deployen oder GitHub für Auto-Deploy
• HTTPS, CDN, kostenlos
Welche erweiterten Funktionen kann ein Astro-Blog haben?
• Giscus (GitHub Discussions) oder Disqus
Suche:
• Algolia DocSearch oder Pagefind
Dark Mode:
• Theme-Umschalter für Nachtleser
Analytics:
• Google Analytics oder Plausible (datenschutzfreundlich)
Alles über Astro-Integrationen – einfache Konfiguration, geringe Performance-Auswirkung.
12 Min. Lesezeit · Veröffentlicht am: 2. Dez. 2025 · Aktualisiert am: 14. Juli 2026
Astro-Leitfaden
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Was ist Astro? In 3 Minuten Zero JS, Islands Architecture und Content-First verstehen
Astro ist ein Content-first-Framework, das Blog-Performance durch Zero JS by Default und Islands Architecture verdreifacht. Dieser Artikel erklärt Astros Kernkonzepte, den Unterschied zu Next.js/React und Kriterien für die richtige Wahl.
Teil 1 von 18
Nächster
Astro Content Collections – vollständiger Leitfaden: Von Konzepten zu Schema-Validierung
Tiefe Einordnung von Astro Content Collections: content.config.ts von null konfigurieren, Zod-Schema-Validierung meistern und ein typsicheres Content-Management aufbauen – mit vollständigen Codebeispielen und Lösungen für typische Fehler.
Teil 3 von 18
Ähnliche Beiträge
Astro Markdown Fortgeschritten: 7 Praxis-Tipps für ein 10x professionelleres Blog

Astro Markdown Fortgeschritten: 7 Praxis-Tipps für ein 10x professionelleres Blog
5 beste Astro-Blog-Themes mit Installations- und Konfigurationsanleitung


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen