{
  "schemaVersion": "2.74",
  "lastModified": "2026-10-04",
  "canonical": "https://yangtsunghann.com/data/ai-rights-policy.json",
  "purpose": "將搜尋索引／AI 引用、使用者觸發擷取與模型訓練控制分開治理。V2.56 明確允許主要搜尋 crawler，同時保留既有 OpenAI 訓練 opt-out，並把其他供應商尚未決定的訓練政策公開記錄。",
  "policyProfile": "search_and_citation_first_with_openai_training_opt_out_and_provider_specific_defaults",
  "principles": [
    "可被搜尋、可被 AI 引用與可被用於模型訓練是不同用途，不視為同一項授權。",
    "公開作品與藝術家頁面維持 Google Search 與 ChatGPT Search 的可發現性。",
    "OpenAI OAI-SearchBot 與 GPTBot 採不同 robots.txt 規則：搜尋允許、訓練拒絕。",
    "Google-Extended 目前同時管理未來 Gemini 模型訓練與 Gemini／Vertex AI grounding；在沒有分離控制前，本版維持既有公開預設，不自行犧牲 grounding 可見性。",
    "robots.txt 是 crawler 存取偏好與控制，不取代著作權、授權契約或作品本身的權利聲明。"
  ],
  "searchAndCitation": {
    "googleSearch": {
      "crawler": "Googlebot",
      "policy": "explicit_allow"
    },
    "googleImages": {
      "crawler": "Googlebot-Image",
      "policy": "explicit_allow"
    },
    "chatgptSearch": {
      "crawler": "OAI-SearchBot",
      "policy": "explicit_allow"
    },
    "claudeSearch": {
      "crawler": "Claude-SearchBot",
      "policy": "explicit_allow"
    },
    "perplexitySearch": {
      "crawler": "PerplexityBot",
      "policy": "explicit_allow"
    }
  },
  "modelTraining": {
    "openAI": {
      "crawler": "GPTBot",
      "policy": "explicit_disallow",
      "robotsDirective": "User-agent: GPTBot / Disallow: /"
    },
    "google": {
      "controlToken": "Google-Extended",
      "policy": "inherited_public_default",
      "couplesTrainingAndGrounding": true,
      "decision": "retain public default because the same control affects Gemini/Vertex AI grounding"
    },
    "anthropic": {
      "crawler": "ClaudeBot",
      "policy": "inherited_public_default",
      "decision": "open_rights_policy_decision",
      "note": "Anthropic documents ClaudeBot as a model-development/training crawler."
    },
    "perplexity": {
      "crawler": "PerplexityBot",
      "searchCrawler": true,
      "foundationModelTrainingUse": "provider_docs_state_not_used_for_ai_foundation_model_training"
    }
  },
  "userTriggeredFetchers": {
    "chatGPTUser": {
      "agent": "ChatGPT-User",
      "policy": "user_initiated"
    },
    "claudeUser": {
      "agent": "Claude-User",
      "policy": "user_initiated"
    },
    "perplexityUser": {
      "agent": "Perplexity-User",
      "policy": "user_initiated"
    }
  },
  "rights": {
    "copyrightOwnershipChanged": false,
    "artworkRightsMetadataSource": "/data/image-graph.json",
    "licensePage": "https://yangtsunghann.com/contact/",
    "note": "本政策只管理 crawler 用途與存取偏好，不授予作品重製、商用或衍生使用權。"
  },
  "sourceDocs": [
    {
      "provider": "OpenAI",
      "url": "https://developers.openai.com/api/docs/bots",
      "verified": "2026-10-04",
      "note": "OAI-SearchBot is for ChatGPT search; GPTBot is a separate foundation-model training crawler. Search visibility requires crawler access and may also depend on CDN/WAF acceptance."
    },
    {
      "provider": "Google",
      "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
      "verified": "2026-10-04",
      "note": "Googlebot controls Google Search crawling. Google-Extended is a separate product token; it does not control Search inclusion and covers Gemini model-training use plus Gemini/Vertex AI grounding."
    },
    {
      "provider": "Anthropic",
      "url": "https://support.anthropic.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
      "verified": "2026-10-04",
      "note": "Anthropic distinguishes ClaudeBot, Claude-SearchBot, and Claude-User. Claude-SearchBot is used for search-result quality; Claude-User is user-initiated retrieval."
    },
    {
      "provider": "Perplexity",
      "url": "https://docs.perplexity.ai/docs/resources/perplexity-crawlers",
      "verified": "2026-10-04",
      "note": "PerplexityBot surfaces and links websites in Perplexity search results and is not used to crawl content for AI foundation models. Perplexity-User is user-initiated retrieval and generally ignores robots.txt."
    }
  ],
  "crawlerPolicyRegistry": "/data/crawler-policy.json",
  "dataGovernanceRegistry": "/data/data-governance.json",
  "visibleContentChanged": false,
  "externalRetrievalBenchmark": "/data/external-retrieval-benchmark.json",
  "launchVerification": {
    "verifiedOn": "2026-10-04",
    "targetPublicLaunchDate": "2026-10-10",
    "robotsDirectiveChangesInThisRelease": false,
    "policyChoicesChanged": false,
    "openAISearchBotAllowed": true,
    "openAIGPTBotDisallowed": true,
    "googlebotAllowed": true,
    "googleExtendedPolicy": "inherited_public_default",
    "claudeSearchBotAllowed": true,
    "claudeBotPolicy": "inherited_public_default",
    "perplexityBotAllowed": true,
    "cdnWafVerifiedForNamedBots": false,
    "note": "robots.txt policy was rechecked against current official provider documentation. CDN/WAF acceptance is an external infrastructure layer and is not claimed verified."
  }
}
