WordPress SEO for publishers

SEO for newsrooms, not blogs.

Google News sitemaps that respect the two-day window. Publication dates that don't drift because a plugin touched a row. Compliance checks based on what Google actually documents — not a score out of a hundred.

Free core forever. Version 1.0.0 available now. Publisher add-on from €15,00/month billed annually, with licensing managed by Freemius.

/news-sitemap.xml
<!-- last 48 hours only, 1,000 per file -->
<url>
  <loc>https://example.com/council-budget/</loc>
  <news:news>
    <news:publication>
      <news:name>The Herald</news:name>
      <news:language>en</news:language>
    </news:publication>
    <!-- never re-dated by an edit -->
    <news:publication_date>2026-09-15T18:06:56+00:00</news:publication_date>
    <news:title>Council approves budget</news:title>
  </news:news>
</url>
The problem nobody flags

Your CMS has been quietly re‑dating your articles.

Bulk edits, imports, translation plugins, image optimisers, a stray wp_update_post() in a theme — all of them touch post_modified without a single word of the article changing.

That date goes straight into your schema, your feeds and your sitemaps. Google is told the story changed. It didn't. Nothing in WordPress warns you, and no other SEO plugin looks.

Post editor

Ptero SEO notice

The stored modified date changed but the article content did not. Ptero SEO is still reporting 15 September 2026, 18:06 as dateModified. Choose “Substantial update” if this really was an editorial change.

Content is hashed on every save. If nothing changed, the date holds.

What makes it different

Built around how newsrooms actually publish.

Every SEO plugin does titles and meta descriptions. These are the parts that exist because a publication needed them.

📰

A News sitemap that obeys the rules

Only the last 48 hours. Capped at 1,000 entries with extra files created automatically. publication_date comes from the original post date and never moves because someone fixed a typo.

🛡️

Freshness protection

Detects when something bumped post_modified without the content changing, and holds the real date. Editors classify changes as a minor correction, a substantial update, or a republication.

✅

Per-article compliance

Fourteen checks per story — visible date and time, byline, author profile, image size, unique canonical, indexability, valid NewsArticle schema. It fetches the rendered page to confirm they're actually visible.

🔎

Discover auditing

Forces max-image-preview:large, warns below 1200px, flags logos and placeholders used as article images, and shows the 16:9 crop before you publish.

🧩

One real Schema graph

A single JSON-LD @graph per page. WebSite, Organization, Person, WebPage, BreadcrumbList and NewsArticle, all cross-referenced by stable @id — not microdata scattered through the markup.

✍️

Analysis without a score

No keyword density target and no traffic-light out of ten. Source attribution, quote balance, primary-source links and original reporting indicators — each with a reason, so an editor can disagree.

Compliance checker

It checks the page, not the database.

Storing a publication date isn't the same as showing one. Ptero SEO fetches the rendered article and confirms the date, the time and the byline are genuinely visible to a reader.

Where something is missing it says so plainly — and calls it a transparency recommendation, because that is what Google publishes. Nobody here will tell you a checklist guarantees a ranking.

How the News module works
News & Discover checks
PassVisible publication date found on the page
PassAuthor byline visible and linked to a profile
CheckNo visible publication time — helps for breaking news
MissingFeatured image is 900px wide; Discover wants 1200px
PassUnique canonical URL, article is indexable
PassComplete NewsArticle entity generated
48h News sitemap window, enforced
1000 Entries per file, then it splits
14 Per-article compliance checks
0 Scores out of a hundred

Already using Site Kit by Google?

Then there's nothing to connect. Ptero SEO reads Search Console through Site Kit's existing connection — no second sign-in, no OAuth client, no credentials stored twice. Site Kit only exposes web search data, so Discover and Google News figures are reported as unavailable on that route rather than shown under the wrong heading.

Connecting Search Console
Pricing

Free core. One paid add-on.

Everything a normal site needs is free and always will be. The publisher tooling is the part newsrooms pay for.

Annual billing saves €179,89 a year — that's 50%