=== Rank Forge – SEO Score, Schema, Sitemap & Redirects ===
Contributors: avakodeforge
Donate link: https://avakode.com
Tags: seo, schema, sitemap, meta-tags, serp-preview
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

SEO score, meta, schema and sitemap for WordPress: meta box, SERP preview, robots.txt, redirects, image SEO. A Yoast-compatible SEO plugin.

== Description ==

**Rank Forge** is a modern SEO plugin built around a single insight: an SEO score is only useful if it tells you exactly what to do next. The post-edit metabox gives you a 0-100 SEO score, a SERP preview, focus-keyword analysis, and an editable meta title / description / schema — all from one screen, with no account or API key required.

Everything in the Free plugin runs locally on your site: schema markup, XML sitemap, robots.txt, the redirect + 404 manager, image SEO (auto alt text), local business schema, and video schema. The optional **Pro add-on** layers AI on top — one-click AI meta generation, content optimization, and schema detection — plus Google Search Console, Site Audit, A/B testing and auto internal links.

= Free =
* On-page SEO score (0-100) per post
* SERP preview (Google desktop + mobile)
* Focus keyword analysis
* XML sitemap (hreflang-aware if Lang Forge is active)
* robots.txt editor
* Basic schema markup (Article, BlogPosting) and the visual Schema Builder
* Noindex / nofollow per post
* Redirect manager (301, 302, 307, 410) with 404 log
* Broken-link scanner across all published content (SSRF-pinned for safety)
* Image SEO — automatic alt text and a bulk no-alt report
* Local Business schema (LocalBusiness / NAP / opening hours)
* Video SEO — VideoObject schema and a video sitemap
* Coexists with Yoast / Rank Math / AIOSEO / SEOPress during migration

= Rank Forge Pro =

Pro is a separate add-on plugin, distributed from https://rankforgewp.com and not
included in this download. Everything listed above is part of this plugin and
works without it.

* AI meta generation (title, description, focus keyword)
* AI content expansion / simplification / external-link suggestions
* Internal link suggestions and automatic internal linking
* Google Search Console integration (rankings, indexing requests)
* Site audit (technical SEO crawler)
* Content brief, content decay and the content optimizer
* A/B testing for titles + descriptions

Part of the **Forge Suite** — bundle includes Lang Forge, Form Forge, Field Forge.

== Third-Party Services ==

Rank Forge connects to the following third-party services. No data is sent until you actively use the relevant feature.

