=== Site Connector (SeoForge) ===
Contributors: seoforge
Tags: seo, automation, agent, yoast, rank-math
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
Stable tag: 0.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Applies approved SEO changes from your SeoForge dashboard — with exact rollback, a pause switch and a strict action allowlist.

== Description ==

SeoForge audits your site, drafts SEO fixes, and this connector applies the changes you approve:

* Titles, meta descriptions and robots written into Yoast SEO or Rank Math fields when those plugins are active — otherwise the tags are output by the connector itself.
* Image alt text on media library items.
* Every change is logged with the exact value it replaced; undo any single change in one click without touching other changes on the same page.
* A pause switch stops all changes immediately. Protected page paths are never touched.
* After applying a batch, the connector asks active cache plugins (WP Rocket, LiteSpeed, W3 Total Cache, WP Super Cache, WP Fastest Cache, Autoptimize) to purge, so search engines see the new HTML immediately.

Security model: the connector makes **outbound HTTPS calls only**. It exposes no REST endpoints that other servers can call, so nothing on your site needs to be reachable from outside. Requests are authenticated with a per-site secret that arrives inside your connection key and is stored only in your database.

== Installation ==

1. Download the plugin zip from your SeoForge dashboard (Settings → WordPress).
2. In WordPress: Plugins → Add New → Upload Plugin, choose the zip, activate.
3. Paste the connection key into Settings → Site Connector and save. Your dashboard confirms the connection within seconds.

== Frequently Asked Questions ==

= Do my servers need to talk to yours, or yours to mine? =

Only outbound, from your site to ours. The connector polls for approved commands every 2 minutes and reports results back. Your site exposes no new endpoints.

= Which SEO plugins are supported? =

Yoast SEO and Rank Math. Values are written into their own fields so their previews, sitemaps and validations keep working. Without them, the connector outputs the tags itself.

= What happens when I pause? =

Commands stay queued in your dashboard. When you resume, everything queued is applied in order — nothing is lost, nothing is duplicated.

= My site gets little traffic. Will commands arrive on time? =

WP-Cron fires on page loads. On low-traffic sites, add a real cron entry, e.g. every 2 minutes:
`*/2 * * * * curl -s https://your-site.example/wp-cron.php?doing_wp_cron > /dev/null`

= What can the connector NOT do? =

By design: it never writes files, never installs or deactivates plugins, never changes users, and never injects arbitrary HTML. Every action is a fixed, typed command (titles, descriptions, robots, alt text — more landing over time).

== Changelog ==

= 0.1.0 =
Phase 0 scaffold: connection key exchange, 2-minute outbound poller, HMAC-signed requests, change log with one-click rollback, meta + image-alt writers (Yoast / Rank Math / native), guardrails (pause, protected paths), cache purge integrations. Content edits, schema, redirects and sitemap exclusions land with Phase 4b.
