Why the order of groups matters
robots.txt is read in groups. Each group starts with one or more User-agent lines and lists its rules under them. A crawler looks for the group that names it; only if none does, it falls back to User-agent: *. It never combines the two.
That catches a lot of sites out. A file that keeps /admin from everyone and then adds a group to allow GPTBot has just let GPTBot into /admin, because GPTBot now reads only its own group. This generator avoids it: bots you allow are never named, so they share the rules you give everyone, and bots you block share one group that disallows the whole site.
Training, search and assistants are different bots
Most AI companies now run separate bots for separate jobs:
- Training crawlers collect pages for future models. Blocking them is the usual “opt out of AI training”.
- Search crawlers index pages for AI search, the way Googlebot does for Google. Blocking them means you stop being cited as a source.
- Assistant fetchers load a page because someone asked about it right then. They behave more like a visit than a crawl.
So “block AI” is rarely what you want. The No AI training preset blocks the first group and keeps the other two, which is where people coming from AI answers actually come from.
After you publish it
Upload the file to the root of your domain, so it answers at /robots.txt. Each subdomain needs its own. Google caches it for up to a day, so changes take a little while to land.
Then check it. The AI visibility checker reads your live file and tells you, bot by bot, who may read which page, and the bot directory explains each one.