Skip to content
ClinicStats
Menu

AI search readiness: a technical checklist for clinic websites

This is the hands-on companion to the AI visibility page: what to change on the site, and how to test each change yourself from a terminal or a browser.

Last reviewed against the sources listed at the end.

1. Let the AI search bots in

robots.txt is a plain file at the root of your domain, defined by RFC 9309. A bot follows the most specific group that names it, or the * group if none does. A common mistake is a security plugin that adds Disallow: / for every bot it does not recognise.

To test, open https://yourclinic.com/robots.txt and look for groups naming OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot or Perplexity-User. Then check the server does not block them by user agent, which robots.txt cannot show:

curl -s -o /dev/null -w "%{http_code}\n" -A "OAI-SearchBot" https://yourclinic.com/
curl -s -o /dev/null -w "%{http_code}\n" -A "PerplexityBot" https://yourclinic.com/

Both should print 200. A 403 means a firewall or CDN rule is blocking the bot, whatever robots.txt says.

2. Put the words in the HTML

Google renders JavaScript, but it does so in a second pass, and many AI crawlers do not run it at all. If services, providers and hours only appear after scripts load, those crawlers see an empty page.

To test, fetch the page without a browser and count what is there:

curl -s https://yourclinic.com/ | sed -e "s/<[^>]*>/ /g" | wc -w

A few hundred words is healthy. Under 50 usually means a client-rendered site builder or a single-page app. The fix is server-side rendering or static pages, which most modern frameworks and site builders offer as a setting.

3. Publish an llms.txt

llms.txt is a proposal from September 2024 for a Markdown file at /llms.txt that gives AI tools a short, clean map of a site. It is not a standard yet and no major assistant has said it relies on it, so treat it as cheap insurance. The format is an H1 with the name, a one-paragraph summary in a blockquote, then sections of links.

# Riverside Family Medicine

> Family medicine clinic at 120 Main Street, Springfield, IL 62701.
> Phone (217) 555-0100. Open Monday to Friday 8:00 to 17:00.
> Accepting new patients. In network with Aetna, Blue Cross Blue Shield of Illinois and Medicare.

## Care
- [Services](https://riverside.example/services): annual physicals, chronic care, vaccines
- [Providers](https://riverside.example/providers): 3 physicians and 2 nurse practitioners

## Patients
- [Book online](https://riverside.example/book)
- [Insurance and prices](https://riverside.example/insurance)

The example uses a placeholder clinic. Write yours from facts on your own pages, and update it when they change.

4. Write facts an assistant can repeat

Assistants quote sentences. A sentence such as "We accept Aetna, Cigna and Medicare" can be repeated; a carousel of insurer logos cannot. Check that these are written out as text on the homepage or one click away:

  • Street address and phone number.
  • Services, in the words patients use ("knee pain", not only "orthopaedic services").
  • Insurance plans accepted, or self-pay prices.
  • Providers with credentials, and whether you are accepting new patients.

Mirror the same facts in MedicalClinic structured data. It does not replace the visible text, but it removes doubt about which number or address is the right one.

What the ClinicStats scan checks here

Related checks and their pass rules
CheckSub-scorePasses when
AI crawlers allowed in robots.txtAI-readyrobots.txt does not block GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot or Google-Extended from the site.
Content readable without JavaScriptAI-readyThe initial HTML (before JavaScript runs) contains at least 150 words of meaningful visible text.
llms.txt fileAI-readyA /llms.txt file exists and is plain text or Markdown with a heading.
Quotable facts in plain textAI-readyThe page text states the address, phone number, services offered and insurers accepted.
Named in an AI answerAI-readyAsked one sample prompt ("Which {specialty} clinics in {city}, {state} would you recommend?"), ChatGPT with web search names the clinic or its domain.

Run all five AI-ready checks at once

The scan reads your robots.txt, counts the words in your HTML before JavaScript, looks for llms.txt and asks ChatGPT one patient question.

Enter at least one. Your report shows on screen right away and is emailed to you when you give an email.

We email your report and occasional updates from ClinicStats. Unsubscribe anytime.

Checking you are human…

Questions

What is /llms.txt?

A Markdown file at the root of a domain that summarises the site and links its key pages for AI tools. It is an emerging proposal, so ClinicStats gives partial credit when it is missing rather than failing the check.

Should I block GPTBot and ClaudeBot?

That is a choice about model training, not search. Blocking the training bots does not stop OAI-SearchBot, Claude-SearchBot or the user-triggered bots from reading your pages for answers.

Sources

  1. RFC 9309: Robots Exclusion Protocol, IETF
  2. Understand JavaScript SEO basics, Google Search Central
  3. The /llms.txt file, llmstxt.org
  4. Overview of OpenAI crawlers, OpenAI
  5. MedicalClinic, Schema.org