# One group on purpose. Search and AI-answer crawlers (Googlebot, Bingbot, # PerplexityBot, Perplexity-User, OAI-SearchBot, ChatGPT-User, ClaudeBot, # Claude-User, Claude-SearchBot, Applebot) and the AI-use tokens # (Google-Extended, Applebot-Extended) all fall under `*`, so public guides, # itineraries and the Markdown/llms.txt alternates are open to them. Do NOT # add a named group for one of them: a crawler that finds its own group # ignores `*` entirely, so every Disallow below would have to be repeated. # Training preference is stated by the Content-Signal line, not by blocking. User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # Image endpoints must stay fetchable by crawlers — OG previews and activity # photos break for robots-respecting bots if /api/ blocks them. Allow: /api/trips/public/ Allow: /api/photos/ Allow: /api/discover/public/ Disallow: /admin Disallow: /api/ # /go/{code} (growth engine short links) stay crawlable on purpose: social and # pin link-preview crawlers obey robots.txt and would fail their link checks. # The redirect answers X-Robots-Tag: noindex and counts bots separately. Disallow: /group/ Disallow: /inbox Disallow: /invite/ Disallow: /onboarding # /p/ (plan-share links) is deliberately NOT disallowed. facebookexternalhit, # Twitterbot and Slackbot all honour robots.txt for link unfurls, so blocking # the path here left every shared plan unfurling bare. Those pages are served # with instead (which unfurl # crawlers ignore) — same posture as /s/ trip-share links. Disallow: /passport Disallow: /settings/ Disallow: /subscription/ Disallow: /verify-email Sitemap: https://wonderkit.app/sitemap.xml Agentmap: https://wonderkit.app/.well-known/ai-catalog.json