@houseofmvps/claude-rank 1.8.0 → 1.9.1

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.1",
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.1",
5
5
  "author": {
6
6
  "name": "Houseofmvps",
7
7
  "email": "houseofmvps2024@gmail.com"
package/README.md CHANGED
@@ -2,8 +2,9 @@
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. 150+ 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. 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)
@@ -110,14 +111,15 @@ Quick Wins — Close These Gaps:
110
111
 
111
112
  ### Use as a Claude Code Plugin (recommended)
112
113
 
113
- claude-rank works as a full Claude Code plugin with skills, agents, and slash commands. In any Claude Code session, run:
114
+ claude-rank works as a full Claude Code plugin with skills, agents, and slash commands.
114
115
 
116
+ **Option A — Install from GitHub (recommended):**
115
117
  ```
116
118
  /plugin marketplace add Houseofmvps/claude-rank
117
119
  /plugin install claude-rank@Houseofmvps-claude-rank
118
120
  ```
119
121
 
120
- Or clone and add locally:
122
+ **Option B Install from a local clone:**
121
123
  ```bash
122
124
  git clone https://github.com/Houseofmvps/claude-rank.git
123
125
  ```
@@ -152,6 +154,8 @@ npx @houseofmvps/claude-rank geo ./my-project # AI search audit
152
154
  npx @houseofmvps/claude-rank aeo ./my-project # Answer engine audit
153
155
  npx @houseofmvps/claude-rank schema ./my-project # Structured data
154
156
  npx @houseofmvps/claude-rank compete https://competitor.com . # Competitive X-Ray
157
+ npx @houseofmvps/claude-rank keyword ./my-project # Keyword clustering
158
+ npx @houseofmvps/claude-rank brief ./my-project "seo" # Content brief
155
159
  npx @houseofmvps/claude-rank scan ./site --json # Raw JSON output
156
160
  npx @houseofmvps/claude-rank scan ./site --report html # Agency-ready HTML report
157
161
  npx @houseofmvps/claude-rank scan ./site --threshold 80 # CI/CD mode
@@ -160,12 +164,15 @@ npx @houseofmvps/claude-rank scan ./site --threshold 80 # CI/CD mode
160
164
  ### Install globally
161
165
 
162
166
  ```bash
163
- npm install -g @houseofmvps/claude-rank
167
+ npm install -g @houseofmvps/claude-rank # scoped (official)
168
+ npm install -g claude-rank-seo # unscoped (shorter)
164
169
  claude-rank scan ./my-project
165
170
  claude-rank scan https://example.com --pages 20
166
171
  claude-rank cwv https://example.com # Core Web Vitals (just needs Chrome)
167
172
  ```
168
173
 
174
+ > Both packages are identical. `claude-rank-seo` is an unscoped alias for easier `npx` usage.
175
+
169
176
  ---
170
177
 
171
178
  ## The Problem
@@ -188,14 +195,14 @@ That's not an SEO problem. That's a visibility problem across every search surfa
188
195
  /claude-rank:rank-audit
189
196
  ```
190
197
 
191
- One command. Eight scanners run in parallel — SEO, GEO, AEO, AI Citability, Content Intelligence, Performance, Vertical SEO, and Security. 150+ rules checked. Every finding gets an automated fix. Score tracked over time. **Then it tells you exactly what to do in Google Search Console and Bing Webmaster Tools.**
198
+ One command. Ten scanners run in parallel — SEO, GEO, AEO, AI Citability, Content Intelligence, Keyword Clustering, Performance, Vertical SEO, Security, and Content Brief. 170+ rules checked. Every finding gets an automated fix. Score tracked over time. **Then it tells you exactly what to do in Google Search Console and Bing Webmaster Tools.**
192
199
 
193
200
  ```
