ServerStack
Helpful homelab guides in Spanish, published as an affiliate site that runs its own SEO: it reads its search, engagement and click data every week and applies the optimizations itself.
A homelab guides site that runs its own growth loop: it reads its own analytics, decides what to fix, ships the fix, and rolls it back if the numbers get worse.
ServerStack is a test project: helpful guides for homelabbers, self-hosting, NAS, Linux, written in Spanish for a market I think is under-served, monetised with affiliate links. Plenty of sites publish that kind of content. The difference here is that ServerStack manages its own SEO and optimisation, automatically, every week.
It’s the next step from BongoCat, where I used Django and a lot of custom Python to manage content and have the site write itself. That worked, but the machinery got heavy. ServerStack strips it all back: static pages, one small Worker, scheduled pipelines. Faster to run, far easier to manage, same idea pushed further.
What it measures
Everything starts with the site reading its own data through the Google Search Console API and the Google Analytics Data API, plus a first-party click log in D1 that is the authoritative source for affiliate clicks (GA4 is the cross-check):
- Search performance, per page and per query: average position, impressions, clicks and CTR from Search Console, with Bing Webmaster stats alongside.
- Content quality, per page: scroll depth, engaged time on page and outbound clicks from Analytics, so it knows whether people actually read a guide or bounce off it.
- Revenue intent, clicks on affiliate links, tracked as events and compared against pageviews to get a per-page conversion signal.
Each run snapshots all of it into D1, so every decision is measured against a real four-week baseline instead of vibes.
How it optimises
A weekly cron job runs the loop: measure, then diagnose, with every step logged. A deterministic rules engine reads the trends and emits specific tasks, rewrite this meta title, restructure that page, refresh this old guide, tighten the CTA on a page that earns scroll but no clicks. The rules decide; a language model only drafts the actual changes inside the executors. When an edit lands, it’s benchmarked against the baseline, and anything that hurts performance is rolled back automatically.
New content runs through the same discipline. Three gated posts a day are generated, checked against a valuable-content schema that refuses thin or templated pages, then wired into the internal-link graph, the sitemap and the homepage before deploy, with indexing pings sent once live.
The honest objective function has two halves: earn rankings and clicks from search engines, and prove content quality on the page, deeper scroll, longer engaged time, and more clicks through to the affiliate links.
Why I built it
BongoCat answered whether a site could write itself. ServerStack answers the next question: can a site improve itself from its own data, without me in the loop, on infrastructure simple enough to ignore? Static site, one Worker, GitHub Actions. That’s the whole stack, and the loop runs whether I watch it or not.
It’s live at serverstack.cc. This page is a living document, I’ll update it as the experiment runs and the agent’s decisions become clearer.