A passing test command leaves the audit itself unverified
Claude SEO can organize an SEO investigation inside Claude Code. The useful question is whether its report gives you findings you can check. Our recorded run tested repository code; it did not establish the quality of a website audit or confirm a working Claude Code installation.
The v2.4.0 release documents 26 sub-skills, 19 sub-agents and up to 17 parallel audit agents. The pinned README lists 34 user-invocable commands. These describe the project's documented workflow, not features we exercised. Reports can combine technical, content, schema, local and AI-search findings, but a combined score still needs evidence behind it.
What our September 27 run establishes
Our stored run used commit e77e783e38eeb738424eb72117abbd2dacdd88af on September 27, 2026. Its recorded configuration was 3 CPUs, 8 GB of memory and the image ghcr.io/astral-sh/uv:python3.12-bookworm. The install output identifies Python 3.12.12.
| Stage | Recorded observation | Limit |
|---|---|---|
| Install | Exit 0 after about 40 seconds; 95 dependencies and 595 MB recorded | The raw tail contains failed editable and wheel build attempts. Plugin installation and launcher readiness are unverified. |
| Build | Exit 0 after about 6 seconds | The retained tail is empty and the command is unavailable. A usable distribution was not established. |
| Tests | Exit 0 after about 55 seconds; pytest reports 999 passed, 4 skipped and 1 warning in 46.74 seconds | Summary counts were not reconciled against complete logs to establish exhaustive unique coverage. |
| Dependency audit | Pip-audit recorded zero advisories | The record does not establish which packages it inspected or how many. This is not a safety certification. |
The install tail reports setuptools refusing automatic package discovery because it found multiple top-level packages. This qualifies the harness's successful stage flag. It does not show that the documented Claude Code plugin installation is broken: the record does not provide enough command detail to equate the two paths.
The test output also includes a WeasyPrint deprecation warning that HarfBuzz-Subset will be required by future versions. The warning did not make the recorded test command fail. The four skipped tests were not failures.
The checkout metrics were 435 files, approximately 41,631 source lines and 4.9 MB, with three CI workflow files, a tests directory and no Dockerfile. These describe the checkout. They do not measure audit throughput, recommendation accuracy or compatibility across operating systems. No installed-plugin check, live provider workload or human-audit comparison is established by the supplied run.
Match the requirements and data sources to your version
Requirements have changed between the supplied documents. The e77e783 README and architecture documentation describe Python 3.10 or newer; the current README specifies Python 3.11 to 3.14 and Claude Code 1.0.33 or newer. Use the documentation for the version you install rather than combining these into one compatibility claim.
The documented plugin setup prepares an isolated Python environment and Chromium through /seo setup; /seo doctor checks runtime readiness. Those are useful next checks, but our recorded dependency and test stages do not prove they completed.
The README says basic audits can fetch target pages without Google credentials. Without those credentials, Core Web Vitals are lab estimates and indexing is inferred from page signals. Connected Google accounts and optional providers add different evidence. Record which sources were available so a reader can distinguish an observed account result from an estimate.
The current README also clarifies the privacy boundary: pages and data analyzed inside Claude Code are sent to Claude, while reports are saved locally. Optional APIs and extensions add their own data flows. Do not interpret local files as offline analysis.
Check provider reports and model-written calculations
The supplied issue 322 reports a v2.4.0 Google Natural Language failure: the entity request sends languageCode where the v1 endpoint expects language, producing HTTP 400. The reporter also identifies hardcoded English and missing request-body assertions in mocked tests. These are the reporter's findings, not failures reproduced in our sandbox, and they should not be generalized to every version.
Issue 321 reports that v2.4.0 instructions delegate SERP-overlap calculations, geo-grid calculations and weighted-score aggregation to the model. It also reports model pins in all 19 agents. These findings justify checking calculations and model configuration before treating repeated scores as comparable measurements. The local test summary does not establish scoring repeatability.
For DataForSEO, issue 319 distinguishes the documented v2.4.0 pin, dataforseo-mcp-server@2.8.10, from independently installed v3 servers with a different tool interface. The maintainer confirms the v2.4.0 pin. The reporter later retracts claims that the server writes responses to files or always truncates explicit limits to ten items. Do not use those retracted claims to judge the integration, or treat response-example costs as an authoritative price list.
The README separately warns that scroll-triggered content, interaction-dependent content and some widget timing can produce noisy findings. Cross-check the rendered page before acting on a missing-content diagnosis.
Choose the workflow you need
SiteOne Crawler is relevant when collecting crawl results is the main job. Its README documents URL and asset crawling, HTML/JSON/text reports, a native binary and configurable CI thresholds. Those are documented capabilities; this review supplies no comparative performance test.
ChatGPT SEO is relevant when you want to review a page, draft or export in ChatGPT. Its README describes manual ZIP installation, pending public directory approval and account-dependent upload availability. It explicitly excludes a crawler installation and an included Google connection. The current repository says the former Codex implementation is a separate product, so the historical Codex-port reference is not enough to recommend this repository as a current Codex replacement.
Ratings and the next useful check
These are editorial ratings, not benchmark results. The rubric is 1 for substantial documented obstacles, 2 for limited support or major evidence gaps, 3 for a useful documented path with material qualifications, 4 for strong direct evidence with minor gaps, and 5 for broad verification in the stated scope. Unknowns lower confidence; popularity alone does not earn a high score.
Setup earns 2/5 because the documented path exists but our install tail contains packaging errors and readiness is unverified. Documentation earns 3/5 for installation, architecture and limitation coverage, qualified by differing version requirements and integration reports. Community earns 3/5 for concrete public issue reporting, corrections and maintainer participation; adoption and support responsiveness were not measured. Maturity earns 3/5 for the recorded successful test command and versioned release documentation, with live integration and workload behavior still unverified.
For a trial, record the installed version, run the documented readiness check, and audit one page whose content you can inspect. Keep the report's source observations beside its recommendations. Expand the workload only after checking whether the findings and calculations hold up.

