=== Clearyvo SEO ===
Contributors: kishollo001
Tags: seo, alt text, schema, sitemap, redirects
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.4.9
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

SEO without keyword stuffing: real image ALT text from page context, not filenames. Schema, redirects, sitemap, Yoast & Rank Math import.

== Description ==

Most SEO plugins fill missing image ALT texts with the file name ("IMG 4521") or sell AI credits for it. Clearyvo SEO writes each missing ALT from what the page says about the image: its caption, the heading it stands under, a meaningful image title or the page title. Only one image per page gets the focus keyword, and the drafts on a page are kept different from each other. You approve them, and they are saved into the page and the Media Library: real content, not a filter that disappears when the plugin is switched off.

The same honesty runs through the whole plugin: one optional focus phrase, used naturally. Keyword stuffing is flagged as a problem, never rewarded with a green light, and the plugin never writes keywords into your text.

= Search appearance =

* Clearyvo SEO panel in the block editor: live checks while you write, grouped by topic (title and description, focus phrase, content, images, links, indexing). Everything that is good gets a green tick, everything that is not good enough a warning with what to do. No score to chase: keyword stuffing turns the light red, not green
* SEO title and meta description for posts, pages, products, categories and tags, with title templates and variables
* Live Google preview with pixel-accurate title width
* Automatic description from the excerpt when you have not written one
* Canonical URLs and robots (noindex / nofollow) with sensible defaults for search results, date archives and attachments
* Open Graph and X (Twitter) cards with a share-image fallback
* JSON-LD schema graph: WebSite, Organization or Person, WebPage, Article, BreadcrumbList
* Breadcrumbs: `[clearyvo_breadcrumbs]` shortcode or `cvseo_breadcrumbs()`

= Site audit: every page as Google sees it =

The audit runs in your browser: it loads each published page like a visitor, so it sees what page builders, themes and other plugins really output. It changes nothing by itself.

* **Image ALT:** every image on every page, with a ready ALT draft for each missing one. Approve one by one or all at once. Decorative images can be marked as such.
* **Headings:** H1 missing or repeated, H1 in the header or footer of every page, skipped levels. "Make it H2" fixes it in the page or in the header/footer template.
* **Focus keywords:** the same keyword on several pages, and whether it is in the title, H1, address, first paragraph, description and an image ALT.
* **Titles & descriptions:** what Google shows, with length and duplicate checks, editable right there.
* **Internal links:** pages no other page links to, and pages linked only from the menu or footer.

= Crawling, redirects and 404s =

* XML sitemap on the fast WordPress core engine; noindexed pages and pages with a canonical elsewhere are left out, lastmod added
* Old Yoast SEO / Rank Math sitemap addresses redirect to the new sitemap, so Search Console keeps working
* 301, 302, 307, 410 and 451 redirects, exact or regex, with a hit counter
* 404 log with one-click "create redirect"
* Extra robots.txt lines; attachment pages redirected to their parent post

= Switching is easy =

Import titles, descriptions, focus keywords, canonical, robots, social fields, primary categories, term SEO, title templates, knowledge graph and redirects from Yoast SEO and Rank Math. Nothing is deleted from them. While another SEO plugin is still active, Clearyvo SEO prints no tags, so you never get duplicates.

= Clearyvo SEO Pro =

Everything above is free and stays free: features never move from the free plugin into Pro. Pro saves time on big sites:

* AI image descriptions with your own Claude or OpenAI key: all missing ALT texts in one run, in the background, and for every new upload. No credits, no subscription to an AI service of ours.
* Internal link ideas for pages nobody links to, inserted with one click
* Structured data for your business: LocalBusiness with address, phone and opening hours, and Service pages
* Search Console import: keyword conflicts, and searches where a page is almost at the top
* Image loading fixes: the first image loads right away, missing width and height are added
* Scheduled audits by email and a white-label SEO report

= Part of the Clearyvo family =

Focused plugins that share one "Site Toolkit" menu with a Site health score. The Clearyvo Site Inspector Mac app reads and edits the SEO of all your sites through the REST API (`clearyvo-seo/v1`, Application Password authentication). More at wp-sitechecker.com.

