Titles, schema, robots, sitemap, redirects and WooCommerce product URLs, plus llms.txt, Markdown endpoints and Site Identity JSON-LD for AI agents. Four modules on the WordPress core, with no database tables, no cron jobs and no Pro version to buy later.
Same clean metadata. Three audiences, one source of truth.
Answer engines and AI assistants now summarize and cite your content. They read the same metadata Google does, when it's clean enough to understand.
ChatGPT, Perplexity, Google AI and the rest paraphrase and link your pages. If your title, description and schema are messy, so is the way they represent you.
All-in-one suites pile on features you never open, constant upgrade prompts and a wide attack surface. Most sites use a small fraction of all that weight, and it is measurable: on one install the heaviest of the eight adds 3.9 MB of memory to a page a visitor loads, and another adds 32 database queries to it. See the measurements.
Classic SEO and AI visibility usually mean separate tools and duplicated effort. Your metadata should serve search, answers and AI at the same time, from one place.
Run the whole thing or just the part you need. Each module is independent and built on a native WordPress API.
Six tabs in the admin: Overview, Discover, Indexing, Sitemaps, Redirects and Tools. Any tab with three or more sections has a side navigation that follows your scroll, with open all and close all, and the fields in the editor are split into Search, Social and Indexing tabs. No setup wizard, no onboarding funnel and no dashboard widget you didn't ask for.
Visibility serves the endpoints, feeds and structured identity that AI agents need to find and read your content, and registers the abilities they need to edit its SEO, all on the WordPress core, with no file on disk, no cron and no server of its own.
Markdown index of your site for LLMs and AI agents. It lists every published entry of the content types you choose (whole taxonomies or specific terms) and can add taxonomy archive sections, so agents see how your content is organized and not just the individual entries. Force pages in or out, exclude URLs by pattern and write it as a physical file if you prefer; if another plugin leaves a physical llms.txt that would shadow this one, Visibility replaces it. Version 2 of the specification is built in: every page advertises the llms.txt that covers it, with a rel="describedby" link and a Link header, and each entry links to its Markdown version, content already clean for a language model. With Respect nosnippet on, an entry set to nosnippet is listed by title and link alone, and the link goes to the page, not to its Markdown.
The same index with the full Markdown text of each included page, for agents that need more than titles and URLs. It is the one to point an agent at when you want it to read your site rather than browse it. Both files are built on the fly, with no file on disk and no cron, they update themselves as your content changes, and both run the same access checks: what a logged-out visitor can’t read never reaches either of them. Inside llms.txt it is listed in the Optional section the specification reserves for secondary links, and as a link line rather than a sentence, so parsers that read the file to the letter no longer skip it. An agent that already holds a document sends back the date it read and gets a 304 with no body, so a revisit doesn’t cost the whole file again. With Respect nosnippet on, an entry set to nosnippet appears with its title and URL but no text.
Clean Markdown of any post or page at its URL with a .md suffix, with a YAML frontmatter block that lists its categories and tags, and on WooCommerce products the SKU, price, currency, stock status and rating. Tables arrive as tables, nested lists keep their numbering and code blocks carry their language, so the agent reads the document a reader sees. An X-Markdown-Tokens header estimates the token count, the same Markdown is returned when a client asks for it with an Accept: text/markdown header, and it's advertised with both an alternate link tag and a Link header.
Pick exactly which AI crawlers to Disallow from a grouped, selectable list, with model-training crawlers and AI search assistants kept apart. Add your own rules and preview the final robots.txt live, whether it's served through the WordPress virtual file or written to a physical one. The file references your llms.txt, and when another plugin writes a physical robots.txt, Visibility merges its directives into it in its own block and leaves everything else untouched, so your AI-crawler rules always reach crawlers.
The WebSite JSON-LD node points AI agents to your llms.txt, llms-full.txt and Markdown endpoints with ReadAction entries, so any assistant that reads your schema knows where to find the structured content. The Organization, local business or Person node declares your logo, social profiles as sameAs and an optional Google sitelinks search box. The Article, FAQPage and Person graphs reference it, so search engines and AI assistants know who is behind the site, on the home page or any page you choose.
The Organization node can be as specific as Google asks. Pick its type (Corporation, Online store, NGO, a school or college, a sports team, a news media organization and some twenty more), then add an email and a phone and, if you like, the legal name, VAT ID, founding date and number of employees. Whatever you leave empty stays out of the markup. If people visit your business, pick Local business instead, with a type among more than 130 from schema.org (Restaurant, Dentist, Store and so on), the address, the coordinates, the price range and the opening hours, with two time ranges a day for split hours. Either way it is a single node, the same #identity the Article and Person graphs point to, so the business is not printed twice. Add an email or a phone if you want Google’s Rich Results Test to list the organization at all, because it only lists the ones that carry a contact detail.
Every other line on this page is about handing AI more of your content and better structured. This one goes the other way. nosnippet is the directive Google documents for limiting how much of your text may be reproduced, on the result page and inside an AI answer, and it is the only lever you have over the quoting itself. Visibility puts it where noindex and nofollow already were, per entry, per term archive, in Quick Edit, in Bulk Actions and as a bulk rule by content type or taxonomy, each with its own per-entry exception, next to noimageindex for the images. It doesn’t touch indexing, so the entry still ranks, and the bulk tables warn you what you are trading before you save: your position doesn’t move, your clicks do.
Part of a page can stay out too, without HTML: a switch on the Group block, a format for selected words and a button in each tab of the classic editor add data-nosnippet. And the directive doesn’t stop at Google anymore. With Respect nosnippet on, an entry set to nosnippet is listed in llms.txt by title and link, shows no text in llms-full.txt, has no Markdown version and gets no FAQPage, and text inside data-nosnippet stays out of the meta description, the social descriptions and every summary Visibility writes. New installs start with it on. A site that already serves llms.txt, Markdown or FAQPage keeps it off until you switch it on.
llms.txt and the Markdown endpoints rebuild your content outside the normal template, and that is exactly how other plugins end up handing an AI agent an entry a reader would never see. Both ask first whether this visitor may read the entry: password-protected and members-only posts stay out of llms.txt, the entry types that membership, course and LMS plugins gate in their own templates are held back, and every AI document is built as a logged-out visitor, so an administrator generating one can no longer leak what only that administrator may read. The meta description, the Open Graph image and the JSON-LD stopped drawing on the body of an entry the visitor cannot open, though a hand-written excerpt is still used, because it was written to be shown. For any plugin Visibility doesn't know yet, the native_aeo_pack_content_is_public filter teaches it.
Everything above is about what AI agents read. Visibility also registers six abilities with the WordPress Abilities API, and the WordPress MCP Adapter, Novamira or any other client of the API finds them on its own. With them an agent can read and edit the SEO of an entry or a term: Meta title, Meta description, canonical URL, robots directives and sitemap exclusion, plus the social title, description and image and the schema type of an entry. It can also list the published entries with no Meta description or Meta title, which Visibility already covers with automatic ones, and read the SEO status of the site. Visibility adds no server, endpoint or key for any of this, because the API is part of WordPress.
Each ability asks for the permission the editor asks for, so an agent can do no more than the user it is signed in as. Values go through the same sanitizer as their fields in the editor, and a call with one value that isn’t accepted changes nothing. Each answer shows what is stored next to what the page resolves it to after the site-wide rules. Redirects, robots.txt and site settings stay out on purpose, because they apply to the whole site, or to a whole network. When an agent changes the SEO of an entry the post isn’t saved again, so its modified date, the one in dateModified and lastmod, stays where it was. The abilities need WordPress 6.9 or later, come switched on and turn off with one box on the Overview tab.
What each one rests on, and what we don’t claim for it.
An Ahrefs analysis of 17 million citations found that AI assistants tend to cite more recently updated pages than the ones ranking in Google, with Google’s own AI Overviews as the exception, and that what they cite is still almost three years old on average. Freshness is one factor, not a rule. Your content lists carry a "not updated in 90 days" filter with its count and a sortable Last updated column, on the date the plugin emits as dateModified. No score and no traffic light: which article deserves a rewrite is your call, and the threshold is yours to set.
The user profile gains job title, topics of expertise and credentials, emitted as jobTitle, knowsAbout and hasCredential on the author archive’s Person, now with a ProfilePage and with WordPress.org and Facebook among the sameAs URLs. Each author can pick a page of their own as their profile page, and the Author details block shows those fields to visitors, because Google asks that structured data describe what a visitor can see. We give no figure for how much this moves citations: we have none we could source.
Switch it on and the native Details and Accordion blocks in your entries become FAQPage JSON-LD, question from the block heading, answer from its content, in the same schema graph as everything else. No separate builder and no duplicate fields, so the markup can only describe Q&A that is genuinely on the page. Off by default, because a Details block is not always a question. With Respect nosnippet on, an entry set to nosnippet gets no FAQPage, and text marked data-nosnippet never reaches an answer.
What we don't claim: FAQPage helps AI assistants read your Q&A structure, it does not bring back the FAQ rich results Google retired in 2023. Piling on schema types doesn't move citations on its own either, which is exactly why there's no visual schema builder here.
Empty the /product/ base and WooCommerce puts it back. Ask for a category in the path and it forces a base in front. These three structures need a plugin, and now that plugin can be the one you already use for SEO.
The product slug on its own, with no base in front. The shortest URL a store can have, and the one WooCommerce refuses to keep.
The main category and the slug. You choose which category is the main one, and every other combination that still resolves 301s here.
The full category path. Deep structure without a single extra rewrite rule, because product URLs resolve in PHP after WordPress has done its own matching.
Drop /product-category/, /product-tag/, /brand/ and your product attribute bases independently, while your blog keeps /category/ if you want it. The screen shows how many rewrite rules your selection adds before you save, because a base-less URL costs one rule per term and you deserve to know that.
Visibility detects Premmerce Permalink Manager, names the conflict and says which one wins, because two plugins building the same URLs is how a store gets redirect loops. Its URL structure imports in one click from the Tools tab, read from its own settings whether it's still active or already switched off. The product tag base and the automatic 301 redirects that Premmerce charges for are free here, and so are the bases it doesn't cover at all: post tags, brands and product attributes. See the two side by side →
Cart, checkout and my-account need no setting, because WooCommerce marks them noindex itself, and the Indexing tab says exactly that instead of selling you a checkbox that promises what your store already does. What it does offer is one click for the archives that usually repeat your shop listing: product tags and the attribute archives you enabled start out noindexed, with a notice naming them. If one of those is a page people search for, a plus-sizes archive say, untick it and it gets the full treatment, meta title and description per term included. On store pages Visibility also stops emitting its own BreadcrumbList, because WooCommerce emits one there, so you get a single trail per page. Filtered listings are covered too: the shop and its categories carry one canonical address, without ?orderby=, filter_color= or utm_ parameters, so every combination of filters points to the same page.
What most sites actually need for SEO, AEO and GEO, without the weight of an all-in-one suite.
The same clean metadata that ranks in search is what answer engines and AI assistants read to summarize and cite you.
Uses native APIs for robots, sitemaps and post meta. No custom database tables, no cron jobs, no external calls.
245 KB of PHP read on a visit, against the 2.5 MB of AIOSEO and the 3.1 MB of Yoast, measured on the same install. Every release passes a security audit before it ships.
Seven SEO suites, Redirection and Premmerce, all read in one click: titles, descriptions, title and description templates, canonicals, robots overrides, social images, verification codes, redirects and WooCommerce URL structure.
No Pro tier, no locked features, no banners in your admin, no data collection. The whole plugin, free, forever.
Site Identity declares who you are in JSON-LD, llms.txt hands AI agents a structured index, the .md endpoint serves any page as clean Markdown, the robots.txt editor controls crawler access and the Abilities API lets an agent edit your SEO with your permissions.
The Tools tab exports every setting plus per-entry and per-term values as one JSON file, matched by slug rather than database ID, so staging to production works between sites that were never clones.
Documented filters change what gets emitted, from the schema graph to the meta description, the OG image and the FAQ pairs, public helpers read the resolved robots state without touching any storage, and two actions tell you when an AI agent changed the SEO of an entry or a term.
Shares schema references with its sibling plugins instead of duplicating them, so your structured data stays clean.
The editor shows how your entry can look as a Google result, a shared social card and an AI Overview citing your page, with a plain character count and no traffic lights.
When Visibility finds data left by your previous plugin, whether that's Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Slim SEO or SureRank, redirects from Redirection or the URL structure from Premmerce, the Tools tab offers a one-click import: titles, meta descriptions, title and description templates, canonical URLs, robots overrides, including nosnippet and noimageindex where the old plugin has them, social titles and images, webmaster verification codes, redirects and WooCommerce URL settings, on posts and on taxonomy terms. It's non-destructive and idempotent, your existing values always win, and nothing is touched in the source plugin. What it finds and can't bring, such as noarchive or a max-snippet limit, is listed instead of passed over in silence. From SEOPress, Rank Math and Yoast SEO it also brings the site identity, local business data included, filling only what is still empty.
Visibility works on its own, but these plugins by the same author fit right in. Each one owns its job, so nothing overlaps or duplicates work.
Monitors and controls AI crawlers with analytics, blocking controls and an AI visibility score. Visibility handles the metadata and AI endpoints; VigIA owns the crawler side: who's visiting, how often, what they're taking. They share schema references so structured data never duplicates.
vigia.dev →Share buttons for social networks and AI assistants, with a citation back to your site. Built on the same clean metadata Visibility emits, so what gets shared and quoted stays accurate.
View on WordPress.org →Declare how AI systems may use your content through a physical robots.txt with AI signals. The policy layer that sits right above the metadata Visibility produces.
View on WordPress.org →An AI assistant for WooCommerce that turns the product data you already have into publication-ready product sheets, with rotating angles so no two products in your catalogue read the same. Data first, AI second: it flags what's missing instead of inventing it. Early access is open.
intellimmerce.com →Translate your content with AI without breaking blocks, images, SEO or taxonomies, and it also imports and translates posts from other sites.
vulgatai.com →Put WordPress on a diet: critical CSS, deferred JavaScript and bloat switches organized by risk level. Zero config to start, fully configurable if you want.
dietpress.dev →All-in-one WordPress security: firewall, two-factor authentication, security headers and file integrity, without the bloat of the big suites.
vigilante.works →Yes. There is no Pro version, no feature locked behind a paywall, no upsell banners and no data collection. The complete plugin is free and stays free.
For most sites, yes. It covers titles, meta descriptions, canonical URLs, Open Graph, schema, robots directives, redirect management, sitemap control and WooCommerce URLs. It leaves out keyword analysis and content scoring on purpose, so if you rely on those, keep your current suite. Either way, don't run two SEO plugins at once: they emit duplicate head tags and hurt your SEO, so keep one and deactivate the other.
Yes, with nosnippet, the directive Google documents for limiting how much of your text may be reproduced on the result page and inside AI answers. You get it per entry, per term archive, in Quick Edit, in Bulk Actions and as a bulk rule by content type or taxonomy, each with its own per-entry exception, alongside noimageindex for keeping images out of image search. Neither touches indexing, so the entry still ranks. The bulk tables say what it costs before you save: with nosnippet your position doesn’t move, your clicks do. From the editor you can also keep one block or a few words out of snippets, with no HTML. And with Respect nosnippet on, llms.txt, llms-full.txt, the Markdown versions and FAQPage stop reproducing what you set to nosnippet.
Yes, including its premium version. Visibility builds the same product URLs, removes the product tag base and adds the automatic 301 redirects that Premmerce charges for, plus the bases it doesn't cover at all: post tags, brands and product attributes, each on its own switch. If both plugins are active, Visibility wins and the Indexing tab names the conflict, because two plugins building the same URLs is how a store gets redirect loops. Import its structure from Tools, then deactivate it.
Yes. The one-click importer reads Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Slim SEO and SureRank, bringing over titles, meta descriptions, canonical URLs, robots overrides (nosnippet and noimageindex from Yoast SEO, Rank Math, All in One SEO and SEOPress), social titles and descriptions, social images and site-wide settings such as webmaster verification codes, plus exact-match redirects from Redirection and the URL structure from Premmerce. The site identity comes over from SEOPress, Rank Math and Yoast SEO too (organization, local business or person, with contact and company details and, from Rank Math, coordinates, price range and opening hours), only into fields you have left empty. It's non-destructive, your existing values always win and nothing is changed in the source plugin, so you can run it safely and review before deactivating the old one.
Yes. The Tools tab exports every setting plus the per-entry and per-term values as one JSON file, matched by slug rather than database ID, so staging to production works even between sites that were never clones. On import you choose whether the file only fills in what is empty or replaces what is there, everything is validated exactly as the settings screen validates it, and no content is ever created: it tells you how many entries and terms didn't exist.
Yes, both ways. To read, there are llms.txt and llms-full.txt to version 2 of the specification, the Markdown endpoints and Site Identity JSON-LD with ReadAction pointers. To write, Visibility registers six abilities with the WordPress Abilities API: read and edit the SEO of an entry or a term, list the entries with no Meta description or Meta title, and read the SEO status of the site. The WordPress MCP Adapter, Novamira and any other client of the API find them, and an agent can do no more than the user it is signed in as. The abilities need WordPress 6.9, but Visibility didn't raise its minimum version for them: on an older WordPress they are just not registered, and nothing else depends on them.
No. It's built on native WordPress functions, with no custom database tables, no cron jobs and no external API calls beyond a cached author avatar lookup. Even the WooCommerce product URLs resolve in PHP after WordPress has done its matching, instead of adding rewrite rules, so the number of rules on your site doesn't grow.
Yes. All public post types and taxonomies are supported, including WooCommerce product categories, tags, brands and attributes. Visibility controls the product URL structure and the taxonomy bases, leaves the Product schema and the store breadcrumbs to WooCommerce so nothing duplicates, and the Markdown version of a product carries its SKU, price, currency, stock status and rating in the frontmatter, so AI agents get the commercial data too.
Yes. On a network, each site serves its own robots.txt and llms.txt through Visibility's virtual endpoints. The physical file, a single file shared by the whole install, is only written where it really is that site's own (a single-site install or the main site of a subdirectory network), so one site can never overwrite another's rules. When a physical robots.txt in the network root is answering for every site, a network-admin button routes /robots.txt back into WordPress on Apache and LiteSpeed, checks what crawlers actually receive, and backs itself out if the server ignored it; the file on disk is never touched.
Site Identity is the JSON-LD that tells search engines and AI assistants who is behind your site: an Organization, local business or Person node with your logo, social profiles as sameAs links and an optional SearchAction for the Google sitelinks search box. An organization can carry its own type and contact and company details, and a local business adds its address, coordinates, price range and opening hours. The WebSite node it produces also points AI agents to your llms.txt and Markdown endpoints with ReadAction entries. If your site already has a plugin handling Organization schema, check for duplicates, because the two will conflict. For most WordPress sites with no existing schema, enabling Site Identity in Discover is the right call.
Visibility is a project by Ayuda WordPress, the largest Spanish-speaking WordPress community, created by Fernando Tellado, who has been helping WordPress users for over 20 years with tutorials, guides and plugins. We build tools that solve real problems. No gimmicks, no unnecessary subscriptions, no data collection. Plugins that work. Period.
Install Visibility in under a minute. It's free, needs no account, and your data never leaves your site.
Free download →