# SEO audit and fixes

> Audit titles, meta descriptions, headings, alt text, links and structured data, and save fixes after you approve the exact texts. No ranking promises.

Your AI app can audit the pages of your site the way a search engine reads them, list what is missing, and save better titles, descriptions, headings and alt text after you have approved the exact words. It does not promise rankings or traffic, and it has no search data of its own.

## What you need

- **Read-only diagnostics** for the audit (steps 1 to 3). This works on the Free plan.
- **Content & store data** (the Content manager preset) to save texts. **Settings & maintenance** to clear the page cache afterwards.
- A paid plan for any step that saves something.

## Before you start

- Tell your AI app what must not change. URLs that already rank are the usual one. Your AI app should never change the slug of an indexed page unless you ask.
- Your SEO plugin stays in place. Most SEO plugins keep each page's title and description as fields on the page or product, and your AI app looks up their names on your site and writes into them. Check one example before a bulk run.
- No SEO plugin? Then there is no description field to fill. Your AI app can change page titles, but a description needs an SEO plugin, and that is your decision.
- Ask for 3 samples before a whole batch, and set a checkpoint before saving (see [Work safely on a live site](/docs/guides/safe-workflow/)).

## Steps

:::steps
1. **Check one page the way search engines read it.**
   - Example prompt: `Check https://your-store.com/shop/stoneware-mug/ for SEO. Tell me the title, the meta description, the canonical address, robots settings, headings, images without alt text, links without text and the structured data types. Change nothing.`
   - Your AI app will use `page_check` with `summary=true`. It also reports a redirect or a non-200 status first.
2. **Find where the texts live.**
   - Example prompt: `Which SEO plugin owns the titles and descriptions on my site, and which fields does it use? Show me one product as an example.`
   - Your AI app will use `plugins_list` and `content_get`.
3. **Find what is missing across the site.** Also check indexing: a site-wide "discourage search engines" setting, or a page set to noindex.
   - Example prompt: `Which published products have no meta description? Group them by category. Also check that the site is not set to discourage search engines and that /sitemap.xml and /robots.txt answer.`
   - Your AI app will use `content_query` filtered on the SEO plugin's description field not existing, `option_get` for the visibility setting and `page_check` on a sample of pages.
4. **Draft the texts with your rules.** Titles of about 50 to 60 characters, with the main topic first and the brand last. Descriptions of about 120 to 155 characters, accurate, with a reason to click.
   - Example prompt: `Draft titles and descriptions for the first 3 of them. Max 155 characters, mention free returns, no "cheap". Show the current text next to the new text, with character counts.`
   - Your AI app will use `content_get`. It must not invent facts such as prices, ratings or claims.
5. **Approve, then save in batches.**
   - Example prompt: `Good. Create a checkpoint called "before meta descriptions", then do the rest in batches of 10, with a dry run for each batch.`
   - Your AI app will use `checkpoint_create` and `content_update` (the fields of your SEO plugin, or the title, or `content_edits`) with `dry_run` first. Alt text in the Media Library is saved with `rest_request`.
6. **Pages built with Elementor.** The headline and texts live in widgets, not in the page content. Use the [Elementor guide](/docs/guides/elementor/) for those edits, and keep the SEO plugin's own fields for the title and description.
7. **Check the live pages.**
   - Example prompt: `Check 5 of the changed pages on the live site. The new title and description must show in the page. Clear the page cache if the old text is still served.`
   - Your AI app will use `page_check` with `summary=true`, and `cache_flush` if a cache serves the old page.
:::

For headings, ask for one H1 per page and heading levels in order. For links, ask for descriptive anchor text, and for broken internal links use the link recipe below. Structured data should match the page, and your AI app should never add ratings or reviews that are not on it.

## Check the result

- `page_check` with `summary=true` shows the new title and description, one H1, no images without alt text, and the same canonical address as before.
- The URLs of the changed pages are unchanged.
- The AI app's summary lists the change ids and the checkpoint id.

## How to undo

Each `content_update` is one change, and WordPress keeps a revision of every edited post. Roll back one page, or everything after the checkpoint, in **PowerWP AI › Changes**. A rollback restores the item, and the revision stays. Alt text saved with `rest_request` is a single-item write and is recorded the same way. Cache flushes are not recorded.

Search engines pick up changes in their own time, and neither PowerWP AI nor your AI app can promise what they will do with them. A rollback does not reach pages they have already crawled.

## Recipes that do this

- [page_seo_check](/docs/reference/recipes/#page_seo_check) audits one page and applies the texts you approve.
- [broken_links_check](/docs/reference/recipes/#broken_links_check) finds broken internal links and menu items and proposes fixes.
- [content_refresh](/docs/reference/recipes/#content_refresh) updates an outdated page and keeps its URL.
- [internal_links](/docs/reference/recipes/#internal_links) suggests links between related posts (content pack).
- [product_page_completeness](/docs/reference/recipes/#product_page_completeness) fills gaps on digital product pages, and [product_feed_health](/docs/reference/recipes/#product_feed_health) checks product data for shopping feeds (store packs).
- [news_discover_readiness](/docs/reference/recipes/#news_discover_readiness) checks article markup, dates, authors and sitemaps (content pack).
- [accessibility_check](/docs/reference/recipes/#accessibility_check) checks headings, alt text, link text and form labels.

:::cards
- [Write and tidy content](/docs/guides/content/) — Drafts, edits and categories.
- [Edit Elementor pages](/docs/guides/elementor/) — Headings and texts in widgets.
- [Work safely on a live site](/docs/guides/safe-workflow/) — The routine behind these steps.
- [Recipes](/docs/concepts/recipes/) — How ready-made procedures work.
:::

Source: https://powerwp.ai/docs/guides/seo/
