What I automated

The blog factory

One pipeline behind five sites: it plans topics, researches, drafts, illustrates and pushes, then waits for me to release.

652 commits · first 22 Mar 2026 · last 24 Oct 2026 · 216 days

commits per week, counted from the repository when this page was last built

The blog factory cockpit on a phone: stage one, discover

Three product sites and no time to write for any of them

By March I had three products with a blog each, and a rule that a site without new articles is a site nobody finds. Writing by hand meant one article a week on a good week. The sites needed thirty.

So the factory started as what it sounds like: a script that takes a topic and produces a post. Everything since has been about making that post good enough to publish without embarrassment, and cheap enough to make in bulk.

First commit

557f9d44 22 Mar 2026

The first commit added an OpenAI provider, a few interface fixes and an image generator script. The second commit of the same day renamed the project, because I had misspelled it. It stayed misspelled for exactly one day.

A brand identity that feeds every prompt

cff34754 9 May 2026

Articles that read like a stranger wrote them were the first real problem. This commit introduced a brand identity per site, style profile slots that learn from approved articles, and research through scraped sources and vision models. From here on every prompt starts with who is speaking.

Stage one of the cockpit: discover, with market selection and a scraped website
Stage one, discover. Before anything is written, the market is segmented and the site is scraped.

LinkedIn on a schedule, behind guardrails

248c677a 10 May 2026

The next day the factory learned to post: slot-based scheduling through a publishing tool, with guardrails on what may go out and when. It is still the only channel besides the blogs that the factory feeds directly, and everything it produces there waits for a human click.

Killing the rework loop

8e983b9d 9 Jun 2026

The expensive habit was a loop: draft, critique, rewrite, critique again, forever. This commit made copy edits deterministic where they can be, capped rewrites, and turned the pipeline into an assembly line with fixed stations. Quality is built in at the station, not inspected in afterwards.

Stage two of the cockpit: plan, showing a cluster of eighteen articles, all written, rated and live
Stage two, plan. A pillar and its spokes for one vertical: eighteen articles, all live, link coverage complete.

Every call gets a price tag

075a71e4 11 Jun 2026

Routing between model providers and cost telemetry on every call. This is where the number I quote comes from: a full article, with research, draft, images and quality gates, costs about ninety-four cents. The earlier claim of zero, because it ran on a subscription, was overhauled by this measurement.

A gate for claims, a gate for images

2486cfbe 27 Jul 2026

A claims gate that checks statements against the sources that were actually fetched, image gates, and a triage of sources before they may be cited. An article that cannot show where a number came from does not pass.

Stage three of the cockpit: produce, with the pipeline start and an ad-hoc generator
Stage three, produce. One button runs a whole vertical; the form below makes a single article on demand.

372 internal links pointed at an address that does not exist

52c90024 14 Aug 2026

Every article links to its neighbours. The builder wrote the internal folder name into the address instead of the published one, and those addresses answered with a plain not-found. In one site’s entire stock, not a single link of that kind was right: 367 out of 367, plus five elsewhere.

What kept it alive for weeks was my own checking. It compared the last part of every address and never the part in front of it, so it could not see this class of mistake at all. Nothing found it. It surfaced only when a new linking run was about to make the same mistake again.

What it does tonight

It feeds five sites, two of them on WordPress, three on their own stacks. The nightly loops on the home server ask it for articles; it plans, researches, drafts, illustrates, grades its own output and files the result in the cockpit. I release.

Runs on its own

  • topic planning as pillars and spokes per vertical
  • research from scraped sources, with a triage of what may be cited
  • drafting, deterministic copy edits, a capped rewrite
  • image generation, quality gates on structure and claims
  • pushing the release to the site, with links checked afterwards

Stays with me

  • the release click, every time
  • the brand identity and the style examples it learns from
  • which verticals are worth an article at all

About 0.94 US dollars per article including research, images and gates, measured by the cost telemetry, not estimated.

Where this goes

The bottleneck is not the factory, it is the release click at the end of the chain. I have paused building until the twentieth of September to measure whether the number of released articles actually rises when nothing new is built. If it does not, the next thing to build is not a feature.