We run a SaaS company. We have zero budget for content writers. And we publish weekly blog posts anyway.
Here's how: we dog-food our own product. The Auto Blog/SEO plugin for EmDash generates, schedules, and publishes blog content automatically — and the entire pipeline costs us exactly $0 per month.
Let's walk through the exact setup so you can steal it.
The Philosophy: Dog-Fooding With Purpose
Dog-fooding means using your own product. But there's a right way and a wrong way.
The wrong way: "We built a thing, so now we force ourselves to use it because the investors said so."
The right way: "If our product can't solve our own problems, it's not ready for customers."
We chose the right way. Every blog post on AIKit is created, managed, and published through EmDash and the Auto Blog/SEO plugin. If something breaks, we feel the pain before our users do.
The Tech Stack (All Free Tier)
Here's the full pipeline — every component at $0/month:
| Component | Cost | What It Does |
|-----------|------|--------------|
| Cloudflare Pages | Free | Hosts ai-kit.net with global CDN |
| Cloudflare D1 | Free (5GB) | Database for content, users, plugins |
| Astro + EmDash | Free (open-source) | Static site + CMS admin |
| Auto Blog/SEO | Free tier | SEO metadata, OG tags, sitemaps |
| Hermes AI (our agent) | ByOK | Generates blog post content |
| Cron (system) | Free | Schedules daily publishing |
Total: $0/month. The only cost is time to set up the pipeline once.
How The Pipeline Works
Every day at 6AM, a cron job triggers our publishing pipeline:
```bash
Simplified cron command
python3 queue-publisher.py
```
It picks the next queued blog post (pre-generated as JSON), runs it through our D1 publisher, and the post goes live on ai-kit.net/blog within 30 seconds.
Step-by-step flow:
1. **Content Generation** — We write (or AI-generate) blog posts as structured JSON files with title, body, excerpt, and category
2. **Queue Management** — JSON files live in `~/content/queue/`. The publisher picks the oldest first
3. **D1 Database Write** — Our Python script inserts into `ec_posts`, creates a revision record, and adds SEO metadata in one atomic flow
4. **Sanity Portable Text** — Markdown content is converted to Portable Text format for the Sanity-like CMS layer
5. **Domain Verification** — The script verifies the post is reachable via the live URL
6. **Archive** — Published posts are moved to a `published/` folder with timestamps
What Zero Cost Actually Means
"Free" usually means "free until you hit the limits." Here are the real constraints:
**Cloudflare D1 Free Plan:**
- 5GB storage (enough for ~50,000 blog posts)
- 10 million read queries/month
- 1 million write queries/month
- We use ~20 writes per post. That's 50,000 posts/month for free.
**Cloudflare Pages Free Plan:**
- 500 builds/month
- 500 GB bandwidth
- Unlimited sites
**The Real Cost:** Your time. Setting up the pipeline took us an afternoon. Maintaining it takes zero minutes per week because it's fully automated.
What We Learned Dog-Fooding Our Own Plugin
Running this pipeline for ourselves taught us things no customer survey ever could:
1. The JSON Format Matters
Our first version had a rigid JSON schema. We kept making typos. Now the pipeline auto-validates: missing fields get caught before they reach D1. We built this fix for ourselves — and rolled it into the product.
2. Cron Reliability Is Everything
If the cron job dies silently, you have a dead blog for days. We added a health check: if no post was published in 3 days, we get an alert. This is now a feature suggestion for the scheduling tier.
3. Content Quality > Content Quantity
AI generation is tempting — "let's publish 10 posts a day!" We tried it. The content was garbage. Now we generate one high-quality post per week, carefully reviewed. The AI writes the first draft; humans add the personality.
Try It Yourself
The Auto Blog/SEO plugin is free on the EmDash Plugin Studio. Install it, connect your Cloudflare D1, and you're publishing in 15 minutes.
We do it. You can too. And it costs exactly zero dollars.