# postnext.io # # ONE User-agent group, deliberately. A named group (GPTBot, Bytespider, # Meta-ExternalAgent, ...) REPLACES the wildcard rules for that agent rather # than adding to them, so giving a named crawler the same rules as `*` buys # nothing today and silently excludes it from every rule later added to `*`. # Requests to add a named AI-crawler group have been declined for this reason; # written down here so the decision is not re-litigated. Asserted by # scripts/seo/qa-all.js. # # LLMs: https://postnext.io/llms.txt # (a comment, because no standard directive exists for this and compliant # parsers ignore comments. It costs nothing and is discoverable by a human or # an agent reading the file.) User-agent: * # Application surfaces. Never useful in an index, and crawling them spends # budget the ~1,300-page public corpus needs. Disallow: /api/ Disallow: /superuser/ Disallow: /admin/ Disallow: /account/ Disallow: /dashboard/ Disallow: /onboarding/ Disallow: /wp-admin/ Disallow: /wp-includes/ # Tracking parameters mint an unbounded set of duplicate URLs for any page that # carries one. Only parameters that add nothing a crawler needs are listed: # every public page is self-canonical, and a canonical tag handles duplicates # better than a Disallow, which would stop Google seeing the canonical at all. Disallow: /*?utm_source= Disallow: /*?utm_medium= Disallow: /*?utm_campaign= # Signup and upgrade CTAs carry ?plan= and ?source= for attribution. The # destination is not indexable in any variant. Disallow: /signup? Disallow: /upgrade? # The blog's JSON index (repo postnext-blog). It feeds the /latest-blog-posts widget # server-side; it is not a page and should not be crawled. Disallow: /blog/search.json Sitemap: https://postnext.io/sitemap.xml