@houseofmvps/claude-rank 1.9.0 → 1.9.2

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.
@@ -5,13 +5,13 @@
5
5
  "email": "houseofmvps2024@gmail.com"
6
6
  },
7
7
  "metadata": {
8
- "description": "The most comprehensive SEO/GEO/AEO plugin for Claude Code. 80+ rules, auto-fix, GSC/Bing action plans."
8
+ "description": "The most comprehensive SEO/GEO/AEO plugin for Claude Code. 170+ rules, auto-fix, GSC/Bing action plans."
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "claude-rank",
13
- "description": "SEO/GEO/AEO audit + auto-fix + Core Web Vitals + schema validation + GSC/Bing action plans",
14
- "version": "1.5.0",
13
+ "description": "SEO/GEO/AEO audit + auto-fix + keyword clustering + content briefs + E-E-A-T + Core Web Vitals + schema validation",
14
+ "version": "1.9.2",
15
15
  "source": "./",
16
16
  "author": {
17
17
  "name": "Houseofmvps",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "claude-rank",
3
3
  "description": "The most comprehensive SEO/GEO/AEO plugin for Claude Code. Audit, fix, and dominate search.",
4
- "version": "1.8.0",
4
+ "version": "1.9.2",
5
5
  "author": {
6
6
  "name": "Houseofmvps",
7
7
  "email": "houseofmvps2024@gmail.com"
package/README.md CHANGED
@@ -2,13 +2,13 @@
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. 170+ rules. Competitive X-Ray. Auto-fix everything. Dominate search — traditional and AI.
5
+ ### The most comprehensive SEO/GEO/AEO plugin for Claude Code. 170+ rules. 10 scanners. Competitive X-Ray. Auto-fix everything. Dominate search — traditional and AI.
6
6
 
7
+ [![CI](https://img.shields.io/github/actions/workflow/status/Houseofmvps/claude-rank/ci.yml?style=for-the-badge&logo=github&label=CI)](https://github.com/Houseofmvps/claude-rank/actions/workflows/ci.yml)
7
8
  [![npm version](https://img.shields.io/npm/v/%40houseofmvps%2Fclaude-rank?style=for-the-badge&logo=npm&color=CB3837)](https://www.npmjs.com/package/@houseofmvps/claude-rank)
8
9
  [![npm downloads](https://img.shields.io/npm/dm/%40houseofmvps%2Fclaude-rank?style=for-the-badge&logo=npm&color=blue&label=Monthly%20Downloads)](https://www.npmjs.com/package/@houseofmvps/claude-rank)
9
10
  [![npm total](https://img.shields.io/npm/dt/%40houseofmvps%2Fclaude-rank?style=for-the-badge&logo=npm&color=cyan&label=Total%20Downloads)](https://www.npmjs.com/package/@houseofmvps/claude-rank)
10
11
  [![GitHub stars](https://img.shields.io/github/stars/Houseofmvps/claude-rank?style=for-the-badge&logo=github&color=gold)](https://github.com/Houseofmvps/claude-rank/stargazers)
11
- [![GitHub watchers](https://img.shields.io/github/watchers/Houseofmvps/claude-rank?style=for-the-badge&logo=github&color=orange)](https://github.com/Houseofmvps/claude-rank/watchers)
12
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge&logo=opensourceinitiative)](LICENSE)
13
13
  [![Sponsor](https://img.shields.io/badge/Sponsor-EA4AAA?style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/Houseofmvps)
14
14
 
@@ -31,75 +31,72 @@
31
31
  ```
32
32
  $ claude-rank scan ./my-saas-landing
33
33
 
34
- ╔════════════════════════════════════════════════╗
35
- ║ claude-rank SEO Audit ║
36
- ╠════════════════════════════════════════════════╣
37
- Score: 75/100 ███████████░░░░ NEEDS WORK ║
38
- ╠════════════════════════════════════════════════╣
39
- Files scanned: 26
40
- ║ Findings: 40 ║
41
- ║ Critical: 0 High: 0 Medium: 40 Low: 0 ║
42
- ╚════════════════════════════════════════════════╝
43
-
44
- Findings:
45
- MEDIUM title-too-long (18 pages)
46
- Title is 63 chars (max recommended: 60)
47
- Files: dist/about/index.html, dist/blog/..., +15 more
48
-
49
- MEDIUM missing-main-landmark (9 pages)
50
- Page is missing a <main> landmark element
34
+ claude-rank / SEO Audit
35
+ ──────────────────────────────────────────────────
36
+
37
+ 55 ━━━━━━━━━━━───────── Poor
38
+
39
+ Files scanned: 26 Findings: 276 Critical: 0 High: 236 Medium: 40 Low: 0
40
+
41
+ ──────────────────────────────────────────────────
42
+ ✘ Must Fix (2 issues)
43
+
44
+ HIGH thin-content
45
+ Page has only 294 words in main content (minimum recommended: 300)
46
+ Expand main content to 300+ words
47
+
48
+ HIGH broken-internal-link (26 pages)
49
+ Broken internal link "/#how-it-works" target file not found
50
+ Fix or remove the broken link — check the href path
51
51
  ```
52
52
 
53
53
  ```
54
54
  $ claude-rank geo ./my-saas-landing
55
55
 
56
- ╔════════════════════════════════════════════════╗
57
- ║ claude-rank GEO Audit ║
58
- ╠════════════════════════════════════════════════╣
59
- Score: 95/100 ██████████████░ EXCELLENT ║
60
- ╚════════════════════════════════════════════════╝
56
+ claude-rank / GEO Audit
57
+ ──────────────────────────────────────────────────
58
+
59
+ 80 ━━━━━━━━━━━━━━━━──── Good
60
+
61
+ Files scanned: 26 Findings: 4 Medium: 4
61
62
  ```
62
63
 
63
64
  ```
64
- $ claude-rank scan https://houseofmvps.com # Scan any live URL
65
+ $ claude-rank citability ./my-saas-landing
65
66
 
66
- ╔════════════════════════════════════════════════╗
67
- ║ claude-rank SEO Audit ║
68
- ╠════════════════════════════════════════════════╣
69
- Score: 83/100 ████████████░░░ GOOD ║
70
- ╚════════════════════════════════════════════════╝
67
+ claude-rank / AI Citability Score
68
+ ──────────────────────────────────────────────────
69
+
70
+ 67 ━━━━━━━━━━━━━─────── Below Average
71
+
72
+ 7-Dimension Breakdown
73
+ Statistic Density ━━────────────────── 12/100
74
+ Front-Loading ━━━───────────────── 15/100
75
+ Source Citations ──────────────────── 0/100
76
+ Expert Attribution ━━────────────────── 8/100
77
+ Definition Clarity ━─────────────────── 4/100
78
+ Schema Completeness ━━━───────────────── 14/100
79
+ Content Structure ━━━───────────────── 13/100
71
80
  ```
72
81
 
73
82
  ```
74
83
  $ claude-rank compete https://competitor.com ./my-project
75
84
 
76
- ╔══════════════════════════════════════════════════════════════╗
77
- ║ claude-rank Competitive X-Ray ║
78
- ╠══════════════════════════════════════════════════════════════╣
79
- ║ You: My SaaS Product ║
80
- ║ Them: Competitor Landing Page ║
81
- ╠══════════════════════════════════════════════════════════════╣
82
- ║ Score: You 12 vs Them 6 (2 ties) ║
83
- ╚══════════════════════════════════════════════════════════════╝
85
+ claude-rank / Competitive X-Ray
86
+ ──────────────────────────────────────────────────
84
87
 
85
- You're winning 12-6 (2 ties). Keep pushing.
88
+ You: 12 wins Them: 6 wins Ties: 2
86
89
 
87
- Signal-by-Signal Comparison:
88
90
  Area You Them Winner
89
- ──────────────────────────────────────────────────────────
90
- Title tag Yes Yes ─ Tie
91
+ ────────────────────────────────────────────────────────────
91
92
  Word count 1,247 386 ✓ You
92
93
  JSON-LD schemas 3 0 ✓ You
93
94
  Conversion signals 5 2 ✓ You
94
95
  Internal links 12 3 ✓ You
95
96
 
96
- Tech Stack:
97
- You: Next.js (Framework), Tailwind CSS (CSS), Stripe (Payments)
98
- Them: WordPress (CMS), Google Analytics (Analytics)
99
-
100
- Quick Wins — Close These Gaps:
101
- ⚠ Open Graph tags
102
- ⚠ External links
97
+ Tech Stack:
98
+ You: Next.js, Tailwind CSS, Stripe
99
+ Them: WordPress, Google Analytics
103
100
  ```
104
101
 
105
102
  *Real output from scanning [savemrr.co](https://savemrr.co) (26-page SaaS landing) and [houseofmvps.com](https://houseofmvps.com).*
@@ -110,14 +107,15 @@ Quick Wins — Close These Gaps:
110
107
 
111
108
  ### Use as a Claude Code Plugin (recommended)
112
109
 
113
- claude-rank works as a full Claude Code plugin with skills, agents, and slash commands. In any Claude Code session, run:
110
+ claude-rank works as a full Claude Code plugin with skills, agents, and slash commands.
114
111
 
112
+ **Option A — Install from GitHub (recommended):**
115
113
  ```
116
114
  /plugin marketplace add Houseofmvps/claude-rank
117
115
  /plugin install claude-rank@Houseofmvps-claude-rank
118
116
  ```
119
117
 
120
- Or clone and add locally:
118
+ **Option B Install from a local clone:**
121
119
  ```bash
122
120
  git clone https://github.com/Houseofmvps/claude-rank.git
123
121
  ```
@@ -132,13 +130,18 @@ After installing, run `/reload-plugins` to activate in your current session.
132
130
  Once installed, use slash commands:
133
131
 
134
132
  ```
135
- /claude-rank:rank # Smart routing — detects what your project needs
136
- /claude-rank:rank-audit # Full 9-phase SEO/GEO/AEO audit with auto-fix + GSC action plan
137
- /claude-rank:rank-geo # Deep AI search optimization audit
138
- /claude-rank:rank-aeo # Answer engine optimization audit
139
- /claude-rank:rank-fix # Auto-fix all findings in one command
140
- /claude-rank:rank-schema # Detect, validate, generate, inject JSON-LD
141
- /claude-rank:rank-compete # Competitive X-Ray — compare vs any competitor URL
133
+ /claude-rank:rank # Smart routing — detects what your project needs
134
+ /claude-rank:rank-audit # Full 10-scanner audit with auto-fix + GSC action plan
135
+ /claude-rank:rank-geo # Deep AI search optimization audit
136
+ /claude-rank:rank-aeo # Answer engine optimization audit
137
+ /claude-rank:rank-fix # Auto-fix all findings in one command
138
+ /claude-rank:rank-schema # Detect, validate, generate, inject JSON-LD
139
+ /claude-rank:rank-compete # Competitive X-Ray — compare vs any competitor URL
140
+ /claude-rank:rank-citability # AI Citability Score — 7-dimension analysis
141
+ /claude-rank:rank-content # Content intelligence analysis
142
+ /claude-rank:rank-perf # Performance risk assessment
143
+ /claude-rank:rank-vertical # E-Commerce / Local Business SEO
144
+ /claude-rank:rank-security # Security headers audit
142
145
  ```
143
146
 
144
147
  **Zero configuration.** claude-rank reads your project structure and self-configures.
@@ -150,24 +153,30 @@ npx @houseofmvps/claude-rank scan ./my-project # Local directory
150
153
  npx @houseofmvps/claude-rank scan https://example.com # Live URL (crawls up to 50 pages)
151
154
  npx @houseofmvps/claude-rank geo ./my-project # AI search audit
152
155
  npx @houseofmvps/claude-rank aeo ./my-project # Answer engine audit
156
+ npx @houseofmvps/claude-rank citability ./my-project # AI citability score
157
+ npx @houseofmvps/claude-rank content ./my-project # Content intelligence
158
+ npx @houseofmvps/claude-rank keyword ./my-project # Keyword clustering
159
+ npx @houseofmvps/claude-rank brief ./my-project "seo" # Content brief
160
+ npx @houseofmvps/claude-rank perf ./my-project # Performance audit
161
+ npx @houseofmvps/claude-rank vertical ./my-project # E-commerce / local SEO
162
+ npx @houseofmvps/claude-rank security ./my-project # Security audit
163
+ npx @houseofmvps/claude-rank compete https://comp.com . # Competitive X-Ray
153
164
  npx @houseofmvps/claude-rank schema ./my-project # Structured data
154
- npx @houseofmvps/claude-rank compete https://competitor.com . # Competitive X-Ray
155
- npx @houseofmvps/claude-rank keyword ./my-project # Keyword clustering
156
- npx @houseofmvps/claude-rank brief ./my-project "seo" # Content brief
157
- npx @houseofmvps/claude-rank scan ./site --json # Raw JSON output
158
- npx @houseofmvps/claude-rank scan ./site --report html # Agency-ready HTML report
159
- npx @houseofmvps/claude-rank scan ./site --threshold 80 # CI/CD mode
165
+ npx @houseofmvps/claude-rank scan . --report html # Agency-ready HTML report
166
+ npx @houseofmvps/claude-rank scan . --threshold 80 # CI/CD mode
167
+ npx @houseofmvps/claude-rank scan . --json # Raw JSON output
160
168
  ```
161
169
 
162
170
  ### Install globally
163
171
 
164
172
  ```bash
165
- npm install -g @houseofmvps/claude-rank
173
+ npm install -g @houseofmvps/claude-rank # scoped (official)
174
+ npm install -g claude-rank-seo # unscoped (shorter)
166
175
  claude-rank scan ./my-project
167
- claude-rank scan https://example.com --pages 20
168
- claude-rank cwv https://example.com # Core Web Vitals (just needs Chrome)
169
176
  ```
170
177
 
178
+ > Both packages are identical. `claude-rank-seo` is an unscoped alias for easier `npx` usage.
179
+
171
180
  ---
172
181
 
173
182
  ## The Problem
@@ -206,35 +215,33 @@ Overall: 86/100 READY TO RANK
206
215
 
207
216
  ---
208
217
 
209
- ## What It Does
218
+ ## All 10 Scanners
210
219
 
211
- ### SEO Scanner — 50 Rules
220
+ ### 1. SEO Scanner — 50 Rules
212
221
 
213
222
  Traditional search optimization. The foundation.
214
223
 
215
224
  | Category | What it checks |
216
225
  |---|---|
217
226
  | **Meta** | Title (length, uniqueness), meta description, viewport, charset, canonical URL, lang attribute |
218
- | **Content** | H1 presence, heading hierarchy, word count, image alt text, thin content, readability (Flesch-Kincaid), passive voice, wall-of-text paragraphs |
219
- | **Technical** | robots.txt, sitemap.xml, HTTPS, mixed content, mobile-friendly viewport, analytics detection (30+ providers), redirect chain detection, lazy loading, hreflang validation |
220
- | **Structured Data** | JSON-LD presence, schema validation against Google's required fields (14 schema types), dateModified freshness |
221
- | **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard similarity >80%), canonical conflicts, orphan pages, broken internal links (filesystem resolution) |
222
- | **Keyword Relevance** | Title-content keyword alignment, meta description-content alignment |
227
+ | **Content** | H1 presence, heading hierarchy, word count (`<main>` only), image alt text, thin content, readability (Flesch-Kincaid), passive voice |
228
+ | **Technical** | robots.txt, sitemap.xml, HTTPS, mobile-friendly viewport, analytics (30+ providers), redirect chains, lazy loading, hreflang |
229
+ | **Structured Data** | JSON-LD presence, validation against Google's required fields (14 schema types), dateModified freshness |
230
+ | **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard >80%), canonical conflicts, orphan pages, broken internal links |
223
231
 
224
- ### GEO Scanner — 45 Rules
232
+ ### 2. GEO Scanner — 45 Rules + E-E-A-T
225
233
 
226
- Generative Engine Optimization. For AI search engines: ChatGPT, Perplexity, Gemini, Google AI Overviews.
234
+ Generative Engine Optimization. For AI search: ChatGPT, Perplexity, Gemini, Google AI Overviews.
227
235
 
228
236
  | Category | What it checks |
229
237
  |---|---|
230
- | **AI Crawlers** | robots.txt rules for 11 bots (GPTBot, PerplexityBot, ClaudeBot, Claude-Web, Google-Extended, CCBot, AppleBot, Bytespider, Meta-ExternalAgent, Amazonbot, anthropic-ai) |
231
- | **AI Discoverability** | llms.txt presence, sitemap.xml, structured data quality |
232
- | **Content Structure** | Question-format H2s (with marketing header filtering), definition patterns, statistics, data tables, lists |
233
- | **Citation Readiness** | Passage length (134-167 word sweet spot), direct answers in first 40-60 words, source citations to .edu/.gov/.org |
234
- | **Authority Signals** | Author attribution, organization schema, dateModified freshness, content freshness |
235
- | **E-E-A-T** | Author bio detection, credentials/expertise signals, about/team page links, review/testimonial trust signals, external authority links (.edu/.gov/.org) |
238
+ | **AI Crawlers** | robots.txt for 11 bots: GPTBot, PerplexityBot, ClaudeBot, Claude-Web, Google-Extended, CCBot, AppleBot, Bytespider, Meta-ExternalAgent, Amazonbot, anthropic-ai |
239
+ | **AI Discoverability** | llms.txt, sitemap.xml, structured data quality |
240
+ | **Content Structure** | Question-format H2s (filters marketing headers), definition patterns, statistics, data tables, lists |
241
+ | **Citation Readiness** | 134-167 word passage sweet spot, direct answers in first 40-60 words, citations to .edu/.gov/.org |
242
+ | **E-E-A-T** | Author bio, credentials/expertise, about/team page, reviews/testimonials, external authority links |
236
243
 
237
- ### AEO Scanner — 12 Rules
244
+ ### 3. AEO Scanner — 12 Rules
238
245
 
239
246
  Answer Engine Optimization. Featured snippets, People Also Ask, voice search.
240
247
 
@@ -242,42 +249,37 @@ Answer Engine Optimization. Featured snippets, People Also Ask, voice search.
242
249
  |---|---|
243
250
  | **Schema** | FAQPage, HowTo, speakable, Article structured data |
244
251
  | **Snippet Fitness** | Answer paragraph length (40-60 words optimal), numbered steps, definition patterns |
245
- | **Voice Search** | Concise answers under 29 words (Google voice search average), conversational phrasing |
246
- | **Rich Results** | Featured image, breadcrumb markup, review schema |
252
+ | **Voice Search** | Concise answers under 29 words, conversational phrasing |
247
253
 
248
- ### AI Citability Score — 7 Dimensions (NEW)
254
+ ### 4. AI Citability Score — 7 Dimensions
249
255
 
250
- Proprietary scoring algorithm based on GEO research. Scores how likely AI engines are to cite each page (0-100).
256
+ Proprietary scoring algorithm. Scores how likely AI engines are to cite each page (0-100).
251
257
 
252
258
  | Dimension | Weight | What it measures |
253
259
  |---|---|---|
254
- | **Statistic Density** | 0-15 | Data points per 200 words (+33.9% visibility boost) |
255
- | **Front-loading** | 0-15 | Key answer in first 30% of content (44.2% of citations come from there) |
256
- | **Source Citations** | 0-15 | Links to .edu/.gov/research domains (+30.3% visibility) |
257
- | **Expert Attribution** | 0-15 | Person schema, author bios, expert quotes (+32% boost) |
260
+ | **Statistic Density** | 0-15 | Data points per 200 words |
261
+ | **Front-loading** | 0-15 | Key answer in first 30% of content |
262
+ | **Source Citations** | 0-15 | Links to .edu/.gov/research domains |
263
+ | **Expert Attribution** | 0-15 | Person schema, author bios, expert quotes |
258
264
  | **Definition Clarity** | 0-10 | "X is..." / "X refers to..." extraction patterns |
259
- | **Schema Completeness** | 0-15 | Organization + Author + Article + FAQ + Breadcrumb coverage |
265
+ | **Schema Completeness** | 0-15 | Organization + Author + Article + FAQ + Breadcrumb |
260
266
  | **Content Structure** | 0-15 | Heading hierarchy, lists, paragraph segmentation |
261
267
 
262
- ### Content Intelligence (NEW)
268
+ ### 5. Content Intelligence
263
269
 
264
270
  Deep content quality analysis across all pages.
265
271
 
266
272
  | Category | What it analyzes |
267
273
  |---|---|
268
274
  | **Readability** | Flesch-Kincaid score, Gunning Fog index, per-page scoring |
269
- | **Passive Voice** | Percentage of passive sentences per page |
270
275
  | **Duplicate Detection** | Jaccard similarity fingerprinting across all page pairs |
271
276
  | **Thin Content** | Pages under 300 words flagged |
272
- | **Wall of Text** | Paragraphs over 150 words identified |
273
- | **Internal Linking** | Suggestions for pages sharing H2 topics that should cross-link |
274
- | **Orphan Content** | Pages with zero incoming internal links |
277
+ | **Internal Linking** | Suggests cross-links for pages sharing H2 topics |
278
+ | **Orphan Pages** | Pages with zero incoming internal links |
275
279
  | **Hub Pages** | Identifies pillar pages with 5+ outgoing internal links |
276
- | **Topic Clusters** | Groups pages by shared keywords, suggests missing cross-links |
277
-
278
- ### Keyword Clustering (NEW)
280
+ | **Topic Clusters** | Groups pages by shared keywords |
279
281
 
280
- TF-IDF keyword analysis across all pages.
282
+ ### 6. Keyword Clustering (TF-IDF)
281
283
 
282
284
  | Category | What it analyzes |
283
285
  |---|---|
@@ -288,21 +290,21 @@ TF-IDF keyword analysis across all pages.
288
290
  | **Content Gaps** | Keywords only covered by 1 page — opportunity for more content |
289
291
  | **Pillar Suggestions** | When 3+ pages share a theme, suggests creating a pillar page |
290
292
 
291
- ### Content Brief Generator (NEW)
293
+ ### 7. Content Brief Generator
292
294
 
293
295
  Generate SEO-optimized writing briefs from your existing content.
294
296
 
295
297
  | Category | What it generates |
296
298
  |---|---|
297
299
  | **Suggested Title** | H1 based on target keyword and existing content patterns |
298
- | **Word Count Target** | Based on avg of related pages + 20% to outperform |
300
+ | **Word Count Target** | Avg of related pages + 20% to outperform |
299
301
  | **H2 Outline** | From analyzing related content structure |
300
- | **Questions to Answer** | Extracted from existing FAQ patterns and question headings |
302
+ | **Questions to Answer** | Extracted from FAQ patterns and question headings |
301
303
  | **Internal Links** | Pages to link to/from for topical authority |
302
304
  | **Related Keywords** | Extracted from related pages via TF-IDF |
303
305
  | **GEO Tips** | Statistics to include, expert quotes, citation opportunities |
304
306
 
305
- ### Performance Risk Assessment — 16 Rules (NEW)
307
+ ### 8. Performance Scanner — 16 Rules
306
308
 
307
309
  Performance risk detection from static HTML — no Chrome or Lighthouse needed.
308
310
 
@@ -310,72 +312,65 @@ Performance risk detection from static HTML — no Chrome or Lighthouse needed.
310
312
  |---|---|
311
313
  | **CLS Risk** | Images without width/height dimensions |
312
314
  | **Render Blocking** | Scripts without async/defer, excessive blocking scripts |
313
- | **Payload** | Large inline CSS (>50KB), large inline JS (>50KB), too many external domains |
315
+ | **Payload** | Large inline CSS/JS (>50KB), too many external domains |
314
316
  | **Loading** | Missing lazy loading, missing fetchpriority for LCP image |
315
- | **Fonts** | Web fonts without font-display: swap (FOIT/FOUT risk) |
316
- | **Resource Hints** | Missing preload/prefetch, missing preconnect |
317
- | **Security** | Mixed content (HTTP resources on HTTPS pages) |
318
- | **Images** | Responsive images (srcset/sizes), modern formats (WebP/AVIF), decorative image handling (alt="" valid per WCAG) |
317
+ | **Fonts** | Web fonts without font-display: swap |
318
+ | **Images** | Responsive images (srcset/sizes), modern formats (WebP/AVIF) |
319
319
 
320
- ### Vertical SEO — 20 Rules (NEW)
320
+ ### 9. Vertical SEO — 20 Rules
321
321
 
322
- Auto-detects e-commerce and local business sites, then runs specialized checks.
322
+ Auto-detects e-commerce and local business sites, then runs specialized checks. SaaS sites with pricing pages are correctly excluded via strong/weak signal weighting.
323
323
 
324
324
  | Type | Rules | What it checks |
325
325
  |---|---|---|
326
326
  | **E-Commerce** | 10 | Product schema, Offer schema, AggregateRating, reviews, product images, descriptions, breadcrumbs, pricing, availability, duplicate descriptions |
327
- | **Local Business** | 10 | LocalBusiness schema, NAP data, geo coordinates, opening hours, Google Maps, clickable phone, local keywords, address element, service area pages, review schema |
327
+ | **Local Business** | 10 | LocalBusiness schema, NAP data, geo coordinates, opening hours, Google Maps, clickable phone, local keywords, address element, service area pages |
328
328
 
329
- ### Security & Headers — 15 Rules (NEW)
329
+ ### 10. Security & Headers — 15 Rules
330
330
 
331
- Security compliance that directly affects SEO rankings (Google confirmed HTTPS as a ranking signal).
331
+ Security compliance that directly affects SEO (Google confirmed HTTPS as a ranking signal).
332
332
 
333
333
  | Category | What it checks |
334
334
  |---|---|
335
- | **HTTPS** | HTTP-only canonical/og:url, mixed content (scripts vs resources), upgrade-insecure-requests |
336
- | **Headers** | CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy (via meta tags) |
335
+ | **HTTPS** | Mixed content, upgrade-insecure-requests |
336
+ | **Headers** | CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy |
337
337
  | **Integrity** | Subresource Integrity (SRI) on external scripts |
338
- | **Safety** | Inline event handlers, form actions over HTTP, password autocomplete, target="_blank" noopener, iframe sandbox |
338
+ | **Safety** | Inline event handlers, form actions over HTTP, target="_blank" noopener, iframe sandbox |
339
+
340
+ ---
339
341
 
340
- ### Competitive X-Ray — NEW in v1.7
342
+ ## More Features
341
343
 
342
- Point at any competitor URL. claude-rank fetches their page and compares everything side-by-side:
344
+ ### Competitive X-Ray
343
345
 
344
- | Category | What it compares |
345
- |---|---|
346
- | **Tech Stack** | Framework, CMS, CDN, analytics, payments, chat — 50+ detection patterns (Wappalyzer-style) |
347
- | **SEO Signals** | Title, meta description, canonical, Open Graph, Twitter Card, structured data |
348
- | **Content Depth** | Word count, heading structure, internal/external links |
349
- | **Conversion Signals** | CTAs, pricing pages, demo booking, social proof, waitlists — 24 patterns |
350
- | **Structured Data** | JSON-LD count, schema types, validation against Google required fields |
351
- | **Performance** | Blocking vs deferred scripts, semantic HTML usage |
346
+ Point at any competitor URL. claude-rank fetches their page and compares everything side-by-side:
352
347
 
353
- **Output:** Signal-by-signal comparison table with clear winner per area, tech stack diff, conversion signal diff, quick wins (gaps to close), and your strengths (advantages to keep).
348
+ - **Tech Stack** 50+ detection patterns (Wappalyzer-style): framework, CMS, CDN, analytics, payments, chat
349
+ - **SEO Signals** — title, meta, canonical, Open Graph, Twitter Card, structured data
350
+ - **Content Depth** — word count, heading structure, links
351
+ - **Conversion Signals** — CTAs, pricing, demo booking, social proof, waitlists (24 patterns)
352
+ - **Quick Wins** — gaps to close and strengths to keep
354
353
 
355
354
  ```bash
356
- claude-rank compete https://competitor.com ./my-project # Compare vs competitor
357
- claude-rank compete https://competitor.com ./my-project --json # Raw JSON output
355
+ claude-rank compete https://competitor.com ./my-project
358
356
  ```
359
357
 
360
358
  No API keys. No rate limits. No signup. Just point and compare.
361
359
 
362
360
  ### Core Web Vitals (Lighthouse)
363
361
 
364
- Performance scoring powered by Lighthouse. **No separate install needed** — uses `npx -y lighthouse@12` automatically. Just needs Chrome or Chromium on your machine.
365
-
366
362
  ```bash
367
- claude-rank cwv https://example.com # Run CWV audit
363
+ claude-rank cwv https://example.com
368
364
  ```
369
365
 
370
- | Metric | What it measures | Good | Poor |
371
- |---|---|---|---|
372
- | **LCP** | Largest Contentful Paint | < 2.5s | > 4.0s |
373
- | **CLS** | Cumulative Layout Shift | < 0.1 | > 0.25 |
374
- | **FCP** | First Contentful Paint | < 1.8s | > 3.0s |
375
- | **TBT** | Total Blocking Time (proxy for INP) | < 200ms | > 600ms |
376
- | **SI** | Speed Index | < 3.4s | > 5.8s |
366
+ | Metric | Good | Poor |
367
+ |---|---|---|
368
+ | **LCP** (Largest Contentful Paint) | < 2.5s | > 4.0s |
369
+ | **CLS** (Cumulative Layout Shift) | < 0.1 | > 0.25 |
370
+ | **FCP** (First Contentful Paint) | < 1.8s | > 3.0s |
371
+ | **TBT** (Total Blocking Time) | < 200ms | > 600ms |
377
372
 
378
- Graceful fallback: if Chrome isn't found, claude-rank tells the user how to enable it. No crashes.
373
+ No separate install uses `npx -y lighthouse@12` automatically. Just needs Chrome.
379
374
 
380
375
  ### Auto-Fix Generators
381
376
 
@@ -383,36 +378,13 @@ Every finding has a fix. Not "consider adding" — actual file generation:
383
378
 
384
379
  | Generator | What it creates |
385
380
  |---|---|
386
- | **robots.txt** | AI-friendly rules allowing all 9 AI crawlers + sitemap directive |
381
+ | **robots.txt** | AI-friendly rules allowing all 11 AI crawlers + sitemap directive |
387
382
  | **sitemap.xml** | Auto-detected routes (Next.js App/Pages Router, static HTML) |
388
383
  | **llms.txt** | AI discoverability file from your package.json |
389
- | **JSON-LD Schema** | 12 types: Organization, Article, Product, FAQPage, HowTo, LocalBusiness, Person, WebSite, BreadcrumbList, SoftwareApplication, VideoObject, ItemList |
390
-
391
- ### Post-Audit Action Plans (GSC + Bing)
392
-
393
- **This is what separates claude-rank from every other SEO scanner.** After fixing issues, it tells you exactly what to do next:
394
-
395
- **Google Search Console:**
396
- - Submit your new sitemap.xml
397
- - Request indexing for your money pages (homepage, pricing, top landing pages)
398
- - Check index coverage — fix "Crawled but not indexed" pages
399
- - Validate rich results for new JSON-LD schema
400
- - Monitor Core Web Vitals
401
-
402
- **Bing Webmaster Tools:**
403
- - Submit URLs (Bing allows 10,000/day — much more generous than Google)
404
- - Enable IndexNow for near-instant re-indexing
405
- - Verify robots.txt — Bingbot powers Microsoft Copilot and ChatGPT Browse
406
-
407
- **AI Search Verification:**
408
- - Test your brand in ChatGPT, Perplexity, Gemini, Google AI Overviews
409
- - Verify llms.txt is accessible
410
- - Weekly monitoring checklist for AI citation tracking
384
+ | **JSON-LD** | 12 types: Organization, Article, Product, FAQPage, HowTo, LocalBusiness, Person, WebSite, BreadcrumbList, SoftwareApplication, VideoObject, ItemList |
411
385
 
412
386
  ### Schema Engine — Full CRUD
413
387
 
414
- Not just detection. Full lifecycle management:
415
-
416
388
  ```
417
389
  Detect → Find all JSON-LD in your HTML files
418
390
  Validate → Check against Google's required fields (14 schema types)
@@ -420,6 +392,16 @@ Generate → Create missing schema from your project data
420
392
  Inject → Add generated schema into your HTML <head>
421
393
  ```
422
394
 
395
+ ### Post-Audit Action Plans
396
+
397
+ **This is what separates claude-rank from every other SEO scanner.** After fixing issues, it tells you exactly what to do next:
398
+
399
+ **Google Search Console:** Submit sitemap, request indexing for money pages, check coverage, validate rich results, monitor CWV.
400
+
401
+ **Bing Webmaster Tools:** Submit URLs (10,000/day), enable IndexNow for near-instant re-indexing, verify robots.txt (Bingbot powers Microsoft Copilot and ChatGPT Browse).
402
+
403
+ **AI Search Verification:** Test your brand in ChatGPT, Perplexity, Gemini. Verify llms.txt. Weekly monitoring checklist.
404
+
423
405
  ### Multi-Page URL Crawling
424
406
 
425
407
  ```bash
@@ -428,9 +410,7 @@ claude-rank scan https://example.com --pages 10 # Limit to 10 pages
428
410
  claude-rank scan https://example.com --single # Just one page
429
411
  ```
430
412
 
431
- - BFS crawl following internal links with 3 concurrent fetches
432
- - Cross-page analysis: duplicate titles, duplicate descriptions, canonical conflicts
433
- - Redirect chain detection (flags chains with 2+ hops)
413
+ BFS crawl, 3 concurrent fetches, cross-page duplicate/canonical analysis.
434
414
 
435
415
  ### HTML Report Export
436
416
 
@@ -438,19 +418,18 @@ claude-rank scan https://example.com --single # Just one page
438
418
  claude-rank scan ./my-project --report html
439
419
  ```
440
420
 
441
- Generates a self-contained `claude-rank-report.html` — dark theme, score cards, findings table. No external dependencies. Ready to send to clients.
421
+ Self-contained `claude-rank-report.html` — dark theme, score rings, detailed findings. No external dependencies. Ready to send to clients.
442
422
 
443
423
  ### CI/CD Mode
444
424
 
445
425
  ```bash
446
426
  claude-rank scan ./my-project --threshold 80
427
+ # Exit code 1 if score < 80 — add to your CI pipeline
447
428
  ```
448
429
 
449
- Exits with code 1 if score drops below your threshold. Add to your CI pipeline to prevent SEO regressions.
450
-
451
430
  ### Score Tracking
452
431
 
453
- Every audit saves your scores. See trends over time:
432
+ Every audit saves scores. See trends over time:
454
433
 
455
434
  ```
456
435
  2026-03-25 SEO: 62 GEO: 45 AEO: 38
@@ -462,16 +441,16 @@ Every audit saves your scores. See trends over time:
462
441
 
463
442
  ## Scoring System
464
443
 
465
- All scores run from 0 to 100. Higher is better. Findings are weighted by severity:
444
+ All scores: 0-100. Higher is better.
466
445
 
467
446
  | Severity | Deduction | Example |
468
447
  |----------|-----------|---------|
469
- | Critical | -20 points | No title tag, robots.txt blocking all crawlers |
470
- | High | -10 points | Missing meta description, no JSON-LD, AI bots blocked |
471
- | Medium | -5 points | Title too long, missing OG tags, no llms.txt |
472
- | Low | -2 points | Missing lang attribute, no analytics detected |
448
+ | Critical | -20 | No title tag, robots.txt blocking all crawlers |
449
+ | High | -10 | Missing meta description, no JSON-LD, AI bots blocked |
450
+ | Medium | -5 | Title too long, missing OG tags, no llms.txt |
451
+ | Low | -2 | Missing lang attribute, no analytics detected |
473
452
 
474
- Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rule on multiple pages = one deduction (not N deductions).
453
+ Same rule on multiple pages = one deduction (not N). Consistent across all 10 scanners.
475
454
 
476
455
  ---
477
456
 
@@ -479,41 +458,23 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
479
458
 
480
459
  | Command | Description |
481
460
  |---------|-------------|
482
- | `claude-rank scan ./project` | Full SEO scan (50 rules) |
483
- | `claude-rank scan https://example.com` | Crawl and scan a live site (up to 50 pages) |
484
- | `claude-rank geo ./project` | GEO scan — AI search optimization (45 rules + E-E-A-T) |
485
- | `claude-rank aeo ./project` | AEO scan — answer engine optimization (12 rules) |
486
- | `claude-rank citability ./project` | AI Citability Score — 7-dimension analysis |
487
- | `claude-rank content ./project` | Content intelligence — readability, duplicates, linking |
488
- | `claude-rank keyword ./project` | Keyword clustering — TF-IDF, cannibalization, content gaps |
489
- | `claude-rank brief ./project "keyword"` | Content brief generator — SEO-optimized writing outline |
490
- | `claude-rank perf ./project` | Performance risk assessment (16 rules, no Chrome needed) |
491
- | `claude-rank vertical ./project` | Vertical SEO — e-commerce + local business (20 rules) |
492
- | `claude-rank security ./project` | Security headers audit (15 rules) |
493
- | `claude-rank compete https://competitor.com .` | Competitive X-Ray — side-by-side comparison |
494
- | `claude-rank cwv https://example.com` | Core Web Vitals via Lighthouse (optional) |
495
- | `claude-rank schema ./project` | Detect and validate structured data |
496
- | `claude-rank scan ./site --report html` | Generate agency-ready HTML report |
497
- | `claude-rank scan ./site --threshold 80` | CI mode — exit code 1 if score < 80 |
498
- | `claude-rank scan ./site --json` | Raw JSON output for scripting |
499
- | `claude-rank help` | Show available commands |
500
-
501
- ## Slash Commands (Claude Code Plugin)
502
-
503
- | Command | Description |
504
- |---------|-------------|
505
- | `/claude-rank:rank` | Smart routing — detects what your project needs |
506
- | `/claude-rank:rank-audit` | Full 9-phase SEO/GEO/AEO audit with auto-fix + GSC/Bing action plan |
507
- | `/claude-rank:rank-geo` | Deep GEO audit targeting AI search visibility |
508
- | `/claude-rank:rank-aeo` | Answer engine optimization audit |
509
- | `/claude-rank:rank-fix` | Auto-fix all findings in one command |
510
- | `/claude-rank:rank-schema` | Detect, validate, generate, inject JSON-LD |
511
- | `/claude-rank:rank-compete` | Competitive X-Ray — compare vs any competitor URL |
512
- | `/claude-rank:rank-citability` | AI Citability Score — 7-dimension analysis |
513
- | `/claude-rank:rank-content` | Content intelligence analysis |
514
- | `/claude-rank:rank-perf` | Performance risk assessment |
515
- | `/claude-rank:rank-vertical` | E-Commerce / Local Business SEO |
516
- | `/claude-rank:rank-security` | Security headers audit |
461
+ | `scan ./project` | SEO scan 50 rules |
462
+ | `scan https://example.com` | Crawl + scan live site (up to 50 pages) |
463
+ | `geo ./project` | GEO — AI search optimization (45 rules + E-E-A-T) |
464
+ | `aeo ./project` | AEO — answer engine optimization (12 rules) |
465
+ | `citability ./project` | AI Citability Score — 7 dimensions |
466
+ | `content ./project` | Content intelligence — readability, duplicates, linking |
467
+ | `keyword ./project` | Keyword clustering — TF-IDF, cannibalization, gaps |
468
+ | `brief ./project "keyword"` | Content brief generator |
469
+ | `perf ./project` | Performance risk assessment (16 rules) |
470
+ | `vertical ./project` | Vertical SEO — e-commerce + local (20 rules) |
471
+ | `security ./project` | Security headers audit (15 rules) |
472
+ | `compete https://comp.com .` | Competitive X-Ray |
473
+ | `cwv https://example.com` | Core Web Vitals via Lighthouse |
474
+ | `schema ./project` | Detect + validate structured data |
475
+ | `help` | Show available commands |
476
+
477
+ **Flags:** `--json` (raw output) | `--report html` (visual report) | `--threshold N` (CI mode) | `--pages N` (crawl limit) | `--single` (one page only)
517
478
 
518
479
  ---
519
480
 
@@ -522,35 +483,28 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
522
483
  | Feature | claude-rank | claude-seo |
523
484
  |---------|:-----------:|:----------:|
524
485
  | SEO rules | 50 | ~20 |
525
- | GEO — AI search (Perplexity, ChatGPT, Gemini) | 45 rules | Basic |
486
+ | GEO — AI search (Perplexity, ChatGPT, Gemini) | 45 rules + E-E-A-T | Basic |
526
487
  | AEO — featured snippets, voice search | 12 rules | None |
527
- | Core Web Vitals / Lighthouse | Yes (optional) | No |
528
- | Redirect chain detection | Yes | No |
529
- | Schema validation (Google required fields) | 14 types | No |
530
- | Post-audit GSC/Bing action plans | Yes | No |
531
- | Auto-fix generators | Yes | No |
532
- | Schema management (detect / validate / generate / inject) | Full CRUD | Detect only |
533
- | Score tracking with history and trends | Yes | None |
534
- | Cross-page analysis (duplicates, orphans, canonicals) | Yes | No |
535
- | Multi-page URL crawling (up to 50 pages) | Yes | No |
536
- | HTML report export (agency-ready) | Yes | No |
537
- | CI/CD threshold mode | Yes | No |
538
488
  | AI Citability Score (7-dimension) | Yes | No |
539
489
  | Content Intelligence (readability, duplicates) | Yes | No |
540
- | Performance Risk Assessment | Yes (no Chrome needed) | No |
541
- | Vertical SEO (e-commerce + local) | Yes — auto-detection | No |
542
- | Security Headers Audit | Yes | No |
543
490
  | Keyword Clustering (TF-IDF) | Yes | No |
544
491
  | Content Brief Generator | Yes | No |
545
- | E-E-A-T Scoring | Yes — 5 rules | No |
546
- | Broken Link Detection | Yes filesystem resolution | No |
547
- | Image Optimization Audit | Yes — srcset, WebP/AVIF | No |
548
- | Competitive analysis (X-Ray) | Yes — side-by-side comparison | No |
549
- | Tech stack detection (50+ patterns) | Yes | No |
492
+ | Performance Risk Assessment | Yes | No |
493
+ | Vertical SEO (e-commerce + local) | Auto-detection | No |
494
+ | Security Headers Audit | Yes | No |
495
+ | Competitive X-Ray (50+ tech patterns) | Side-by-side | No |
496
+ | Core Web Vitals / Lighthouse | Yes | No |
497
+ | Schema engine (detect/validate/generate/inject) | Full CRUD | Detect only |
498
+ | Auto-fix generators (robots.txt, sitemap, llms.txt, JSON-LD) | Yes | No |
499
+ | Post-audit GSC/Bing action plans | Yes | No |
500
+ | Cross-page analysis (duplicates, orphans, canonicals) | Yes | No |
501
+ | Multi-page URL crawling | Up to 50 pages | No |
502
+ | HTML report export | Agency-ready | No |
503
+ | CI/CD threshold mode | Yes | No |
504
+ | Score tracking with trends | Yes | No |
505
+ | Broken internal link detection | Filesystem resolution | No |
506
+ | Image optimization audit (srcset, WebP/AVIF) | Yes | No |
550
507
  | AI bot detection | 11 bots | Basic |
551
- | llms.txt generation | Yes | No |
552
- | robots.txt generation | Yes | No |
553
- | sitemap.xml generation | Yes | No |
554
508
 
555
509
  **claude-seo tells you what's wrong. claude-rank fixes it.**
556
510
 
@@ -558,10 +512,9 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
558
512
 
559
513
  ## Terminology
560
514
 
561
- Two terms that matter and are often confused:
562
-
563
- - **GEO (Generative Engine Optimization)** — optimization for AI-powered search engines that generate answers (Perplexity, ChatGPT Search, Gemini, Google AI Overviews). This is NOT geographic targeting.
515
+ - **GEO (Generative Engine Optimization)** — optimization for AI-powered search engines that generate answers (Perplexity, ChatGPT Search, Gemini, Google AI Overviews). NOT geographic.
564
516
  - **AEO (Answer Engine Optimization)** — optimization for direct answer features: featured snippets, People Also Ask, voice assistants.
517
+ - **SEO (Search Engine Optimization)** — traditional Google/Bing crawlability, indexability, on-page signals.
565
518
 
566
519
  ---
567
520
 
@@ -569,11 +522,11 @@ Two terms that matter and are often confused:
569
522
 
570
523
  | Protection | How |
571
524
  |---|---|
572
- | **No shell injection** | `execFileSync` with array args everywhere — zero shell interpolation |
525
+ | **No shell injection** | `execFileSync` with array args — zero shell interpolation |
573
526
  | **SSRF protection** | All HTTP tools block private IPs, cloud metadata, non-HTTP schemes |
574
527
  | **No telemetry** | Zero data collection. No phone-home. Ever. |
575
528
  | **1 dependency** | `htmlparser2` only (30KB). No native bindings. No `node-gyp`. |
576
- | **372 tests** | Security module, all scanners, competitive X-Ray, CLI, integration tests |
529
+ | **372 tests** | All scanners, CLI, integration, security tests |
577
530
  | **File safety** | 10MB read cap. 5MB response cap. Restrictive write permissions. |
578
531
 
579
532
  See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
@@ -582,25 +535,25 @@ See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
582
535
 
583
536
  ## What's Inside
584
537
 
585
- | Category | Count | Highlights |
586
- |---|---|---|
587
- | **Tools** | 17 | SEO scanner (50 rules), GEO scanner (45 rules + E-E-A-T), AEO scanner (12 rules), AI Citability scorer (7 dimensions), Content analyzer + keyword clustering, Content brief generator, Performance scanner (16 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, formatter |
588
- | **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 |
589
- | **Agents** | 9 | SEO auditor, GEO auditor, AEO auditor, Schema auditor, Citability auditor, Content auditor, Performance auditor, Vertical auditor, Security auditor |
590
- | **Commands** | 14 | All slash commands + keyword, brief |
591
- | **Research** | 3 | SEO benchmarks, GEO research, schema catalog |
538
+ | Category | Count |
539
+ |---|---|
540
+ | **Scanners** | 10 (SEO, GEO, AEO, Citability, Content, Keywords, Briefs, Perf, Vertical, Security) |
541
+ | **Rules** | 170+ across all scanners |
542
+ | **Tools** | 17 (scanners + schema engine + robots/sitemap/llms.txt + competitive X-ray + formatter) |
543
+ | **Slash Commands** | 12 |
544
+ | **Agents** | 9 autonomous auditors |
545
+ | **Skills** | 7 plugin skills |
546
+ | **Tests** | 372 |
592
547
 
593
548
  ---
594
549
 
595
550
  ## Requirements
596
551
 
597
- - Node.js >= 18
598
- - ESM environment (no CommonJS)
552
+ - **Node.js >= 18** (tested on 18, 20, 22 via CI)
553
+ - ESM environment (`"type": "module"`)
599
554
  - No build step required
600
-
601
- Single runtime dependency: `htmlparser2` (30KB)
602
-
603
- Optional for Core Web Vitals: `lighthouse` + `chrome-launcher`
555
+ - Single dependency: `htmlparser2` (30KB)
556
+ - Optional for Core Web Vitals: Chrome/Chromium
604
557
 
605
558
  ---
606
559
 
@@ -608,16 +561,12 @@ Optional for Core Web Vitals: `lighthouse` + `chrome-launcher`
608
561
 
609
562
  I built claude-rank alone — nights and weekends, between building my own SaaS products. No VC funding. No team. Just one person who got tired of being invisible to AI search and decided to fix it for everyone.
610
563
 
611
- This plugin is **free forever.** No pro tier. No paywalls. No "upgrade to unlock." Every feature you just read about — all 17 tools, 7 skills, 9 agents — is yours, completely free.
612
-
613
- But building and maintaining something this comprehensive takes real time. Every scanner rule I add, every false positive I fix, every new AI crawler I track — that's time I'm not spending on my own products.
564
+ This plugin is **free forever.** No pro tier. No paywalls. No "upgrade to unlock." Every feature — all 10 scanners, 12 slash commands, 9 agents — is yours, completely free.
614
565
 
615
- **If claude-rank helped your site rank higher** — one AI citation it earned you, one missing schema it generated, one robots.txt fix that unblocked GPTBot — I'd be grateful if you considered sponsoring.
566
+ If claude-rank helped your site rank higher — one AI citation it earned you, one missing schema it generated, one robots.txt fix that unblocked GPTBot — I'd be grateful if you considered sponsoring.
616
567
 
617
568
  [![Sponsor on GitHub](https://img.shields.io/badge/Sponsor_on_GitHub-EA4AAA?style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/Houseofmvps)
618
569
 
619
- Thanks for using claude-rank. Now go dominate every search engine — traditional and AI.
620
-
621
570
  *— [Kailesk Khumar](https://www.linkedin.com/in/kailesk-khumar), solo founder of [houseofmvps.com](https://houseofmvps.com)*
622
571
 
623
572
  ---
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # claude-rank v1.9.0
1
+ # claude-rank v1.9.2
2
2
 
3
3
  claude-rank is a free, open-source Claude Code plugin with 170+ rules across 10 scanners for comprehensive search optimization, AI citability, keyword analysis, content briefs, performance, and security auditing.
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@houseofmvps/claude-rank",
3
- "version": "1.9.0",
3
+ "version": "1.9.2",
4
4
  "description": "The most comprehensive SEO/GEO/AEO plugin for Claude Code. Audit, fix, and dominate search — traditional and AI.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -330,6 +330,14 @@ const KEYWORD_STOP_WORDS = new Set([
330
330
  'like','back','even','still','know','take','come','made','find','first','last',
331
331
  'long','great','little','right','look','think','help','need','want','using',
332
332
  'page','click','site','website','read','many','good','best','free','work',
333
+ 'love','hear','touch','shall','deserve','feel','dream','hope','believe',
334
+ 'experience','discover','amazing','wonderful','truly','really','today',
335
+ 'start','stop','keep','give','show','tell','turn','call','send','open',
336
+ 'close','move','play','said','says','done','went','goes','going','must',
337
+ 'let','put','run','set','try','ask','told','left','hold','bring',
338
+ 'without','within','along','while','until','already','always','never',
339
+ 'everything','nothing','something','someone','everyone','anyone',
340
+ 'because','though','since','below','above','down','away','next','sure',
333
341
  ]);
334
342
 
335
343
  /**
@@ -595,7 +603,7 @@ export function analyzeKeywords(rootDir) {
595
603
  if (pages.length === 1) {
596
604
  const scores = tfidfScores.get(pages[0]);
597
605
  const score = scores ? (scores.get(kw) || 0) : 0;
598
- if (score > 0.01) { // Only significant keywords
606
+ if (score > 0.05) { // Only significant keywords (higher threshold avoids noise)
599
607
  contentGaps.push({
600
608
  keyword: kw,
601
609
  currentPage: pages[0],
@@ -669,8 +669,8 @@ export function formatContentReport(result) {
669
669
  lines.push(c.dim(' ' + '\u2500'.repeat(50)));
670
670
  for (const p of result.pages.slice(0, 10)) {
671
671
  const file = p.file || p.url || 'unknown';
672
- const fk = p.fleschKincaid != null ? String(p.fleschKincaid) : '-';
673
- const fog = p.gunningFog != null ? String(p.gunningFog) : '-';
672
+ const fk = p.readability?.fleschKincaid != null ? String(p.readability.fleschKincaid) : '-';
673
+ const fog = p.readability?.gunningFog != null ? String(p.readability.gunningFog) : '-';
674
674
  lines.push(` ${pad(c.dim(file), 36)} ${pad(fk, 6)} ${fog}`);
675
675
  }
676
676
  if (result.pages.length > 10) {
@@ -698,7 +698,7 @@ export function formatContentReport(result) {
698
698
  lines.push(` ${c.bold('Internal Linking Suggestions')} ${c.dim(`(${result.linkSuggestions.length})`)}`);
699
699
  lines.push('');
700
700
  for (const sug of result.linkSuggestions.slice(0, 5)) {
701
- lines.push(` ${c.cyan('\u2192')} ${c.dim(sug.from || sug.source)} ${c.dim('\u2192')} ${c.cyan(sug.to || sug.target)} ${c.dim(sug.reason || '')}`);
701
+ lines.push(` ${c.cyan('\u2192')} ${c.bold(sug.topic)} ${c.dim(`(${sug.pages.join(', ')})`)}`);
702
702
  }
703
703
  if (result.linkSuggestions.length > 5) {
704
704
  lines.push(` ${c.dim(` ... +${result.linkSuggestions.length - 5} more suggestions`)}`);
@@ -9,13 +9,19 @@ import { parseHtml, findHtmlFiles } from './lib/html-parser.mjs';
9
9
  import { checkFileSize } from './lib/security.mjs';
10
10
 
11
11
  // E-commerce detection signals
12
- const ECOMMERCE_SIGNALS = [
12
+ // Strong e-commerce signals (3 points each) — unique to shopping sites
13
+ const ECOMMERCE_STRONG_SIGNALS = [
13
14
  'add to cart', 'add-to-cart', 'addtocart', 'buy now', 'checkout',
14
- 'shopping cart', 'shop now', 'product', '/product/', '/products/',
15
- 'price', '$', '€', '£', '¥', 'sku', 'in stock', 'out of stock',
15
+ 'shopping cart', 'shop now', '/product/', '/products/',
16
+ 'sku', 'in stock', 'out of stock',
16
17
  'add to bag', 'add to basket', 'wishlist',
17
18
  ];
18
19
 
20
+ // Weak e-commerce signals (1 point each) — also appear on SaaS pricing pages
21
+ const ECOMMERCE_WEAK_SIGNALS = [
22
+ 'product', 'price',
23
+ ];
24
+
19
25
  // Local business detection signals
20
26
  const LOCAL_SIGNALS = [
21
27
  'directions', 'get directions', 'opening hours', 'business hours',
@@ -83,15 +89,24 @@ function detectSiteType(htmlFiles, rootDir) {
83
89
  content = fs.readFileSync(filePath, 'utf8').toLowerCase();
84
90
  } catch { continue; }
85
91
 
86
- for (const signal of ECOMMERCE_SIGNALS) {
87
- if (content.includes(signal)) ecomScore++;
92
+ let pageHasStrongSignal = false;
93
+ for (const signal of ECOMMERCE_STRONG_SIGNALS) {
94
+ if (content.includes(signal)) { ecomScore += 3; pageHasStrongSignal = true; }
95
+ }
96
+ // Weak signals only count if a strong signal is also on this page
97
+ if (pageHasStrongSignal) {
98
+ for (const signal of ECOMMERCE_WEAK_SIGNALS) {
99
+ if (content.includes(signal)) ecomScore++;
100
+ }
88
101
  }
89
102
  for (const signal of LOCAL_SIGNALS) {
90
103
  if (content.includes(signal)) localScore++;
91
104
  }
92
105
 
93
- // Schema-based detection
94
- if (content.includes('"product"') || content.includes('"offer"')) ecomScore += 5;
106
+ // Schema-based detection — only count if NOT SoftwareApplication (SaaS uses Offer legitimately)
107
+ const hasSaasSchema = content.includes('"softwareapplication"');
108
+ if (!hasSaasSchema && (content.includes('"@type":"product"') || content.includes('"@type": "product"'))) ecomScore += 5;
109
+ if (!hasSaasSchema && (content.includes('"@type":"offer"') || content.includes('"@type": "offer"'))) ecomScore += 3;
95
110
  if (content.includes('"localbusiness"') || content.includes('"restaurant"') ||
96
111
  content.includes('"dentist"') || content.includes('"medicalclinic"')) localScore += 5;
97
112
 
@@ -102,7 +117,7 @@ function detectSiteType(htmlFiles, rootDir) {
102
117
  }
103
118
 
104
119
  const types = [];
105
- if (ecomScore >= 5) types.push('ecommerce');
120
+ if (ecomScore >= 10) types.push('ecommerce');
106
121
  if (localScore >= 5) types.push('local');
107
122
  return types;
108
123
  }