Theodore Roosevelt Presidential Library Labs

TRPL Labs  /  Dashboard

Dashboard

SEO & AI Visibility

Tracks whether search engines rank you — and whether AI assistants mention you at all.

Open the live demo

This one opens in its own tab.

Open demo

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.

# clone your fork git clone https://github.com/YOUR-ORG/SEO.git cd SEO
  1. Fork, then move setup/workflows/*.yml into .github/workflows/.
  2. Enable Pages from main / /docs, set docs/CNAME, and set Workflow permissions to Read and write.
  3. 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_PROVIDER and GCP_SERVICE_ACCOUNT Actions variables.
  4. Set gsc_property in config/site.yml along with your brand names and the nearby attractions you want to be compared against.
  5. 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.
  6. Replace config/keywords.yml and config/ai_prompts.yml with 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.