=== ABDS SEO === Contributors: abdsseo Tags: seo, content analysis, rank tracking, schema, gutenberg Requires at least: 6.8 Tested up to: 7.1 Requires PHP: 8.0 Stable tag: 0.12.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Technical + content SEO with block-level recommendations in Gutenberg, one-click migration from other SEO plugins, and optional AI on your own key. == Description == ABDS SEO analyzes your site both technically and by content, and gives you concrete, actionable recommendations — down to the individual Gutenberg block, not just the meta fields. The whole free feature set works with no account, no external service, and no API key. Optional integrations (AI, SERP data, Search Console) are strictly bring-your-own-key: your site talks to the provider you chose, with your own credentials, and never through a vendor proxy. **Free features** * Technical SEO audit via an internal scanner (WP_Query) — no mandatory external crawler. * One-click migration of existing SEO data from Yoast SEO, Rank Math, and All in One SEO — nothing is deleted without your confirmation. * Rule-based content analysis right in the editor: focus-keyword density and placement, readability, and a pixel-accurate Google snippet preview. * Block-level recommendations in the Gutenberg sidebar — with a Classic Editor fallback (meta box + post-list SEO score column) for sites that don't use the block editor. * Meta title / description / focus-keyword editor with a changes log for the fields the plugin owns. * Schema (JSON-LD) validation during scanning. * All heavy work runs asynchronously in the background via Action Scheduler, so the plugin never slows down the front end. **Pro / Business / Agency features (a separate add-on)** These come with ABDS SEO Pro — a separate plugin you download from your ABDS account after buying a plan and activate with your license key. This free plugin contains none of the paid code; installing that add-on is what enables the features below. * AI assistance (BYOK): rewrite titles/descriptions and fix content issues using your own OpenAI-compatible, Anthropic, or Google Gemini key, with an enforced spend limit. * SERP competitor analysis and content-gap detection (BYOK: SerpApi). * Keyword volume/difficulty and backlink data before you commit to a focus keyword (BYOK: DataForSEO). * Local rank tracking with location support, decay detection, and drop alerts. * Local SEO: NAP consistency checker and LocalBusiness JSON-LD validation. * Google Search Console integration (your own account) for real search-analytics-driven priorities. * Internal-linking suggestions (orphan detection) and site-vs-site competitive analysis. * Behavioral analytics (CRO): cookieless click/scroll heatmaps, rage-click detection, a guardrailed popup builder, and sequential meta-CTR tests. Off by default. * Monthly white-label-ready reports and a weekly e-mail digest of the top priority actions. * Agency: push a multi-site overview to the ABDS agency cabinet. The free plugin is fully functional on its own; the paid tiers add capabilities, they do not cripple the free ones. == Installation == 1. Install and activate the plugin from the Plugins screen in wp-admin. 2. If Yoast SEO, Rank Math, or AIOSEO is active, the plugin offers a migration wizard to import your existing data. 3. After migration (or right away, if no other SEO plugin is found) the first site scan starts in the background. No account or key is required for the free features. == Frequently Asked Questions == = Do I need an API key to use the plugin? = No. Everything in this free plugin — the technical audit, rule-based content analysis, migration, and snippet preview — works with no key and no third-party service. The optional integrations that use your own API keys (AI, SERP, DataForSEO, Google Search Console) are part of the separate ABDS SEO Pro add-on, not this free plugin (see "External services"). = What happens to my Yoast / Rank Math data when I activate ABDS SEO? = Nothing is deleted automatically. The plugin offers to import your data via the migration wizard and only deactivates the old plugin after you confirm. = Does the free version phone home or send my data anywhere? = Only in one narrow, anonymous way, as of 0.9.0: opening the plugin's own Plans screen (Settings before 0.10.0) fetches the current subscription prices from the ABDS license server, so the upgrade options it shows are accurate. That request carries no license key, no site URL, and nothing else about your site — it's the same public price list anyone could load in a browser — and it's cached, so it doesn't repeat on every visit; if it ever fails, Plans just falls back to the plugin's built-in prices instead of breaking. Every OTHER third-party call — the actual license check — still only happens after you enter a license key. A free install that never opens Plans and never enters a key makes no license-related contact at all. The paid integrations that would send data elsewhere live in the separate ABDS SEO Pro add-on, not here (see "External services"). = How are paid features unlocked and updated? = Buy a plan, then install the separate ABDS SEO Pro add-on (downloaded from your ABDS account) and activate your license key. The paid features live entirely in that add-on — this free plugin ships none of them. This free plugin always updates from WordPress.org like any other plugin; the Pro add-on delivers its own updates from the ABDS license server once activated. == External services == This free plugin contacts exactly one third-party service, and only when you choose to activate a license: * **ABDS License Server** (https://license.abds-seo.com) — contacted in two cases. (1) Opening the plugin's Plans screen (Settings before 0.10.0) fetches the current subscription prices, an anonymous public request that sends no license key, site URL, or any other site-identifying data; the result is cached, so this isn't repeated on every visit, and a failed request just falls back to the plugin's built-in prices. (2) Activating a license key (to validate it), or the ABDS SEO Pro add-on checking your license and fetching its own updates — these send your license key, your site URL, and a random per-install identifier (not derived from any WordPress secret). A free install that never opens Plans and never enters a license key makes no contact at all. Governed by the ABDS Terms of Service (https://abds-seo.com/en/terms) and Privacy Policy (https://abds-seo.com/en/privacy). Nothing else in this free plugin makes third-party network calls. The technical audit, rule-based content analysis, migration, and snippet preview all run locally, and the scanner only fetches your own site's pages (a same-site loopback request) to inspect their markup. The optional paid integrations — AI assistants (OpenAI-compatible, Anthropic, Google Gemini), SERP/competitor analysis, DataForSEO keyword and backlink data, Google Search Console, and the agency multi-site cabinet — are **not part of this free plugin**. They live in the separate ABDS SEO Pro add-on and connect to their own services only after you enable each one there with your own credentials; those services are documented with that add-on. == Source code == The JavaScript and CSS in the `build/` folder are compiled with [@wordpress/scripts](https://www.npmjs.com/package/@wordpress/scripts) (webpack). The uncompiled, human-readable sources are included in this package under `/src` (`admin.js`, `index.js`, `search-appearance.js`, `indexing.js`, `sidebar.js`, `snippet-width.js`, `style.css`). To rebuild them, run `npm install` and then `npm run build` in the plugin folder. == Screenshots == 1. Dashboard with the overall SEO score and the attention list. 2. Block-level recommendations in the Gutenberg sidebar. 3. Pixel-accurate Google snippet preview. 4. Migration wizard importing data from another SEO plugin. 5. Settings, organized as per-provider cards. 6. Reports overview. == Changelog == = 0.12.0 = * New "Site Audit" screen (right after Dashboard): one button runs every technical and content check against every published page and shows results live as they come in, instead of a silent wait — a status line ("Queued, starting…", then "N of M pages checked…") updates every couple of seconds and a severity summary plus a per-issue list with real severity badges (Critical/High/Medium/Low/Notice) fill in as pages finish. * The audit always finishes, even on pages that can't be fetched (firewall, basic auth, a slow or blocked connection): a failed fetch now gets its own "Could not fetch the page" notice-level entry and the run moves on, instead of appearing to hang indefinitely. * If progress genuinely stalls (typically a hosting environment where background tasks start slowly), the screen shows a plain-language note suggesting you check that WP-Cron / Action Scheduler is running — the audit itself is unaffected and keeps going. * The Dashboard's list of pages needing attention now draws from your latest Site Audit run once you've used it; sites that haven't run the new audit yet see the same list as before, unchanged. * Renamed "SEO Audit" back to "Reports" to make room for the new "Site Audit" name above it in the menu — same screen, same data, no bug. * Refreshed the Ukrainian translation to cover the new Site Audit screen. = 0.11.0 = * New "Search Appearance" screen: site-wide title/description templates and a default robots policy (Global tab), plus per-post-type, per-taxonomy, and per-archive (author/date/search) index and sitemap-inclusion controls, and a redirect for attachment pages to their parent post (System tab). * New "Indexing" screen: a built-in XML sitemap at `/sitemap.xml` that honors every Search Appearance setting (a page or archive you mark Noindex is excluded), with a status view and a manual regenerate button; and a read-only Robots.txt tab showing your site's live file plus three checks (sitemap declared, `/wp-admin/` disallowed, no site-wide blanket block). When another SEO plugin is active, this plugin's own sitemap and robots.txt checks step aside automatically, the same way its other frontend output already does. * **Important if you migrated from Yoast SEO, Rank Math, or All in One SEO:** the migration wizard has always carried over any noindex/nofollow settings from individual posts, but until this release those settings were stored and never actually applied on your live site. Starting with 0.11.0, they do — a post you (or the plugin you migrated from) marked noindex or nofollow will now genuinely be noindex/nofollow on the live page. If you never migrated from another SEO plugin, or none of your content was marked that way, nothing changes for you. If some was, the plugin shows a one-time admin notice with the exact number of pages affected, a link to review them by name before you do anything else, and a button to acknowledge once you've checked. * The page `