== Installation ==

1. Install and activate the plugin.
2. Moving from Yoast SEO or Rank Math? Open SEO → Import, run the import, then deactivate the old plugin.
3. Check SEO → Settings (site name, logo, title templates).
4. Run the site audit from the Overview tab, then work through Image ALT.
5. Submit /wp-sitemap.xml in Google Search Console.

== Frequently Asked Questions ==

= Does it write ALT texts by itself? =

No. Drafts are shown for you to read and approve. The plugin cannot see the picture, so check that the draft describes it. With Pro, AI can look at the picture and write the description; you can still edit every one.

= Is the ALT text saved, or added on the fly? =

Saved. In the block and classic editor it is written into the page (every place the image appears, as a new revision you can undo), and optionally into the Media Library for featured images, logos and page builders.

= I used the separate "Clearyvo Image Alt & SEO Audit" plugin. =

Clearyvo SEO includes it. Activating Clearyvo SEO switches the separate plugin off; settings and audit results are kept.

= What is the /wp-json/clearyvo/v1/app/ address? =

A read-only REST route for the Clearyvo Site Inspector Mac app. It shows the Site health score of the Clearyvo plugins to a signed-in administrator and changes nothing.

= Will I lose data if I deactivate it? =

No. SEO data is only deleted on uninstall if you tick "Delete all data" in the settings. ALT texts, headings, titles and descriptions you saved are your content and always stay.

== Changelog ==

= 0.4.9 =
* Shared Clearyvo framework 2.3.2: SEO and content come first in Site Toolkit, the menu and Site health, then Media and the rest.

= 0.4.8 =
* Shared Clearyvo framework 2.3.1: the SEO checker is listed as Clearyvo SEO (formerly Image Alt & SEO) everywhere, whichever Clearyvo plugin loads the framework.

= 0.4.7 =
* Clearyvo SEO now starts the same way as the other Clearyvo checkers, so the Site Toolkit plugin can include it as its SEO module. With both installed, one copy runs and settings and data are shared.
* Uninstalling with "Delete all data" keeps the SEO data while Site Toolkit (which uses it) is installed.

