Die meisten Entwickler verbringen mehr Zeit mit der Infrastruktur ihres Blogs als mit dem eigentlichen Schreiben. Sie konfigurieren Build-Pipelines und debuggen Deployment-Fehler. Sie kämpfen mit Content-Management-Systemen, die für Enterprise-Anwendungen konzipiert wurden. Das muss nicht sein.
Dieser Artikel beschreibt ein System, bei dem du in Notion schreibst und der Rest automatisch passiert. Du änderst einen Status in Notion. Fünf Minuten später ist dein Artikel live im Web.
Das Endprodukt
Am Ende dieses Setups hast du einen Tech-Blog mit vier zentralen Eigenschaften:
Notion als Redaktionssystem. Du verwaltest alle Artikel in einer Datenbank. Die Felder umfassen Titel, Slug, Status, Tags und Veröffentlichungsdatum. Entwürfe bleiben privat, bis du sie freigibst.
Automatische Synchronisation via n8n. Ein n8n-Workflow überprüft alle fünf Minuten deine Notion-Datenbank. Er erkennt neue oder geänderte Artikel mit Status "Published". Dann konvertiert er den Inhalt zu Markdown und pusht ihn zu GitHub.
Statische Generierung mit Astro. Dein Blog-Code liegt in einer privaten GitHub-Repository. Astro verwandelt deine Markdown-Dateien in optimierte HTML-Seiten. Der Static Site Generator minimiert die JavaScript-Last.
Globales Hosting via Cloudflare. Cloudflare Pages überwacht deine Repository. Bei jedem neuen Commit wird ein automatischer Build getriggert. Das Ergebnis wird über ein globales CDN ausgeliefert. Ladezeiten unter 100 Millisekunden sind realistisch.
Die technische Architektur
Das System besteht aus vier Komponenten, die über APIs miteinander kommunizieren:
Notion fungiert als headless CMS. Die API ermöglicht programmatischen Zugriff auf Datenbanken und Seiteninhalte. Jeder Artikel ist ein Datenbankeintrag mit strukturierten Metadaten.
n8n orchestriert den Datenfluss. Der Open-Source-Workflow-Automator kann selbst gehostet werden. Er transformiert Notion-Blocks zu Markdown. Der Cron-Trigger startet den Prozess alle fünf Minuten.
GitHub speichert den generierten Content versioniert. Jeder Sync-Lauf erzeugt einen Commit mit den aktualisierten Markdown-Dateien. Die Git-Historie dokumentiert alle Änderungen nachvollziehbar.
Cloudflare Pages reagiert auf Webhooks von GitHub. Bei jedem Push wird ein neuer Build gestartet. Astro generiert die statischen Seiten. Cloudflare verteilt sie global.
Der Aufbau-Prompt
Der folgende Prompt wurde mit OpenClawd getestet. Er setzt das komplette System auf — von der Notion-Datenbank bis zum fertigen Blog. Du kopierst ihn in Claude Code, beantwortest die Rückfragen zu Namen und Zugangsdaten, und der Agent baut alles zusammen.
I want to set up a self-publishing tech blog. The system should consist of four components:
1. Notion as CMS (where I write articles)
2. n8n as sync engine (synchronizes Notion → GitHub)
3. GitHub as code repository (Astro project)
4. Cloudflare Pages as hosting (automatic build on push)
Please set up the complete system step by step:
---
STEP 1: NOTION DATABASE
Create a Notion database "Blog Posts" with the following properties:
- Title (title): The article title
- Slug (rich_text): URL-friendly path, e.g. "my-first-article"
- Status (select): Options "Draft", "In Review", "Published"
- Tags (multi_select): Categories like "AI", "Tutorial", "Opinion", "Tech"
- Description (rich_text): SEO description, maximum 160 characters
- Published Date (date): Publication date
- Author (rich_text): Author name
Create a test article with status "Draft" to verify the structure.
---
STEP 2: GITHUB REPOSITORY
Create a private GitHub repository named "[BLOG-NAME]-blog".
Initialize an Astro project with the Blogster Sleek template:
- npm create astro@latest -- --template sleek
- Configure site URL in astro.config.mjs
- Create content directory: src/content/blog/
Add a .github/workflows/sync.yml (optional, for manual sync trigger).
Push the initial project to GitHub.
---
STEP 3: CLOUDFLARE PAGES
Connect the GitHub repository to Cloudflare Pages:
- Framework preset: Astro
- Build command: npm run build
- Build output directory: dist
- Node.js version: 18 or higher
If a custom domain is available, configure it. Otherwise use the *.pages.dev subdomain.
Test the initial build — the empty blog homepage should be accessible.
---
STEP 4: N8N WORKFLOW
Create an n8n workflow "Blog Sync" with the following flow:
NODE 1 - Schedule Trigger:
- Cron Expression: */5 * * * * (every 5 minutes)
NODE 2 - Notion Query:
- Credential: Notion API (Internal Integration Token)
- Operation: Get Many from Database
- Database ID: [ID of the Blog Posts database]
- Filter: Status equals "Published"
NODE 3 - Transform (Code Node):
- For each article: Convert Notion blocks to Markdown
- Generate frontmatter with title, description, pubDate, tags
- Derive filename from slug: [slug].md
NODE 4 - GitHub Create/Update File:
- Credential: GitHub Personal Access Token
- Repository: [BLOG-NAME]-blog
- File Path: src/content/blog/[slug].md
- Commit Message: "Sync: [Article Title]"
- Branch: main
Activate the workflow and test with a Published article.
---
CREDENTIALS I WILL PROVIDE:
- Notion: I'll create an Internal Integration and share the API key
- GitHub: I have an account, will create a PAT with repo scope
- Cloudflare: I have an account, will connect manually via the dashboard
- n8n: Running on [n8n Cloud / self-hosted at URL]
---
BLOG DETAILS:
- Blog name: [NAME]
- Domain: [DOMAIN or "pages.dev subdomain for now"]
- Language: [LANGUAGE]
- Author: [AUTHOR NAME]
---
Guide me through each step. Wait for my confirmation after each step before proceeding. Explain which credentials I need to create and where to enter them. Show me how to test whether each step worked.
Was nach dem Setup passiert
Sobald die Infrastruktur steht, reduziert sich dein Publikationsprozess auf drei Schritte:
Neuen Artikel in Notion anlegen und schreiben
Slug, Tags und Description ausfüllen
Status auf "Published" setzen
Innerhalb von fünf Minuten ist der Artikel live. Du siehst den neuen Commit in GitHub und den Build-Log in Cloudflare.
Änderungen funktionieren genauso. Du editierst in Notion. Der nächste Sync-Lauf erkennt die Modifikation und aktualisiert die Markdown-Datei. Die Git-Historie zeigt, was sich wann geändert hat.
Warum dieser Stack
Jede Komponente erfüllt eine spezifische Funktion:
Notion bietet eine hervorragende Schreiberfahrung. Die Block-basierte Formatierung übersetzt sich sauber nach Markdown. Der Wechsel zwischen Entwurf und Veröffentlichung ist ein Klick.
n8n ermöglicht komplexe Automatisierungen ohne Code. Die visuelle Workflow-Oberfläche macht Debugging transparent. Self-Hosting garantiert Kontrolle über deine Daten.
Astro generiert extrem schnelle Websites. Der Static Site Generator arbeitet mit minimalem Client-JavaScript. Das Plugin-Ökosystem deckt die meisten Anforderungen ab.
Cloudflare liefert Enterprise-Performance zum Nulltarif. Das Free Tier reicht für die meisten Blogs. Die Integration mit GitHub ist reibungslos.
Erweiterungsmöglichkeiten
Das Grundsystem lässt sich ausbauen:
Bildoptimierung: n8n-Node für Komprimierung und CDN-Upload
Social Sharing: Automatischer Tweet bei neuer Veröffentlichung
Analytics: Plausible oder Umami für datenschutzfreundliche Statistiken
Newsletter: Integration mit Buttondown für Artikel-Benachrichtigungen
Kommentare: Giscus oder Utterances für Diskussionen
Dieser Blog läuft auf exakt diesem Stack. Der Artikel wurde in Notion geschrieben, von n8n synchronisiert, von Astro gebaut und von Cloudflare ausgeliefert. Das Setup wurde mit Claude Code erstellt.
Die meisten Entwickler verbringen mehr Zeit mit der Infrastruktur ihres Blogs als mit dem eigentlichen Schreiben. Sie konfigurieren Build-Pipelines und debuggen Deployment-Fehler. Sie kämpfen mit Content-Management-Systemen, die für Enterprise-Anwendungen konzipiert wurden. Das muss nicht sein.
Dieser Artikel beschreibt ein System, bei dem du in Notion schreibst und der Rest automatisch passiert. Du änderst einen Status in Notion. Fünf Minuten später ist dein Artikel live im Web.
Das Endprodukt
Am Ende dieses Setups hast du einen Tech-Blog mit vier zentralen Eigenschaften:
Notion als Redaktionssystem. Du verwaltest alle Artikel in einer Datenbank. Die Felder umfassen Titel, Slug, Status, Tags und Veröffentlichungsdatum. Entwürfe bleiben privat, bis du sie freigibst.
Automatische Synchronisation via n8n. Ein n8n-Workflow überprüft alle fünf Minuten deine Notion-Datenbank. Er erkennt neue oder geänderte Artikel mit Status "Published". Dann konvertiert er den Inhalt zu Markdown und pusht ihn zu GitHub.
Statische Generierung mit Astro. Dein Blog-Code liegt in einer privaten GitHub-Repository. Astro verwandelt deine Markdown-Dateien in optimierte HTML-Seiten. Der Static Site Generator minimiert die JavaScript-Last.
Globales Hosting via Cloudflare. Cloudflare Pages überwacht deine Repository. Bei jedem neuen Commit wird ein automatischer Build getriggert. Das Ergebnis wird über ein globales CDN ausgeliefert. Ladezeiten unter 100 Millisekunden sind realistisch.
Die technische Architektur
Das System besteht aus vier Komponenten, die über APIs miteinander kommunizieren:
Notion fungiert als headless CMS. Die API ermöglicht programmatischen Zugriff auf Datenbanken und Seiteninhalte. Jeder Artikel ist ein Datenbankeintrag mit strukturierten Metadaten.