194
- SEO Score: 87/100 ████████████░░ (49 rules)
195
- GEO Score: 92/100 █████████████░ (40 rules)
201
+ SEO Score: 87/100 ████████████░░ (50 rules)
202
+ GEO Score: 92/100 █████████████░ (45 rules + E-E-A-T)
196
203
  AEO Score: 78/100 ██████████░░░░ (12 rules)
197
204
  Citability Score: 65/100 ████████░░░░░░ (7 dimensions)
198
- Performance: 90/100 █████████████░ (13 rules)
205
+ Performance: 90/100 █████████████░ (16 rules)
199
206
  Security: 80/100 ███████████░░░ (15 rules)
200
207
  Overall: 86/100 READY TO RANK
201
208
  ```
@@ -206,7 +213,7 @@ Overall: 86/100 READY TO RANK
206
213
 
207
214
  ## What It Does
208
215
 
209
- ### SEO Scanner — 49 Rules
216
+ ### SEO Scanner — 50 Rules
210
217
 
211
218
  Traditional search optimization. The foundation.
212
219
 
@@ -216,10 +223,10 @@ Traditional search optimization. The foundation.
216
223
  | **Content** | H1 presence, heading hierarchy, word count, image alt text, thin content, readability (Flesch-Kincaid), passive voice, wall-of-text paragraphs |
217
224
  | **Technical** | robots.txt, sitemap.xml, HTTPS, mixed content, mobile-friendly viewport, analytics detection (30+ providers), redirect chain detection, lazy loading, hreflang validation |
218
225
  | **Structured Data** | JSON-LD presence, schema validation against Google's required fields (14 schema types), dateModified freshness |
219
- | **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard similarity >80%), canonical conflicts, orphan pages |
226
+ | **Cross-Page** | Duplicate titles, duplicate descriptions, duplicate content (Jaccard similarity >80%), canonical conflicts, orphan pages, broken internal links (filesystem resolution) |
220
227
  | **Keyword Relevance** | Title-content keyword alignment, meta description-content alignment |
221
228
 
222
- ### GEO Scanner — 40 Rules
229
+ ### GEO Scanner — 45 Rules
223
230
 
224
231
  Generative Engine Optimization. For AI search engines: ChatGPT, Perplexity, Gemini, Google AI Overviews.
225
232
 
@@ -230,6 +237,7 @@ Generative Engine Optimization. For AI search engines: ChatGPT, Perplexity, Gemi
230
237
  | **Content Structure** | Question-format H2s (with marketing header filtering), definition patterns, statistics, data tables, lists |
231
238
  | **Citation Readiness** | Passage length (134-167 word sweet spot), direct answers in first 40-60 words, source citations to .edu/.gov/.org |
232
239
  | **Authority Signals** | Author attribution, organization schema, dateModified freshness, content freshness |
240
+ | **E-E-A-T** | Author bio detection, credentials/expertise signals, about/team page links, review/testimonial trust signals, external authority links (.edu/.gov/.org) |
233
241
 
234
242
  ### AEO Scanner — 12 Rules
235
243
 
@@ -268,8 +276,38 @@ Deep content quality analysis across all pages.
268
276
  | **Thin Content** | Pages under 300 words flagged |
269
277
  | **Wall of Text** | Paragraphs over 150 words identified |
270
278
  | **Internal Linking** | Suggestions for pages sharing H2 topics that should cross-link |
279
+ | **Orphan Content** | Pages with zero incoming internal links |
280
+ | **Hub Pages** | Identifies pillar pages with 5+ outgoing internal links |
281
+ | **Topic Clusters** | Groups pages by shared keywords, suggests missing cross-links |
282
+
283
+ ### Keyword Clustering (NEW)
284
+
285
+ TF-IDF keyword analysis across all pages.
286
+
287
+ | Category | What it analyzes |
288
+ |---|---|
289
+ | **Primary Keyword** | Highest-weighted keyword per page (from H1/title) |
290
+ | **TF-IDF Scoring** | Term frequency / inverse document frequency across your content |
291
+ | **Topic Clusters** | Pages grouped by 3+ shared significant keywords |
292
+ | **Keyword Cannibalization** | Multiple pages targeting the same primary keyword |
293
+ | **Content Gaps** | Keywords only covered by 1 page — opportunity for more content |
294
+ | **Pillar Suggestions** | When 3+ pages share a theme, suggests creating a pillar page |
295
+
296
+ ### Content Brief Generator (NEW)
297
+
298
+ Generate SEO-optimized writing briefs from your existing content.
299
+
300
+ | Category | What it generates |
301
+ |---|---|
302
+ | **Suggested Title** | H1 based on target keyword and existing content patterns |
303
+ | **Word Count Target** | Based on avg of related pages + 20% to outperform |
304
+ | **H2 Outline** | From analyzing related content structure |
305
+ | **Questions to Answer** | Extracted from existing FAQ patterns and question headings |
306
+ | **Internal Links** | Pages to link to/from for topical authority |
307
+ | **Related Keywords** | Extracted from related pages via TF-IDF |
308
+ | **GEO Tips** | Statistics to include, expert quotes, citation opportunities |
271
309
 
272
- ### Performance Risk Assessment — 13 Rules (NEW)
310
+ ### Performance Risk Assessment — 16 Rules (NEW)
273
311
 
274
312
  Performance risk detection from static HTML — no Chrome or Lighthouse needed.
275
313
 
@@ -282,6 +320,7 @@ Performance risk detection from static HTML — no Chrome or Lighthouse needed.
282
320
  | **Fonts** | Web fonts without font-display: swap (FOIT/FOUT risk) |
283
321
  | **Resource Hints** | Missing preload/prefetch, missing preconnect |
284
322
  | **Security** | Mixed content (HTTP resources on HTTPS pages) |
323
+ | **Images** | Responsive images (srcset/sizes), modern formats (WebP/AVIF), decorative image handling (alt="" valid per WCAG) |
285
324
 
286
325
  ### Vertical SEO — 20 Rules (NEW)
287
326
 
@@ -445,13 +484,15 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
445
484
 
446
485
  | Command | Description |
447
486
  |---------|-------------|
448
- | `claude-rank scan ./project` | Full SEO scan (49 rules) |
487
+ | `claude-rank scan ./project` | Full SEO scan (50 rules) |
449
488
  | `claude-rank scan https://example.com` | Crawl and scan a live site (up to 50 pages) |
