Tooling / 2026 / Private
SEO Agents
Internal monitoring for every site I run. Three scheduled jobs audit them overnight and put the results on a dashboard built to be read from across a room.

The problem
I run about twenty sites. Checking them by hand is exactly the kind of job that gets done thoroughly for two weeks and then never again, and the failure mode is silent: nothing tells you a site got slower, it just quietly stops converting.
What I built
Three scheduled jobs. One syncs the list of sites from the hosting platform so a new project appears on its own. One audits every live site overnight for performance, accessibility and SEO. One drafts content weekly.
Results land on a dark dashboard with the worst score first, sized so it is readable from across the room on a kiosk laptop rather than requiring anyone to sit down and log in.
Two decisions worth explaining
The audit loop is sequential with a delay rather than running everything at once. The measurement API allows a hundred requests per hundred seconds, and that rate limit is the one that actually bites. The daily cap is nowhere near relevant at this scale, so the shape of the loop is set by the constraint that is real.
A job stays unscheduled until it genuinely works. A cron that is known to be broken and expected to be broken trains you to ignore a failing job, which is precisely backwards for a monitoring tool.
Access
It is a single-user tool, so it carries its own sign-in with an allowlist of exactly one address, on top of the platform login. The allowlist fails closed: an unset variable makes it refuse everybody rather than admit everybody. A configuration mistake should be an outage, never a silently open door.