A page that updates itself from your calendar
The page is not the work. Keeping the page honest, every week, forever, is the work — and it is the part a program is genuinely better at.
What is worth automating
Anything that already exists somewhere else in a structured form: a tour calendar, a release schedule, a booking system’s next free slot, the status of a shop that opens on the first Friday of the month. If a fact lives in a system, copying it by hand every week is work a program should do instead.
What is not worth automating is anything requiring a judgement — which link should be featured, how the bio reads, whether a new project deserves its own block. Those change rarely and badly reward guessing, which is exactly the wrong shape for a scheduled job.
- Give the agent a key, the page id and one source of truth it can read.
- Have it fetch the page first, so it edits the current state rather than overwriting a change you made yesterday.
- Replace only the blocks it owns: the dates, the «open now» line, the current release.
- Send the whole block list back in one update, and read the page as text afterwards to confirm.
Patterns that hold up
- Date windows do most of the work without any agent: a block with an end date removes itself the morning after.
- A single text block as a status line — «Open today until 22:00» — is easier to keep true than five scattered facts.
- Keep block ids stable across runs, so statistics stay attached to the same link instead of restarting.
- Let the job fail loudly. A silent failure leaves last week’s dates on the page, which is worse than an empty section.
The rule about autonomy
Give a scheduled agent the narrowest mandate that does the job. «Update the dates block from this calendar» is a rule you can live with. «Keep the page fresh» is not a rule at all; it is an invitation to rewrite your bio on a Tuesday.
The safest arrangement is a report plus a small, explicit permission: the agent tells you what it found and changes only the one kind of thing you agreed to. Everything else waits for a sentence from you, which costs ten seconds and prevents the class of surprise that ends with «why does my page say that».