Title: Nexal SEO
Author: canopuswebagency26
Published: <strong>July 26, 2026</strong>
Last modified: July 26, 2026

---

Search plugins

![](https://ps.w.org/nexal-seo/assets/icon-256x256.png?rev=3623581)

# Nexal SEO

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

[Download](https://downloads.wordpress.org/plugin/nexal-seo.1.3.8.zip)

 * [Details](https://wordpress.org/plugins/nexal-seo/#description)
 * [Reviews](https://wordpress.org/plugins/nexal-seo/#reviews)
 *  [Installation](https://wordpress.org/plugins/nexal-seo/#installation)
 * [Development](https://wordpress.org/plugins/nexal-seo/#developers)

 [Support](https://wordpress.org/support/plugin/nexal-seo/)

## Description

Nexal SEO is a fast, no-bloat SEO plugin for posts, pages, WooCommerce products,
categories and tags. It ships as a modular dashboard so your site only loads the
code for the features you actually turn on.

**Titles & Meta**

 * Focus keyword, SEO title and meta description per post/page/product/term.
 * Live Google-style snippet preview with character counters.
 * Homepage title/description overrides.

**Semantic content analysis (free, fully local)**

 * Topical Completeness — compares your content against other posts in the same 
   category using local TF-IDF, no external calls.
 * Cluster Health — checks internal linking and anchor-text quality within the category.
 * Semantic Structure — heading hierarchy checks (H1 uniqueness, H2–H4 nesting, 
   keyword variation), shown live in the block editor sidebar.
 * A 0–100 score is computed locally and shown as a column on your post list.

**Social**

 * Open Graph and Twitter Card tags with a default social image.

**XML Sitemap, Redirections & 404 Monitor**

 * XML Sitemap (index + per post type/taxonomy).
 * Redirections manager (301/302/307/410) with regex matching, search, and CSV import/
   export.
 * 404 Monitor with one-click redirect creation and daily auto-clean.

**Schema / Structured Data**

 * Connected-entity JSON-LD `@graph` (Organization, WebSite, Article, Product, BreadcrumbList
   and more) instead of disconnected snippets.
 * Breadcrumbs via `[nexal_breadcrumbs]` shortcode or `nexal_seo_breadcrumbs()`.

**Local SEO**

 * LocalBusiness structured data, NAP (name/address/phone) consistency scanner across
   your site, and a geo/local-SEO checklist.

**WooCommerce**

 * Detect-only store audit (thin descriptions, missing category copy) for shops 
   running WooCommerce.

**Optional AI assist (bring your own API key)**

 * Off by default. If you turn it on and paste your own key for Google Gemini, Groq,
   OpenRouter, OpenAI or Anthropic, Nexal SEO can suggest related terms/topics and
   run an AI-assisted NAP consistency check. No key, no request — see “External 
   services” below.

**Setup Wizard**

 * Guided first-run configuration.

**Translations**

 * Fully internationalized (i18n) and translation-ready. Translations are managed
   through translate.wordpress.org, so any locale the community translates is delivered
   automatically as a WordPress language pack — no files are bundled with the plugin.
   The local semantic analysis engine and the optional AI n-gram/question suggestions
   also follow your site’s configured language (stop-word filtering and question-
   style heading detection cover English, French, German, Spanish, Russian and Arabic;
   the AI prompt explicitly asks for output in your site’s language).

### External services

Nexal SEO makes no outbound network requests by default. The following integration
is entirely opt-in, uses your own credentials, and only runs when you explicitly
trigger it (never automatically on page load, cron, or plugin activation):

**AI providers (bring your own key)** — off by default. If you enable AI in Settings
AI and paste your own API key, Nexal SEO sends a request to the ONE provider you
selected only when you explicitly trigger an AI-assisted feature (topic/term suggestions,“
Questions to answer”, the “Verify with AI” NAP consistency check, the AI category-
description generator, the AI snippet generator, and “Write with AI” for llms.txt).
Nothing is sent automatically on page load, cron, or activation, and no request 
is ever made without a key.

What is sent: only the text needed for the requested feature — e.g. your focus keyword,
the current post/page content or excerpt, a category name and its product/post titles,
or (for the llms.txt draft) your site name/tagline, Schema identity fields and your
published titles/URLs/excerpts. No IP addresses, credentials, or full data exports
are sent.

You choose a single provider; only that provider is contacted. Their terms and privacy
policies:

 * Google Gemini — Terms: https://ai.google.dev/gemini-api/terms · Privacy: https://
   policies.google.com/privacy
 * Groq — Terms: https://groq.com/terms-of-use/ · Privacy: https://groq.com/privacy-
   policy/
 * OpenRouter — Terms: https://openrouter.ai/terms · Privacy: https://openrouter.
   ai/privacy
 * OpenAI — Terms: https://openai.com/policies/terms-of-use/ · Privacy: https://
   openai.com/policies/privacy-policy/
 * Anthropic — Terms: https://www.anthropic.com/legal/consumer-terms · Privacy: 
   https://www.anthropic.com/legal/privacy

The built-in visitor analytics (Dashboard  Visitors) is first-party only: it records
views on your own server and makes no external calls. It is off until you opt in,
and never stores IP addresses (visitors are counted with a daily one-way hash).

**Agency help links (WhatsApp / nexalseo.com)** — inside a Semantic Analysis criterion’s“
how to fix” popup, an optional “Chat on WhatsApp” button and a “Delegate to Our 
Agency” button link out to WhatsApp (`https://wa.me/`) and to the plugin author’s
site (`https://nexalseo.com/contact`). These are ordinary outbound links: nothing
is sent unless you click one, and only then does your browser open the destination.
If you open the WhatsApp link, a short pre-filled message naming the SEO issue you
clicked (and, on WhatsApp’s side, your WhatsApp identity) is handed to WhatsApp 
so you can review and choose whether to send it; the plugin itself transmits no 
data. The plugin’s Documentation, Support and Pro links (`https://nexalseo.com`)
behave the same way. WhatsApp is a service provided by Meta — Terms: https://www.
whatsapp.com/legal/terms-of-service · Privacy: https://www.whatsapp.com/legal/privacy-
policy. nexalseo.com — Terms: https://nexalseo.com/terms-of-service/ · Privacy: 
https://nexalseo.com/privacy-policy/.

## Blocks

This plugin provides 1 block.

 *   FAQ (Nexal SEO)

## Installation

 1. Upload the `NexalSeo` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the “Plugins” menu in WordPress.
 3. Follow the Setup Wizard, or edit any post/page/product/term and fill in the “Nexal
    SEO” fields.

## FAQ

### Does this plugin send my content anywhere?

No, not by default. The semantic analysis engine (Topical Completeness, Cluster 
Health, Semantic Structure) runs entirely on your server. The only outbound requests
are the opt-in AI integration described in “External services” above, and only when
you explicitly trigger it with your own API key.

### What happens to my data if I uninstall the plugin?

Deleting the plugin (not just deactivating it) removes all of its settings, cached
data, custom database tables (redirections, 404 log) and post/term meta.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Nexal SEO” is open source software. The following people have contributed to this
plugin.

Contributors

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

[Translate “Nexal SEO” into your language.](https://translate.wordpress.org/projects/wp-plugins/nexal-seo)

### Interested in development?

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

## Changelog

#### 1.3.8

 * Fixed: on a static front page (a Page set as your homepage under Settings  Reading),
   the SEO title and meta description set on the page itself via the Snippet editor
   were ignored — the front end always used the global “Homepage SEO title / meta
   description” settings instead. The page’s own values now take precedence, and
   the global Homepage settings act as a fallback (and still apply when the homepage
   shows your latest posts).

#### 1.3.7

 * Hardened (WordPress.org plugin review): every `$_SERVER`, `$_POST` and `$_GET`
   input flagged by the review is now sanitised at the point of read — the visitor-
   analytics user-agent, IP (REMOTE_ADDR) and Origin/Referer host, the llms.txt 
   editor content, the Yoast/Rank Math import source, and the redirections request
   URI and source prefill.
 * Fixed: replaced the deprecated second argument of `term_description()` (the taxonomy
   parameter, deprecated since WordPress 4.9.2) in the CollectionPage schema output.
 * Fixed: the visitor-analytics time-series query now binds the `DATE_FORMAT` mask
   through `$wpdb->prepare()` as a placeholder instead of interpolating it into 
   the SQL string.
 * Fixed: the redirections admin notice now validates a nonce before reading its
   status/count query args, and its per-IP rate-limit transient uses the plugin’s`
   nexal_seo_` prefix (was `nxs_`).
 * Changed: bundled `.po`/`.mo`/`.json` translation files were removed — the plugin
   is fully internationalized and translations are now delivered automatically through
   translate.wordpress.org.
 * Documented: the readme “External services” section now discloses the optional
   outbound WhatsApp / nexalseo.com “get help” links (what is sent, when, and their
   Terms/Privacy links), in addition to the existing AI-provider disclosures.

#### 1.3.6

 * Added: Visitors analytics — a first-party “Visitors” tab in the Nexal SEO dashboard
   with views, unique visitors and top referrer origins by day, week, month and 
   year. Collected on your own server with no external service, off until you opt
   in, and no IP addresses are stored (visitors are counted with a daily one-way
   hash).
 * Added: AI category descriptions — a “Generate with AI” button on category, tag
   and product-attribute screens drafts an SEO description from the term name and
   the products/posts in it. Opt-in, bring-your-own-key, with a preview before anything
   is saved.
 * Added: CollectionPage schema on category / tag / custom-taxonomy archives, connected
   to the WebSite and its breadcrumb.
 * Added: SoftwareApplication schema fields (application category, operating system,
   price, rating) so software/plugin pages can be marked up for the app rich result.
 * Added: a new “Content signals” criterion — each focus keyword should have its
   own image with matching alt text (the featured image counts too).
 * Improved: the “outbound source” criterion now correctly treats internal links
   as internal (www/non-www, subdomains, percent-encoded hosts), and its “?” popup
   lists the exact external link(s) it detected.
 * Improved: the WooCommerce store audit no longer flags a product as “incomplete
   Product schema” when its schema type was intentionally changed (e.g. to Software
   Application) or disabled.
 * Hardened: inline admin CSS/JS is now enqueued via the WordPress APIs; JSON-LD
   output escapes slashes so page data can never break out of the script tag; the
   opening-hours setting is fully sanitised on every path; the readme “External 
   services” section documents each AI provider with Terms and Privacy links; and
   the visitor-tracking endpoint is rate-limited.

#### 1.27.14

 * Fixed: keeping Yoast SEO / Rank Math / other SEO plugins active alongside Nexal
   SEO (e.g. right after using the importer) caused duplicate, competing title/meta
   description/Open Graph tags on live pages — confirmed by testing with the real
   Yoast SEO plugin active, both plugins’ tags were present in the page source and
   either could win, meaning what was configured in Nexal SEO didn’t always match
   what a browser or search engine actually saw. Nexal SEO now shows a site-wide
   admin notice with a one-click deactivate link when another SEO plugin is detected
   active, and the importer’s messaging was corrected (it previously and incorrectly
   said it was fine to leave the source plugin active).

#### 1.27.13

 * Fixed: Topical Completeness, Cluster Health and the internal-link suggestions
   assumed every content type uses the `category` taxonomy like Posts do. Pages (
   which have no taxonomy by default) always showed “Suggestion: publish at least
   3 articles in this category” no matter how good the page actually was, and WooCommerce
   Products (which use `product_cat`, not `category`) got zero cluster data too.
   These checks now detect the right taxonomy per post type (falling back to any
   hierarchical taxonomy for custom post types), and show an honest “this content
   type doesn’t use categories” message instead of a misleading one when there genuinely
   isn’t one.

#### 1.27.12

 * Fixed: the “FAQ schema markup is added” criterion only recognized Nexal SEO’s
   own FAQ block. It now also detects any other FAQ block by name pattern (Yoast,
   Rank Math, etc.) and FAQPage JSON-LD/microdata pasted directly into the content.

#### 1.27.11

 * Added: 5 Nexal SEO Pro criteria (Semantic Anchor Router, Context Connector, Crawl
   Depth Minimizer, Entity Infeeder, Cluster Migrator) now preview as locked rows
   across Cluster Health, Questions to Answer and Semantic Structure, each explaining
   what the Pro engine does and linking to nexalseo.com/pro.

#### 1.27.10

 * Added: two new “Content signals” criteria (freshness — updated within the last
   year, and linking to a reputable outbound source), each with the same “?” explainer
   as the other checklist items.

#### 1.27.9

 * Added: a new “Questions to Answer” criterion checks whether FAQ schema markup(
   via the Nexal SEO FAQ block) has been added to the content.

#### 1.27.8

 * Added: each Semantic Analysis criterion (Content Structure, Cluster Health, Questions
   to Answer) now has a “?” button that opens a short explainer — why it matters
   and how to fix it — plus a link to get it fixed for you.

#### 1.27.7

 * Fixed: the suggested AI model list for Gemini (`gemini-1.5-*`) and Anthropic (`
   claude-3-5-*`) pointed at model snapshots both providers have since fully retired,
   so the default “Re-analyze with AI” selection failed outright for anyone who 
   hadn’t manually picked a different model. Refreshed all five providers’ suggested
   models against their current docs (Gemini 2.5 family, Anthropic Claude Haiku 
   4.5/Sonnet 5/Opus 4.8, Groq and OpenRouter’s current model/free-tier lineups).
   If you already have an old model ID saved in Settings  AI, clear the model field(
   or pick “Custom” with a current ID) to pick up the new default.
 * Note on Groq specifically: Groq’s Cloudflare-based anti-fraud protection blocks
   server/datacenter/hosting IP ranges by design (a known, widely-reported Groq 
   limitation, not a bug in this plugin) — since a WordPress site’s outbound request
   comes from its hosting server, not a residential IP, Groq can return “Access 
   denied. Please check your network settings.” even with a valid key and model.
   If you hit this, either ask Groq support to allowlist your server’s IP or use
   a different provider for server-side requests.

#### 1.27.6

 * Fixed: saving the AI, Social, Local SEO or Breadcrumbs settings tab for the very
   first time on a site (i.e. before the `nexal_seo_settings` option exists yet)
   silently discarded the submitted values, leaving the fields blank after reload.
   Root cause: WordPress runs the settings sanitize callback twice when the option
   row doesn’t exist yet — once inside `update_option()`, then again inside `add_option()`,
   fed the callback’s own prior output — and the hidden field each tab used to know“
   which tab was submitted” wasn’t preserved into that output, so the second pass
   silently skipped reprocessing the tab and fell back to blank defaults. The Titles&
   Meta tab happened to avoid this by coincidence (its marker field is also a real
   stored setting); AI, Social, Local SEO and Breadcrumbs did not. Confirmed fixed
   via a real end-to-end HTTP save on a freshly-installed site.

#### 1.27.5

 * Fixed: the “Import from Yoast SEO / Rank Math” batch importer redirected using`
   wp_nonce_url()`‘s HTML-escaped output directly in an HTTP `Location` header, 
   so every batch after the first silently failed (the literal `&amp;` broke query-
   string parsing) — imports could stop after the very first batch of ~40 posts 
   with no error shown. Confirmed fixed via a full end-to-end HTTP test through 
   the real batch-redirect chain.
 * Added: category, tag and WooCommerce product category/tag SEO titles, descriptions
   and focus keywords are now included in the Yoast SEO / Rank Math import (previously
   the importer only handled posts, pages and products — taxonomy archive SEO data
   was silently skipped).

#### 1.27.4

 * Fixed: visiting `/sitemap.xml` or `/llms.txt` while that feature was turned off
   served the homepage with a `200 OK` status instead of a proper `404` (WordPress’s
   default query silently falls back to the front page when a rewrite-matched URL
   doesn’t resolve to real content) — confirmed via automated testing that this 
   also fully restores correct 404-monitor logging for both URLs.
 * Fixed: llms.txt page/post titles and excerpts could contain literal HTML entities(
   e.g. `&#8217;s` instead of `'s`) since the output is served as plain text, not
   HTML.

#### 1.27.3

 * llms.txt content is now viewable and directly editable in a text box on the AI
   tab, instead of being purely auto-generated. Save your own version, or reset 
   back to the auto-generated one at any time.
 * Added a “Write with AI” button (only shown when AI is enabled) that drafts an
   llms.txt using your site’s Schema/Knowledge-Graph identity plus your published
   pages AND recent posts — grouped by actual topic instead of a flat list — using
   your own configured AI provider. Manual trigger only; the draft is saved so you
   can review/edit it before it goes live.

#### 1.27.2

 * Fixed llms.txt (added in 1.27.1) not actually appearing at the site URL after
   clicking “Create”: it was being written as a real file at `ABSPATH`, which isn’t
   always the same folder a site’s domain actually serves from. It’s now served 
   virtually through a rewrite rule instead — the same approach this plugin’s own
   XML sitemap already uses — so it works regardless of hosting/filesystem setup.
   The button now toggles llms.txt on/off (content is generated fresh on every request,
   so there’s no separate “regenerate”).

#### 1.27.1

 * AI tab: when AI is enabled, Nexal SEO shows an llms.txt status check with a one-
   click button to turn it on. See 1.27.2 below for a fix to how it’s served.

#### 1.27.0

 * Removed Webmaster Tools entirely: the Google Search Console / Bing Webmaster 
   Tools live-data connection, the OAuth flow, and the legacy Google/Bing/Yandex/
   Pinterest verification meta tags. This drops an entire settings tab and its stored
   credentials/tokens — anyone using it should note this feature is gone.
 * Added full French, German, Spanish and Russian translations (692 strings, PHP
   and block-editor JS).
 * Extended the local semantic analysis engine’s stop-word list and question-style
   heading detection to Russian (French/German/Spanish/Arabic were already covered),
   and the optional AI n-gram/question suggestions now explicitly ask for output
   in the site’s configured language instead of only inferring it from the content
   excerpt.

#### 1.26.4

 * Redesigned the plugin admin UI: replaced the purple/pink/teal gradient banners,
   glow effects and gradient buttons across every settings tab and module page with
   a plain white header, a single accent colour, and native wp-admin-style tabs/
   cards.

#### 1.26.3

 * Breadcrumbs “Auto insert” now skips WooCommerce shop/product pages (which already
   print their own breadcrumb) and themes that declare the “yoast-seo-breadcrumbs”
   theme-support flag, so you don’t get two breadcrumb trails stacked together. 
   This is best-effort — it can’t detect breadcrumbs hardcoded directly into a theme,
   so manual placement via [nexal_breadcrumbs] is still recommended for full control.

#### 1.26.2

 * Added a “Monitor H1” setting (Titles & Meta) — when turned off, the duplicate-
   H1 check is hidden from the Semantic Structure panel instead of always being 
   shown.
 * Webmaster Tools tab no longer fetches live data on plain page load — it now reads
   the local cache only and relies on the explicit “Refresh data” button, closing
   a case where an external request could fire without a direct user action.
 * Added `uninstall.php` to fully remove options, transients, custom tables and 
   post/term meta when the plugin is deleted.
 * Added a readme “External services” section disclosing the opt-in Google/Bing/
   AI integrations.

#### 1.26.1

 * Removed the manual verification-code paste fields and self-check from Webmaster
   Tools (superseded by the OAuth/API “Connect” flow); previously saved codes keep
   working on the front end.
 * The Nexal SEO metabox/editor sidebar/score column now also support custom post
   types that are visible in wp-admin but not registered as fully “public”.

#### 1.26.0

 * Webmaster Tools: connect Google Search Console (OAuth) or Bing Webmaster Tools(
   API key) to pull clicks/impressions/position/top queries into the dashboard. 
   Manual refresh only, 12-hour local cache. Yandex/Pinterest credential fields 
   scaffolded for a future update.

#### 1.20.0

 * Added the Local SEO module: LocalBusiness structured data, NAP consistency scanner,
   and a geo/local-SEO checklist.

#### 1.18.0

 * Schema output rebuilt as a connected entity `@graph` (Organization, WebSite, 
   Article, Product, BreadcrumbList) instead of separate, disconnected JSON-LD blocks.

#### 1.0.0 – 1.17.x

 * Initial releases and early iterations: focus keyword/SEO title/meta description
   for posts, pages, products and terms; modular dashboard; tabbed settings; Open
   Graph/Twitter Card output; local semantic content analysis engine; XML Sitemap,
   Redirections, 404 Monitor, Schema, Breadcrumbs and WooCommerce audit modules;
   optional AI assist with bring-your-own API key.

## Meta

 *  Version **1.3.8**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.2 or higher **
 * Tags
 * [meta description](https://wordpress.org/plugins/tags/meta-description/)[meta title](https://wordpress.org/plugins/tags/meta-title/)
   [schema](https://wordpress.org/plugins/tags/schema/)[seo](https://wordpress.org/plugins/tags/seo/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/nexal-seo/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/nexal-seo/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/nexal-seo/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/nexal-seo/)