DEV Community

Cover image for I built a CLI that fails your build on broken SEO
Yann_
Yann_

Posted on

I built a CLI that fails your build on broken SEO

Last week, I spent two hours copy-pasting data from Screaming Frog into my CLI so Claude could analyze the issues and suggest fixes. One page at a time. Like it was 2014.

Then I thought: there has to be an API for this. I found DataForSEO. Went to sign up. They asked me to explain why I wanted access — like I was applying for a loan, not an API key. I closed the tab.

That's when I decided to build my own tool.

The problem nobody talks about

Here's what happens to most developers: you ship a site, it looks great, traffic comes in. Then one day you refactor a layout, or you update a CMS, or you deploy a new page — and silently, without any warning:

  • A meta description disappears
  • An og:image starts returning 404
  • Structured data breaks because someone renamed a field
  • A page accidentally gets noindex

Nobody tells you. There's no error in the console. No failing test. No red CI badge.

Three weeks later, traffic drops. You check Google Search Console. Half your pages lost their rich snippets. The og:image that's been broken? That was your most shared page.

SEO breaks silently. That's the entire problem.

What if your build just... failed?

I wanted something dead simple. Like ESLint, but for SEO. You run a command, it tells you what's broken, and in CI mode it exits with code 1 so your build fails before broken SEO reaches production.

npx indxel check
Enter fullscreen mode Exit fullscreen mode
  Found 12 pages

  /                 95/100  A
  /pricing          88/100  B
  /blog             91/100  A
  /blog/my-post     62/100  D
    ✗ Missing og:image
    ! Title too short (42 chars)
  /about            90/100  A

  Score: 85/100 (B)
  Pages: 11/12 pass
  1 critical issue.
Enter fullscreen mode Exit fullscreen mode

30+ rules, zero config, 30 seconds. It checks title and meta description (presence + length), Open Graph tags, canonical URLs, structured data (JSON-LD), robots directives, Twitter cards, viewport meta, favicon, and hreflang for multi-language sites.

Each rule has a point value. Total score out of 100. Letter grade. You know exactly where you stand.

The CI/CD guard

This is the part I'm most proud of. One flag and your SEO is protected on every deploy:

npx indxel check --ci
Enter fullscreen mode Exit fullscreen mode

It runs the same audit, but exits with code 1 if there are critical errors. Plug it into GitHub Actions:

name: SEO Check
on: [pull_request]
jobs:
  seo:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx indxel check --ci
Enter fullscreen mode Exit fullscreen mode

Or into your Vercel build:

{
  "scripts": {
    "build": "npx indxel check --ci && next build"
  }
}
Enter fullscreen mode Exit fullscreen mode

Broken SEO never reaches production. That's the promise.

SEO diff between deploys

This one came from my own frustration. I'd fix 3 issues, deploy, then realize I'd introduced 2 new ones. So I added:

npx indxel check --diff
Enter fullscreen mode Exit fullscreen mode
Score: 78 → 83 (+5)

IMPROVEMENTS (2):
  + /pricing  82 → 88
  + /about    85 → 90

REGRESSIONS (1):
  - /blog/my-post  70 → 62
Enter fullscreen mode Exit fullscreen mode

Git diff, but for SEO. You see exactly what improved and what regressed since the last check.

It also works with AI

Indxel ships as an MCP server, which means Claude, Cursor, and other AI assistants can audit your SEO while you're editing code.

Instead of copy-pasting from Screaming Frog into your AI tool (like I was doing last week), you just ask:

"Check the SEO on /pricing"

Claude runs the audit and tells you your og:image is broken. Without leaving your editor.

{
  "mcpServers": {
    "indxel": {
      "command": "npx",
      "args": ["indxel-mcp"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

That's the full setup for Claude Desktop or Cursor. It's a small thing, but it closes the loop — the same tool that guards your CI also powers your AI assistant.

Why I'm sharing this

I use AI tools heavily, I build things to solve my own problems, and I ship fast. I built Indxel in 1 week.

I'm sharing this because the problem is real and I know I'm not the only one who's been burned by silent SEO regressions. If you've ever deployed a site and found out weeks later that half your pages had no meta tags — this is for you.

The npm package and CLI are MIT licensed, free forever. There's a paid dashboard for monitoring and indexation tracking, but the core tool will always be open source.

Try it now — takes 30 seconds, no signup:

npx indxel init
Enter fullscreen mode Exit fullscreen mode

GitHub: github.com/indxel/indxel
npm: npmjs.com/package/indxel
Site: indxel.com


What SEO checks would you add? What did I miss? Drop a comment or open an issue on GitHub.

Top comments (0)