=== Easy SEO ===
Contributors: easystorewp
Donate link: https://www.easy-storewp.com/
Tags: seo, meta, schema, opengraph, json-ld
Requires at least: 5.7
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Lightweight SEO plugin: meta description, Open Graph, Twitter Card, JSON-LD schema, full-site audit with optional AI auto-fix.

== Description ==

**Easy SEO** is a lightweight, focused SEO plugin for WordPress. It does the SEO basics well and stays out of your way — no settings overload, no upsells, no nag screens.

= Core features =

* **Per-post meta**: SEO title, meta description, focus keyword, OG image, noindex
* **Open Graph tags**: og:title / og:description / og:image / og:url / og:site_name / og:type
* **Twitter Card tags**: summary / summary_large_image, with optional twitter:site handle
* **JSON-LD schema**:
  * Organization (site-wide): name / alternateName / logo / image / sameAs (social URLs)
  * WebSite (homepage): with SearchAction for Google Sitelinks Search Box
* **Site-wide health dashboard**: % posts with meta description / OG image, GSC traffic stats (if connected)
* **Full-site audit + AI auto-fix** (optional, requires AI plugin): scheduled cron picks posts missing meta description and auto-generates via LLM
* **Configurable title template**: `%post_title% | %site_name%` style

= Soft integrations =

These are optional — Easy SEO works without them, but unlocks more features when present:

* **easy-ai-auto** (or any plugin exposing `easy_ai_auto_call_litellm()`) — enables "AI auto-fill meta description" button per post + scheduled audit
* **easy-tracking** (or any plugin exposing `easy_tracking_gsc_search_analytics()`) — enables Google Search Console dashboard widgets (28-day clicks/impressions/CTR/position, top pages, top queries, opportunity keywords)

If neither is installed, Easy SEO still works for: meta tags, OG tags, Twitter cards, JSON-LD schema, manual per-post meta editing.

= No vendor lock-in =

* No phoning home
* No tracking
* All settings stored in your own `wp_options`
* Per-post data stored in `wp_postmeta` with `_easy_seo_*` prefix
* Uninstall removes everything cleanly

= Compatible with =

* **Easy AI Auto** — auto-generated articles get meta description written into `_easy_seo_description`
* **Easy Tracking** — GSC data feeds dashboard widgets and audit prioritization
* **Easy Schedule** — appears in the central scheduler dashboard
* **Yoast SEO / Rank Math** — Easy SEO writes its own `_easy_seo_*` meta keys, no conflict; if you have both, your active SEO plugin wins (they don't double-output)

== Installation ==

1. Upload zip via Plugins → Add New → Upload Plugin → Activate.
2. Go to **Easy SEO → Settings**.
3. Fill in **Organization name**, **alternate name**, **Logo URL**, **social profile URLs (sameAs)** — these feed JSON-LD schema (very important for brand entity SEO).
4. Set **default OG image** (1200×630 recommended).
5. (Optional) Configure **scheduled audit** — picks posts missing meta description and auto-generates via AI (requires easy-ai-auto plugin).
6. Per-post: edit any post → see the **Easy SEO** meta box at the bottom for SEO title / description / OG image override / noindex toggle.

== Frequently Asked Questions ==

= Does Easy SEO conflict with Yoast SEO / Rank Math? =

No. Easy SEO uses its own `_easy_seo_*` meta keys, and only outputs head tags when you actually set Easy SEO data. If you keep Yoast active and don't set Easy SEO meta, Yoast continues to drive your output.

In practice we recommend choosing one — running both adds DB rows for no benefit.

= How do I disconnect from easy-ai-auto / easy-tracking? =

Just deactivate those plugins. Easy SEO automatically hides the AI button and GSC dashboard widgets when they're not present. No "disable integration" toggle needed.

= Does the JSON-LD schema work without configuration? =

Partially. Out of the box you get Organization with just `name` and `url` (auto-pulled from WordPress site title and URL), and WebSite with SearchAction. To get full brand entity signals (the Knowledge Graph signals Google really uses), fill in **Logo URL** and **Social Profile URLs (sameAs)** in settings.

= How long until I see ranking changes? =

* Schema: Google indexes within 1–4 weeks. Brand entity signals build over months.
* Meta description: per-post improvements visible in CTR within 2–4 weeks if Search Console is integrated.
* Run a Rich Results Test on your homepage to verify schema is detected: https://search.google.com/test/rich-results

= Does the AI audit cost money? =

That depends on your LLM provider. Easy SEO doesn't bundle any LLM service — the audit calls whatever endpoint your AI plugin (e.g. easy-ai-auto) is configured to use. If you point it at OpenRouter free models or local Ollama, it's $0.

== Screenshots ==

1. SEO health dashboard with site-wide metrics
2. Per-post Easy SEO meta box (SEO title / description / OG image / noindex)
3. Settings page: organization info for JSON-LD (name / alternateName / logo / sameAs)
4. Scheduled audit configuration
5. GSC dashboard widgets (when easy-tracking is installed)

== Changelog ==

= 1.5.0 =
* New: Opt-in telemetry — anonymously share plugin / WP / PHP version stats with the developer. Predefined OFF; user must explicitly opt in via admin notice.
* New: Welcome notice on first activation.
* New: Soft CTA in dashboard footer linking to https://www.easy-storewp.com/easy-suite/
* Changed: Plugin URI now points to https://www.easy-storewp.com/easy-suite/

= 1.4.0 =
* Plugin header completed for wp.org submission (License URI / Domain Path / Tags)
* Added: `readme.txt` (wp.org spec) + `uninstall.php`
* Changed: dashboard description neutralized — no longer mentions internal `_easy_ai_auto_noindex` meta key implementation detail
* No functional changes from 1.3.1; soft dependencies on easy-ai-auto / easy-tracking already in place

= 1.3.1 =
* Added: `easy_schedule_register_tasks` filter integration

= 1.3.0 =
* Added: JSON-LD Organization schema (site-wide)
* Added: JSON-LD WebSite schema with SearchAction (homepage)
* Added: Settings for alternateName / sameAs (social profile URLs) / Logo URL

= 1.2.0 =
* Site-wide audit with AI auto-fix (scheduled cron)
* Health dashboard with meta description / OG / noindex coverage
* GSC integration for top pages / queries / opportunity keywords

= 1.0.0 =
* Initial release.

== Privacy ==

Easy SEO does NOT:
* Send any data to external servers (except GSC and AI calls, which are routed through your installed integrations like easy-tracking / easy-ai-auto using your own credentials)
* Track user behavior
* Phone home for analytics
* Share data with third parties

Easy SEO stores all data locally in your WordPress database (`wp_options` for settings, `wp_postmeta` for per-post SEO data).

If you connect Easy SEO to AI services via easy-ai-auto, post titles and content are sent to your configured LLM endpoint when you trigger AI meta description generation. This is opt-in and only happens when you click the AI button or schedule the audit.

If you connect to GSC via easy-tracking, your site URL and 28-day search analytics queries are sent to Google's Search Console API using your OAuth credentials.

Uninstall removes all `easy_seo_settings` options, `_easy_seo_*` post meta, and audit cron schedules.
