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

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.

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.

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.

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.