# Presly — robots.txt # Presly WANTS to be read, indexed, and recommended by search engines AND AI # answer engines (ChatGPT, Claude, Perplexity, Google AI Overviews/Gemini, # Copilot, Apple Intelligence, etc.). Every public page is open to them; only # private application routes are disallowed. # # Cloudflare Content Signals (https://contentsignals.org): # search = yes → appear in search indexes # ai-input = yes → AI answer engines MAY use our content to ground & cite answers # ai-train = yes → may be used for AI training (maximizes exposure/recommendation) User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=yes Allow: / Disallow: /dashboard Disallow: /admin # Public blog content API — the blog SPA fetches article JSON from here when it # renders. Crawlers' renderers obey robots.txt, so this MUST be allowed or the # page renders "Post not found" (a Soft 404). More specific than /api/ below, so # longest-match lets it through while the rest of /api/ stays blocked. Allow: /api/blog/ # #189 (A3): the blog sitemap explicitly — belt & braces for parsers that don't # do longest-match on the /api/blog/ rule above. Allow: /api/blog/sitemap.xml Disallow: /api/ Disallow: /login Disallow: /signup Disallow: /onboarding Disallow: /invite/ Disallow: /reset-password Disallow: /auth/ # ── AI answer & search crawlers — explicitly welcomed ──────────────────────── # (Named so no inherited/edge default can ambiguously block them. Same rules as # the wildcard group: full public access, private app routes excluded.) User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: GPTBot User-agent: ClaudeBot User-agent: Claude-User User-agent: Claude-SearchBot User-agent: anthropic-ai User-agent: PerplexityBot User-agent: Perplexity-User User-agent: Google-Extended User-agent: GoogleOther User-agent: Applebot User-agent: Applebot-Extended User-agent: Bingbot User-agent: DuckAssistBot User-agent: MistralAI-User User-agent: cohere-ai User-agent: Amazonbot User-agent: Meta-ExternalAgent User-agent: Meta-ExternalFetcher Allow: / Disallow: /dashboard Disallow: /admin # Public blog content API — the blog SPA fetches article JSON from here when it # renders. Crawlers' renderers obey robots.txt, so this MUST be allowed or the # page renders "Post not found" (a Soft 404). More specific than /api/ below, so # longest-match lets it through while the rest of /api/ stays blocked. Allow: /api/blog/ # #189 (A3): the blog sitemap explicitly — belt & braces for parsers that don't # do longest-match on the /api/blog/ rule above. Allow: /api/blog/sitemap.xml Disallow: /api/ Disallow: /login Disallow: /signup Disallow: /onboarding Disallow: /invite/ Disallow: /reset-password Disallow: /auth/ Sitemap: https://presly.ai/sitemap.xml