# As a condition of accessing this website, you agree to abide by the following # content signals: # (a) If a Content-Signal = yes, you may collect content for the corresponding # use. # (b) If a Content-Signal = no, you may not collect content for the # corresponding use. # (c) If the website operator does not include a Content-Signal for a # corresponding use, the website operator neither grants nor restricts # permission via Content-Signal with respect to the corresponding use. # The content signals and their meanings are: # search: building a search index and providing search results (e.g., returning # hyperlinks and short excerpts from your website's contents). Search does not # include providing AI-generated search summaries. # ai-input: inputting content into one or more AI models (e.g., retrieval # augmented generation, grounding, or other real-time taking of content for # generative AI search answers). # ai-train: training or fine-tuning AI models. # use: how AI systems may consume the content (immediate, reference, or full). # ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF # RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT # AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET. # BEGIN Cloudflare Managed content User-agent: * Content-Signal: search=yes,ai-train=no,use=reference Allow: / User-agent: Amazonbot Disallow: / User-agent: Applebot-Extended Disallow: / User-agent: Bytespider Disallow: / User-agent: CCBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: CloudflareBrowserRenderingCrawler Disallow: / User-agent: Google-Extended Disallow: / User-agent: GPTBot Disallow: / User-agent: meta-externalagent Disallow: / # END Cloudflare Managed Content User-agent: * Allow: / # Print booklets are near-duplicates of the /printable// landing page; # noindex'd at the page level but also blocked from crawl here to save budget # on new-site indexing. Print variants have no shareable content of their own. Disallow: /printable/*/print/ Disallow: /printable/*/print # App / API surfaces are not user-facing content. Disallow: /api/ Disallow: /play/ # # NOTE about /daily/YYYY-MM-DD/{,easy,medium,hard,expert}/ pages: # These are intentionally NOT blocked here even though we do not want them # indexed. Google's own guidance: to reliably keep a URL out of the index, # it must be *crawlable* so Googlebot can see the `` tag on the page. A `Disallow` here would make # the URLs *un-crawlable* — and Google would then be free to keep them in # its index as "URL only" listings without ever fetching the noindex tag, # which is the worst of both worlds. # # Instead we rely on three layers of index-suppression that Google actually # respects: # 1. `` on every daily page # (set by Base.astro's `noindex` prop). # 2. `X-Robots-Tag: noindex, follow` HTTP header injected by the Worker # (see src/worker.ts and src/middleware.ts) for /daily/YYYY-MM-DD/*. # 3. `` # pointing every daily page at its evergreen aggregate parent so any # accidental link equity flows upward, not into a dead thin URL. # # Old dailies also 301-redirect to /daily-sudoku/ after 7 days (edge rule), # so the addressable /daily/YYYY-MM-DD/* URL surface stays capped. # Explicit allow for common ad / social crawlers that respect robots. User-agent: Googlebot-Image Allow: /illustrations/ Allow: / User-agent: AdsBot-Google Allow: / # Slow down noisy AI training crawlers a touch. We're happy to be summarised # in AI answers (see llms.txt) but don't want to be scraped 100 req/s. User-agent: GPTBot Crawl-delay: 2 Allow: / User-agent: ClaudeBot Crawl-delay: 2 Allow: / User-agent: CCBot Crawl-delay: 2 Allow: / User-agent: PerplexityBot Crawl-delay: 2 Allow: / # Sitemaps — submit ONLY the index in Google Search Console. # Child files (sitemap-0 / images / videos) are listed inside the index. # Submitting children separately often creates "Couldn't fetch" noise. Sitemap: https://zeloku.com/sitemap-index.xml # AI / assistant discovery (not a robots directive — listed for operators). # See https://zeloku.com/llms.txt