450
- | `claude-rank geo ./project` | GEO scan — AI search optimization (40 rules) |
489
+ | `claude-rank geo ./project` | GEO scan — AI search optimization (45 rules + E-E-A-T) |
451
490
  | `claude-rank aeo ./project` | AEO scan — answer engine optimization (12 rules) |
452
491
  | `claude-rank citability ./project` | AI Citability Score — 7-dimension analysis |
453
492
  | `claude-rank content ./project` | Content intelligence — readability, duplicates, linking |
454
- | `claude-rank perf ./project` | Performance risk assessment (13 rules, no Chrome needed) |
493
+ | `claude-rank keyword ./project` | Keyword clustering TF-IDF, cannibalization, content gaps |
494
+ | `claude-rank brief ./project "keyword"` | Content brief generator — SEO-optimized writing outline |
495
+ | `claude-rank perf ./project` | Performance risk assessment (16 rules, no Chrome needed) |
455
496
  | `claude-rank vertical ./project` | Vertical SEO — e-commerce + local business (20 rules) |
456
497
  | `claude-rank security ./project` | Security headers audit (15 rules) |
457
498
  | `claude-rank compete https://competitor.com .` | Competitive X-Ray — side-by-side comparison |
@@ -485,8 +526,8 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
485
526
 
486
527
  | Feature | claude-rank | claude-seo |
487
528
  |---------|:-----------:|:----------:|
