=== BotGate – AI Crawler Control ===
Contributors: anilsuwal16
Tags: ai, robots.txt, llms.txt, crawler, gptbot
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Choose which AI bots can read your content, and publish an llms.txt file for AI search tools.

== Description ==

AI companies send crawlers to read websites, some to train models and some to answer questions in AI search. BotGate lets you decide which of them may read your site, from one screen under **Settings → BotGate**.

**AI bot control**

* A table of known AI crawlers: name, company, purpose (AI training, AI search or user request) and an Allow / Block switch.
* Three one-click presets: **Block training, allow search** (recommended), **Block all AI bots** and **Allow all AI bots**. Fine-tune any bot after picking one.
* Rules are added to WordPress's virtual robots.txt through the `robots_txt` filter, between `# BEGIN BotGate` and `# END BotGate`. BotGate never edits a file on your server.
* A live preview shows exactly which rules will be added before you save.
* Conflict detection warns you when a physical robots.txt file overrides the virtual one, when the site discourages search engines, when WordPress is installed in a subdirectory, or when plain permalinks are used.
* A Site Health test (Tools → Site Health) reports the same conflicts.

**llms.txt generator**

* Publishes a Markdown file at `/llms.txt` with your site name, a short description, the pages you choose and the latest posts from the categories you choose.
* Preview the file before saving.
* Regenerates automatically when you publish, update or delete content.
* Password-protected, private and draft content is never included.

**Privacy**

The free version makes no external requests and does no tracking.

**Known bots in this release**

GPTBot, OAI-SearchBot, ChatGPT-User (OpenAI) · ClaudeBot, Claude-User (Anthropic) · Google-Extended (Google) · PerplexityBot (Perplexity) · CCBot (Common Crawl) · Bytespider (ByteDance) · Applebot-Extended (Apple) · Meta-ExternalAgent (Meta).

The list ships with the plugin and is updated with each release. Developers can change it with the `botgate_bots` filter.

== Installation ==

1. Upload the `anilsuwal-botgate` folder to `/wp-content/plugins/`, or install the plugin from the Plugins screen.
2. Activate it.
3. Go to **Settings → BotGate**. The recommended preset (block training, allow search) is active by default.
4. Open the **llms.txt** tab, choose the pages and categories to list, and click **Save and regenerate**.

== Frequently Asked Questions ==

= Does robots.txt actually stop AI bots? =

robots.txt is a request. The major AI companies say their crawlers respect it, but a bot can ignore it.

= I have a robots.txt file in my site root. Will BotGate work? =

No. A physical file is served by your web server before WordPress runs, so the virtual robots.txt (and BotGate's rules) is never used. BotGate warns you about this. Delete or rename the file, or copy the BotGate rules from the preview into it.

= Does it work with Yoast SEO, Rank Math or All in One SEO? =

BotGate is built to work alongside them. Those plugins also use the `robots_txt` filter; BotGate adds its block after theirs (priority 20) and never duplicates it.

= Why does /llms.txt return a 404? =

Go to **Settings → Permalinks** and click **Save Changes** to refresh the rewrite rules. With plain permalinks, the file is served at `/?botgate_llms=1`.

= Which content is included in llms.txt? =

Only the pages and categories you select, and only published content that is not password-protected or private.

== Screenshots ==

1. AI Bots screen with presets, the crawler table and the robots.txt preview.
2. Changing a single bot switches to custom rules and updates the preview.
3. llms.txt screen with content selection and the live preview.
4. Settings screen.
5. The AI Bots screen on a phone.

== Changelog ==

= 1.0.1 =
Add Multilanguage options
*

= 1.0.0 =
* First release.

== Upgrade Notice ==

= 1.0.0 =
First release.
