=== ProRank SEO ===
Contributors: prorankseo
Tags: seo, sitemap, schema, redirects, performance
Requires at least: 6.7
Tested up to: 6.9
Requires PHP: 8.2
Stable tag: 1.0.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

All-in-one SEO + performance plugin: titles/meta, sitemaps, schema, redirects, internal linking, audits, and image optimization.

== Description ==

ProRank SEO is an all-in-one SEO and performance toolkit for WordPress. Configure metadata, generate sitemaps, manage redirects, and improve performance with image and asset optimization tools. It also includes site audits, internal linking helpers, and import/export utilities.

**Core Features:**

* **Sitemaps** - Generate XML and HTML sitemaps
* **Meta Tags** - Control title and description templates, Open Graph, and Twitter cards
* **Redirects** - Manage 301/302 redirects and monitor 404s
* **Performance** - Image optimization, lazy loading, and asset optimization
* **Site Audit** - Scan for SEO, performance, and technical issues
* **Internal Linking** - Suggestions, broken link checks, and click analytics
* **Schema** - Structured data helpers and validation checks
* **Import/Export** - Migrate settings between sites

== Development & Build ==

The human-readable source for JS/CSS lives in `src/` and `assets/`. Production bundles are generated into `build/`.

Build steps:
1. `npm install`
2. `npm run build`

Note: CSS optimization and caching only process locally hosted stylesheets. ProRank does not download third-party CSS/JS for optimization.

== External Services ==

This plugin connects to external services for certain functionality. Below is a complete list of services used:

