Title: Crawlune – AI Crawler Controls
Author: wpshelf
Published: <strong>September 19, 2026</strong>
Last modified: September 19, 2026

---

Search plugins

![](https://ps.w.org/crawlune-ai-crawler-controls/assets/banner-772x250.png?rev=
3703487)

![](https://ps.w.org/crawlune-ai-crawler-controls/assets/icon.svg?rev=3703487)

# Crawlune – AI Crawler Controls

 By [wpshelf](https://profiles.wordpress.org/wpshelf/)

[Download](https://downloads.wordpress.org/plugin/crawlune-ai-crawler-controls.0.62.6.zip)

 * [Details](https://wordpress.org/plugins/crawlune-ai-crawler-controls/#description)
 * [Reviews](https://wordpress.org/plugins/crawlune-ai-crawler-controls/#reviews)
 * [Development](https://wordpress.org/plugins/crawlune-ai-crawler-controls/#developers)

 [Support](https://wordpress.org/support/plugin/crawlune-ai-crawler-controls/)

## Description

Crawlune audits how easily your published content can be extracted, controls AI

crawler access, and publishes machine-readable summaries. These features run locally
and do not require an account or license. It does not measure or promise citations
by answer engines.

Implemented:

 * Per-agent AI crawler controls for GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot,
   PerplexityBot and Google-Extended, distinguishing training crawlers from retrieval
   crawlers
 * Three named positions to start from — Open, “Answers yes, training no”, Closed—
   each setting every crawler and the matching content signals in one go
 * robots.txt directives generated from those rules
 * Optional refusal (403) for a crawler you blocked that requests pages anyway —
   off by default, and the requests keep being counted
 * A count of people arriving from ChatGPT, Claude, Perplexity, Gemini and Copilot—
   click-throughs, which is a floor under citations rather than a measure of them
 * Content signals (search, ai-input, ai-train) in robots.txt, which state what 
   a page may be used for rather than who may fetch it — off until you set them,
   and a declaration rather than an enforcement
 * The same refusal of AI training repeated as a noai response header, a robots 
   meta tag and a W3C TDM reservation at /.well-known/tdmrep.json
 * Markdown for agents: every page also available at its own address with .md on
   the end, and on request via Accept: text/markdown — off by default, and honouring
   the same exclusions as llms.txt
 * IndexNow submission when you publish or update a page — off by default, and honouring
   the same exclusions as llms.txt
 * An extractability audit scoring content on liftable answer blocks, question-shaped
   headings, external citations, quotable statistics, modification dates and thin
   content
 * A site-wide visibility report aggregating that across all published content, 
   worst pages first
 * /llms.txt and /llms-full.txt, generated from your real content and refreshed 
   when you publish
 * Admin screens for the report, a per-page work-list behind every number, crawler
   controls, llms.txt and licensing, plus REST routes for the same
 * Background analysis of your content, so none of the above is computed while you
   wait for a page to load
 * Structured data for your pages when no SEO plugin is already providing it
 * AI rewriting of a page’s opening into a liftable answer block, reviewed as a 
   word-level diff before anything is applied
 * AI rewriting of section headings toward the question they answer, keeping each
   heading’s level and its existing link address
 * Generated FAQ data for pages that answer questions they never ask, where every
   proposed answer has to be text already on the page — anything else is discarded
   before you see it
 * Applying a rewrite without disturbing surrounding block markup, and reverting
   a run from a journal
 * License activation against the WP Shelf licensing service

Hosted rewriting requires a WP Shelf license and an enabled generation service.

Hosted rewriting is enabled for activated licenses. Public licensing enrollment 
is not yet open. Local audits and crawler tools do not depend on it.

Not included:

 * Citation tracking — whether a given engine actually quoted you. Counting people
   who click through from an assistant is implemented and is a different thing: 
   it is a floor under citations, not a measure of them

Crawlune does not claim it will get your site cited by ChatGPT, Perplexity, Claude

or Google AI Overviews. That is not measurable from inside WordPress and will not
be claimed. What it reports is what it measured about your content.

### External services

The content audit, crawler controls, structured-data checks and generated
 llms.
txt files run on your site. External requests occur only for the optional features
described below. Activating the plugin alone does not opt you into usage reporting
or start generation.

**1. IndexNow.** With “Submit a page to IndexNow” on, publishing or updating a
 
page sends that page’s address to `https://api.indexnow.org/indexnow`, together 
with your site’s host name and a verification key this site publishes at its own
root. Nothing else goes with it — no content, no e-mail address, no license key.
IndexNow is a shared endpoint operated by Microsoft on behalf of Bing, Yandex, Seznam
and Naver; the same URL is submitted to all of them once. At most one submission
per address per hour. Service information and terms: https://www.indexnow.org/faq
Privacy information: https://www.microsoft.com/privacy/privacystatement

**2. WP Shelf licensing and generation.** A WP Shelf account and a
 product-specific
license are required to use the hosted generation service; the local features above
remain free without one.

 * Service host: `https://gloty-api.wp-shelf.com`, operated by WP Shelf. A developer
   can override it with `CITELY_SERVICE_URL` for a self-hosted service.
 * Licensing requests send the license key, site URL, product identifier and, on
   activation, plugin version. They occur when you activate or deactivate a license
   and when cached license status is refreshed. These requests are separate from
   starting a rewrite.
 * Starting a rewrite sends the original passage or heading, the page title, URL
   and post type, language, other headings, bounded body or section text, available
   audit signals, rewrite constraints, item identifiers and a batch identifier, 
   together with the site URL and license key. A developer can change context through
   the `citely_rewrite_context` filter.
 * The plugin sends batches after you start a run and polls for results while it
   is running. If enabled on the service, results may also arrive through an authenticated
   callback. Merely reading an audit or serving a page does not send its content
   for generation.
 * The generation implementation uses OpenAI to process content. The plugin calls
   WP Shelf, not OpenAI directly. License keys are for WP Shelf authentication, 
   not part of the provider’s generation prompt.
 * WP Shelf terms: https://wp-shelf.com/terms
 * WP Shelf privacy policy: https://wp-shelf.com/privacy
 * OpenAI terms: https://openai.com/policies/terms-of-use/
 * OpenAI privacy policy: https://openai.com/policies/privacy-policy/

**3. Optional usage reporting.** Only after you enable usage reporting in
 Settings,
a weekly background request sends the payload below to https://gloty-api.wp-shelf.
com/v1/telemetry (or your configured service host). It is operated by WP Shelf under
the same terms and privacy policy. Turning it off stops future reports. It is independent
of license activation and rewriting.

#### What the optional report sends

No usage report is sent unless you enable it in Settings. Its JSON payload
 contains
the product identifier and the following data:

 * How many AI crawlers you block, and how many of those are search crawlers —
    
   as counts. Which crawlers you chose is your editorial decision and is never sent
 * Whether WordPress’s “discourage search engines” setting is on
 * Whether you publish an llms.txt
 * Once you have run an audit: how many pages were analysed, the median score,
    
   and the component counts behind it. A site that has never run one sends no scores
   at all rather than zeroes — an unmeasured site is not a badly structured one
 * Your WordPress, PHP and Crawlune versions, your site’s locale, and whether
    WordPress
   considers the site production, staging or local
 * A one-way hash identifying this installation, salted with a random value
    generated
   on your site and never sent. It lets one site’s weekly reports be counted as 
   one site; it cannot be turned back into an address

Not included in the usage-report payload: your site address, any e-mail address,
any user account, any page,
 heading, answer or other content, any URL of yours,
which specific crawlers you block, and your license key. Turning the setting off
stops the weekly job immediately; uninstalling deletes the salt, so a later reinstall
is a different installation as far as we can tell. As with any HTTPS request, the
receiving server can see your server’s network address; the payload does not make
the connection anonymous.

**E-mailed reports:** the separate scheduled content report uses your site’s
 WordPress
mail configuration and the recipient you choose. Its delivery may use your hosting
or SMTP provider; Crawlune does not send that mail through WP Shelf.

Why we ask: how many real sites arrive with a search crawler blocked decides
 whether
the crawler screen is the front door of this plugin or a footnote in it, and the
median score in the wild is the only honest basis for saying what a typical site’s
gap is. Both are currently guesses.

Full documentation, including every component of the extractability score and what
this plugin cannot measure: https://wp-shelf.com/crawlune/docs

#### Keeping your data when you uninstall

Deleting the plugin removes everything it stored, which is the right default — a

plugin you have deleted should not leave rows behind. But it also removes your score
history, which is a measurement series that cannot be recreated for months already
past.

If you are deleting the plugin to troubleshoot and intend to reinstall, add this

to `wp-config.php` first:

    ```
    define( 'CITELY_KEEP_DATA', true );
    ```

Uninstalling then leaves your data in place, and a reinstall picks it up where it

left off. Remove the line when you want a genuine clean removal.

### Security

Found a security issue? Please email hello@wp-shelf.com rather than opening a
 public
support thread — a forum post is world-readable the moment you send it, on a plugin
installed on other people’s sites. You will get an acknowledgement within 72 hours,
and credit in the changelog unless you would rather not have it.

### Source code

Readable JavaScript source is included in src/ and shared-js/, including the shared

WP Shelf packages compiled into build/. The ZIP includes package.json and webpack.
config.js. See shared-js/README.md for rebuilding with Node.js and npm; no private
repository or workspace checkout is required. WordPress supplies the React and WordPress
browser libraries used by the compiled admin interface.

## Screenshots

[⌊AI visibility — the median extractability score, what the score is made of, and
how many pages are missing each signal⌉⌊AI visibility — the median extractability
score, what the score is made of, and how many pages are missing each signal⌉[

AI visibility — the median extractability score, what the score is made of, and 
how many pages are missing each signal

[⌊llms.txt — what is published, what is held back and why⌉⌊llms.txt — what is published,
what is held back and why⌉[

llms.txt — what is published, what is held back and why

[⌊Settings — licensing, e-mailed reports and opt-in usage reporting⌉⌊Settings — 
licensing, e-mailed reports and opt-in usage reporting⌉[

Settings — licensing, e-mailed reports and opt-in usage reporting

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Crawlune – AI Crawler Controls” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ wpshelf ](https://profiles.wordpress.org/wpshelf/)
 *   [ matik ](https://profiles.wordpress.org/matik/)

[Translate “Crawlune – AI Crawler Controls” into your language.](https://translate.wordpress.org/projects/wp-plugins/crawlune-ai-crawler-controls)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/crawlune-ai-crawler-controls/),
check out the [SVN repository](https://plugins.svn.wordpress.org/crawlune-ai-crawler-controls/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/crawlune-ai-crawler-controls/)
by [RSS](https://plugins.trac.wordpress.org/log/crawlune-ai-crawler-controls/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.62.6

 * Recover interrupted dispatches and partial result delivery without issuing duplicate
   paid work.
 * Preserve saved results during a service-review pause and resume only on an explicit
   request.
 * Continue recovering older multi-batch runs without requiring an open admin screen.
 * Restore the complete rewrite history for each run, including large runs, while
   protecting newer rewrites.
 * Preserve quotes and backslashes in saved article text and generated FAQ data.
 * Report partial undo results accurately and keep unsuccessful restores available
   to retry.
 * Show one-time allowances without a reset date, and display resets only when the
   service confirms renewal.

#### 0.62.5

 * Escape assembled admin HTML at output while retaining form controls and nonces.
 * Enforce non-HTML content types and nosniff for text and Markdown endpoints.
 * Simplify JSON encoding flags while retaining JSON-LD script-injection protection.

#### 0.62.4

 * Guide installations without a local license key to settings before creating a
   hosted rewrite run; existing runs and free tools remain available.
 * Fixed: malformed service acknowledgements now use bounded retries instead of 
   leaving a rewrite run waiting indefinitely.
 * Fixed: unavailable results stop retrying after six hours even when the service
   reports the job complete; valid late results still arrive normally.
 * Improved: failed batch messages explain the next step without implying that allowance
   was refunded.

#### 0.62.3

 * Renamed the plugin to Crawlune – AI Crawler Controls, including its translation
   domain.
 * Secured JSON-LD output against script-element breakout in page metadata and FAQ
   content.
 * Added the submitting WordPress.org account to the contributor credits.

#### 0.62.2

 * Fixed hosted generation and result polling on fresh installs with no saved server
   URL.
 * Improved request-input sanitization and documented temporary CSV stream handling.
 * Included shared JavaScript sources and standalone build instructions in the plugin
   ZIP.
 * Clarified external-service requests and privacy disclosures.
 * Verified clean installation and removal on WordPress 7.1.

#### 0.62.0

 * Added JavaScript search, sorting and pagination for admin data tables.
 * Navigate between plugin subpages asynchronously, with Back/Forward support.

Earlier release notes are included in CHANGELOG.md.

## Meta

 *  Version **0.62.6**
 *  Last updated **3 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[gptbot](https://wordpress.org/plugins/tags/gptbot/)
   [llms.txt](https://wordpress.org/plugins/tags/llms-txt/)[schema](https://wordpress.org/plugins/tags/schema/)
   [seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/crawlune-ai-crawler-controls/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/crawlune-ai-crawler-controls/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/crawlune-ai-crawler-controls/reviews/)

## Contributors

 *   [ wpshelf ](https://profiles.wordpress.org/wpshelf/)
 *   [ matik ](https://profiles.wordpress.org/matik/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/crawlune-ai-crawler-controls/)