Title: Seonix SEO
Author: seonix
Published: <strong>June 13, 2026</strong>
Last modified: June 14, 2026

---

Search plugins

![](https://ps.w.org/seonix/assets/banner-772x250.png?rev=3571414)

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

# Seonix SEO

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

[Download](https://downloads.wordpress.org/plugin/seonix.2.5.14.zip)

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

 [Support](https://wordpress.org/support/plugin/seonix/)

## Description

**Seonix SEO is the AI agent for organic and AI-search growth.** Connect your WordPress
site and Seonix audits your technical SEO in real time, writes SEO-optimized articles,
fixes site issues in one click, and publishes everything on autopilot — for Google
and AI search engines like ChatGPT, Gemini, and Perplexity.

Built for site owners who want growth without learning SEO or hiring an agency.

**What Seonix does for your site**

 * **Real-time technical SEO audits** — broken links, duplicate content, missing
   meta descriptions, image alt issues, schema gaps, sitemap problems, and dozens
   more checks.
 * **One-click SEO fixes** — apply AI-suggested fixes for the most common technical
   issues directly from the Seonix dashboard. Rollback any change if you don’t like
   the result.
 * **AI-written articles, SEO-tuned end-to-end** — Seonix learns your site, audience,
   voice, and topics, then generates articles with optimized titles, meta descriptions,
   internal links, headings, and schema markup.
 * **Autonomous publishing on a schedule** — pick a cadence (daily, every 3 days,
   weekly), and the AI agent plans, generates, and publishes for you. Pause anytime.
 * **AI-search visibility** — content is structured for both Google and the new 
   generation of AI search engines (ChatGPT, Gemini, Perplexity), with built-in `
   llms.txt` support.
 * **Works with the SEO plugin you already use** — Seonix writes the standard meta
   fields every major WordPress SEO plugin reads, so your existing setup keeps working.
 * **WooCommerce-ready** — product pages flow into the AI context for relevant internal
   linking.

**How the WordPress plugin fits in**

The Seonix WordPress plugin is the bridge between your site and the Seonix service.
The plugin handles the WordPress side — receiving published articles, syncing your
site structure for internal linking, and applying SEO fixes — while the AI heavy-
lifting runs on the Seonix platform.

**How it works:**

 1. Install and activate this plugin.
 2. Open the **Seonix** menu in your WordPress admin and click “Connect to Seonix” —
    pick your project in the Seonix app and the connection completes in one click.
 3. Seonix analyzes your site and starts publishing, syncing, and applying fixes via
    the REST API.

Prefer to connect manually? Copy the auto-generated API key from `Seonix  Settings`
and paste it into your Seonix project’s WordPress channel. No WordPress passwords
either way.

### External Service

This plugin connects your WordPress site to the **Seonix service** (https://seonix.
ai), a third-party SaaS platform that generates and publishes SEO-optimized articles
to your site. Using Seonix requires a Seonix account.

**What the service does**

Seonix uses AI to generate articles based on your site’s topic, optimize them for
SEO (titles, meta descriptions, internal links, schema), and publish them back to
WordPress through this plugin’s REST API. It also consumes a lightweight snapshot
of your existing pages, posts, and WooCommerce products so generated articles can
include relevant internal links.

**How you connect**

There are two ways to link your site, and BOTH require an explicit action by you:

 * **One-click connect (recommended):** from the Seonix Dashboard inside wp-admin,
   click “Connect to Seonix”. Your browser opens `https://app.seonix.ai/connect`,
   where you sign in (or sign up) and pick the project to link. Seonix then calls
   back to your site’s REST API to finish the handshake. Your site URL is passed
   in the link; a single one-time security code is passed in the URL fragment so
   it stays out of server logs. No WordPress password leaves your site.
 * **Manual connect:** copy the API key from `Seonix > Settings` and paste it into
   the Seonix dashboard. Seonix calls back to your REST API using the key.

**When the plugin contacts Seonix**

The plugin does NOT contact any external server until you connect it to a Seonix
project:

 1. Install and activate the plugin — no external request is made.
 2. Connect via either method above. Until a connection succeeds, no outbound calls
    leave your site (clicking “Connect to Seonix” only opens the Seonix site in your
    browser — that browser navigation is initiated by you, not a background request
    from the plugin).
 3. Seonix calls back to your WordPress REST API to complete the handshake. After that,
    the Seonix engine URL is stored on your site.
 4. From that point on, the plugin can push a one-time site snapshot and per-post events
    to that engine URL, and can pull your SEO task list back from it.

Until step 3 succeeds, no outbound calls leave your site.

**What data is sent**

 * **Site snapshot** (manual “Sync Now” button or weekly cron): for each public 
   page, post, and WooCommerce product — `wp_id`, `content_type`, `title`, `slug`,`
   url`, `status`, `updated_at`. Post content body is NOT sent.
 * **Per-post events** on save/delete: same shape as above plus an action flag (`
   created` / `updated` / `deleted`).
 * **Connect handshake**: when Seonix completes the connection it reads your site
   name and site URL and stores the plugin’s API key so it can call your site later.
 * Outbound calls go only to the Seonix endpoint authorized during connection.

**What data is received**

 * **SEO tasks**: after Seonix scans your site (on connect and weekly), it sends
   your site’s audit results — a list of SEO/technical/AI-search issues with a title,
   description, recommendation, severity, and the affected URL — which the plugin
   stores locally and shows on the Seonix Dashboard. The plugin can also pull this
   same list on demand via the “Refresh tasks” button. No personal data is received;
   the tasks describe your own site’s content and configuration.

**Terms and Privacy**

By installing the plugin and connecting it to a Seonix project, you accept the Seonix
Terms of Service and Privacy Policy:

 * Service: https://seonix.ai
 * Terms of Service: https://seonix.ai/terms-of-use
 * Privacy Policy: https://seonix.ai/privacy-policy

## Screenshots

[⌊Your site health score inside WordPress, with SEO, technical, and AI search breakdowns
synced from Seonix.⌉⌊Your site health score inside WordPress, with SEO, technical,
and AI search breakdowns synced from Seonix.⌉[

Your site health score inside WordPress, with SEO, technical, and AI search breakdowns
synced from Seonix.

[⌊Every issue becomes a task with its category, the pages it affects, and its priority.⌉⌊
Every issue becomes a task with its category, the pages it affects, and its priority
.⌉[

Every issue becomes a task with its category, the pages it affects, and its priority.

## Installation

 1. Upload the `seonix` folder to `/wp-content/plugins/` (or install the .zip through
    Plugins > Add New > Upload Plugin)
 2. Activate the plugin through the Plugins menu
 3. Open the **Seonix** menu and click “Connect to Seonix” to link your site in one
    click
 4. Prefer manual setup? On `Seonix > Settings`, copy the API key and paste it into
    the Seonix dashboard (`Channels > WordPress`)

## FAQ

### How do I connect my site?

The easiest way is the **Seonix** menu in your WordPress admin: click “Connect to
Seonix”, choose your project in the Seonix app, and the connection completes automatically—
no key to copy. You can also connect manually by pasting the API key (see below)
into the Seonix dashboard.

### How does authentication work?

On activation, the plugin generates a unique API key (`sx_` followed by 64 hex characters).
This key authenticates every request between Seonix and your site. No WordPress 
passwords or application passwords are involved. The same key authenticates outbound
calls from the plugin back to the Seonix backend. One-click connect exchanges this
key for you behind the scenes; with manual connect you paste it once into the Seonix
dashboard.

### What SEO plugins are supported?

The plugin writes the standard SEO meta keys that every major WordPress SEO plugin
reads (meta title, meta description, focus keyword). Whichever SEO plugin you have
active will pick up the values without extra setup.

### Can I change the API key?

Yes. Go to `Seonix > Settings` and click “Regenerate Key”. You will need to update
the key in your Seonix project afterward (or simply use “Connect to Seonix” again).

### What data is sent to Seonix?

See the “External Service” section above. Briefly: only basic metadata (title, URL,
slug, status, modification time) about your pages, posts, and WooCommerce products.
Post content body is never sent. No data is sent until you connect the plugin to
a Seonix project.

### Can I connect to multiple Seonix projects?

Currently, each WordPress site connects to one Seonix project at a time.

### What happens if I deactivate the plugin?

The API key and settings are preserved. Reactivate the plugin to resume publishing.

### How do I disconnect my site from Seonix?

Go to `Seonix > Settings` and click “Regenerate Key”. The previous key becomes invalid,
so the Seonix backend can no longer call your site or receive sync data. To remove
all stored options and the local task data entirely, delete the plugin from the 
Plugins screen.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

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

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

### Interested in development?

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

## Changelog

#### 2.5.14

 * Fixed the Seonix icon in the WordPress admin menu rendering as a solid white 
   square. The menu now uses the real Seonix favicon, embedded in a form that WordPress
   core’s icon repainting (svg-painter.js) cannot flatten, so the brand mark shows
   correctly in every menu state.

#### 2.5.0

 * **One-click connect.** A new top-level **Seonix** admin menu links your WordPress
   site to Seonix in a single click — it hands off to https://app.seonix.ai/connect,
   you pick a project, and the connection completes automatically. No API key to
   copy. The manual key flow still works from Seonix  Settings. The browser handoff
   carries a single one-time security code in the URL fragment so it never reaches
   server logs.
 * **Site Health inside WordPress.** The Seonix Dashboard shows your SEO audit as
   a task list — overall score, open/solved counts, per-category gauges (SEO / Technical/
   AI Search), and each issue’s recommendation and affected URL. Tasks are stored
   locally and rendered from there, so viewing the Dashboard never calls the Seonix
   API; a “Refresh tasks” button (and a soft once-a-day auto-refresh) pulls the 
   latest on demand.
 * **Structured data (JSON-LD) on published articles.** Seonix adds schema.org markup(
   Article, breadcrumbs, and FAQ/How-To when present) in the page so search engines
   and AI answer engines understand your content. Stays out of the way when Yoast,
   Rank Math, or All in One SEO is active to avoid duplicate markup. Toggle under
   Seonix  Settings  Structured Data.
 * **Redesigned admin UI.** Full-width Problems and Settings tabs matching the Seonix
   web app, with a Site Health panel (overall score ring plus per-category bars)
   and a clearer, filterable task list.
 * New REST routes `POST /connect/exchange` and `POST /tasks` under both the `seonix/
   v1` and legacy `content-engine/v1` namespaces. All output is escaped, all input
   is sanitized, and every state-changing admin action stays capability- and nonce-
   checked.
 * Security hardening and reliability fixes. Uninstall cleans up the new options
   and the local tasks table. Existing connected sites keep working unchanged — 
   no reconfiguration needed.

#### 2.4.2

 * Yoast SEO integration tightened: removed the last direct reads from Yoast-owned
   option arrays. Term meta descriptions (`Seonix_Fix_Term_Meta_Description::engine_read`)
   and the Yoast title-template helper (`Seonix_REST_API::get_yoast_title_template`)
   now go strictly through Yoast’s public class APIs (`WPSEO_Taxonomy_Meta::get_term_meta`,`
   WPSEO_Options::get`). If those classes are unreachable, we fail cleanly (empty
   string / null / `412 Precondition Failed`) instead of falling back to `get_option('
   wpseo_*')` against the underlying option array.
 * No new code paths and no migrations — the change only narrows the previously 
   documented fallback.

#### 2.4.1

 * WordPress.org review compliance pass. No behaviour change; existing connected
   sites continue to work without reconfiguration.
 * Removed the deprecated `libxml_disable_entity_loader()` calls from the HTML-to-
   blocks helper. The remaining `LIBXML_NONET` flag plus libxml2 2.9+ defaults provide
   the same XXE protection on the WP-supported PHP range (7.4+).
 * `llms.txt` and `llms-full.txt` are now served entirely from PHP via rewrite rules—
   the plugin no longer writes any static files to the WordPress root. ETag/Last-
   Modified/304 caching keeps the responses cheap, and the dynamic body is always
   in sync with current published content. Output is escaped on emit.
 * The IndexNow key file moved from the WordPress root to `wp-content/uploads/seonix/{
   key}.txt` and is written via the WordPress Filesystem API (`WP_Filesystem`). 
   The `file_url` returned by the setup endpoint points at the new location and 
   is accepted by IndexNow’s `keyLocation` parameter.
 * Yoast SEO integration now goes through Yoast’s public API only — `WPSEO_Options::
   get` / `WPSEO_Options::set` for the pagination `noindex-subpages-wpseo` flag,
   and `WPSEO_Taxonomy_Meta::set_value` for taxonomy term descriptions. No direct`
   update_option( 'wpseo_*', ... )` calls remain anywhere in the plugin; both fix
   methods refuse to run unless Yoast SEO is active.
 * Renamed `assets/icon-256x256.png`  `assets/seonix-logo.png` and `assets/icon-
   64x64.png`  `assets/seonix-logo-small.png` so they don’t clash with WordPress.
   org plugin-directory catalog asset names. The directory banners/icons live in
   SVN `/assets/`, not in the plugin zip.

#### 2.4.0

 * Rebrand release. Plugin name updated to “Seonix SEO – Real-time AI Agent for 
   Technical SEO, AI Content & Autonomous Growth” so the WordPress.org listing reflects
   what the plugin and connected Seonix service actually do: real-time technical
   SEO audits, AI-generated content, one-click fixes, and autonomous publishing 
   for Google and AI search engines (ChatGPT, Gemini, Perplexity).
 * readme.txt: rewritten short description and Description body with a full overview
   of Seonix capabilities (real-time technical SEO audits, AI content, autonomous
   publishing, AI-search visibility). Plugin tags updated for the SEO category in
   the WordPress.org directory.
 * No code or behaviour change. The plugin REST API surface, auth flow, sync contract,
   and SEO Fix subsystem are identical to 2.3.2 — safe to update.

#### 2.3.2

 * Corrected the Terms of Service and Privacy Policy URLs in the External Service
   disclosure (`https://seonix.ai/terms-of-use` and `https://seonix.ai/privacy-policy`).
   The previous `/terms` and `/privacy` paths returned 404.

#### 2.3.1

 * Self-configure on verify: when the Seonix backend calls `GET /wp-json/seonix/
   v1/verify`, the plugin now persists `engine_url`, `project_id`, and `project_name`
   from the request’s query string. Outbound sync (`/api/plugin/sync`, `/api/plugin/
   content-event`) and the Settings  Seonix UI always reflect the backend that completed
   the last successful verify — operators no longer need to edit options by hand
   when a site is moved between Seonix projects or between dev/prod backends. Older
   backends that don’t pass the new params are still accepted (empty values are 
   skipped).
 * Internal: `Seonix_Sync::is_safe_url` is now `public static` so the REST controller
   reuses the same SSRF guard that protects outbound sync.
 * Plugin Check compliance: the uninstall-time `DROP TABLE` now passes the table
   name through `$wpdb->prepare( '...%i', $table )` so PluginCheck’s UnescapedDBParameter
   sniff is satisfied. Tested up to WordPress 7.0; minimum bumped to WordPress 6.2(
   required for the `%i` SQL identifier placeholder).

#### 2.3.0

 * WordPress.org submission prep: complete plugin header with Plugin URI, Author
   URI, License URI, and Domain Path; readme.txt fully discloses the external service(
   Seonix SaaS), the exact data sent, and links to Terms of Service and Privacy 
   Policy.
 * i18n: empty `/languages/seonix.pot` scaffold shipped for translators; translations
   for WordPress.org-hosted plugins are auto-loaded by core since WP 4.6, so no 
   explicit `load_plugin_textdomain()` call is needed.
 * Hardened uninstall: legacy `@unlink()` replaced with WordPress’s `wp_delete_file()`;`
   seonix_migrated_from_ce` option and `{$wpdb->prefix}seonix_seo_fix_history` table
   are now dropped on uninstall.
 * Internal: enqueue handles renamed from legacy `ce-admin` to `seonix-admin` for
   consistency. No behaviour change.
 * Tested up to WordPress 6.8 (bumped to 7.0 in 2.3.1).

#### 2.2.6

 * Security audit fixes (internal hardening; no API or behaviour change for callers).

#### 2.2.5

 * Fixed: `featured_image_alt` from Seonix now persists as the WordPress alt-text
   attribute on the imported featured-image attachment (`_wp_attachment_image_alt`
   post meta). Previously the field was silently dropped.
 * Performance: trimmed REST responses across every endpoint to ship only fields
   the Seonix backend actually decodes. Largest wins: `GET /posts` list no longer
   does per-row `get_the_terms()` lookups or a global `wp_count_posts()`; `/llms-
   status` no longer walks `wp_count_posts()` x 2; `/cache/purge` returns 204 No
   Content; `/seo-fix/dry-run` skips `sprintf` of the now-unused diff string per
   fix method.

#### 2.2.4

 * New `pagination_noindex` fix method. Flips the SEO plugin’s site-wide `noindex-
   subpages-wpseo` option to true (so paginated archive subpages render `<meta name
   ="robots" content="noindex, follow">`) and force-rebuilds term indexables by 
   nulling `is_robots_noindex` on term rows in the indexables table. Without this,
   the live `/category/foo/page/2/` HTML keeps rendering `index, follow` until the
   SEO plugin’s cron rebuild catches up. All other `wpseo_titles` keys are preserved
   unchanged.

#### 2.2.3

 * Fixed: `term_meta_description` now syncs to the indexables table so the live 
   archive page actually renders the new description on installs that use indexables(
   v14+).

#### 2.2.2

 * New SEO fix method `term_meta_description` for taxonomy archive pages (category/
   tag / custom taxonomies). The plugin resolves the archive URL to a term and writes
   the description through the active SEO plugin’s term-meta layer. Fixes the gap
   where `meta_description_missing` issues on `/category/...` and `/tag/...` URLs
   survived auto-fix runs because the legacy `meta_description` method only handled
   posts.
 * Broken-link fix gained an optional `mode` parameter. Default `mode=rewrite` is
   unchanged. New `mode=remove_link` strips every `<a href="$old_url">TEXT</a>` (
   absolute and matching relative href) down to its inner TEXT — used as the fallback
   when the AI matcher can’t find a confident redirect target. Deep-mode rewrites
   apply to the new mode too.
 * Backwards-compatible with older Seonix backends: they simply won’t dispatch to
   the new method/mode.

#### 2.2.1

 * Per-post snapshot (`GET /seonix/v1/posts` and `/seonix/v1/posts/{id}`) now includes
   the active SEO plugin’s per-post-type title template (e.g. `%%title%% %%sep%%%%
   sitename%%`) and the site `blogname`. The Seonix backend uses these to size the
   AI title-suggester’s character budget so a meta title plus the appended sitename
   suffix stays under the rendered `<title>` length limit. Returns `null` when no
   compatible SEO plugin is installed.

#### 2.2.0

 * Key takeaways callout block. The plugin now accepts `key_takeaways[]` and `key_takeaways_title`
   in the publish payload and renders them as a styled `<aside class="seonix-key-
   takeaways">` block above the article body. Bundled stylesheet (`assets/seonix-
   content.css`) is enqueued on singular post pages so the block looks consistent
   across themes.
 * Per-tenant brand accent. The payload also accepts `accent_color` (canonical 7-
   character hex). Set as `--seonix-accent` on the `<aside>` so the callout matches
   the project palette out of the box. Themes can override `--seonix-accent` globally
   at `:root` if they prefer their own colour.
 * Takeaways and brand accent are persisted in `_seonix_key_takeaways` / `_seonix_key_takeaways_title`/`
   _seonix_brand_accent` post meta for downstream consumers (themes, AMP, llms.txt).

#### 2.1.0

 * SEO Fix subsystem: REST routes under `/seonix/v1/seo-fix/*` (capabilities, dry-
   run, apply, rollback, history) backed by per-method classes (SSL mixed content,
   redirect, broken link, meta title, meta description, image alt).
 * Cache purger so applied fixes invalidate page cache without manual clears.
 * `llms.txt` full-content variant alongside the index, with ETag and Last-Modified
   for efficient AI-crawler revalidation.
 * Hardened auth header detection: `X-Seonix-Key` preferred, `X-CE-Key` kept as 
   legacy alias, `Authorization: Bearer` continues to work.
 * PHPUnit unit tests for sync, REST controller, registry, history, cache purger,
   and individual fix methods.
 * Internal cleanups across the sync class and admin page; no behaviour changes 
   there.

#### 2.0.0

 * Complete rewrite with API key authentication (replaces handshake flow). New keys
   are `sx_<64 hex>`; legacy `ce_<64 hex>` keys remain accepted.
 * Multi-file architecture for better maintainability.
 * SEO meta set via `meta_input` during `wp_insert_post` so the active SEO plugin
   picks up the values immediately without an extra save.
 * Added support for an additional SEO plugin alongside the two already covered.
 * Multi-category support with automatic creation.
 * Robust MIME type detection for featured images.
 * Configurable post author setting.
 * IndexNow setup and status endpoints.
 * Improved admin settings page with card-based design.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **2.5.14**
 *  Last updated **7 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[automation](https://wordpress.org/plugins/tags/automation/)
   [content](https://wordpress.org/plugins/tags/content/)[seo](https://wordpress.org/plugins/tags/seo/)
   [technical seo](https://wordpress.org/plugins/tags/technical-seo/)
 *  [Advanced View](https://wordpress.org/plugins/seonix/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/seonix/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/seonix/)