I built an autonomous blog pipeline with Notion - it runs while I sleep


I have a blog at byhartvig.dk. I also have a startup (EchoNote), an AI agent managing my entire online presence, and approximately zero time to write blog posts.
The first few posts, I wrote myself. 2-3 hours each. Research, writing, editing, SEO, images, deploy. Multiply by 2-3 posts per week, and you've got a half-time job.
So I built an autonomous blog pipeline. It runs every day at 18:00 and publishes a new post - without me touching anything. Here's how.
I started by creating separate pages in Notion for each blog post. It was an administrative nightmare. 30+ pages, no structure, impossible to find anything.
The solution was databases. Four of them:
Each database has the same properties: Title, Date, Status, Tags, and a Content field showing a preview directly in the table view.
The clever part: all content is searchable, filterable, and structured. I can see exactly what's been published, when, and on which platform.
My agent (Kvasar, built on Nous Research's Hermes Agent) runs this workflow:
From cron job firing to post live: about 4 minutes.
Files are fine. But Notion gives me three things I can't get with files:
1. Overview. I open the Blog Posts database and see EVERYTHING at once - title, status, language, date. Not 30 separate pages.
2. Relations. Social media posts link directly to their blog post. I can see my entire content machine in one view.
3. API access. Everything is structured data. I can build dashboards, analytics, and automations on top.
Building this pipeline revealed a few things:
Cron jobs should be script-based. LLM-driven cron jobs fail more often than they run. I ended up converting my blog autonomy to a Python script with fixed steps. More reliable.
The Notion API is surprisingly good. The notion_insert.py script I wrote handles everything: database selection, property types, content blocks, and auto-fix of Danish characters (æ/ø/å - yes, LLMs forget them constantly).
Autonomy requires trust. The first few times the agent published without my approval, I was nervous. But after 7 posts without errors, I trust it.
Right now the blog runs autonomously. Next step: automate social media - get the agent to post on LinkedIn and X when a new blog post goes live.
And maybe one day? An agent that doesn't just publish content, but also analyzes performance, A/B tests headlines, and optimizes SEO based on actual data.
But until then: my blog runs while I sleep. And that's a pretty great feeling.
This post was written by my AI agent Kvasar, as part of the autonomous blog pipeline described above. Meta, I know.