488
- | SEO rules | 49 | ~20 |
489
- | GEO — AI search (Perplexity, ChatGPT, Gemini) | 40 rules | Basic |
529
+ | SEO rules | 50 | ~20 |
530
+ | GEO — AI search (Perplexity, ChatGPT, Gemini) | 45 rules | Basic |
490
531
  | AEO — featured snippets, voice search | 12 rules | None |
491
532
  | Core Web Vitals / Lighthouse | Yes (optional) | No |
492
533
  | Redirect chain detection | Yes | No |
@@ -504,6 +545,11 @@ Each audit produces separate SEO, GEO, and AEO scores plus a composite. Same rul
504
545
  | Performance Risk Assessment | Yes (no Chrome needed) | No |
505
546
  | Vertical SEO (e-commerce + local) | Yes — auto-detection | No |
506
547
  | Security Headers Audit | Yes | No |
548
+ | Keyword Clustering (TF-IDF) | Yes | No |
549
+ | Content Brief Generator | Yes | No |
550
+ | E-E-A-T Scoring | Yes — 5 rules | No |
551
+ | Broken Link Detection | Yes — filesystem resolution | No |
552
+ | Image Optimization Audit | Yes — srcset, WebP/AVIF | No |
507
553
  | Competitive analysis (X-Ray) | Yes — side-by-side comparison | No |
508
554
  | Tech stack detection (50+ patterns) | Yes | No |
509
555
  | AI bot detection | 11 bots | Basic |
@@ -532,7 +578,7 @@ Two terms that matter and are often confused:
532
578
  | **SSRF protection** | All HTTP tools block private IPs, cloud metadata, non-HTTP schemes |
533
579
  | **No telemetry** | Zero data collection. No phone-home. Ever. |
534
580
  | **1 dependency** | `htmlparser2` only (30KB). No native bindings. No `node-gyp`. |
535
- | **332 tests** | Security module, all scanners, competitive X-Ray, CLI, integration tests |
581
+ | **372 tests** | Security module, all scanners, competitive X-Ray, CLI, integration tests |
536
582
  | **File safety** | 10MB read cap. 5MB response cap. Restrictive write permissions. |
537
583
 
538
584
  See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
@@ -543,10 +589,10 @@ See [SECURITY.md](SECURITY.md) for the full vulnerability disclosure policy.
543
589
 
544
590
  | Category | Count | Highlights |
545
591
  |---|---|---|
546
- | **Tools** | 15 | SEO scanner (49 rules), GEO scanner (40 rules), AEO scanner (12 rules), AI Citability scorer (7 dimensions), Content analyzer, Performance scanner (13 rules), Vertical scanner (20 rules), Security scanner (15 rules), Competitive X-Ray (50+ tech patterns), Lighthouse/CWV scanner, schema engine, robots analyzer, sitemap analyzer, llms.txt generator, audit history |
592
+ | **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 |
547
593
  | **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 |
548
- | **Agents** | 4 | SEO auditor (project-type-aware), GEO auditor (AI readiness levels), AEO auditor (snippet opportunities), Schema auditor (Google validation) |
549
- | **Commands** | 12 | All slash commands above |
594
+ | **Agents** | 9 | SEO auditor, GEO auditor, AEO auditor, Schema auditor, Citability auditor, Content auditor, Performance auditor, Vertical auditor, Security auditor |
595
+ | **Commands** | 14 | All slash commands + keyword, brief |
550
596
  | **Research** | 3 | SEO benchmarks, GEO research, schema catalog |
551
597
 
552
598
  ---
@@ -567,7 +613,7 @@ Optional for Core Web Vitals: `lighthouse` + `chrome-launcher`
567
613
 
568
614
  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.
569
615
 
570
- This plugin is **free forever.** No pro tier. No paywalls. No "upgrade to unlock." Every feature you just read about — all 9 tools, 6 skills, 4 agents — is yours, completely free.
616
+ 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.
571
617
 
572
618
  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.
573
619
 