= ProRank API =
Used for: License validation, admin notifications, feedback submissions, and cloud image optimization (opt-in).
Data sent: Site URL, plugin version, license key (if configured), and image files (when cloud optimization is enabled).
When: On admin page load (notifications), when submitting feedback, when using cloud image optimization.
* [Terms of Service](https://prorank.io/terms)
* [Privacy Policy](https://prorank.io/privacy-policy)

= Google PageSpeed Insights API =
Used for: Core Web Vitals analysis and performance audits.
Data sent: URL being analyzed, optional API key.
When: When you run a performance audit or Core Web Vitals check.
* [Google Terms of Service](https://policies.google.com/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Google Search Console API =
Used for: Search performance data (clicks, impressions, queries) when the Search Console integration is enabled.
Data sent: Site URL or Search Console property, OAuth tokens, and request parameters for read-only performance queries.
When: When you connect Search Console and sync performance data.
* [Google Terms of Service](https://policies.google.com/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Google Analytics 4 Data API =
Used for: Analytics reporting and traffic metrics when the Analytics integration is enabled.
Data sent: GA4 property ID, OAuth tokens, and request parameters for read-only analytics queries.
When: When you connect Google Analytics and load analytics reports.
* [Google Terms of Service](https://policies.google.com/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Schema.org Validator (validator.schema.org) =
Used for: Validating structured data markup.
Data sent: The page URL you validate.
When: When you click the Schema.org Validator button or admin bar tool.
* [Schema.org Terms](https://schema.org/docs/terms.html)
* [Schema.org Privacy](https://schema.org/) (no separate privacy policy published)

= IndexNow (Bing, Yandex, Seznam, Naver) =
Used for: Instant indexing notifications to search engines.
Data sent: Site host, IndexNow API key, key location, and submitted URLs.
When: When IndexNow feature is enabled and content is published/updated.
Note: IndexNow requires a verification file at the site root (`/{key}.txt`). The plugin attempts to create this file automatically using the WordPress filesystem API.
* [IndexNow Protocol](https://www.indexnow.org/)
* [Microsoft Services Agreement](https://www.microsoft.com/en-us/servicesagreement) (Bing)
* [Microsoft Privacy Policy](https://privacy.microsoft.com/en-us/privacystatement) (Bing)
* [Yandex Terms of Service](https://yandex.com/legal/termsofservice/)
* [Yandex Privacy Policy](https://yandex.com/legal/confidential/)
* [Seznam Terms of Service](https://napoveda.seznam.cz/en/terms-of-service/)
* [Seznam Privacy Policy](https://napoveda.seznam.cz/en/privacy-policy/)
* [Naver Terms of Service](https://policy.naver.com/policy/service.html)
* [Naver Privacy Policy](https://policy.naver.com/policy/privacy.html)

= YouTube Data API =
Used for: Generating video sitemaps with proper metadata.
Data sent: YouTube video IDs, API key.
When: When generating video sitemaps containing YouTube videos.
* [YouTube Terms of Service](https://www.youtube.com/t/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Website Carbon API =
Used for: Calculating website sustainability/carbon footprint metrics.
Data sent: URL being checked, page size.
When: When you run sustainability analysis.
* [Website Carbon](https://www.websitecarbon.com/)
* [Website Carbon Terms](https://www.websitecarbon.com/terms/)
* [Website Carbon Privacy](https://www.websitecarbon.com/privacy/)

= Green Web Foundation API =
Used for: Checking if hosting uses renewable energy.
Data sent: URL being checked.
When: When you run sustainability analysis.
* [Green Web Foundation](https://www.thegreenwebfoundation.org/)
* [Green Web Foundation Terms](https://www.thegreenwebfoundation.org/privacy-policy/) (no separate terms page published)
* [Green Web Foundation Privacy](https://www.thegreenwebfoundation.org/privacy-policy/)

= Sitemap Pings (Google, Bing) =
Used for: Notifying search engines about sitemap updates.
Data sent: Sitemap URL.
When: When you manually ping search engines.
* [Google Terms of Service](https://policies.google.com/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)
* [Microsoft Services Agreement](https://www.microsoft.com/en-us/servicesagreement) (Bing)
* [Microsoft Privacy Policy](https://privacy.microsoft.com/en-us/privacystatement) (Bing)

= ProRank Cloud Optimizer Health Check =
Used for: Checking availability of cloud image optimization service.
Data sent: None (simple HTTP health check).
When: When cloud image optimization feature is enabled.
Endpoint: http://88.198.201.243:3002/health
* [ProRank Terms of Service](https://prorank.io/terms)
* [ProRank Privacy Policy](https://prorank.io/privacy-policy)

= Google Fonts (fonts.googleapis.com) =
Used for: Downloading Google Fonts CSS when local font hosting is enabled.
Data sent: Font request URL.
When: When local font hosting is enabled and your site uses Google Fonts.
* [Google Terms of Service](https://policies.google.com/terms)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Third-Party Script Defer (optional) =
Used for: Adding `defer` to existing third-party scripts already enqueued by your site.
Data sent: None by ProRank; the third-party scripts themselves send data according to their providers.
When: When Third-Party Script Defer is enabled and those scripts are already present.
* [Google Terms of Service](https://policies.google.com/terms) (Tag Manager / Analytics)
* [Google Privacy Policy](https://policies.google.com/privacy) (Tag Manager / Analytics)
* [Facebook Terms](https://www.facebook.com/legal/terms) (Facebook SDK)
* [Facebook Privacy Policy](https://www.facebook.com/privacy/policy) (Facebook SDK)

== OAuth App Verification ==
ProRank SEO's Google OAuth app is verified for read-only access to Search Console and Analytics.
Project ID: 33675604795
Approved scopes:
- https://www.googleapis.com/auth/webmasters.readonly
- https://www.googleapis.com/auth/analytics.readonly

== Third Party Libraries ==
- axe-core (https://github.com/dequelabs/axe-core) licensed under MPL-2.0, bundled locally in `assets/js/axe-core/axe.min.js`.

== External References ==
The podcast module outputs the PodcastIndex namespace (`https://podcastindex.org/namespace/1.0`) in RSS feeds. This is a static namespace reference; no data is sent to PodcastIndex.
The admin bar tools include user-initiated links to external testing tools (PageSpeed Insights, GTmetrix, Google Mobile-Friendly Test, Schema Validator). These tools run on their own services and are only opened when you click them.

== Privacy ==

ProRank SEO does not collect personal data by default. The plugin can connect to external services to provide specific features. When these features are enabled or used, the following data may be sent:

* **ProRank Notifications** (https://prorank.io/api/v1/notifications) - Sends plugin version, license key (if configured), and license tier to fetch admin notifications.
* **Feedback Submissions** (https://prorank.io/api/v1/feedback) - When you submit feedback, sends your message, optional name/email, site URL, license key (if configured), and basic system info (WP/PHP versions, theme, memory limit).
* **ProRank Changelog** (https://prorank.io/api/changelog) - Retrieves changelog data. No personal data is sent.
* **ProRank Cloud Image Optimization** (https://prorank.io/api/v1/optimize) - Sends the image file, site URL, and license key to optimize images. This feature is opt-in.
* **Cloud Optimizer Health Check** (http://88.198.201.243:3002/health) - Checks availability when cloud optimization is enabled. No personal data is sent.
* **IndexNow** (Bing, Yandex, Seznam, Naver) - Sends your site host, IndexNow API key, key location, and URLs when IndexNow is enabled.
* **Sitemap Pings** (Google, Bing) - Sends your sitemap URL when you manually ping search engines.
* **Google PageSpeed Insights API** (https://www.googleapis.com/pagespeedonline/v5/runPagespeed) - Sends the URL being analyzed and optional API key when you run Core Web Vitals or performance audits.
* **Google Search Console API** - Sends the selected Search Console property, OAuth tokens, and query parameters when you connect Search Console and load performance data.
* **Google Analytics 4 Data API** - Sends the selected GA4 property, OAuth tokens, and query parameters when you connect Google Analytics and load analytics reports.
* **Schema.org Validator** (https://validator.schema.org/) - Sends your page URL when you click the Schema.org Validator button or admin bar tool.
* **YouTube Data API** (https://www.googleapis.com/youtube/v3/videos) - Sends YouTube video IDs and API key when generating video sitemaps.
* **Sustainability APIs** (https://api.websitecarbon.com/data and https://api.thegreenwebfoundation.org/api/v3/greencheck/) - Sends the URL being checked and page size to calculate sustainability metrics.
* **Google Fonts Local Hosting** - When enabled, the plugin requests Google Fonts CSS and font files to host them locally.
* **Broken Link Checks** - When you run broken link scans, the plugin may request URLs found in your content to verify status codes.

The plugin stores data locally in your WordPress database for features such as 404 monitoring, redirect logs, internal link click tracking, and audit history. This data can include URLs, referrers, user agents, IP addresses, and user IDs where applicable. Internal link click tracking and RUM are disabled by default and only start after you enable them in settings. You can disable these modules to stop data collection.

Privacy Policy: https://prorank.io/privacy-policy

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/prorank-seo/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Go to ProRank SEO in your admin menu to configure settings

== Frequently Asked Questions ==

= Does ProRank SEO require a ProRank account? =

No. Most features work out of the box. Some cloud features (like cloud image optimization) require a license key and explicit opt-in.

= Does the plugin send data to external services? =

Only for specific features that require external services. See the Privacy section for the full list and details.

= Will uninstall remove my data? =

Yes. Uninstalling removes plugin options, metadata, and custom tables created by the plugin.

== Changelog ==

= 1.0.0 =
* Initial public release.
