Penalty-risk audit for programmatic SEO sites: verdict, risk score, and a fix manifest.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Methodology Β· Leaderboard Β· Report a bug Β· Skills for agents
The only tool purpose-built for programmatic SEO compliance. It shifts the unit of analysis from URL to template: point it at a 10,000-URL pSEO directory and pseolint identifies the template clusters (e.g. /listing/:slug, /category/:slug), samples K pages from each, and produces a per-template verdict + variance metric. Fix one template, fix N pages.
Design pages that pass before you crawl them. The skills/ suite gives
Claude (and any agent that supports the skills / Claude Code plugin format)
programmatic-SEO and answer-engine optimization (AEO / GEO) guidance where
every recommendation is bound to a runnable pseolint rule:
pseolint: full-lifecycle programmatic SEO: design β build β audit β fix β gate.aeo: get cited in AI Overviews / ChatGPT / Perplexity, not just ranked.Unlike prose checklists, these have teeth: the design-time advice ends in
npx pseolint pass/fail. See skills/README.md.
Programmatic SEO works, when it works. The gap between "1,000 indexed pages" and "1,000 pages that survive a SpamBrain pass" is where most pSEO sites die. The Helpful Content Update made that gap permanent.
Existing SEO tools (Screaming Frog, Sitebulb, Ahrefs Site Audit) were built for editorially-curated sites. They check pages one at a time. But the SpamBrain risks of pSEO are between pages: doorway clusters, near-duplicates, entity-swap templates, thin-content propagation. You can't catch them with per-page rules.
pseolint audits the graph: it groups results by template before surfacing them. Run it before you publish, gate it in CI, fix the broken template before SpamBrain does.
| pseolint | Screaming Frog | Ahrefs Site Audit | Sitebulb | |
|---|---|---|---|---|
| Unit of analysis | template cluster | URL | URL | URL |
| Near-duplicate / doorway / entity-swap detection | β | partial | - | - |
| SpamBrain-policy risk verdict | β | - | - | - |
| AEO / AI-Overview citability checks | β | - | - | - |
| AI fix β pull request | β | - | - | - |
| CLI Β· GitHub Action Β· MCP server | β | desktop | SaaS | desktop |
| Open source | β MIT | - | - | - |
The general-purpose crawlers do plenty pseolint doesn't (JS rendering at scale, backlink data, log-file analysis). pseolint is the specialist for the one thing they weren't built for: programmatic-SEO compliance at the template level.
aeo/* (AI Overview citability: llms.txt, AI-crawler access, citable facts, answer-first, summary-bait).quick fix / moderate / structural), and a Google docs reference.AbortSignal cancellation, safeMode: "saas" preset for embedding in services.sampleSeed. Dated snapshot results, the open-source corpus, and the trade-offs we accepted live at pseolint.dev/methodology. Spec: docs/superpowers/specs/2026-05-03-calibration-against-reputable-pseo.md.authorityScore (0-100, via the --authority-score CLI flag, the core API, or the MCP param) so callers can adjust the verdict ladder for their tier: >= 80 shifts one tier lenient (established brand can absorb shapes a newer site can't); <= 30 shifts one tier stricter. Raw risk number unchanged so CI gates stay stable. Without the flag, treat verdicts as a directional minimum.Full version history (calibration rounds, per-rule changes, safety hardening) is in CHANGELOG.md.
Automatically discovers all pages by following internal links. No sitemap, no config, no build step needed.
--format json includes the templates array alongside the existing findings list:
Use --legacy-flat to suppress the template cards and get the v0.5-style flat findings list.
truncated)If the crawl is interrupted (e.g. the backpressure watchdog aborts because the origin is degrading), pseolint still emits whatever it collected, flagged as partial:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pseolint)<a href="https://allmcps.com/mcp/pseolint"><img src="https://allmcps.com/api/badge/pseolint?style=directory" alt="Pseolint on AllMCPs" /></a>