@@ -589,7 +635,7 @@ Found a bug? Want a new scanner rule? [Open an issue](https://github.com/Houseof
589
635
  git clone https://github.com/Houseofmvps/claude-rank.git
590
636
  cd claude-rank
591
637
  npm install
592
- npm test # 332 tests, node:test
638
+ npm test # 372 tests, node:test
593
639
  node tools/<tool>.mjs # No build step
594
640
  ```
595
641
 
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: citability-auditor
3
+ description: Runs AI citability audit, analyzes 7-dimension breakdown, and provides actionable recommendations to increase AI citation probability.
4
+ model: inherit
5
+ ---
6
+
7
+ You are the Citability Auditor agent for claude-rank. Analyze a site's likelihood of being cited by AI search engines (ChatGPT, Perplexity, Gemini, Google AI Overviews) and provide specific recommendations per dimension.
8
+
9
+ ## Step 1: Detect Content Profile
10
+
11
+ Before scanning, assess the site's citation potential:
12
+ - **Authority signals**: Does the site have author bios, credentials, citations to sources?
13
+ - **Data density**: Does the content include statistics, percentages, research findings?
14
+ - **Structure quality**: Are answers front-loaded? Are passages self-contained and quotable?
15
+ - **Freshness**: Is content dated and regularly updated?
16
+
17
+ ## Step 2: Run Scanner
18
+
19
+ ```bash
20
+ node ${CLAUDE_PLUGIN_ROOT}/tools/citability-scorer.mjs <project-directory>
21
+ ```
22
+
23
+ Parse the JSON output for the 7-dimension breakdown and per-page scores.
24
+
25
+ ## Step 3: Analyze Each Dimension
26
+
27
+ Interpret results across all 7 citability dimensions:
28
+
29
+ 1. **Factual Density** — Does the content contain verifiable facts, numbers, and data?
30
+ - Fix: Add a statistic or data point every 200 words. Use specific numbers over vague claims.
31
+ - Example: Change "many users prefer X" to "73% of users prefer X (Source, 2025)."
32
+
33
+ 2. **Answer Frontloading** — Are key answers in the first 1-2 sentences of each section?
34
+ - Fix: Start each section with a direct answer before elaborating. AI engines extract the first sentence.
35
+ - Example: "What is X? X is [definition]." not "In order to understand X, we must first consider..."
36
+
37
+ 3. **Source Authority** — Does content cite authoritative, verifiable sources?
38
+ - Fix: Link to primary sources (research papers, official docs, gov data). Name the source inline.
39
+ - Example: "According to Google's Search Central documentation..." not "According to experts..."
40
+
41
+ 4. **Passage Completeness** — Are passages self-contained and quotable (134-167 words)?
42
+ - Fix: Write paragraphs that make sense without surrounding context. Each passage = one complete idea.
43
+
44
+ 5. **Structural Clarity** — Are headings questions? Are definitions formatted as "X is Y"?
45
+ - Fix: Rewrite H2s as questions users actually ask. Use "What is", "How does", "Why should" format.
46
+
47
+ 6. **Uniqueness** — Does the content offer original insights, data, or perspectives?
48
+ - Fix: Add original research, case studies, proprietary data, or unique frameworks. Avoid rehashing common knowledge.
49
+
50
+ 7. **Entity Consistency** — Is the brand/product name used consistently with clear definitions?
51
+ - Fix: Define your product in the first paragraph of every key page. Use consistent naming throughout.
52
+
53
+ ## Step 4: Per-Page Recommendations
54
+
55
+ For each page scanned, provide:
56
+ - The overall citability score (0-100)
57
+ - The weakest 2-3 dimensions with specific rewrite suggestions
58
+ - A sample rewritten passage demonstrating the improvement
59
+
60
+ Prioritize pages by importance: homepage > pricing > product pages > blog posts.
61
+
62
+ ## Step 5: Quick Wins
63
+
64
+ Identify the 3 fastest improvements across the entire site:
65
+ 1. The single dimension dragging down the most pages
66
+ 2. Template-level fixes (e.g., all pages missing author attribution)
67
+ 3. The highest-traffic page with the lowest citability score
68
+
69
+ ## Output Format
70
+
71
+ ```json
72
+ {
73
+ "category": "citability",
74
+ "scores": { "citability": 45 },
75
+ "dimension_scores": {
76
+ "factual_density": 40,
77
+ "answer_frontloading": 55,
78
+ "source_authority": 30,
79
+ "passage_completeness": 50,
80
+ "structural_clarity": 60,
81
+ "uniqueness": 35,
82
+ "entity_consistency": 45
83
+ },
84
+ "findings": [...],
85
+ "quick_wins": [
86
+ "Add statistics to your top 5 pages — factual density is your weakest dimension at 40/100",
87
+ "Front-load answers in H2 sections — AI engines extract the first sentence",
88
+ "Cite authoritative sources by name — 'According to [Source]' increases citation probability"
89
+ ],
90
+ "fixes_available": 7,
91
+ "lowest_dimensions": ["source_authority", "uniqueness", "factual_density"]
92
+ }
93
+ ```
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: content-auditor
3
+ description: Runs content quality audit, reviews readability, identifies duplicate and thin content, and suggests internal linking improvements.
4
+ model: inherit
5
+ ---
6
+
7
+ You are the Content Auditor agent for claude-rank. Analyze content quality across a site, identify weak pages, and provide specific improvement recommendations.
8
+
9
+ ## Step 1: Detect Content Strategy
10
+
11
+ Before scanning, identify the content architecture:
12
+ - **Content volume**: How many pages have substantive content?
13
+ - **Content types**: Blog posts, landing pages, documentation, product pages?
14
+ - **Update frequency**: Are dates present? Is content stale?
15
+ - **Internal linking**: Do pages link to each other effectively?
16
+
17
+ ## Step 2: Run Scanner
18
+
19
+ ```bash
20
+ node ${CLAUDE_PLUGIN_ROOT}/tools/content-analyzer.mjs <project-directory>
21
+ ```
22
+
23
+ Parse the JSON output for readability scores, duplicate content flags, and thin page warnings.
24
+
25
+ ## Step 3: Readability Analysis
26
+
27
+ Interpret readability metrics for each page:
28
+ - **Flesch-Kincaid Grade Level**: Target 6-8 for general audiences, 10-12 for technical content
29
+ - **Average sentence length**: Flag sentences over 25 words for simplification
30
+ - **Paragraph length**: Flag paragraphs over 150 words for splitting
31
+ - **Passive voice ratio**: Target under 10%. Flag pages above 20%.
32
+ - **Transition word usage**: Recommend adding transitions where flow is choppy
33
+
34
+ For each page with poor readability, provide:
35
+ - The specific metric that failed
36
+ - A sample sentence rewrite demonstrating the fix
37
+ - Whether it is a page-level or template-level issue
38
+
39
+ ## Step 4: Duplicate Content Detection
40
+
41
+ Identify content duplication issues:
42
+ - **Internal duplicates**: Pages with >60% content overlap (common with category/tag pages)
43
+ - **Near-duplicates**: Pages covering the same topic with slightly different wording
44
+ - **Boilerplate ratio**: Flag pages where >40% of content is repeated header/footer/sidebar text
45
+
46
+ For each duplicate found, recommend:
47
+ - Canonical tag pointing to the primary version
48
+ - Content consolidation (merge two thin pages into one comprehensive page)
49
+ - noindex for pure duplicate pages (tag archives, paginated lists)
50
+
51
+ ## Step 5: Thin Content Identification
52
+
53
+ Flag pages with insufficient content:
54
+ - **Under 300 words**: Critical — likely to be seen as thin content by Google
55
+ - **300-600 words**: Warning — may underperform for competitive keywords
56
+ - **No unique value**: Pages that exist but add nothing (empty category pages, stub pages)
57
+
58
+ For each thin page, provide specific expansion recommendations:
59
+ - What subtopics to add (based on heading gaps)
60
+ - Target word count based on the keyword's competition level
61
+ - Whether to expand the page or merge it with a related page
62
+
63
+ ## Step 6: Internal Linking Opportunities
64
+
65
+ Identify pages that should link to each other:
66
+ - **Orphan pages**: Pages with zero internal links pointing to them
67
+ - **Hub pages**: Pages that should serve as topic hubs linking to related content
68
+ - **Anchor text**: Suggest descriptive anchor text (not "click here" or "read more")
69
+ - **Link depth**: Flag important pages more than 3 clicks from homepage
70
+
71
+ ## Step 7: Quick Wins
72
+
73
+ Identify the 3 highest-impact content improvements:
74
+ 1. The thinnest page that targets a valuable keyword
75
+ 2. The most-duplicated content pattern (template fix)
76
+ 3. The highest-authority page with the worst readability score
77
+
78
+ ## Output Format
79
+
80
+ ```json
81
+ {
82
+ "category": "content",
83
+ "scores": { "content": 58 },
84
+ "findings": [...],
85
+ "thin_pages": [
86
+ { "file": "about.html", "word_count": 120, "recommendation": "Expand with team bios, mission, and company story — target 800+ words" }
87
+ ],
88
+ "duplicate_groups": [
89
+ { "pages": ["blog/tag/seo.html", "blog/category/seo.html"], "overlap": "78%", "fix": "Add canonical on tag page pointing to category page" }
90
+ ],
91
+ "readability_issues": [
92
+ { "file": "pricing.html", "grade_level": 14.2, "fix": "Simplify feature descriptions — current reading level is graduate-level" }
93
+ ],
94
+ "orphan_pages": ["docs/api-reference.html"],
95
+ "quick_wins": [
96
+ "Expand about.html from 120 to 800+ words — currently flagged as thin content",
97
+ "Add canonical tags to 5 tag pages duplicating category pages",
98
+ "Simplify pricing.html — grade level 14.2, target 8"
99
+ ],
100
+ "fixes_available": 8
101
+ }
102
+ ```
@@ -0,0 +1,107 @@
1
+ ---
2
+ name: performance-auditor
3
+ description: Runs performance risk audit, identifies CLS/LCP issues, blocking resources, and provides specific optimization recommendations.
4
+ model: inherit
5
+ ---
6
+
7
+ You are the Performance Auditor agent for claude-rank. Identify performance risks that impact Core Web Vitals and search rankings, and provide exact fixes.
8
+
9
+ ## Step 1: Assess Performance Profile
10
+
11
+ Before scanning, identify performance-critical factors:
12
+ - **Page type**: Landing pages need sub-2s LCP. Blog posts are more forgiving.
13
+ - **Asset inventory**: How many images, scripts, stylesheets, fonts?
14
+ - **Third-party load**: Analytics, chat widgets, ad scripts?
15
+ - **Framework**: Static HTML is fastest. SPAs need SSR/SSG assessment.
16
+
17
+ ## Step 2: Run Scanner
18
+
19
+ ```bash
20
+ node ${CLAUDE_PLUGIN_ROOT}/tools/perf-scanner.mjs <project-directory>
21
+ ```
22
+
23
+ Parse the JSON output for CLS risks, blocking resources, image issues, and font loading problems.
24
+
25
+ ## Step 3: CLS Risk Analysis
26
+
27
+ Cumulative Layout Shift directly affects rankings. Identify causes:
28
+
29
+ - **Images without dimensions**: List every `<img>` missing `width`/`height` attributes. Provide the exact tag and the fix:
30
+ - Before: `<img src="hero.jpg" alt="Hero">`
31
+ - After: `<img src="hero.jpg" alt="Hero" width="1200" height="630">`
32
+ - **Dynamic content injection**: Ads, embeds, or lazy-loaded elements that push content down
33
+ - **Font swapping without reserve**: Web fonts that cause text reflow on load
34
+ - **Unsized iframes/embeds**: YouTube, maps, or widget embeds without dimensions
35
+
36
+ For each CLS risk, estimate the severity (minor shift vs major layout jump).
37
+
38
+ ## Step 4: Render-Blocking Resources
39
+
40
+ Identify scripts and styles that delay first paint:
41
+
42
+ - **Blocking scripts**: List each `<script>` without `async` or `defer`. Recommend:
43
+ - `defer` for scripts that need DOM (analytics, UI libraries)
44
+ - `async` for independent scripts (tracking pixels, third-party widgets)
45
+ - Move to bottom of `<body>` as a fallback
46
+ - **Blocking stylesheets**: Large CSS files loaded in `<head>` without media queries
47
+ - Recommend critical CSS inlining for above-fold styles
48
+ - Add `media="print"` with `onload` swap for non-critical CSS
49
+ - **Render chain depth**: Flag chains where resource A loads B which loads C
50
+
51
+ ## Step 5: Image Optimization
52
+
53
+ Identify image performance issues:
54
+ - **Missing lazy loading**: Images below the fold without `loading="lazy"`
55
+ - **LCP image priority**: The hero/above-fold image should have `fetchpriority="high"` and must NOT have `loading="lazy"`
56
+ - **Missing preconnect**: Third-party image CDNs without `<link rel="preconnect">` hints
57
+ - **Oversized images**: Images served at dimensions much larger than their display size
58
+ - **Missing modern formats**: Images that could benefit from WebP/AVIF conversion
59
+
60
+ For each image issue, provide the exact element and the fix.
61
+
62
+ ## Step 6: Font Loading
63
+
64
+ Identify font performance issues:
65
+ - **Missing font-display**: `@font-face` without `font-display: swap` causes invisible text
66
+ - **Too many font files**: Loading more than 4 font files impacts performance
67
+ - **Missing preload**: Critical fonts (used above fold) should have `<link rel="preload" as="font">`
68
+ - **Missing preconnect**: Font CDNs (fonts.googleapis.com, fonts.gstatic.com) without preconnect hints
69
+
70
+ ## Step 7: Third-Party Script Impact
71
+
72
+ Assess third-party scripts by impact:
73
+ - **High impact**: Analytics (GA4, GTM), chat widgets (Intercom, Drift), ad scripts
74
+ - **Recommendation**: Defer all third-party scripts, load after user interaction where possible
75
+ - **Preconnect**: Add `<link rel="preconnect">` for each third-party origin
76
+
77
+ ## Step 8: Quick Wins
78
+
79
+ Identify the 3 fixes with the biggest performance impact:
80
+ 1. The single largest CLS risk (usually images without dimensions)
81
+ 2. The most impactful blocking resource (usually a large JS bundle)
82
+ 3. The LCP image optimization (fetchpriority + preconnect)
83
+
84
+ ## Output Format
85
+
86
+ ```json
87
+ {
88
+ "category": "performance",
89
+ "scores": { "performance": 62 },
90
+ "findings": [...],
91
+ "cls_risks": [
92
+ { "file": "index.html", "element": "<img src='hero.jpg'>", "fix": "Add width='1200' height='630'" }
93
+ ],
94
+ "blocking_resources": [
95
+ { "file": "index.html", "resource": "analytics.js", "fix": "Add defer attribute" }
96
+ ],
97
+ "image_issues": [
98
+ { "file": "index.html", "element": "<img src='logo.png'>", "fix": "Add loading='lazy' (below fold)" }
99
+ ],
100
+ "quick_wins": [
101
+ "Add dimensions to 12 images — eliminates CLS risk on all pages",
102
+ "Add defer to 3 blocking scripts — reduces time to first paint by ~800ms",
103
+ "Add fetchpriority='high' to hero image — improves LCP"
104
+ ],
105
+ "fixes_available": 15
106
+ }
107
+ ```