@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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +211 -262
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/tools/content-analyzer.mjs +9 -1
- package/tools/lib/formatter.mjs +3 -3
- package/tools/vertical-scanner.mjs +23 -8
|
@@ -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.
|
|
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
|
|
14
|
-
"version": "1.
|
|
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",
|
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
|
+
[](https://github.com/Houseofmvps/claude-rank/actions/workflows/ci.yml)
|
|
7
8
|
[](https://www.npmjs.com/package/@houseofmvps/claude-rank)
|
|
8
9
|
[](https://www.npmjs.com/package/@houseofmvps/claude-rank)
|
|
9
10
|
[](https://www.npmjs.com/package/@houseofmvps/claude-rank)
|
|
10
11
|
[](https://github.com/Houseofmvps/claude-rank/stargazers)
|
|
11
|
-
[](https://github.com/Houseofmvps/claude-rank/watchers)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
65
|
+
$ claude-rank citability ./my-saas-landing
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
98
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
136
|
-
/claude-rank:rank-audit
|
|
137
|
-
/claude-rank:rank-geo
|
|
138
|
-
/claude-rank:rank-aeo
|
|
139
|
-
/claude-rank:rank-fix
|
|
140
|
-
/claude-rank:rank-schema
|
|
141
|
-
/claude-rank:rank-compete
|
|
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
|
|
155
|
-
npx @houseofmvps/claude-rank
|
|
156
|
-
npx @houseofmvps/claude-rank
|
|
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
|
-
##
|
|
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
|
|
219
|
-
| **Technical** | robots.txt, sitemap.xml, HTTPS,
|
|
220
|
-
| **Structured Data** | JSON-LD presence,
|
|
221
|
-
| **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard
|
|
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
|
|
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
|
|
231
|
-
| **AI Discoverability** | llms.txt
|
|
232
|
-
| **Content Structure** | Question-format H2s (
|
|
233
|
-
| **Citation Readiness** |
|
|
234
|
-
| **
|
|
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
|
|
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
|
|
254
|
+
### 4. AI Citability Score — 7 Dimensions
|
|
249
255
|
|
|
250
|
-
Proprietary scoring algorithm
|
|
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
|
|
255
|
-
| **Front-loading** | 0-15 | Key answer in first 30% of content
|
|
256
|
-
| **Source Citations** | 0-15 | Links to .edu/.gov/research domains
|
|
257
|
-
| **Expert Attribution** | 0-15 | Person schema, author bios, expert quotes
|
|
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
|
|
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
|
|
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
|
-
| **
|
|
273
|
-
| **
|
|
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
|
|
277
|
-
|
|
278
|
-
### Keyword Clustering (NEW)
|
|
280
|
+
| **Topic Clusters** | Groups pages by shared keywords |
|
|
279
281
|
|
|
280
|
-
|
|
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
|
|
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** |
|
|
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
|
|
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
|
|
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
|
|
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
|
|
316
|
-
| **
|
|
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
|
|
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
|
|
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
|
|
329
|
+
### 10. Security & Headers — 15 Rules
|
|
330
330
|
|
|
331
|
-
Security compliance that directly affects SEO
|
|
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** |
|
|
336
|
-
| **Headers** | CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy
|
|
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,
|
|
338
|
+
| **Safety** | Inline event handlers, form actions over HTTP, target="_blank" noopener, iframe sandbox |
|
|
339
|
+
|
|
340
|
+
---
|
|
339
341
|
|
|
340
|
-
|
|
342
|
+
## More Features
|
|
341
343
|
|
|
342
|
-
|
|
344
|
+
### Competitive X-Ray
|
|
343
345
|
|
|
344
|
-
|
|
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
|
-
**
|
|
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
|
|
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
|
|
363
|
+
claude-rank cwv https://example.com
|
|
368
364
|
```
|
|
369
365
|
|
|
370
|
-
| Metric |
|
|
371
|
-
|
|
372
|
-
| **LCP**
|
|
373
|
-
| **CLS**
|
|
374
|
-
| **FCP**
|
|
375
|
-
| **TBT**
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
444
|
+
All scores: 0-100. Higher is better.
|
|
466
445
|
|
|
467
446
|
| Severity | Deduction | Example |
|
|
468
447
|
|----------|-----------|---------|
|
|
469
|
-
| Critical | -20
|
|
470
|
-
| High | -10
|
|
471
|
-
| Medium | -5
|
|
472
|
-
| Low | -2
|
|
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
|
-
|
|
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
|
-
| `
|
|
483
|
-
| `
|
|
484
|
-
| `
|
|
485
|
-
| `
|
|
486
|
-
| `
|
|
487
|
-
| `
|
|
488
|
-
| `
|
|
489
|
-
| `
|
|
490
|
-
| `
|
|
491
|
-
| `
|
|
492
|
-
| `
|
|
493
|
-
| `
|
|
494
|
-
| `
|
|
495
|
-
| `
|
|
496
|
-
| `
|
|
497
|
-
|
|
498
|
-
| `
|
|
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
|
-
|
|
|
546
|
-
|
|
|
547
|
-
|
|
|
548
|
-
| Competitive
|
|
549
|
-
|
|
|
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
|
-
|
|
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
|
|
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** |
|
|
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 |
|
|
586
|
-
|
|
587
|
-
| **
|
|
588
|
-
| **
|
|
589
|
-
| **
|
|
590
|
-
| **Commands** |
|
|
591
|
-
| **
|
|
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 (
|
|
552
|
+
- **Node.js >= 18** (tested on 18, 20, 22 via CI)
|
|
553
|
+
- ESM environment (`"type": "module"`)
|
|
599
554
|
- No build step required
|
|
600
|
-
|
|
601
|
-
|
|
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
|
|
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
|
-
|
|
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
|
[](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
package/package.json
CHANGED
|
@@ -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.
|
|
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],
|
package/tools/lib/formatter.mjs
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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', '
|
|
15
|
-
'
|
|
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
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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 >=
|
|
120
|
+
if (ecomScore >= 10) types.push('ecommerce');
|
|
106
121
|
if (localScore >= 5) types.push('local');
|
|
107
122
|
return types;
|
|
108
123
|
}
|