What it does
An eight-tab dashboard over one nonprofit website: Search Console performance, live rankings, a full technical audit, and a weekly round of real travel and history questions put to ChatGPT, Gemini, Perplexity and Claude to see whether the Library is named and cited.
That second half is the part most institutions have no instrument for. People increasingly ask an assistant where to go and what to see, and if your collection is invisible in those answers you will not see it in your analytics either — there is no referrer for a conversation.
It also writes plain-text outputs so an AI assistant can read the whole picture in one fetch, and it manages its own tracking list, promoting promising keywords and retiring ones that are finished.
What it can do
- Striking-distance searches, high-ranking pages people skip, and title gaps
- Weekly multi-model checks for mentions, rank against nearby attractions, and cited sources
- Site audit of every sitemap URL: titles, canonicals, Open Graph, alt text, thin pages, redirects
- Checks whether robots.txt actually allows the AI crawlers you think it does
- Self-managing keyword and prompt tracking, with graduation, retirement and cooldown
- Drafted titles and descriptions under editorial guardrails, length-checked and flagged for human verification
- Every source degrades gracefully — a missing key skips a job and explains itself
Make it your own
Start by forking the repository into your own organization. Everything below assumes you are working in your fork, not this one.
- Fork, then move
setup/workflows/*.ymlinto.github/workflows/. - Enable Pages from
main//docs, setdocs/CNAME, and set Workflow permissions to Read and write. - Set up Search Console access: a no-role service account added as a Restricted user on your property, then Workload Identity Federation, then the
GCP_WIF_PROVIDERandGCP_SERVICE_ACCOUNTActions variables. - Set
gsc_propertyinconfig/site.ymlalong with your brand names and the nearby attractions you want to be compared against. - Optionally add
DATAFORSEO_*for live ranks, and any of the model API keys for the AI visibility checks. Without them those tabs simply sit out. - Replace
config/keywords.ymlandconfig/ai_prompts.ymlwith the searches and questions your own audience would actually type.
Stuck on a step? Open an issue on the repository. Questions from people adapting these for their own institution are the most useful feedback we get.