# CheckedCare crawler policy: READ and CITE, yes. TRAIN, no. # # The product is the pipeline and the current, cited records, not secrecy, so we # want answer engines to fetch us live and cite us. We do NOT want the data # absorbed into model weights, where it can be reproduced without a fetch, # without a citation, and without ever going stale. That disintermediation is the # one outcome that undercuts the business. So the training crawlers are # disallowed outright, and every crawler we do allow is told ai-train=no. # # Two layers must agree: this file (which honest bots read) and Cloudflare's edge # "AI bot policies" Training = Disallow toggle, which enforces the same intent for # bots Cloudflare can fingerprint, including ones that ignore robots.txt. Keep # both in sync. # # Content-Signal (contentsignals.org) declares permitted USE, which is separate # from crawl ACCESS (Allow / Disallow). It is repeated inside each group because a # crawler obeys only its single most-specific matching group, so a signal under # "*" alone would never reach the named bots below. User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # --- Search and answer-engine crawlers: allowed to READ and CITE (ai-train=no) --- # Googlebot drives Search and AI Overviews. Gemini training is opted out # separately via the Google-Extended disallow further down; disallowing # Google-Extended does not affect Search or AI Overviews. User-agent: Googlebot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: Bingbot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: Applebot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # OpenAI: the search index and live user fetches cite us. GPTBot (training) is # disallowed below, which affects neither of these. User-agent: OAI-SearchBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: ChatGPT-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # Anthropic: live user fetch and the search index cite us. ClaudeBot (the general # training crawler) is disallowed below. User-agent: Claude-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: Claude-SearchBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: Claude-Web Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # Perplexity is an answer engine built on citation. User-agent: PerplexityBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: Perplexity-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: DuckAssistBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # Amazon (Alexa / Rufus) and Meta AI each use one blended crawler for both # indexing and training, so there is no separate citation bot to allow. We keep # the read-and-cite access and rely on the ai-train=no signal to decline training. User-agent: Amazonbot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-agent: meta-externalagent Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # --- Training crawlers and training-only opt-out tokens: DISALLOWED --- # Blocking each of these costs zero citation: either the same company's search or # live crawler is allowed above, or the bot only feeds a training corpus with no # answer engine that would ever cite us back. User-agent: GPTBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: anthropic-ai Disallow: / User-agent: Google-Extended Disallow: / User-agent: Applebot-Extended Disallow: / User-agent: CCBot Disallow: / User-agent: Bytespider Disallow: / # --- Bulk scrapers: DISALLOWED --- # Not a search or answer engine. Also refused with a 403 in the Worker # (src/lib/bot-deny.js), since a scraper may ignore this file. User-agent: ShapBot Disallow: / Sitemap: https://checkedcare.com/sitemap-index.xml Sitemap: https://checkedcare.com/facility-sitemap-index.xml # A plain-text map of the site for AI assistants (llmstxt.org format). Not a robots # directive; noted here because this is where a reader looks for such a pointer. It is # also declared as in the head. # https://checkedcare.com/llms.txt