= 0.4.6 =
* Security: text and images of a password-protected post never reach the description, social tags or structured data (also not through %excerpt%).
* Fix: %category%, %date% and %description% survive saving (WordPress's text cleaning removed "%ca", "%da" and "%de" as if they were URL codes). Redirect addresses with encoded accents (/%C3%A1rak) are kept too.
* Security: a regex redirect with $1 can no longer send visitors to another site ("//evil.example").
* Fix: redirect loops are refused when saving: same address (also as a full URL), chains like A → B → C → A, and regex rules whose target matches their own pattern. A target such as "new-page" means /new-page, not a host name. Yoast regex rules without a leading slash now match.
* Security: running the site audit (which replaces the stored results) needs an editor or administrator. Attachment details in the ALT tools follow the same read rules as the media library.
* Fix: canonical and og:url ignore tracking and other unknown parameters (?utm_source=…, ?replytocom=…).
* Fix: the robots tag never says "index" where WordPress itself says noindex (embeds, comment reply links).
* Fix: private or draft parent pages are left out of breadcrumbs; the breadcrumb HTML is valid (separators inside the list items).
* Fix: the audit covers up to 5,000 pages (filter: wpsc_audit_max_pages) and says how many were left out.
* Fix: no PHP errors from array input in the classic meta box, term fields, settings or REST; no database error when the same 404 is hit in parallel; a source over 255 characters gives a clear error.
* Fix: a very long focus phrase no longer breaks the analysis; the field takes up to 150 characters.
* Fix: og:locale is always language_TERRITORY (de_DE_formal → de_DE); a separator containing "$" stays as typed; a 404 never gets "Page 2" in its title; an attachment whose parent is in the trash redirects to the file.
* Fix: network uninstall on multisite removes the data of every site (when "Delete all data" is on).
* Editor: sidebar controls use the new WordPress component styles (no deprecation warnings).
* Admin: a notice when JavaScript is off.

= 0.4.5 =
* Fix: search phrases or content with broken UTF-8 bytes no longer trigger PHP deprecation notices in title, excerpt and analysis code.
* New: classic themes that print their own <title> through wp_title() now get the SEO title too, without a duplicated site name on the front page.
* New: a short notice on the General tab when the active theme does not declare title-tag support.

= 0.4.4 =
* Security: the page title is escaped like WordPress escapes its own (a search phrase or a post title with HTML could reach the <title> tag unescaped).
* Import: damaged or unexpected Yoast SEO / Rank Math data no longer stops the import; values that are not text are skipped.
* REST API: fields sent as lists or objects are refused with a clear error instead of being stored.
* Redirects: a target that is not a valid URL (for example javascript:) is refused; a redirect that would bounce back and forth with an existing one is refused.
* Paginated archives and the home page get the page number in their title (no duplicate titles on page 2, 3…).
* Password-protected and private pages: no "Protected:" / "Private:" prefix in the SEO title, social title and breadcrumbs.
* Structured data: the site name and titles are plain text (no &amp; or other HTML entities in the JSON-LD).
* If the separate Image Alt & SEO Audit plugin is activated next to Clearyvo SEO, it is switched off automatically (Clearyvo SEO includes it).

= 0.4.3 =
* Editor panel: add-ons can add actions to a section (JavaScript filter "clearyvo-seo.sidebar.section"). Clearyvo SEO Pro uses it for AI ALT texts in the Images section.
* Editor panel: a section stays open or closed until you click it; it no longer closes by itself when its last problem is fixed.

= 0.4.2 =
* Security: the schema (JSON-LD) block escapes < and >, so no title or text can close its script tag. It is printed with wp_print_inline_script_tag().
* Database: every query goes through $wpdb->prepare(), with %i placeholders for table names.

= 0.4.1 =
* An "i" button next to the focus phrase explains in one line why one focus phrase is enough: Google does not read the field.
* Analysis: image captions and all other block content are counted in the server-side checks (REST API, Site Inspector), the same as in the editor panel.

= 0.3.4 =
* Editor toolbar: the Clearyvo SEO button grows to fit the logo and the score in every WordPress version.

= 0.3.3 =
* Editor panel: the length bars of the SEO title and description sit right under their boxes, with the character counts below them (the bar covered the numbers in some WordPress versions).

= 0.3.2 =
* Editor toolbar: with the panel open, the Clearyvo SEO button now frames both the logo and the score (it was cut off in newer WordPress versions).

= 0.3.1 =
* The editor toolbar shows the Clearyvo SEO logo with the score (SEO 0–100) in a coloured pill; the panel starts with a score ring. A red problem such as keyword stuffing keeps the score under 50.
* One H1 in the text is no longer reported as a problem: many themes and page builders do not show the page title as a heading. Several H1 headings still are.

= 0.3.0 =
* New: Clearyvo SEO panel in the block editor (icon at the top right, its colour shows the state of the page). Live checks on the text you are writing, before saving, grouped by topic: what is good is ticked, what is not good enough has a warning. Includes the Google preview, focus phrase, SEO title, description, social and advanced fields.
* New checks: focus phrase in a subheading and in an image ALT, other pages with the same focus phrase, skipped heading levels, long paragraphs and sentences, links without text, internal and external links.
* The classic editor keeps the Clearyvo SEO box under the editor.

= 0.2.0 =
* Clearyvo SEO now includes the Image Alt & SEO Audit (formerly a separate plugin): image ALT drafts from page context, headings, focus keywords, titles and descriptions, internal links.
* Titles, descriptions and focus keywords edited in the audit are saved into Clearyvo SEO (or into Rank Math / Yoast while one of them is still active).
* One menu: the SEO settings, redirects, 404 log and import are tabs of the audit page.

= 0.1.0 =
* First release: titles, meta, canonical, robots, Open Graph, schema, sitemap, breadcrumbs, redirects, 404 log, Yoast / Rank Math import, REST API for Site Inspector.
