Title: FocusWeb AI Visibility
Author: Uri N.
Published: <strong>Jiyè 16, 2026</strong>
Last modified: Jiyè 20, 2026

---

Search plugins

![](https://ps.w.org/focusweb-ai-visibility/assets/banner-772x250.png?rev=3615436)

![](https://ps.w.org/focusweb-ai-visibility/assets/icon-256x256.png?rev=3615436)

# FocusWeb AI Visibility

 By [Uri N.](https://profiles.wordpress.org/upi/)

[Download](https://downloads.wordpress.org/plugin/focusweb-ai-visibility.1.0.0.zip)

 * [Details](https://hat.wordpress.org/plugins/focusweb-ai-visibility/#description)
 * [Reviews](https://hat.wordpress.org/plugins/focusweb-ai-visibility/#reviews)
 * [Development](https://hat.wordpress.org/plugins/focusweb-ai-visibility/#developers)

 [Support](https://wordpress.org/support/plugin/focusweb-ai-visibility/)

## Description

68% of Google searches now end without a click. Your future visitors are AI assistants
and agents — and most WordPress sites are invisible to them. **AI Visibility** is
an AI SEO / GEO (Generative Engine Optimization) plugin that makes your site readable,
quotable and usable by ChatGPT, Gemini, Perplexity, Claude and every other AI system:

 * **Dynamic llms.txt** — an always-up-to-date, machine-readable map of your key
   pages and content, following the llms.txt convention adopted by Anthropic, Vercel
   and Cloudflare.
 * **Baseline structured data (JSON-LD)** — WebSite and Article schema, automatically
   deferred when Yoast, Rank Math or AIOSEO is active.
 * **Agent endpoint (read-only)** — a clean JSON API (`/wp-json/focusweb-ai-visibility/
   v1/ask`) that lets AI agents search your published content, plus registration
   with the official WordPress Abilities API so MCP clients can discover it.
 * **AI agent analytics** — see which AI bots (GPTBot, ClaudeBot, PerplexityBot,
   Google-Extended and more) visit your site, which pages they fetch, how often 
   llms.txt is read, and what questions agents ask — with a daily color-coded chart.
 * **Per-page schema control** — every post/page shows its generated JSON-LD with
   an editable custom override, plus a site-wide force mode.
 * **Google Analytics integration (optional, off by default)** — fire an ai_referral
   event (source / medium / campaign) when visitors arrive from ChatGPT, Gemini,
   Perplexity, Claude and other AI chats. Uses your existing GA tag, or loads gtag.
   js with a Measurement ID you provide.

Full RTL and Hebrew support.

### External Services

This plugin connects to Google services only when the site administrator explicitly
enables the Google Analytics integration (disabled by default):

 * **gtag.js from googletagmanager.com** — loaded on the front end only in “manual”
   mode, using the Measurement ID the administrator provides, to send ai_referral
   events to the site’s own Google Analytics property.
 * **GA4 Measurement Protocol (google-analytics.com/mp/collect)** — used server-
   side only when the administrator clicks “Fire sample event”, sending a single
   test event to the site’s own GA4 datastream using the Measurement ID and API 
   Secret the administrator provides.

Data sent consists of the event name and its parameters (source, medium, campaign,
page URL). No data is ever sent to the plugin author or any other third party. See
Google’s [Privacy Policy](https://policies.google.com/privacy) and [Google Analytics Terms of Service](https://marketingplatform.google.com/about/analytics/terms/us/).

## Screenshots

[⌊Dashboard — AI Visibility Score, at-a-glance stats, live status cards, daily AI
agent activity chart, llms.txt reads by agent, most-fetched URLs and the questions
agents ask.⌉⌊Dashboard — AI Visibility Score, at-a-glance stats, live status cards,
daily AI agent activity chart, llms.txt reads by agent, most-fetched URLs and the
questions agents ask.⌉[

Dashboard — AI Visibility Score, at-a-glance stats, live status cards, daily AI 
agent activity chart, llms.txt reads by agent, most-fetched URLs and the questions
agents ask.

[⌊Schema Browser — inspect the JSON-LD of every page and post, with Valid schema/
Rich-result ready / AI bot fetch coverage gauges, a per-page AI bot fetch log (which
known crawlers actually fetched that page, and when), and per-page mode indicators.⌉⌊
Schema Browser — inspect the JSON-LD of every page and post, with Valid schema /
Rich-result ready / AI bot fetch coverage gauges, a per-page AI bot fetch log (which
known crawlers actually fetched that page, and when), and per-page mode indicators
.⌉[

Schema Browser — inspect the JSON-LD of every page and post, with Valid schema /
Rich-result ready / AI bot fetch coverage gauges, a per-page AI bot fetch log (which
known crawlers actually fetched that page, and when), and per-page mode indicators.

[⌊Settings & Status — schema force mode, Google Analytics integration with server-
side sample event, live valid/invalid status indicators (Analytics, LLMS access,
Schema enforcement), and analytics diagnostics with an error-code log.⌉⌊Settings&
Status — schema force mode, Google Analytics integration with server-side sample
event, live valid/invalid status indicators (Analytics, LLMS access, Schema enforcement),
and analytics diagnostics with an error-code log.⌉[

Settings & Status — schema force mode, Google Analytics integration with server-
side sample event, live valid/invalid status indicators (Analytics, LLMS access,
Schema enforcement), and analytics diagnostics with an error-code log.

[⌊AI referral events — per-source breakdown and daily chart of visitors arriving
from ChatGPT, Gemini, Perplexity and other AI chats, with a date-range filter and
reset control.⌉⌊AI referral events — per-source breakdown and daily chart of visitors
arriving from ChatGPT, Gemini, Perplexity and other AI chats, with a date-range 
filter and reset control.⌉[

AI referral events — per-source breakdown and daily chart of visitors arriving from
ChatGPT, Gemini, Perplexity and other AI chats, with a date-range filter and reset
control.

## FAQ

### What is llms.txt, and what is GEO / AI SEO?

llms.txt is a plain-text convention (adopted by Anthropic, Vercel and Cloudflare)
that gives AI systems a machine-readable map of your site. GEO (Generative Engine
Optimization) — sometimes called AI SEO — is the practice of structuring your content
so AI assistants like ChatGPT, Gemini, Perplexity and Claude can read, understand
and cite it correctly. This plugin automates both.

### Does this replace my SEO plugin?

No. It complements it. AI Visibility skips schema output automatically when a major
SEO plugin is active, and adds the AI-specific layers no SEO plugin covers.

### Does the agent endpoint expose private content?

No. Only published, public content is ever returned. All endpoints are read-only
in the free version.

### Do I need to configure anything?

No. Activate the plugin and llms.txt, schema, the agent endpoint and bot logging
work immediately.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“FocusWeb AI Visibility” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Uri N. ](https://profiles.wordpress.org/upi/)

“FocusWeb AI Visibility” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/focusweb-ai-visibility/contributors)
for their contributions.

[Translate “FocusWeb AI Visibility” into your language.](https://translate.wordpress.org/projects/wp-plugins/focusweb-ai-visibility)

### Interested in development?

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

## Changelog

#### 1.0.0

 * Dashboard redesign: added an “AI Visibility Score” gauge (llms.txt reachability
   + schema validity + recent activity), a KPI stat-tile row (AI agent visits, llms.
   txt reads, referral events, questions asked), replaced the Status table with 
   colored badge cards, moved to a two-column layout (charts left, tables right),
   shortened the intro paragraph with a “Learn more” details toggle, linked “Structured
   data” straight to Schema settings, added shortened links with Copy buttons for
   llms.txt/agent endpoint, and an “Upgrade for full history” link on the agent 
   activity chart.
 * Schema Browser: added a real “Schema Type” column (the actual @type — Article,
   WebPage, etc. — the old “Type” column only ever showed the WordPress post type),
   a “Rich results” column flagging pages missing fields Google looks for (image,
   author, logo…), and radial % gauges at the top for Valid schema, Rich-result 
   ready, and AI bot fetch coverage (replacing the old plain-text stats line).
 * Schema generator: the baseline Article/WebPage schema now includes the featured
   image (required for Google’s Article rich-result eligibility), and the Organization
   node includes the site icon as `logo` (recommended for Knowledge Graph) — both
   were silently missing before, which the new Rich-result checker would otherwise
   have flagged on every single page.
 * Fixed a real schema-correctness bug the new Rich-result checker caught: WebPage
   nodes (i.e. every plain “page”, as opposed to a post) were using the Article-
   specific `headline` property instead of the `name` property that schema.org’s
   WebPage type and Google’s own guidance actually expect. Since automatic-mode 
   schema is rebuilt fresh on every page load (never cached), this self-corrects
   immediately on update — no re-saving needed. Only affects custom overrides someone
   copied from the old auto-generated output as a starting point.
 * Schema Browser: added an “AI bot fetches” column cross-referencing the agent 
   log against each page’s URL — a bold count per page, with its time frame stated
   directly in the column header (“last N days”), expandable into a line-level log
   of every individual fetch (bot + timestamp, most recent first, with its own Bot/
   Date-time header). Since JSON-LD ships embedded in the page HTML, a logged fetch
   is direct proof that page’s schema was delivered to the bot — it intentionally
   does not claim the bot parsed or used it, since no plugin can observe that. Includes
   both a per-page “Delete history” reset and a site-wide “Delete history for all
   pages” reset (each with a confirmation prompt).
 * Fixed AI bot fetch logging counting static assets and infrastructure files (stylesheets,
   scripts, `robots.txt`, sitemap XML, etc.) as page visits on hosting setups that
   route every request through WordPress — these no longer inflate “Most-fetched
   URLs”, the AI-visit KPIs, or the Schema Browser’s per-page fetch counts.
 * Schema Browser: color-coded the Mode column’s “Automatic” state (previously plain
   text, now consistent with the existing Custom override/Invalid coloring).
 * Plugin Check: readme’s top-level plugin name now matches the `Plugin Name` header
   exactly (was carrying extra marketing text, which Plugin Check flags as a mismatch);
   documented the legacy-prefix migration’s table RENAME/INSERT/DROP statements 
   as an accepted identifier-interpolation case (table names can’t be bound via `
   $wpdb->prepare()`, and both names are already `esc_sql()`‘d); documented the 
   referral date-range form’s `$_GET['page']` read as an accepted read-only case(
   same as the existing `$_GET['focuaivi_ref_days']` filter on the same form — display-
   only, no state change).
 * Translations: all 7 bundled languages (Spanish, Brazilian Portuguese, German,
   French, Italian, Hebrew, Russian) fully updated for the ~30 new strings introduced
   by the Dashboard redesign and Schema Browser overhaul, and every remaining stale/
   orphaned string from older UI copy (pre-rename artifacts, retired Pro-teaser 
   text) has been removed. Verified with a full tokenizer-based audit against the
   current source: zero missing, zero stale across all 7 languages.

#### 0.9.5

 * Added Russian (ru_RU) translation, contributed via translate.wordpress.org and
   verified against the current source code (zero missing or stale strings — the
   most precise of the 7 bundled languages).

#### 0.9.4

 * Translations: fixed two strings whose text still referenced the pre-rename `aiv_sample_test`
   campaign value instead of `focuaivi_sample_test`, and added the “Missing or invalid
   nonce.” string that was never translated, across all 6 languages. Verified with
   a full audit against the actual source code (zero missing strings) and cross-
   checked all languages cover the identical string set.

#### 0.9.3

 * Added full German (de_DE), French (fr_FR) and Italian (it_IT) translations (134
   strings each) — all 5 planned languages (Spanish, Brazilian Portuguese, German,
   French, Italian) are now complete, alongside the existing Hebrew translation.

#### 0.9.2

 * Added full Brazilian Portuguese (pt_BR) translation (134 strings) — 2nd of 5 
   planned languages. Spanish and Hebrew translations updated to match (134 strings
   each).
 * Moved the AI referral events section (per-source breakdown, events log, reset
   control) from Settings & Status to the Dashboard, next to the other activity 
   charts.
 * Added a color-coded daily chart for referral events (reusing the same chart style
   as the crawler-activity and llms.txt charts), a date-range selector (1/3/7 days),
   and colored swatches on the per-source breakdown so its colors match the chart’s
   legend. Expanded the shared chart palette from 10 to 15 colors for sites with
   many distinct referral sources.

#### 0.9.1

 * Added full Spanish (es_ES) translation (132 strings) — the first of 5 planned
   languages (Spanish, Brazilian Portuguese, German, French, Italian) chosen by 
   WordPress.org install-base ranking.

#### 0.9.0

 * AI referral events (Settings & Status): added a per-source breakdown (chatgpt/
   gemini / perplexity / claude / etc. counts side by side, not just one combined
   total), a date-range selector (1 / 3 / 7 days), and a “Reset referral counter”
   button (with a confirmation prompt) to clear the logged history.

#### 0.8.5

 * Marketing/SEO: rewrote the directory title, short description, tags and description
   opener around the search terms people actually type (AI SEO, GEO, llms.txt, ChatGPT/
   Gemini/Perplexity visibility) instead of the FocusWeb brand name; added an FAQ
   entry explaining llms.txt and GEO. No functional changes.

#### 0.8.4

 * **Important upgrade fix**: sites that upgraded from a pre-0.8.0 build lost their
   settings, per-post schema overrides, and bot-visit history, because the WordPress.
   org-required rename of every option/meta-key/table name from the `aiv` prefix
   to `focuaivi` had no migration path. This release adds a one-time automatic migration
   that recovers settings, custom schema overrides, and analytics history from the
   old names on upgrade. If you already lost data on 0.8.0–0.8.3, updating to this
   version will restore it as long as the old data hasn’t been deleted from your
   database.

#### 0.8.3

 * Plugin Check: prefixed the one remaining non-prefixed global variable (`$table`
   in uninstall.php) as `$focuaivi_table`.

#### 0.8.2

 * Renamed every function, class, define, filter/action, option, transient, meta
   key, nonce, REST namespace and script handle from the 3-character `aiv`/`AIV`
   prefix to `focuaivi`/`FOCUAIVI` (WordPress.org requires 4+ characters to avoid
   collisions across the ~100,000 hosted plugins). The REST namespace changed from`
   aiv/v1` to `focusweb-ai-visibility/v1`.
 * Fixed the Plugin URI (`https://focusweb.co.il/ai-visibility`), which went through
   a broken multi-hop redirect (httpshttphttps) that some crawlers refuse to follow;
   now points directly at the canonical `https://www.focusweb.co.il/ai-visibility/`.

#### 0.8.1

 * Plugin Check: fixed two MissingTranslatorsComment errors in the Settings status
   checks — the `translators:` comment must sit immediately above the line with 
   the `__()`/`sprintf()` call, not just earlier in the same statement.

#### 0.8.0

 * Security hardening from WordPress.org plugin review: escaped `</script>` breakout
   risk in JSON-LD output, validated/canonicalized custom schema JSON before it’s
   ever stored (rather than saving the raw POST string), moved the AI-referral/gtag
   front-end script from an inline `<script>` tag to a properly enqueued file (`
   wp_enqueue_script` + `wp_localize_script`), and added a nonce check to the public
   referral-logging REST route so it can’t be trivially forged cross-origin.

#### 0.7.3

 * Dashboard charts: added light gridlines and a max-value reference in the corner
   for scale, bolded the daily total label (previously blurred to near-illegible
   at small size), rounded the bars, switched to the system font stack, and added
   a subtle baseline tick for zero-activity days so the axis isn’t just blank space.

#### 0.7.2

 * llms.txt: page entries now include a body-content synopsis alongside the SEO 
   meta description, not just a single clipped sentence — much more substance for
   brochure-style sites with no blog. Also fixed HTML entities (e.g. `&hellip;`)
   leaking into the output unescaped.

#### 0.7.1

 * llms.txt: pages now get a one-line description too (previously only blog posts
   did), so brochure-style sites without a blog no longer generate a bare list of
   titles and links. Prefers the page’s own Yoast/Rank Math/AIOSEO meta description
   when set, falling back to its excerpt.

#### 0.7.0

 * Schema Browser: added a Validate button per row linking to validator.schema.org
   with the live page URL pre-filled, and inline Edit/Save (mode + custom JSON) 
   directly on the page, sharing validation with the per-post metabox.
 * Settings page renamed to “Settings & Status”, with a new Status section showing
   live valid/invalid indicators for Analytics, LLMS access, and Schema enforcement(
   including a live llms.txt availability + well-formedness check).
 * Diagnostics: self-test failures/warnings now include a machine-readable error
   code and technical detail (DB error, HTTP status, cache header), plus a rolling
   log of the last 20 tests instead of just the most recent one.

#### 0.6.3

 * Renamed to “FocusWeb AI Visibility” for a clean directory slug; text domain updated
   to focusweb-ai-visibility.

#### 0.6.2

 * Plugin Check: removed load_plugin_textdomain (wordpress.org language packs load
   automatically); documented direct queries to the plugin’s own analytics table.

#### 0.6.1

 * Plugin Check compliance: escaped gtag output, guarded Abilities API call for 
   WP < 6.9, esc_sql on table names, prepared IN clauses, Tested up to 7.0.
 * readme: External Services disclosure and Screenshots sections.

#### 0.6.0

 * Server-side sample event: fires ai_referral directly to the GA4 datastream via
   the Measurement Protocol (Measurement ID + API Secret setting).
 * Last sample-event result and timestamp snapshot in Settings.

#### 0.5.0

 * GA integration: last 10 fired ai_referral events and 7-day total shown in Settings(
   server-side mirror beacon).
 * Diagnostics: persistent snapshot of the last self-test result and time.

#### 0.4.1

 * Schema author/publisher is now always the site brand (Organization) — WordPress
   usernames are never exposed. New focuaivi_schema_brand filter.

#### 0.4.0

 * Admin split into Dashboard / Schema Browser / Settings submenus.
 * llms.txt reads chart by agent per day; explanatory dashboard text.
 * Schema Browser: inspect the JSON-LD of every page, with mode indicators.

#### 0.3.0

 * Daily analytics chart (color per agent), llms.txt read counter, agent questions
   log.
 * Optional Google Analytics ai_referral events with source/medium/UTM tagging.
 * Per-page schema editor with custom override; site-wide force mode.
 * Analytics self-test; self-healing DB upgrades.

#### 0.1.0

 * Initial release: dynamic llms.txt, baseline JSON-LD, read-only agent endpoint
   with Abilities API registration, AI bot analytics (7-day window), admin dashboard.

## Meta

 *  Version **1.0.0**
 *  Last updated **10 è ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/focusweb-ai-visibility/) and [Russian](https://ru.wordpress.org/plugins/focusweb-ai-visibility/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/focusweb-ai-visibility)
 * Tags
 * [ai seo](https://hat.wordpress.org/plugins/tags/ai-seo/)[ChatGPT](https://hat.wordpress.org/plugins/tags/chatgpt/)
   [geo](https://hat.wordpress.org/plugins/tags/geo/)[llms.txt](https://hat.wordpress.org/plugins/tags/llms-txt/)
   [schema](https://hat.wordpress.org/plugins/tags/schema/)
 *  [Advanced View](https://hat.wordpress.org/plugins/focusweb-ai-visibility/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/focusweb-ai-visibility/reviews/)

## Contributors

 *   [ Uri N. ](https://profiles.wordpress.org/upi/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/focusweb-ai-visibility/)