@houseofmvps/claude-rank 1.7.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +105 -25
- package/bin/claude-rank.mjs +38 -14
- package/commands/rank-citability.md +23 -0
- package/commands/rank-content.md +22 -0
- package/commands/rank-perf.md +26 -0
- package/commands/rank-security.md +26 -0
- package/commands/rank-vertical.md +18 -0
- package/package.json +1 -1
- package/skills/rank/SKILL.md +5 -2
- package/tools/citability-scorer.mjs +235 -0
- package/tools/content-analyzer.mjs +219 -0
- package/tools/geo-scanner.mjs +51 -0
- package/tools/lib/formatter.mjs +650 -0
- package/tools/lib/html-parser.mjs +203 -0
- package/tools/perf-scanner.mjs +185 -0
- package/tools/security-scanner.mjs +444 -0
- package/tools/seo-scanner.mjs +201 -1
- package/tools/vertical-scanner.mjs +326 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<img src="assets/hero-banner.png" alt="claude-rank — SEO/GEO/AEO Plugin for Claude Code" width="100%"/>
|
|
4
4
|
|
|
5
|
-
### The most comprehensive SEO/GEO/AEO plugin for Claude Code.
|
|
5
|
+
### The most comprehensive SEO/GEO/AEO plugin for Claude Code. 150+ rules. Competitive X-Ray. Auto-fix everything. Dominate search — traditional and AI.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@houseofmvps/claude-rank)
|
|
8
8
|
[](https://www.npmjs.com/package/@houseofmvps/claude-rank)
|
|
@@ -188,13 +188,16 @@ That's not an SEO problem. That's a visibility problem across every search surfa
|
|
|
188
188
|
/claude-rank:rank-audit
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
-
One command.
|
|
191
|
+
One command. Eight scanners run in parallel — SEO, GEO, AEO, AI Citability, Content Intelligence, Performance, Vertical SEO, and Security. 150+ rules checked. Every finding gets an automated fix. Score tracked over time. **Then it tells you exactly what to do in Google Search Console and Bing Webmaster Tools.**
|
|
192
192
|
|
|
193
193
|
```
|
|
194
|
-
SEO Score:
|
|
195
|
-
GEO Score:
|
|
196
|
-
AEO Score:
|
|
197
|
-
|
|
194
|
+
SEO Score: 87/100 ████████████░░ (49 rules)
|
|
195
|
+
GEO Score: 92/100 █████████████░ (40 rules)
|
|
196
|
+
AEO Score: 78/100 ██████████░░░░ (12 rules)
|
|
197
|
+
Citability Score: 65/100 ████████░░░░░░ (7 dimensions)
|
|
198
|
+
Performance: 90/100 █████████████░ (13 rules)
|
|
199
|
+
Security: 80/100 ███████████░░░ (15 rules)
|
|
200
|
+
Overall: 86/100 READY TO RANK
|
|
198
201
|
```
|
|
199
202
|
|
|
200
203
|
**Score below 80?** Run `/claude-rank:rank-fix` and it auto-generates what's missing — robots.txt, sitemap.xml, llms.txt, JSON-LD schema — then re-scans to show your improvement.
|
|
@@ -203,29 +206,30 @@ Overall: 86/100 READY TO RANK
|
|
|
203
206
|
|
|
204
207
|
## What It Does
|
|
205
208
|
|
|
206
|
-
### SEO Scanner —
|
|
209
|
+
### SEO Scanner — 49 Rules
|
|
207
210
|
|
|
208
211
|
Traditional search optimization. The foundation.
|
|
209
212
|
|
|
210
213
|
| Category | What it checks |
|
|
211
214
|
|---|---|
|
|
212
215
|
| **Meta** | Title (length, uniqueness), meta description, viewport, charset, canonical URL, lang attribute |
|
|
213
|
-
| **Content** | H1 presence, heading hierarchy, word count, image alt text, thin content
|
|
214
|
-
| **Technical** | robots.txt, sitemap.xml, HTTPS, mobile-friendly viewport, analytics detection, redirect chain detection |
|
|
215
|
-
| **Structured Data** | JSON-LD presence, schema validation against Google's required fields (14 schema types) |
|
|
216
|
-
| **Cross-Page** | Duplicate titles
|
|
216
|
+
| **Content** | H1 presence, heading hierarchy, word count, image alt text, thin content, readability (Flesch-Kincaid), passive voice, wall-of-text paragraphs |
|
|
217
|
+
| **Technical** | robots.txt, sitemap.xml, HTTPS, mixed content, mobile-friendly viewport, analytics detection (30+ providers), redirect chain detection, lazy loading, hreflang validation |
|
|
218
|
+
| **Structured Data** | JSON-LD presence, schema validation against Google's required fields (14 schema types), dateModified freshness |
|
|
219
|
+
| **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard similarity >80%), canonical conflicts, orphan pages |
|
|
220
|
+
| **Keyword Relevance** | Title-content keyword alignment, meta description-content alignment |
|
|
217
221
|
|
|
218
|
-
### GEO Scanner —
|
|
222
|
+
### GEO Scanner — 40 Rules
|
|
219
223
|
|
|
220
224
|
Generative Engine Optimization. For AI search engines: ChatGPT, Perplexity, Gemini, Google AI Overviews.
|
|
221
225
|
|
|
222
226
|
| Category | What it checks |
|
|
223
227
|
|---|---|
|
|
224
|
-
| **AI Crawlers** | robots.txt rules for
|
|
228
|
+
| **AI Crawlers** | robots.txt rules for 11 bots (GPTBot, PerplexityBot, ClaudeBot, Claude-Web, Google-Extended, CCBot, AppleBot, Bytespider, Meta-ExternalAgent, Amazonbot, anthropic-ai) |
|
|
225
229
|
| **AI Discoverability** | llms.txt presence, sitemap.xml, structured data quality |
|
|
226
|
-
| **Content Structure** | Question-format H2s, definition patterns, statistics, data tables, lists |
|
|
227
|
-
| **Citation Readiness** | Passage length (134-167 word sweet spot), direct answers in first 40-60 words |
|
|
228
|
-
| **Authority Signals** | Author attribution, organization schema,
|
|
230
|
+
| **Content Structure** | Question-format H2s (with marketing header filtering), definition patterns, statistics, data tables, lists |
|
|
231
|
+
| **Citation Readiness** | Passage length (134-167 word sweet spot), direct answers in first 40-60 words, source citations to .edu/.gov/.org |
|
|
232
|
+
| **Authority Signals** | Author attribution, organization schema, dateModified freshness, content freshness |
|
|
229
233
|
|
|
230
234
|
### AEO Scanner — 12 Rules
|
|
231
235
|
|
|
@@ -238,6 +242,67 @@ Answer Engine Optimization. Featured snippets, People Also Ask, voice search.
|
|
|
238
242
|
| **Voice Search** | Concise answers under 29 words (Google voice search average), conversational phrasing |
|
|
239
243
|
| **Rich Results** | Featured image, breadcrumb markup, review schema |
|
|
240
244
|
|
|
245
|
+
### AI Citability Score — 7 Dimensions (NEW)
|
|
246
|
+
|
|
247
|
+
Proprietary scoring algorithm based on GEO research. Scores how likely AI engines are to cite each page (0-100).
|
|
248
|
+
|
|
249
|
+
| Dimension | Weight | What it measures |
|
|
250
|
+
|---|---|---|
|
|
251
|
+
| **Statistic Density** | 0-15 | Data points per 200 words (+33.9% visibility boost) |
|
|
252
|
+
| **Front-loading** | 0-15 | Key answer in first 30% of content (44.2% of citations come from there) |
|
|
253
|
+
| **Source Citations** | 0-15 | Links to .edu/.gov/research domains (+30.3% visibility) |
|
|
254
|
+
| **Expert Attribution** | 0-15 | Person schema, author bios, expert quotes (+32% boost) |
|
|
255
|
+
| **Definition Clarity** | 0-10 | "X is..." / "X refers to..." extraction patterns |
|
|
256
|
+
| **Schema Completeness** | 0-15 | Organization + Author + Article + FAQ + Breadcrumb coverage |
|
|
257
|
+
| **Content Structure** | 0-15 | Heading hierarchy, lists, paragraph segmentation |
|
|
258
|
+
|
|
259
|
+
### Content Intelligence (NEW)
|
|
260
|
+
|
|
261
|
+
Deep content quality analysis across all pages.
|
|
262
|
+
|
|
263
|
+
| Category | What it analyzes |
|
|
264
|
+
|---|---|
|
|
265
|
+
| **Readability** | Flesch-Kincaid score, Gunning Fog index, per-page scoring |
|
|
266
|
+
| **Passive Voice** | Percentage of passive sentences per page |
|
|
267
|
+
| **Duplicate Detection** | Jaccard similarity fingerprinting across all page pairs |
|
|
268
|
+
| **Thin Content** | Pages under 300 words flagged |
|
|
269
|
+
| **Wall of Text** | Paragraphs over 150 words identified |
|
|
270
|
+
| **Internal Linking** | Suggestions for pages sharing H2 topics that should cross-link |
|
|
271
|
+
|
|
272
|
+
### Performance Risk Assessment — 13 Rules (NEW)
|
|
273
|
+
|
|
274
|
+
Performance risk detection from static HTML — no Chrome or Lighthouse needed.
|
|
275
|
+
|
|
276
|
+
| Category | What it checks |
|
|
277
|
+
|---|---|
|
|
278
|
+
| **CLS Risk** | Images without width/height dimensions |
|
|
279
|
+
| **Render Blocking** | Scripts without async/defer, excessive blocking scripts |
|
|
280
|
+
| **Payload** | Large inline CSS (>50KB), large inline JS (>50KB), too many external domains |
|
|
281
|
+
| **Loading** | Missing lazy loading, missing fetchpriority for LCP image |
|
|
282
|
+
| **Fonts** | Web fonts without font-display: swap (FOIT/FOUT risk) |
|
|
283
|
+
| **Resource Hints** | Missing preload/prefetch, missing preconnect |
|
|
284
|
+
| **Security** | Mixed content (HTTP resources on HTTPS pages) |
|
|
285
|
+
|
|
286
|
+
### Vertical SEO — 20 Rules (NEW)
|
|
287
|
+
|
|
288
|
+
Auto-detects e-commerce and local business sites, then runs specialized checks.
|
|
289
|
+
|
|
290
|
+
| Type | Rules | What it checks |
|
|
291
|
+
|---|---|---|
|
|
292
|
+
| **E-Commerce** | 10 | Product schema, Offer schema, AggregateRating, reviews, product images, descriptions, breadcrumbs, pricing, availability, duplicate descriptions |
|
|
293
|
+
| **Local Business** | 10 | LocalBusiness schema, NAP data, geo coordinates, opening hours, Google Maps, clickable phone, local keywords, address element, service area pages, review schema |
|
|
294
|
+
|
|
295
|
+
### Security & Headers — 15 Rules (NEW)
|
|
296
|
+
|
|
297
|
+
Security compliance that directly affects SEO rankings (Google confirmed HTTPS as a ranking signal).
|
|
298
|
+
|
|
299
|
+
| Category | What it checks |
|
|
300
|
+
|---|---|
|
|
301
|
+
| **HTTPS** | HTTP-only canonical/og:url, mixed content (scripts vs resources), upgrade-insecure-requests |
|
|
302
|
+
| **Headers** | CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy (via meta tags) |
|
|
303
|
+
| **Integrity** | Subresource Integrity (SRI) on external scripts |
|
|
304
|
+
| **Safety** | Inline event handlers, form actions over HTTP, password autocomplete, target="_blank" noopener, iframe sandbox |
|
|
305
|
+
|
|
241
306
|
### Competitive X-Ray — NEW in v1.7
|
|
242
307
|
|
|
243
308
|
Point at any competitor URL. claude-rank fetches their page and compares everything side-by-side:
|
|
@@ -380,10 +445,15 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
|
|
|
380
445
|
|
|
381
446
|
| Command | Description |
|
|
382
447
|
|---------|-------------|
|
|
383
|
-
| `claude-rank scan ./project` | Full SEO scan (
|
|
448
|
+
| `claude-rank scan ./project` | Full SEO scan (49 rules) |
|
|
384
449
|
| `claude-rank scan https://example.com` | Crawl and scan a live site (up to 50 pages) |
|
|
385
|
-
| `claude-rank geo ./project` | GEO scan — AI search optimization (
|
|
450
|
+
| `claude-rank geo ./project` | GEO scan — AI search optimization (40 rules) |
|
|
386
451
|
| `claude-rank aeo ./project` | AEO scan — answer engine optimization (12 rules) |
|
|
452
|
+
| `claude-rank citability ./project` | AI Citability Score — 7-dimension analysis |
|
|
453
|
+
| `claude-rank content ./project` | Content intelligence — readability, duplicates, linking |
|
|
454
|
+
| `claude-rank perf ./project` | Performance risk assessment (13 rules, no Chrome needed) |
|
|
455
|
+
| `claude-rank vertical ./project` | Vertical SEO — e-commerce + local business (20 rules) |
|
|
456
|
+
| `claude-rank security ./project` | Security headers audit (15 rules) |
|
|
387
457
|
| `claude-rank compete https://competitor.com .` | Competitive X-Ray — side-by-side comparison |
|
|
388
458
|
| `claude-rank cwv https://example.com` | Core Web Vitals via Lighthouse (optional) |
|
|
389
459
|
| `claude-rank schema ./project` | Detect and validate structured data |
|
|
@@ -403,6 +473,11 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
|
|
|
403
473
|
| `/claude-rank:rank-fix` | Auto-fix all findings in one command |
|
|
404
474
|
| `/claude-rank:rank-schema` | Detect, validate, generate, inject JSON-LD |
|
|
405
475
|
| `/claude-rank:rank-compete` | Competitive X-Ray — compare vs any competitor URL |
|
|
476
|
+
| `/claude-rank:rank-citability` | AI Citability Score — 7-dimension analysis |
|
|
477
|
+
| `/claude-rank:rank-content` | Content intelligence analysis |
|
|
478
|
+
| `/claude-rank:rank-perf` | Performance risk assessment |
|
|
479
|
+
| `/claude-rank:rank-vertical` | E-Commerce / Local Business SEO |
|
|
480
|
+
| `/claude-rank:rank-security` | Security headers audit |
|
|
406
481
|
|
|
407
482
|
---
|
|
408
483
|
|
|
@@ -410,8 +485,8 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
|
|
|
410
485
|
|
|
411
486
|
| Feature | claude-rank | claude-seo |
|
|
412
487
|
|---------|:-----------:|:----------:|
|
|
413
|
-
| SEO rules |
|
|
414
|
-
| GEO — AI search (Perplexity, ChatGPT, Gemini) |
|
|
488
|
+
| SEO rules | 49 | ~20 |
|
|
489
|
+
| GEO — AI search (Perplexity, ChatGPT, Gemini) | 40 rules | Basic |
|
|
415
490
|
| AEO — featured snippets, voice search | 12 rules | None |
|
|
416
491
|
| Core Web Vitals / Lighthouse | Yes (optional) | No |
|
|
417
492
|
| Redirect chain detection | Yes | No |
|
|
@@ -424,9 +499,14 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
|
|
|
424
499
|
| Multi-page URL crawling (up to 50 pages) | Yes | No |
|
|
425
500
|
| HTML report export (agency-ready) | Yes | No |
|
|
426
501
|
| CI/CD threshold mode | Yes | No |
|
|
502
|
+
| AI Citability Score (7-dimension) | Yes | No |
|
|
503
|
+
| Content Intelligence (readability, duplicates) | Yes | No |
|
|
504
|
+
| Performance Risk Assessment | Yes (no Chrome needed) | No |
|
|
505
|
+
| Vertical SEO (e-commerce + local) | Yes — auto-detection | No |
|
|
506
|
+
| Security Headers Audit | Yes | No |
|
|
427
507
|
| Competitive analysis (X-Ray) | Yes — side-by-side comparison | No |
|
|
428
508
|
| Tech stack detection (50+ patterns) | Yes | No |
|
|
429
|
-
| AI bot detection |
|
|
509
|
+
| AI bot detection | 11 bots | Basic |
|
|
430
510
|
| llms.txt generation | Yes | No |
|
|
431
511
|
| robots.txt generation | Yes | No |
|
|
432
512
|
| sitemap.xml generation | Yes | No |
|
|
@@ -452,7 +532,7 @@ Two terms that matter and are often confused:
|
|
|
452
532
|
| **SSRF protection** | All HTTP tools block private IPs, cloud metadata, non-HTTP schemes |
|
|
453
533
|
| **No telemetry** | Zero data collection. No phone-home. Ever. |
|
|
454
534
|
| **1 dependency** | `htmlparser2` only (30KB). No native bindings. No `node-gyp`. |
|
|
455
|
-
| **
|
|
535
|
+
| **332 tests** | Security module, all scanners, competitive X-Ray, CLI, integration tests |
|
|
456
536
|
| **File safety** | 10MB read cap. 5MB response cap. Restrictive write permissions. |
|
|
457
537
|
|
|
458
538
|
See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
|
|
@@ -463,10 +543,10 @@ See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
|
|
|
463
543
|
|
|
464
544
|
| Category | Count | Highlights |
|
|
465
545
|
|---|---|---|
|
|
466
|
-
| **Tools** |
|
|
546
|
+
| **Tools** | 15 | SEO scanner (49 rules), GEO scanner (40 rules), AEO scanner (12 rules), AI Citability scorer (7 dimensions), Content analyzer, Performance scanner (13 rules), Vertical scanner (20 rules), Security scanner (15 rules), Competitive X-Ray (50+ tech patterns), Lighthouse/CWV scanner, schema engine, robots analyzer, sitemap analyzer, llms.txt generator, audit history |
|
|
467
547
|
| **Skills** | 7 | /claude-rank:rank, /claude-rank:rank-audit, /claude-rank:rank-geo, /claude-rank:rank-aeo, /claude-rank:rank-fix, /claude-rank:rank-schema, /claude-rank:rank-compete |
|
|
468
548
|
| **Agents** | 4 | SEO auditor (project-type-aware), GEO auditor (AI readiness levels), AEO auditor (snippet opportunities), Schema auditor (Google validation) |
|
|
469
|
-
| **Commands** |
|
|
549
|
+
| **Commands** | 12 | All slash commands above |
|
|
470
550
|
| **Research** | 3 | SEO benchmarks, GEO research, schema catalog |
|
|
471
551
|
|
|
472
552
|
---
|
|
@@ -509,7 +589,7 @@ Found a bug? Want a new scanner rule? [Open an issue](https://github.com/Houseof
|
|
|
509
589
|
git clone https://github.com/Houseofmvps/claude-rank.git
|
|
510
590
|
cd claude-rank
|
|
511
591
|
npm install
|
|
512
|
-
npm test #
|
|
592
|
+
npm test # 332 tests, node:test
|
|
513
593
|
node tools/<tool>.mjs # No build step
|
|
514
594
|
```
|
|
515
595
|
|
package/bin/claude-rank.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Standalone CLI: npx claude-rank <command> <directory>
|
|
3
|
-
// Commands: scan, geo, aeo, compete, cwv, schema
|
|
3
|
+
// Commands: scan, geo, aeo, compete, cwv, schema, citability, content, perf, vertical, security
|
|
4
4
|
|
|
5
5
|
const args = process.argv.slice(2);
|
|
6
6
|
const jsonFlag = args.includes('--json');
|
|
@@ -40,6 +40,11 @@ const commands = {
|
|
|
40
40
|
geo: '../tools/geo-scanner.mjs',
|
|
41
41
|
aeo: '../tools/aeo-scanner.mjs',
|
|
42
42
|
schema: '../tools/schema-engine.mjs',
|
|
43
|
+
citability: '../tools/citability-scorer.mjs',
|
|
44
|
+
content: '../tools/content-analyzer.mjs',
|
|
45
|
+
perf: '../tools/perf-scanner.mjs',
|
|
46
|
+
vertical: '../tools/vertical-scanner.mjs',
|
|
47
|
+
security: '../tools/security-scanner.mjs',
|
|
43
48
|
};
|
|
44
49
|
|
|
45
50
|
if (command === 'help' || command === '--help') {
|
|
@@ -48,13 +53,18 @@ if (command === 'help' || command === '--help') {
|
|
|
48
53
|
Usage: claude-rank <command> [directory|url] [flags]
|
|
49
54
|
|
|
50
55
|
Commands:
|
|
51
|
-
scan
|
|
52
|
-
geo
|
|
53
|
-
aeo
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
scan Run core SEO scanner (default)
|
|
57
|
+
geo Run GEO (AI search) scanner
|
|
58
|
+
aeo Run AEO (answer engine) scanner
|
|
59
|
+
citability Score AI citability (7-dimension analysis)
|
|
60
|
+
content Content quality analysis (readability, duplicates, linking)
|
|
61
|
+
perf Performance scanner (images, CSS, JS, blocking resources)
|
|
62
|
+
vertical Vertical-specific checks (e-commerce, local business)
|
|
63
|
+
security Security header and vulnerability scanner
|
|
64
|
+
compete Competitive X-Ray — compare your site vs any competitor URL
|
|
65
|
+
cwv Run Core Web Vitals / Lighthouse audit (needs Chrome installed)
|
|
66
|
+
schema Detect and validate structured data
|
|
67
|
+
help Show this help message
|
|
58
68
|
|
|
59
69
|
Flags:
|
|
60
70
|
--json Output raw JSON (for programmatic use)
|
|
@@ -168,6 +178,11 @@ const {
|
|
|
168
178
|
formatGeoReport,
|
|
169
179
|
formatAeoReport,
|
|
170
180
|
formatSchemaReport,
|
|
181
|
+
formatCitabilityReport,
|
|
182
|
+
formatContentReport,
|
|
183
|
+
formatPerfReport,
|
|
184
|
+
formatVerticalReport,
|
|
185
|
+
formatSecurityReport,
|
|
171
186
|
} = await import(new URL('../tools/lib/formatter.mjs', import.meta.url));
|
|
172
187
|
|
|
173
188
|
const formatters = {
|
|
@@ -175,6 +190,11 @@ const formatters = {
|
|
|
175
190
|
geo: formatGeoReport,
|
|
176
191
|
aeo: formatAeoReport,
|
|
177
192
|
schema: formatSchemaReport,
|
|
193
|
+
citability: formatCitabilityReport,
|
|
194
|
+
content: formatContentReport,
|
|
195
|
+
perf: formatPerfReport,
|
|
196
|
+
vertical: formatVerticalReport,
|
|
197
|
+
security: formatSecurityReport,
|
|
178
198
|
};
|
|
179
199
|
|
|
180
200
|
// URL-based scanning (scan command only)
|
|
@@ -279,7 +299,7 @@ if (isUrl) {
|
|
|
279
299
|
}
|
|
280
300
|
} else {
|
|
281
301
|
const mod = await import(new URL(toolPath, import.meta.url));
|
|
282
|
-
const result = mod.scanDirectory(targetDir);
|
|
302
|
+
const result = command === 'content' ? mod.analyzeDirectory(targetDir) : mod.scanDirectory(targetDir);
|
|
283
303
|
if (jsonFlag) {
|
|
284
304
|
console.log(JSON.stringify(result, null, 2));
|
|
285
305
|
} else {
|
|
@@ -288,11 +308,15 @@ if (isUrl) {
|
|
|
288
308
|
|
|
289
309
|
// Check threshold
|
|
290
310
|
if (thresholdFlag != null) {
|
|
291
|
-
const scoreKey = command === 'scan' ? 'seo' : command;
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
311
|
+
const scoreKey = command === 'scan' ? 'seo' : command === 'citability' ? 'citability' : command === 'perf' ? 'performance' : command === 'content' ? null : command;
|
|
312
|
+
if (scoreKey === null) {
|
|
313
|
+
// content scanner has no single score — skip threshold check
|
|
314
|
+
} else {
|
|
315
|
+
const score = result.scores?.[scoreKey] ?? 0;
|
|
316
|
+
if (score < thresholdFlag) {
|
|
317
|
+
console.error(`Score ${score} is below threshold ${thresholdFlag}`);
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
296
320
|
}
|
|
297
321
|
}
|
|
298
322
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-citability
|
|
3
|
+
description: Score how likely AI search engines are to cite your content.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI Citability Score
|
|
7
|
+
|
|
8
|
+
Run the 7-dimension citability analysis to score how likely AI engines are to cite your pages.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/citability-scorer.mjs <directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Dimensions scored:
|
|
15
|
+
1. **Statistic Density** (0-15) — data points per 200 words
|
|
16
|
+
2. **Front-loading** (0-15) — key answer in first 30% of content
|
|
17
|
+
3. **Source Citations** (0-15) — links to .edu/.gov/research domains
|
|
18
|
+
4. **Expert Attribution** (0-15) — Person schema, author bios, quotes
|
|
19
|
+
5. **Definition Clarity** (0-10) — "X is..." patterns
|
|
20
|
+
6. **Schema Completeness** (0-15) — Organization + Author + Article + FAQ + Breadcrumb
|
|
21
|
+
7. **Content Structure** (0-15) — headings, lists, paragraphs
|
|
22
|
+
|
|
23
|
+
Present per-page scores ranked best to worst, plus actionable recommendations.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-content
|
|
3
|
+
description: Analyze content quality — readability, duplicates, internal linking.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content Analysis
|
|
7
|
+
|
|
8
|
+
Run content intelligence analysis on all HTML pages.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/content-analyzer.mjs <directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Analysis includes:
|
|
15
|
+
- **Readability** — Flesch-Kincaid and Gunning Fog scores per page
|
|
16
|
+
- **Passive Voice** — percentage of passive sentences
|
|
17
|
+
- **Duplicate Detection** — Jaccard similarity across pages (>70% flagged)
|
|
18
|
+
- **Thin Content** — pages under 300 words
|
|
19
|
+
- **Wall of Text** — paragraphs over 150 words
|
|
20
|
+
- **Internal Linking** — suggestions for pages with shared topics
|
|
21
|
+
|
|
22
|
+
Present per-page analysis table and actionable recommendations.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-perf
|
|
3
|
+
description: Performance risk assessment from HTML structure — no Chrome needed.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Performance Scanner
|
|
7
|
+
|
|
8
|
+
Assess performance risks from static HTML analysis. No Chrome or Lighthouse needed.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/perf-scanner.mjs <directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Checks include:
|
|
15
|
+
- Images without width/height (CLS risk)
|
|
16
|
+
- Render-blocking scripts (no async/defer)
|
|
17
|
+
- Large inline CSS/JS (>50KB)
|
|
18
|
+
- Missing lazy loading on images
|
|
19
|
+
- Missing fetchpriority on LCP image
|
|
20
|
+
- No font-display: swap on web fonts
|
|
21
|
+
- Missing resource hints (preload/prefetch)
|
|
22
|
+
- Mixed content (HTTP resources on HTTPS page)
|
|
23
|
+
- Too many external script domains
|
|
24
|
+
- Missing preconnect hints
|
|
25
|
+
|
|
26
|
+
Present findings with severity and fix suggestions.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-security
|
|
3
|
+
description: Security headers and HTTPS compliance audit for SEO.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security Scanner
|
|
7
|
+
|
|
8
|
+
Scan HTML files for security headers and HTTPS compliance that affect SEO rankings.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/security-scanner.mjs <directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Checks include (15 rules):
|
|
15
|
+
- HTTP-only canonical/og:url (ranking signal loss)
|
|
16
|
+
- Mixed content (scripts and resources)
|
|
17
|
+
- CSP, X-Content-Type-Options, X-Frame-Options meta tags
|
|
18
|
+
- Referrer policy and Permissions-Policy
|
|
19
|
+
- Subresource Integrity (SRI) on external scripts
|
|
20
|
+
- Inline event handlers (CSP violations)
|
|
21
|
+
- Form actions over HTTP
|
|
22
|
+
- Password input autocomplete
|
|
23
|
+
- target="_blank" without rel="noopener"
|
|
24
|
+
- Iframes without sandbox
|
|
25
|
+
|
|
26
|
+
Note: This is a static HTML scanner. Server response headers must be checked separately.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-vertical
|
|
3
|
+
description: E-Commerce and Local Business SEO checks with auto-detection.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vertical SEO Scanner
|
|
7
|
+
|
|
8
|
+
Auto-detects site type (e-commerce, local business) and runs specialized checks.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/vertical-scanner.mjs <directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**E-Commerce** (10 rules): Product schema, Offer schema, AggregateRating, reviews, product images, descriptions, breadcrumbs, pricing, availability, duplicate descriptions.
|
|
15
|
+
|
|
16
|
+
**Local Business** (10 rules): LocalBusiness schema, NAP data, geo coordinates, opening hours, Google Maps, clickable phone, local keywords, address element, service area pages, review schema.
|
|
17
|
+
|
|
18
|
+
Present detected site type, applicable findings, and recommendations.
|
package/package.json
CHANGED
package/skills/rank/SKILL.md
CHANGED
|
@@ -16,8 +16,11 @@ description: "Main orchestrator for claude-rank SEO/GEO/AEO toolkit. Routes to s
|
|
|
16
16
|
| `/rank fix [dir]` | rank-fix | Auto-fix all findings |
|
|
17
17
|
| `/rank schema [dir]` | rank-schema | Schema detect/validate/generate |
|
|
18
18
|
| `/rank compete <url> [dir]` | rank-compete | Competitive X-Ray vs any URL |
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
| `/rank citability [dir]` | rank-citability | AI Citability Score (7-dimension) |
|
|
20
|
+
| `/rank content [dir]` | rank-content | Content quality analysis |
|
|
21
|
+
| `/rank perf [dir]` | rank-perf | Performance risk assessment |
|
|
22
|
+
| `/rank vertical [dir]` | rank-vertical | E-Commerce / Local Business checks |
|
|
23
|
+
| `/rank security [dir]` | rank-security | Security headers audit |
|
|
21
24
|
|
|
22
25
|
## Quick Health Check (bare /rank)
|
|
23
26
|
|