{
  "schema": "kallipolis.resource-quality.v1",
  "id": "resource.discovery.openai-search-crawler-controls",
  "version": "1.0.0",
  "title": "OpenAI search crawler access and discovery controls",
  "summary": "Official-source lifecycle facts for controlling OpenAI search crawling without confusing crawler access, ChatGPT search eligibility, navigational links, training use, citation, or user-triggered retrieval.",
  "content": {
    "kind": "implementation-checklist",
    "facts": [
      {
        "id": "fact.openai.controls-independent",
        "statement": "OAI-SearchBot and GPTBot robots.txt controls are independent: a publisher can allow the search crawler while disallowing the training crawler.",
        "normativeLevel": "informative",
        "sourceIds": ["source.openai.crawlers"]
      },
      {
        "id": "fact.openai.searchbot-purpose",
        "statement": "OAI-SearchBot is the automatic crawler used to surface websites in ChatGPT search results; publishers should allow it in robots.txt and permit OpenAI's published search-bot IP ranges when they want search eligibility.",
        "normativeLevel": "informative",
        "sourceIds": ["source.openai.crawlers"]
      },
      {
        "id": "fact.openai.access-not-listing-proof",
        "statement": "Allowing OAI-SearchBot is an access and eligibility signal, not evidence that a URL has been indexed, cited in an answer, or used by a person or Agent; those outcomes require separate observations.",
        "normativeLevel": "informative",
        "sourceIds": ["source.openai.crawlers"]
      },
      {
        "id": "fact.openai.user-agent-separation",
        "statement": "ChatGPT-User represents certain user-triggered page visits, is not an automatic web crawler, and is not the control used to determine whether content may appear in ChatGPT search.",
        "normativeLevel": "informative",
        "sourceIds": ["source.openai.crawlers"]
      }
    ]
  },
  "language": "en",
  "category": "ai-discovery-and-registry",
  "state": "prepared",
  "canonicalUrl": "https://platoskallipolis.com/resources/ai-discovery-and-registry/openai-search-crawler-controls.json",
  "contentHash": "sha256:5d45949de922576f9f8742488b1fb2550fee32ba31ff1dde3373ecf5251efdd3",
  "owner": {
    "id": "platos-kallipolis",
    "name": "Plato's Kallipolis",
    "type": "organization",
    "accountabilityUrl": "https://platoskallipolis.com/about"
  },
  "access": {
    "mode": "public",
    "url": "https://platoskallipolis.com/resources/ai-discovery-and-registry/openai-search-crawler-controls.json",
    "authentication": "none",
    "robotsAllowed": true
  },
  "provenance": {
    "method": "primary-source",
    "sources": [
      {
        "id": "source.openai.crawlers",
        "url": "https://developers.openai.com/api/docs/bots",
        "title": "Overview of OpenAI Crawlers",
        "publisher": "OpenAI",
        "observedAt": "2026-08-26T15:20:00Z"
      }
    ]
  },
  "observedAt": "2026-08-26T15:20:00Z",
  "freshness": {
    "policy": "max-age",
    "state": "current",
    "nextReviewAt": "2026-09-02T15:20:00Z",
    "maxAgeSeconds": 604800
  },
  "license": {
    "id": "source-terms-apply",
    "url": "https://openai.com/policies/terms-of-use/",
    "redistributionAllowed": false
  },
  "evidence": [
    {
      "id": "evidence.openai.crawlers",
      "type": "source-claim",
      "url": "https://developers.openai.com/api/docs/bots",
      "observedAt": "2026-08-26T15:20:00Z"
    }
  ]
}
