User-Agent: * Allow: / # Public read-only endpoints the marketing pages need in order to RENDER. # The app client-renders (createRoot, not hydrate), so a crawler that cannot # reach these renders "0 models / No results found" and Google files the page # as a Soft 404 — which is what happened to /pricing. Both are anonymous GETs # already serving the same payload to any visitor. # Keep these above "Disallow: /api/" for first-match crawlers; Google resolves # the conflict by longest match, which selects Allow either way. Allow: /api/pricing Allow: /api/status # The authenticated app and the utility routes behind it. These render as an # empty shell to a crawler and have no search value. They are listed here from # web/src/seo/routes.js (spaExactRoutes + spaPrefixRoutes); /login and /register # are deliberately left crawlable because they are public entry pages. # The previous rules blocked /dashboard and /auth, which are not routes in this # app at all — both return 404 — so nothing was actually protected. Disallow: /console Disallow: /oauth/ Disallow: /setup Disallow: /forbidden Disallow: /reset Disallow: /user/reset Disallow: /chat2link Disallow: /api/ Sitemap: https://ccapi.ai/sitemap.xml # https://llmstxt.org — what this site contains, for AI assistants. # Generated, like the sitemap; do not commit a static copy. LLMs: https://ccapi.ai/llms.txt