Everything it does, and what it refuses to do.
Twenty-four modules, one codebase, no score out of a hundred. Here is the whole surface — and the handful of things we deliberately left out.
The unglamorous half, done properly.
Titles & descriptions
Independent of the WordPress title. Templates per post type, taxonomy, archive and author, with variables like %primary_category% and %currentyear%.
Canonical URLs
Generated automatically, overridable per object, and emitted exactly once. Cross-canonical content is dropped from sitemaps so the two never disagree.
Robots directives
index/noindex, follow/nofollow, noarchive, nosnippet, max-snippet, max-image-preview and max-video-preview — per post, per type, per taxonomy.
Open Graph & X cards
Per-post overrides with a live preview. One set of tags, never duplicated, with a sensible fallback chain.
Search previews
Desktop, mobile, Google News, Discover and social cards — all rendered from the same data the front end will actually output.
No meta keywords
Google ignores the tag, so we don't ship it. Not as a setting, not hidden behind a toggle. It simply isn't there.
One graph, properly connected.
A single JSON-LD block per page containing a real @graph.
Entities reference each other by stable @id, so a Person
is defined once and pointed at from everywhere else — rather than repeated, or worse,
sprinkled through the HTML as microdata.
WebSite, WebPage, Organization, Person, ProfilePage, BreadcrumbList, Article, NewsArticle, BlogPosting, ImageObject and VideoObject, plus optional FAQPage, Product, Event, SoftwareApplication and LocalBusiness.
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "WebSite", "@id": "…/#website" },
{ "@type": "NewsMediaOrganization",
"@id": "…/#organization" },
{ "@type": "Person",
"@id": "…/#/schema/person/4f2a…" },
{ "@type": "WebPage", "@id": "…/#webpage" },
{ "@type": "BreadcrumbList" },
{ "@type": "NewsArticle",
"author": { "@id": "…/#/schema/person/4f2a…" },
"publisher": { "@id": "…/#organization" },
"isAccessibleForFree": true }
]
}
Where the line falls
Free is general SEO and it is genuinely complete. Publisher is the newsroom half.
| Capability | Free | Publisher |
|---|---|---|
| On-page & structured data | ||
| SEO titles, descriptions, templates & variables | ✓ | ✓ |
| Canonicals, robots & indexing controls | ✓ | ✓ |
| Open Graph, X cards & social previews | ✓ | ✓ |
| Schema.org @graph with stable @id | ✓ | ✓ |
| Breadcrumbs (visible + BreadcrumbList) | ✓ | ✓ |
| NewsArticle schema & article genres | — | ✓ |
| Paywall / subscription structured data | — | ✓ |
| Sitemaps | ||
| XML sitemap index, splitting, image sitemaps | ✓ | ✓ |
| noindex exclusion & canonical-only URLs | ✓ | ✓ |
| Google News sitemap (48h window, 1,000 cap) | — | ✓ |
| Per-article News exclusion & genre rules | — | ✓ |
| Editorial integrity | ||
| Freshness protection (phantom dateModified) | — | ✓ |
| Publication-date change warnings | — | ✓ |
| Update types & article correction history | — | ✓ |
| Per-article compliance checker (14 checks) | — | ✓ |
| Site-wide transparency audit | — | ✓ |
| Trust & Editorial Signals | — | ✓ |
| Content & analysis | ||
| Keyphrase placement & stuffing detection | ✓ | ✓ |
| Readability — sentences, paragraphs, passive voice | ✓ | ✓ |
| Journalism analysis — attribution, quotes, sources | — | ✓ |
| Google Discover image & crop auditing | — | ✓ |
| AI suggestions (titles, descriptions, alt text) | — | ✓ |
| Links, technical & reporting | ||
| Redirects — 301/302/307/308/410, regex, loop detection | ✓ | ✓ |
| 404 logging & one-click redirect creation | ✓ | ✓ |
| Link graph — orphans, broken links, redirect links | ✓ | ✓ |
| Related coverage, anchor suggestions, topic clusters | — | ✓ |
| Technical audit (Critical / Warning / Recommendation) | ✓ | ✓ |
| Image SEO, alt auditing, LCP hero priority, WebP/AVIF | ✓ | ✓ |
| Search Console via Site Kit or your own OAuth client | ✓ | ✓ |
| One-click Search Console sign-in | — | ✓ |
| Content decay reporting | — | ✓ |
| Core Web Vitals via PageSpeed Insights | ✓ | ✓ |
| Operations | ||
| Multisite, per-site settings, network locks | ✓ | ✓ |
| SEO Manager / Editor / Writer capabilities | ✓ | ✓ |
| Migration from Yoast, Rank Math, AIOSEO, SEOPress | ✓ | ✓ |
| Conflict detection & duplicate-output warnings | ✓ | ✓ |
| Priority support | — | ✓ |
Things we chose not to build
A shorter feature list is sometimes the honest one.
No E-E-A-T score
Google doesn't publish one and doesn't expose one through any API. We check whether the signals Google's own documentation discusses are present, and call it Trust & Editorial Signals.
No caching layer
You already run Cloudflare, LiteSpeed or WP Rocket. Ptero SEO reports Core Web Vitals and leaves delivery to the tools built for it.
No keyword density target
Hitting a percentage makes copy worse. We check whether the subject appears where it carries meaning — title, opening, headings — and flag stuffing.
No meta keywords tag
Google has ignored it for well over a decade. Shipping a field for it would only imply it mattered.
No silent AI rewrites
The assistant proposes titles, descriptions and alt text. It never touches article copy, and nothing it generates is saved without an editor accepting it.
No ranking promises
Nothing here guarantees Top Stories, Discover or a position. The plugin makes your technical signals correct. The rest is Google's call.