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
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.
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
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
Or into your Vercel build:
{
"scripts": {
"build": "npx indxel check --ci && next build"
}
}
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
Score: 78 → 83 (+5)
IMPROVEMENTS (2):
+ /pricing 82 → 88
+ /about 85 → 90
REGRESSIONS (1):
- /blog/my-post 70 → 62
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"]
}
}
}
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
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)