I build Eucaly, a daily-practice app for Australian school kids, on the side. Building the app is the fun part. Keeping a blog and a social feed alive around it, week after week, is the part that quietly kills side projects. I didn't want a marketing subscription stack, and I definitely didn't want to hand-write a post every Monday. So I handed the job to a Raspberry Pi.

Here is the entire content team, and it cost about the price of a nice dinner.
The whole thing in one diagram

A scheduled n8n workflow on the Pi picks a topic, Claude drafts it, Chromium renders a branded card for social posts, it lands in Telegram for a one-tap approve, and on approval a GitHub commit triggers a Cloudflare Pages rebuild.
The stack
A Raspberry Pi 5 on my desk, running everything under pm2.
n8n (self-hosted, exposed through a Cloudflare tunnel) as the orchestrator.
Claude (Anthropic API) as the writer.
A tiny Puppeteer + headless Chromium service that renders branded image cards to PNG.
Telegram as the whole approval UI.
Cloudflare Pages for the blog itself, deployed straight from GitHub.
No SaaS scheduler, no CMS, no "AI social tool" subscription. Just boxes I already understood, wired together.
How a post is born
A scheduled n8n workflow wakes up a few times a week and picks a topic from a queue. This is the bit I am quietly proud of: the picker is calendar-aware. It knows the Australian school calendar, so around report-card season it reaches for report-card topics, and the rest of the time it rotates through evergreen ones without repeating itself.
Claude then drafts the piece against a fairly opinionated system prompt: voice, house style, and a hard "do not invent specific dates or statistics you are not sure of" rule that I added after it confidently got a test date wrong. For social posts, the same flow calls the little Chromium service to render a branded card, so I get an image and a caption, not just text.
Then it lands in Telegram with inline buttons: Approve, Discard, New caption, New card image. That is my entire editorial workflow. I read it on my phone, tap a button, done. If I approve a blog post, n8n commits the markdown to GitHub, Cloudflare Pages rebuilds, and the post is live in about forty seconds. The whole loop, from "it is Monday" to "it is published," can happen while I make coffee.
The human stays in the loop, on purpose
The interesting design decision was not to make it fully autonomous. An LLM publishing unattended content is a great way to ship a confidently wrong fact to real parents. The Telegram approve step is cheap insurance: it turns "AI writes my blog" into "AI drafts, I approve," which is a very different risk profile. It has already saved me from publishing something subtly wrong more than once, and each time a one-tap regenerate fixed it.
Things that bit me
n8n 2.x is publish/version based. Importing a workflow and flipping
activein the database is not enough; you have topublishit and restart, or it silently skips the workflow on boot. That cost me an evening.Chromium on a Pi needs
--no-sandboxand a nudge to wait for fonts to load before screenshotting, or your cards render half-styled.Telegram's node can edit message text but not media, so swapping a freshly rendered image in place meant dropping down to the raw Bot API.
Was it worth it?
For a solo side project, completely. The marginal cost of a post is now roughly zero plus a tap of my thumb. The whole thing runs on hardware I own, with no monthly bill waiting to punish me the moment I stop paying attention. If you are running a small product and dreading the content treadmill, you probably already own everything you need to build this.
The app it all feeds, if you are curious, is Eucaly: daily practice for Australian kids in Years 3 to 9, aligned to the Australian Curriculum.
Sample Card for Social Media Posts

Post Caption:
Two weeks off school feels like a rest. For most kids, it is also when the forgetting curve does its quiet work.
Researchers have known since the 1880s that memory fades fastest in the first few days after learning stops. By the time the new term rolls around, a fair chunk of what your child knew in Week 10 has already slipped.
The fix is not a holiday homework pile. It is ten minutes a day, kept consistent, on the things they already know. Review, not new material. That small habit is usually enough to walk back into the classroom without the two-week stumble.
Eucaly is free to try for seven days, on iPad and Android.
Start your 7-day free trial:
App Store (iPad): https://apps.apple.com/au/app/eucaly/id6766044518
Google Play (Android): https://play.google.com/store/apps/details?id=com.eucaly.app
#schoolholidays #australiancurriculum #homelearning #parentingaustralia #primaryschool #learningathome #parentsofaustralia #naplan #year3 #year5 #studytips #raisingreaders #year7 #termbreak