DEV Community

Eduardo Monteiro
Eduardo Monteiro

Posted on

I open-sourced a Claude Code skill that audits SEO with separate Google/Bing scores

Why another SEO tool?

I run a small network of coupon/deals sites and got tired of SEO tools that
either cost money, require an API key + signup, or hand you one vague score
without saying which factors it's actually based on.

So I wrote SEO Rank Audit — an open source Claude Code
skill that audits any site and scores it 0-100 per criterion, separately for
Google and Bing
, based on ranking factors both engines actually document
(not the real algorithm — nobody has that).

What it does

  1. Structure collector (no API key): titles, meta tags, headings, canonical, structured data, robots.txt, sitemap, HTTPS, alt text, internal links, and sponsored-link attributes — home page + 5-10 internal pages.
  2. Real Core Web Vitals via the public PageSpeed Insights API (no key, no signup) — LCP, CLS, INP from actual field data (CrUX) when available, lab data (Lighthouse) as fallback for smaller sites.
  3. Bing Webmaster Tools data (optional, requires your own API key) — only for sites you've verified in your own account. Traffic, crawl errors, backlinks straight from the source.

The core design principle: anything that can't be measured is marked
"unverified" and removed from the score base
— never guessed, never zeroed
out. The final score is points earned / verifiable points × category max.

Why two scores instead of one

Google and Bing don't weigh the same signals. Bing is more literal about
keyword match in title/URL, weighs freshness more heavily, and recognizes
IndexNow. Google cares more about depth, authorship, and trust signals — and
Bing's index also feeds a chunk of AI assistant search, so the gap matters
more than its traffic share suggests.

Dogfooding it found real bugs

I ran the tool against my own site before publishing, found two real bugs
in the audit script itself (JSON-LD @graph wasn't being parsed, and a
false-positive on concatenated heading text caused by stripping whitespace
per text-node instead of once) — and one real bug on my own site (a FAQ
answering "yes, valid coupon" while stating 0 active coupons). All three
fixed before this post.

Try it

Requires the Claude Code CLI
running in a terminal (the /plugin command isn't available in IDE
integrations):

/plugin marketplace add ducrz/seo-audit-marketplace
/plugin install seo-rank-audit
Enter fullscreen mode Exit fullscreen mode

Then just talk to it normally:

audit example.com
why isn't this page ranking on Bing?
compare my site's SEO to a competitor's
Enter fullscreen mode Exit fullscreen mode

Feedback and PRs on scoring weights welcome.

Top comments (1)

Collapse
 
skillselion profile image
Skillselion

Removing unverifiable factors from the score base instead of zeroing them is the right call and rarer than it should be. Most tools quietly punish small sites for missing CrUX field data. Two things from running SEO on a large directory site daily: first, CrUX absence is itself information, when field data is missing you are in lab-only territory where LCP thresholds behave differently, so labeling the score "lab-derived" saves users from chasing phantom regressions. Second, your Bing point undersells itself: Bing's index feeds several AI assistants, and in our referral data AI-assistant traffic has at times outweighed classic Bing organic, so a Bing-literal title/URL fix can show up as assistant citations rather than SERP clicks, which nobody attributes correctly. Question on the structure collector: how do you handle pages where the server-rendered shell is thin and the real content hydrates client-side, do you flag that as unverified or render first?