* **Avakode API** (https://avakode.com) — powers the AI features (AI meta generation, schema detection, content tools) and validates your license. When you trigger an AI action or activate a license, your site URL, license key, and the relevant post content are sent. Terms: https://avakode.com/terms — Privacy: https://avakode.com/privacy
* **Google Search Console / Analytics / Indexing** — contacted only after you click "Connect Google" and use the Rankings, Analytics & Traffic, or Indexing pages. Requests are proxied through the Avakode API using your authorised Google account (read-only for Search Console and Analytics; a URL is submitted only when you click "Submit to Google Index"). Google Terms: https://policies.google.com/terms — Privacy: https://policies.google.com/privacy
* **Anonymous usage analytics (opt-in, OFF by default)** — Only if you explicitly opt in from the Rank Forge settings, the plugin sends anonymous product-usage telemetry to the Avakode API (https://avakode.com/telemetry): a random install ID (UUID, not tied to your site URL or any account), your bucketed WordPress and PHP version ranges, the plugin version, and aggregate feature-usage event counters. It is sent ONLY after you opt in and can be disabled at any time. It never sends your site URL, email address, post or form content, or license key. Privacy: https://avakode.com/privacy

== Installation ==

1. Upload `rankforge` to `/wp-content/plugins/`, or install via Plugins → Add New.
2. Activate the plugin.
3. Open any post / page — the Rank Forge metabox appears below the editor.
4. (Optional) Connect to Avakode for Pro features at **Rank Forge → Connect**.

== Frequently Asked Questions ==

= Will Rank Forge conflict with Yoast or Rank Math? =

No. Rank Forge detects the active SEO plugin and suppresses its own meta output until you fully migrate. Use **Rank Forge → Migration** when ready.

= Does the SEO score use AI? =

The score itself is deterministic (keyword density, readability, internal links, image alt, etc.). AI is only used for generation actions (meta, schema, content expansion) when you click "Generate with AI".

= How are redirects stored? =

In a custom table (`wp_rankforge_redirects`) — not in `wp_options` like some plugins. This avoids the autoload-bloat that hurts your TTFB.

== Screenshots ==

1. SEO metabox on post edit (score, SERP preview, focus keyword)
2. Today's focus dashboard
3. Redirects manager (Pro)
4. Site audit report (Pro)
5. Schema markup generator

== Changelog ==

= 1.1.0 =
* The plugin is now called Rank Forge. Nothing about what it does has changed; the name did.
* Everything the old name stored is carried over on first load: the analysis, redirect and breadcrumb tables, every setting, and the SEO fields on every post. Redirects keep working, stored analyses stay, and the meta on your posts stays. If the takeover is interrupted it resumes on the next request rather than half-applying.
* Scheduled jobs left under the old names are unscheduled, and the old cached values are dropped so they regenerate under the new ones.

= 1.0.40 =
* Removed the last licence checks that stood over code shipped in this download. The settings screen asked the licence before writing two flags, "auto_meta" and "internal_links_enabled" — neither was ever read by anything, while the meta generation they appeared to control (title and description templates, canonical URLs, Open Graph tags; no external calls) is part of this plugin and has always run for everyone. Both flags are gone rather than merely ungated.
* Auto internal linking, Search Console and Site Audit now show as unavailable based on whether their implementation is loaded, not on a licence call. Those three are implemented in the separate add-on and are not present here, so nothing shipped is being withheld.
* The Site Audit screen guarded itself with a plan check; it now checks for the class it needs, which is what actually decides whether the page can render.

= 1.0.39 =
* Chinese: parentheses in running text are full-width, as the WordPress core Chinese catalogue writes them. Two strings also carried a second, unused plural form left over from the English two-form scheme; Chinese has one form, so it was dead data.
* Japanese: parentheses in running text are half-width with a space outside, following the Japanese translation style guide. Reported by the Japanese locale team.

= 1.0.38 =
* The broken-link scanner is now part of this plugin with no restriction. It was marked Pro while its whole implementation shipped here — the crawler, the SSRF-hardened request wrapper and the results screen — which meant built-in functionality was gated. Internal link *suggestions* remain a separate add-on feature, because that code genuinely is not in this download.
* Removed licence checks that could never fail: image SEO, Local SEO, redirects, the Schema Builder and Video SEO have been free since the 2026-05-29 rebalance, but the code still asked for a licence and the readme still listed several of them as Pro.
* Availability of add-on features is now decided by whether the add-on is installed, not by a licence call.

= 1.0.37 =
* Security hardening: all dynamic output is now escaped late at the output site with the context-appropriate function (esc_html/esc_attr/esc_url, esc_html__ for translated strings used as format strings, and wp_kses for trusted pre-built admin/field markup). No behavioural changes.

= 1.0.35 =
* Security: hardened JSON-LD structured-data output (schema, breadcrumbs, local business, video) against script-context breakout by escaping `<`, `>` and `&` (JSON_HEX_TAG / JSON_HEX_AMP).
* Fix: Organization structured data no longer emits an empty "description" property when the site tagline is unset.

= 1.0.32 =
* New: Support menu item that opens the Avakode support dashboard.
* New: Opt-in anonymous usage analytics (OFF by default) — see Third-Party Services.
* New: Contextual, dismissible Pro feature tips on the plugin dashboard (Free users only).


= 1.0.29 =
* Numbers / power words in the SEO title are now shown as optional "Optimization ideas" instead of issues — they affect click-through, not Google rankings.
* Clearer one-time setup guidance for the Google Indexing API ("Submit to Google Index").
* WordPress.org compliance and code-quality improvements.

= 1.0.28 =
* Fixed: the XML sitemap no longer 301-redirects to a trailing slash, so Google Search Console can fetch the sitemap index.
* Kept Rank Forge admin submenus accessible when multiple Forge plugins are active.

= 1.0.27 =
* Fix: Rank Forge admin sub-pages (Settings, Analytics, Content and Tools) now stay accessible when other Forge plugins are active alongside Rank Forge Pro.

= 1.0.26 =
* Security: the Google Account connection (Search Console / Analytics) now starts via a one-time token, so the license key is never placed in a URL.

= 1.0.25 =
* WordPress.org compliance and licensing hardening.
* Pro entitlement is now resolved by the Rank Forge Pro add-on; the free plugin bundles no licensing SDK.
* Removed a deprecated Google sitemap-ping request fired on publish.
* readme metadata cleanup.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.32 =
Adds a Support menu, optional anonymous analytics (off by default), and dashboard Pro tips.


= 1.0.29 =
Optional title "ideas" no longer counted as issues, clearer Google Indexing setup, and WordPress.org compliance fixes.

= 1.0.25 =
Licensing and WordPress.org compliance improvements.

= 1.0.0 =
Initial release.
