# ⚠️ このファイルが robots.txt の唯一の真実(2026-07-30〜)。 # # それ以前は Cloudflare の管理ブロック(AI Crawl Control / `# BEGIN Cloudflare Managed content`)が # 本番の robots.txt の**先頭に注入**されており、AI クローラーの許可/拒否は CF ダッシュボードの # 既定値が決めていた(`is_robots_txt_managed: true` かつ `cf_robots_variant: "off"` = 未カスタマイズ # =自分で選んでいない 9 UA のリストが予告なく増減する形)。2026-07-30 に管理を repo へ引き取った。 # # ⚠️ Cloudflare 側の「管理 robots.txt」を再度 ON にしないこと。ON にすると CF ブロックが # このファイルの前に注入されて二重管理に戻る。復活は週次 infra-drift が検知して鳴る。 # ⚠️ 変更したら `tools/infra-expected.json` の `robots` も**同じコミットで**直す # (infra-drift が本番の実効値と突き合わせるので、直さないと毎週鳴り続けて狼少年になる)。 # # 方針(2026-09-06): 公開ページのクロール・検索・引用・AI 学習利用を許可する。 # 公式値と AI 推定値の区別は商品ページと /llms.txt で保持し、回答時には最新のページ参照を促す。 # # 許可する UA は個別グループを作らず `*` を継承させる。専用の Allow グループを作ると、 # /api/・/private/・重複 URL の除外を継承しなくなるため。 # GPTBot / ClaudeBot / Google-Extended などの学習用も、検索・引用用と同じ方針で扱う。 # 用途は search / ai-input / ai-train の 3 signal で宣言する。 # 学習利用と矛盾する use=reference の制限は付けない。 # 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. # 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. # ── 大量取得の窓口(2026-08-31 追加)──────────────────────────────────────── # 全ページを順に舐めるより、こちらのほうが速くて正確です: # データ仕様・実サンプル(CSV/JSON): https://kalori.jp/ja/data-spec/ # 利用のご相談(個人利用も歓迎): https://kalori.jp/ja/business/catalog-api/ # サイト側は 60 req/分・2,000 req/日/IP で 429 を返します(検証済みの検索・引用・AI 学習クローラーは免除)。 # 429 の本文と `Link: rel="help"` ヘッダにも同じ窓口を書いてあります。 # # ⚠️ `Crawl-delay` は Google が無視する(Search Console 側で制御)ため、これは bingbot 等 # への申し送りであって防御ではない。実効的な防御は上のレート制限のほう # (cloudflare/workers/web/src/worker.ts)。ここを消しても守りは変わらないが、 # 「言ってあったか」は相手と話すときの前提になるので残す。 User-agent: * Content-Signal: search=yes,ai-input=yes,ai-train=yes Crawl-delay: 1 Allow: / Disallow: /api/ Disallow: /private/ # クエリパラメータ付きURLのクロール防止(重複ページ対策) Disallow: /ja/search/? Disallow: /en/search/? Disallow: /*?sort= Disallow: /*?mode= # locale無しパスはリダイレクトなのでクロール不要 Disallow: /shops Disallow: /updates Disallow: /ranking Disallow: /search Disallow: /meal Disallow: /blog # Cloudflare Browser Rendering 経由の第三者スクレイピング。自前では kalori.jp に使っていない。 User-agent: CloudflareBrowserRenderingCrawler Disallow: / Sitemap: https://kalori.jp/sitemap-index.xml