The audit is a set of read-only checks you run from WP-CLI, over REST, or through a connected assistant. wp visibility audit checks five site settings and prints four counts; wp visibility post-audit <id> checks one post. Each finding is pass, warn or fail with a sentence saying why. Nothing is changed by running it.
Run it
wp visibility audit
wp visibility post-audit 123
wp visibility audit --format=json
--format accepts table (the default), csv, json, yaml or count. Over REST, GET /wp-json/wpvis/v1/audit/site needs manage_options and GET /wp-json/wpvis/v1/audit/post/<id> needs permission to edit that post. With the Assistant connection module on, an assistant uses the “Audit the site”, “Audit a post” and “Get site SEO health” abilities, the last of which sums the site checks up as good, fair or needs attention.
There is no audit screen in the settings. The editor’s pre-publish panel and content checks are separate checks run in the browser.
The site checks
| Check | Fails or warns when | What to do |
|---|---|---|
blog_public |
Fail: Settings → Reading discourages search engines | Untick it on a live site. On staging it is correct. |
permalink_structure |
Warn: plain permalinks (?p=123) |
Choose a named structure in Settings → Permalinks. |
site_represents |
Warn: no organization name, or person mode with no user | Set your site identity. |
default_social_image |
Warn: no default social image | Set one. |
sitemaps_module |
Warn: the Sitemaps module is off | Turn it on, or accept WordPress’s own sitemap. |
The counts that follow are published posts, an estimate of posts missing a hand-written description (posts relying on their excerpt count as missing), noindexed posts, and redirect rules.
The post checks
| Check | Passes when | Otherwise |
|---|---|---|
title |
30 to 60 characters | Warn with the length; fail if there is no title at all |
description |
70 to 160 characters | Warn with the length; fail if none is set and none can be generated |
noindex |
The post is indexable | Warn: the post is set to noindex |
canonical |
No canonical, or one on this site’s host | Warn: it points to another host |
thin_content |
150 words or more | Warn with the word count |
social_image |
A social, featured or default image resolves | Warn: no image resolves |
single_h1 |
At most one H1 in the content | Warn with the count |
The title and description are measured as stored, before templates are rendered, so a post relying on its template is measured against the raw post title. The noindex check reads the post’s own setting, not a site-wide rule for its post type.
Read the results with care
The thresholds are editing checks. A 62-character title, a 140-word announcement or a deliberately noindexed page can all be right. Google publishes no ideal title length and says there is no minimum word count, so treat a warning as a prompt to look, not an order. Your SEO Plugin Score Is a Checklist explains why.
A canonical on another host is correct on a syndicated post or a headless site where another address is the public one.
Turn missing descriptions into proposals
With the Autopilot module on, WP Visibility → Review queue has a Run audit button, and the empty queue offers Run an audit now. It finds published posts with no hand-written description and queues a proposal for each, drafted from the post’s own text, for you to approve or reject. It can run once a minute. The Weekly audit toggle in the Autopilot section does the same once a week, up to 50 posts per run. Nothing is applied until you approve it, and the other checks never create proposals.
Behavior checked against WP Visibility 2.10.3.