{
    "schema_version": "1.0",
    "site": "https://granaria.ac",
    "updated_at": "2026-11-13T09:56:28+00:00",
    "policy": {
        "default_crawl_policy": "allow_public",
        "training_crawler_policy": "per_bot",
        "same_content_for_all_providers": true,
        "excluded_paths": [
            "/files.php",
            "/stats.php",
            "/akademie/konto.php",
            "/akademie/kurs.php",
            "/akademie/pruefung.php",
            "/akademie/dozent.php",
            "/akademie/db/",
            "/certificated.granaria/db/",
            "/pdfs/annotated/",
            "/tmp/",
            "/output/",
            "/docs/",
            "/*?*token=",
            "/*?*session_id=",
            "/*?*plus_success="
        ],
        "rights_note": "Crawl-Freigaben begründen keine neue Nutzungslizenz. Interne Inhalte benötigen unabhängig von robots.txt serverseitigen Zugriffsschutz."
    },
    "discovery": {
        "html": "https://granaria.ac/agents/providers.php",
        "json": "https://granaria.ac/api/v1/providers.php",
        "markdown": "https://granaria.ac/agents/providers.php?format=md",
        "robots": "https://granaria.ac/robots.txt"
    },
    "verification": {
        "provider_crawl_verified": false,
        "provider_answer_verified": false,
        "note": "Bot-Kennungen lassen sich simulieren. Ein echter Anbieterabruf braucht Serverprotokolle und eine passende Anbieter-IP-Verifikation; eine Modellantwort benötigt eine eigene Inhaltsprüfung. Diese Profile behaupten keinen solchen Nachweis."
    },
    "answer_probes": [
        {
            "id": "basis",
            "question": "Wie lange dauert die Basis und wie viele Lernmodule hat sie?",
            "source_ids": [
                "page-basis"
            ],
            "evaluation": "manual_against_current_sources"
        },
        {
            "id": "lehrgang",
            "question": "Welche Bausteine kombiniert ein Lehrgang?",
            "source_ids": [
                "page-course-packages",
                "page-basis",
                "page-profiles",
                "page-specialist-courses"
            ],
            "evaluation": "manual_against_current_sources"
        },
        {
            "id": "publication",
            "question": "Welche Bücher sind veröffentlicht und welche nur angekündigt?",
            "source_ids": [
                "page-books"
            ],
            "evaluation": "manual_against_current_sources"
        }
    ],
    "providers": [
        {
            "id": "openai",
            "name": "ChatGPT / OpenAI",
            "documentation_url": "https://developers.openai.com/api/docs/bots",
            "note": "Suche, Nutzerabrufe und Trainingscrawler sind getrennt steuerbar.",
            "bots": [
                {
                    "token": "OAI-SearchBot",
                    "purposes": [
                        "search"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot)",
                    "ip_ranges_url": "https://openai.com/searchbot.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Suchindex für ChatGPT."
                },
                {
                    "token": "ChatGPT-User",
                    "purposes": [
                        "user_fetch"
                    ],
                    "http_user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot",
                    "ip_ranges_url": "https://openai.com/chatgpt-user.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "may_not_apply",
                    "note": "Nutzergesteuerte Abrufe; robots.txt ist dabei keine verlässliche Zugriffssperre."
                },
                {
                    "token": "GPTBot",
                    "purposes": [
                        "training"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; GPTBot/1.4; +https://openai.com/gptbot)",
                    "ip_ranges_url": "https://openai.com/gptbot.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Trainingscrawler; öffentliche Crawl-Freigabe wie bisher."
                }
            ]
        },
        {
            "id": "anthropic",
            "name": "Claude / Anthropic",
            "documentation_url": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
            "note": "Suchindexierung, Nutzerabrufe und Training haben eigene Bot-Kennungen.",
            "bots": [
                {
                    "token": "Claude-SearchBot",
                    "purposes": [
                        "search"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; Claude-SearchBot/1.0; +https://claude.com)",
                    "ip_ranges_url": "https://claude.com/crawling/bots.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Crawler für Suchergebnisse."
                },
                {
                    "token": "Claude-User",
                    "purposes": [
                        "user_fetch"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; Claude-User/1.0; +https://claude.com)",
                    "ip_ranges_url": "https://claude.com/crawling/bots.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Abrufe im Auftrag von Nutzern."
                },
                {
                    "token": "ClaudeBot",
                    "purposes": [
                        "training"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://claude.com)",
                    "ip_ranges_url": "https://claude.com/crawling/bots.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Trainingscrawler; öffentliche Crawl-Freigabe wie bisher."
                }
            ]
        },
        {
            "id": "google",
            "name": "Google / Gemini",
            "documentation_url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
            "note": "Google-Extended ist ein robots.txt-Steuertoken ohne eigenen HTTP-User-Agent. Es betrifft Gemini-Training und bestimmte Grounding-Nutzungen, nicht die Aufnahme oder das Ranking in Google Search.",
            "bots": [
                {
                    "token": "Googlebot",
                    "purposes": [
                        "search"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
                    "ip_ranges_url": "https://developers.google.com/static/crawling/ipranges/common-crawlers.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Google-Suchindex einschließlich seiner KI-Suchfunktionen."
                },
                {
                    "token": "Google-Extended",
                    "purposes": [
                        "training",
                        "grounding"
                    ],
                    "http_user_agent": null,
                    "ip_ranges_url": null,
                    "crawl_policy": "allow_public",
                    "robots_behavior": "control_token",
                    "note": "Gemeinsames Signal für Gemini-Training und die dokumentierten Grounding-Nutzungen. Kein separater HTTP-Abruf."
                }
            ]
        },
        {
            "id": "perplexity",
            "name": "Perplexity",
            "documentation_url": "https://docs.perplexity.ai/docs/resources/perplexity-crawlers",
            "note": "Die beiden dokumentierten Bots dienen laut Anbieter nicht dem Training von Basismodellen.",
            "bots": [
                {
                    "token": "PerplexityBot",
                    "purposes": [
                        "search"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)",
                    "ip_ranges_url": "https://www.perplexity.ai/perplexitybot.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "honored",
                    "note": "Suchergebnisse und Quellenlinks."
                },
                {
                    "token": "Perplexity-User",
                    "purposes": [
                        "user_fetch"
                    ],
                    "http_user_agent": "Mozilla/5.0 (compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)",
                    "ip_ranges_url": "https://www.perplexity.ai/perplexity-user.json",
                    "crawl_policy": "allow_public",
                    "robots_behavior": "may_not_apply",
                    "note": "Nutzerabrufe; der Anbieter erklärt, dass robots.txt dabei üblicherweise nicht angewendet wird."
                }
            ]
        }
    ]
}
