Copy this fresh prompt into a web-capable assistant. It asks for 100 Bookshop.org items, excludes all current inventory (Live, Review, and Shelved rows — shelved never comes back), and returns Supabase SQL using the import helper.
Two jobs run on their own each morning. Nothing here needs you — this is just what happens while you sleep. The book pull is a scheduled Claude Code agent; the link check is still a GitHub Action.
A scheduled Claude Code cloud agent picks the city that currently has the fewest gifts, searches the web for 5 real books tied to that place, and verifies every ISBN against a real listing page. Each one is filed as a Review candidate, never Live: you decide what actually goes in the shop.
It reads every title you already stock or have shelved first, and treats both as forbidden. That is why a book you shelved never comes back.
The ISBN is the part that matters: we build the Bookshop link and the cover image from it ourselves, the same way Auto Fill does, so the agent never gets to invent a URL.
It replaced a GitHub Action on 2026-07-28. That version needed a funded ANTHROPIC_API_KEY, and its four cron triggers had all quietly stopped doing any work — they fired at :55, GitHub started them up to half an hour late, and an hour-guard then skipped the job while still reporting success. The routine bills to the Claude subscription and needs no API key at all.
Tries every gift's product link and image the way a shopper's browser would, and writes up whatever fails. It checks one seventh of the catalogue a night — Monday the first seventh, Tuesday the second — so every gift is re-tested once a week. No AI involved; it just fetches URLs.
Results land on the Issues page, and the ISSUES badge in the toolbar counts what is still open.