@houseofmvps/claude-rank 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +16 -0
- package/CLAUDE.md +65 -0
- package/LICENSE +21 -0
- package/README.md +151 -0
- package/agents/aeo-auditor.md +26 -0
- package/agents/geo-auditor.md +27 -0
- package/agents/schema-auditor.md +17 -0
- package/agents/seo-auditor.md +28 -0
- package/bin/claude-rank.mjs +66 -0
- package/commands/rank-aeo.md +3 -0
- package/commands/rank-audit.md +3 -0
- package/commands/rank-fix.md +3 -0
- package/commands/rank-geo.md +3 -0
- package/commands/rank-schema.md +3 -0
- package/commands/rank.md +5 -0
- package/hooks/hooks.json +10 -0
- package/llms.txt +21 -0
- package/package.json +58 -0
- package/research/geo-research.md +106 -0
- package/research/schema-catalog.md +170 -0
- package/research/seo-benchmarks.md +75 -0
- package/skills/rank/SKILL.md +48 -0
- package/skills/rank-aeo/SKILL.md +37 -0
- package/skills/rank-audit/SKILL.md +78 -0
- package/skills/rank-fix/SKILL.md +48 -0
- package/skills/rank-geo/SKILL.md +42 -0
- package/skills/rank-schema/SKILL.md +42 -0
- package/tools/aeo-scanner.mjs +394 -0
- package/tools/audit-history.mjs +117 -0
- package/tools/geo-scanner.mjs +531 -0
- package/tools/lib/html-parser.mjs +490 -0
- package/tools/lib/security.mjs +204 -0
- package/tools/llms-txt-generator.mjs +92 -0
- package/tools/robots-analyzer.mjs +190 -0
- package/tools/schema-engine.mjs +294 -0
- package/tools/seo-scanner.mjs +514 -0
- package/tools/sitemap-analyzer.mjs +224 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Schema Catalog — 25 Critical Schema Types (2026)
|
|
2
|
+
|
|
3
|
+
*All schemas use JSON-LD format. Fields marked REQUIRED are critical for validation; RECOMMENDED for AI visibility.*
|
|
4
|
+
|
|
5
|
+
## Content & Publishing
|
|
6
|
+
|
|
7
|
+
### 1. Article / BlogPosting / NewsArticle
|
|
8
|
+
**Use**: Blog posts, news, long-form content
|
|
9
|
+
- REQUIRED: headline, image, datePublished, author
|
|
10
|
+
- RECOMMENDED: dateModified, articleBody, wordCount, articleSection
|
|
11
|
+
|
|
12
|
+
### 2. NewsArticle
|
|
13
|
+
**Use**: Breaking news, journalism
|
|
14
|
+
- REQUIRED: headline, datePublished, author, body
|
|
15
|
+
- RECOMMENDED: dateline, printSection, printEdition
|
|
16
|
+
|
|
17
|
+
### 3. ScholarlyArticle
|
|
18
|
+
**Use**: Research papers, academic content
|
|
19
|
+
- REQUIRED: headline, author, datePublished
|
|
20
|
+
- RECOMMENDED: abstract, author.affiliation, citation
|
|
21
|
+
|
|
22
|
+
### 4. BreadcrumbList
|
|
23
|
+
**Use**: Navigation hierarchy on all pages
|
|
24
|
+
- REQUIRED: itemListElement[].name, itemListElement[].item
|
|
25
|
+
- RECOMMENDED: position
|
|
26
|
+
|
|
27
|
+
### 5. FAQPage
|
|
28
|
+
**Use**: FAQ sections, Q&A content
|
|
29
|
+
- REQUIRED: mainEntity[].question, mainEntity[].acceptedAnswer.text
|
|
30
|
+
- RECOMMENDED: acceptedAnswer.url
|
|
31
|
+
|
|
32
|
+
## E-Commerce & Products
|
|
33
|
+
|
|
34
|
+
### 6. Product
|
|
35
|
+
**Use**: Product pages, catalog listings
|
|
36
|
+
- REQUIRED: name, image, description
|
|
37
|
+
- RECOMMENDED: offers, aggregateRating, brand
|
|
38
|
+
|
|
39
|
+
### 7. Offer / AggregateOffer
|
|
40
|
+
**Use**: Pricing, availability, deals
|
|
41
|
+
- REQUIRED: price, priceCurrency, availability
|
|
42
|
+
- RECOMMENDED: url, priceValidUntil, seller
|
|
43
|
+
|
|
44
|
+
### 8. AggregateRating
|
|
45
|
+
**Use**: User reviews, ratings
|
|
46
|
+
- REQUIRED: ratingValue, ratingCount
|
|
47
|
+
- RECOMMENDED: bestRating, worstRating, reviewCount
|
|
48
|
+
|
|
49
|
+
### 9. Review / AggregateRating
|
|
50
|
+
**Use**: Customer reviews, testimonials
|
|
51
|
+
- REQUIRED: reviewRating.ratingValue, author, reviewBody
|
|
52
|
+
- RECOMMENDED: datePublished, reviewRating.ratingCount
|
|
53
|
+
|
|
54
|
+
## Local & Events
|
|
55
|
+
|
|
56
|
+
### 10. LocalBusiness
|
|
57
|
+
**Use**: Service businesses, locations
|
|
58
|
+
- REQUIRED: name, address, telephone
|
|
59
|
+
- RECOMMENDED: openingHours, geo, areaServed
|
|
60
|
+
|
|
61
|
+
### 11. Organization
|
|
62
|
+
**Use**: Company info, brand identity
|
|
63
|
+
- REQUIRED: name, url, logo
|
|
64
|
+
- RECOMMENDED: sameAs (social links), contact, description
|
|
65
|
+
|
|
66
|
+
### 12. Person
|
|
67
|
+
**Use**: Author bios, employee directories
|
|
68
|
+
- REQUIRED: name, image, url
|
|
69
|
+
- RECOMMENDED: jobTitle, affiliation, sameAs
|
|
70
|
+
|
|
71
|
+
### 13. Event
|
|
72
|
+
**Use**: Webinars, conferences, workshops
|
|
73
|
+
- REQUIRED: name, startDate, location
|
|
74
|
+
- RECOMMENDED: description, offers, performer, endDate
|
|
75
|
+
|
|
76
|
+
## Services & Expertise
|
|
77
|
+
|
|
78
|
+
### 14. Service
|
|
79
|
+
**Use**: Service pages, skill listings
|
|
80
|
+
- REQUIRED: name, description, areaServed
|
|
81
|
+
- RECOMMENDED: provider, offers, serviceType
|
|
82
|
+
|
|
83
|
+
### 15. ProfessionalService
|
|
84
|
+
**Use**: Consulting, legal, medical services
|
|
85
|
+
- REQUIRED: name, image, areaServed
|
|
86
|
+
- RECOMMENDED: hasCredential, makesOffer, serviceArea
|
|
87
|
+
|
|
88
|
+
### 16. MedicalBusiness
|
|
89
|
+
**Use**: Health, fitness, wellness
|
|
90
|
+
- REQUIRED: name, address, medicalSpecialty
|
|
91
|
+
- RECOMMENDED: hasCredential, knowsLanguage
|
|
92
|
+
|
|
93
|
+
## Knowledge & How-To
|
|
94
|
+
|
|
95
|
+
### 17. HowTo
|
|
96
|
+
**Use**: Step-by-step guides, tutorials, recipes
|
|
97
|
+
- REQUIRED: name, step[].name, step[].text
|
|
98
|
+
- RECOMMENDED: image, estimatedCost, totalTime
|
|
99
|
+
|
|
100
|
+
### 18. HowToStep
|
|
101
|
+
**Use**: Individual steps in guides
|
|
102
|
+
- REQUIRED: name, text
|
|
103
|
+
- RECOMMENDED: image, url
|
|
104
|
+
|
|
105
|
+
### 19. WebContent
|
|
106
|
+
**Use**: Generic web pages, landing pages
|
|
107
|
+
- REQUIRED: name, headline
|
|
108
|
+
- RECOMMENDED: datePublished, author, image
|
|
109
|
+
|
|
110
|
+
## Media & Creative
|
|
111
|
+
|
|
112
|
+
### 20. ImageObject
|
|
113
|
+
**Use**: Standalone images, galleries
|
|
114
|
+
- REQUIRED: url, name
|
|
115
|
+
- RECOMMENDED: caption, creditText, contentLocation
|
|
116
|
+
|
|
117
|
+
### 21. VideoObject
|
|
118
|
+
**Use**: Embedded videos, tutorials
|
|
119
|
+
- REQUIRED: name, description, thumbnailUrl, uploadDate
|
|
120
|
+
- RECOMMENDED: contentUrl, duration, transcript
|
|
121
|
+
|
|
122
|
+
### 22. Podcast / PodcastEpisode
|
|
123
|
+
**Use**: Audio content, podcasts
|
|
124
|
+
- REQUIRED: name, description, url
|
|
125
|
+
- RECOMMENDED: author, datePublished, audio
|
|
126
|
+
|
|
127
|
+
## Navigation & Lists
|
|
128
|
+
|
|
129
|
+
### 23. ItemList / CollectionPage
|
|
130
|
+
**Use**: Category pages, archives, collections
|
|
131
|
+
- REQUIRED: itemListElement[].name
|
|
132
|
+
- RECOMMENDED: itemListElement[].position, itemListElement[].url
|
|
133
|
+
|
|
134
|
+
### 24. SearchAction
|
|
135
|
+
**Use**: Site search integration
|
|
136
|
+
- REQUIRED: target (with {search_term_string})
|
|
137
|
+
- RECOMMENDED: query-input
|
|
138
|
+
|
|
139
|
+
## Q&A & Community
|
|
140
|
+
|
|
141
|
+
### 25. Question / Answer
|
|
142
|
+
**Use**: Q&A sites, forums, knowledge bases
|
|
143
|
+
- REQUIRED: name (question text), acceptedAnswer
|
|
144
|
+
- RECOMMENDED: author, dateCreated, upvoteCount
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Quick Implementation Priority
|
|
149
|
+
|
|
150
|
+
**High Impact** (do first):
|
|
151
|
+
- Article / BlogPosting
|
|
152
|
+
- Product
|
|
153
|
+
- Organization
|
|
154
|
+
- LocalBusiness
|
|
155
|
+
- BreadcrumbList
|
|
156
|
+
|
|
157
|
+
**Medium Impact** (recommended):
|
|
158
|
+
- AggregateRating / Review
|
|
159
|
+
- HowTo
|
|
160
|
+
- Event
|
|
161
|
+
- FAQPage
|
|
162
|
+
|
|
163
|
+
**Niche/Conditional**:
|
|
164
|
+
- NewsArticle, ScholarlyArticle
|
|
165
|
+
- MedicalBusiness, ProfessionalService
|
|
166
|
+
- Podcast, VideoObject
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
*Reference: schema.org, Google Search Central, Search Engine Journal*
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# SEO Benchmarks 2026
|
|
2
|
+
|
|
3
|
+
## Title & Meta Tags
|
|
4
|
+
- **Title length**: 50-60 characters (optimal CTR)
|
|
5
|
+
- **Meta description**: 140-160 characters (155 chars = full SERP width)
|
|
6
|
+
- **H1 per page**: 1 (critical for semantic clarity)
|
|
7
|
+
- **Focus keyword density**: 1-2% (natural language first)
|
|
8
|
+
|
|
9
|
+
## Page Word Count by Type
|
|
10
|
+
- **Homepage**: 500+ words (authority signal)
|
|
11
|
+
- **Blog post**: 1500+ words (top-3 correlation)
|
|
12
|
+
- **Product page**: 300+ words (conversion intent)
|
|
13
|
+
- **Service page**: 800+ words (expertise depth)
|
|
14
|
+
- **Category page**: 1000+ words (topical authority)
|
|
15
|
+
- **Landing page**: 600+ words (engagement signal)
|
|
16
|
+
|
|
17
|
+
## Core Web Vitals Targets (Ranking Factors)
|
|
18
|
+
- **LCP (Largest Contentful Paint)**: < 2.5 seconds (good)
|
|
19
|
+
- **INP (Interaction to Next Paint)**: < 200 milliseconds (good)
|
|
20
|
+
- **CLS (Cumulative Layout Shift)**: < 0.1 (good)
|
|
21
|
+
- Mobile TTL (Time To Interactive): < 4 seconds
|
|
22
|
+
|
|
23
|
+
## SERP Click-Through Rate by Position
|
|
24
|
+
- **Position 1**: 39.8% average CTR
|
|
25
|
+
- **Position 2**: 18.7% average CTR
|
|
26
|
+
- **Position 3**: 10.2% average CTR
|
|
27
|
+
- **Position 4**: 6.1% average CTR
|
|
28
|
+
- **Position 10**: 1.9% average CTR
|
|
29
|
+
- **Title/description quality**: Can increase CTR 20-30% at same position
|
|
30
|
+
|
|
31
|
+
## Featured Snippet Capture Rates
|
|
32
|
+
- **Listicle format (ordered/unordered)**: 52% capture rate
|
|
33
|
+
- **Paragraph format (40-60 words)**: 38% capture rate
|
|
34
|
+
- **Table format (structured data)**: 68% capture rate
|
|
35
|
+
- **Definition format (100-150 words)**: 44% capture rate
|
|
36
|
+
- **Step-by-step format (numbered)**: 61% capture rate
|
|
37
|
+
- **Optimal snippet length**: 40-60 words (40% of captures)
|
|
38
|
+
|
|
39
|
+
## Backlinks & Authority
|
|
40
|
+
- **Domain authority vs ranking**: Correlation 0.38 (moderate)
|
|
41
|
+
- **Backlink quality > quantity**: 10 high-authority links > 100 low-authority
|
|
42
|
+
- **Link anchor text diversity**: 80% branded, 15% variations, 5% exact match
|
|
43
|
+
- **Topical relevance**: 3x more important than domain authority
|
|
44
|
+
- **Link velocity**: 3-5 new links/month for established sites
|
|
45
|
+
|
|
46
|
+
## Page Performance Benchmarks
|
|
47
|
+
- **Median page load time**: 2.4 seconds (desktop), 5.9 seconds (mobile)
|
|
48
|
+
- **Images as % of page size**: 50-60% typical (optimize to < 40%)
|
|
49
|
+
- **JavaScript bundle size**: Target < 300KB (gzipped)
|
|
50
|
+
- **CSS bundle size**: Target < 50KB (gzipped)
|
|
51
|
+
- **First Input Delay**: < 100ms target (critical for UX)
|
|
52
|
+
|
|
53
|
+
## Content Freshness
|
|
54
|
+
- **Optimal update frequency**: 30-90 days for top rankings
|
|
55
|
+
- **E-E-A-T signals**: Experience, Expertise, Authoritativeness, Trustworthiness
|
|
56
|
+
- **Author entity**: Name + topic authority + credentials
|
|
57
|
+
- **Publication date**: Display publicly (correlates with trust)
|
|
58
|
+
|
|
59
|
+
## Indexability & Crawlability
|
|
60
|
+
- **Sitemaps**: < 50,000 URLs per sitemap.xml
|
|
61
|
+
- **Robots.txt**: Whitelist critical paths, crawl budget awareness
|
|
62
|
+
- **Internal linking**: 3-5 links per page minimum
|
|
63
|
+
- **Orphaned pages**: < 2% of total (discoverable from sitemap)
|
|
64
|
+
- **Redirect chains**: 0 (direct 301/302, max 1 hop)
|
|
65
|
+
|
|
66
|
+
## Mobile-First Indexing
|
|
67
|
+
- **Mobile viewport**: Required (responsive or mobile-specific)
|
|
68
|
+
- **Mobile load time**: Critical (target < 3 seconds)
|
|
69
|
+
- **Touch targets**: 48x48 pixels minimum
|
|
70
|
+
- **Readability**: Font size 16px+, line spacing 1.5+
|
|
71
|
+
- **Mobile CTR boost**: Up to 25% higher for mobile-optimized sites
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
*Data sources: Google Search Central, Ahrefs, SEMrush, Moz 2026 studies*
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank
|
|
3
|
+
description: "Main orchestrator for claude-rank SEO/GEO/AEO toolkit. Routes to specialized sub-skills."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rank — SEO/GEO/AEO Toolkit
|
|
7
|
+
|
|
8
|
+
## Routing
|
|
9
|
+
|
|
10
|
+
| Command | Skill | Description |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `/rank` or `/rank status` | (inline) | Quick health check — show all scores |
|
|
13
|
+
| `/rank audit [dir]` | rank-audit | Full audit + auto-fix |
|
|
14
|
+
| `/rank geo [dir]` | rank-geo | AI search optimization |
|
|
15
|
+
| `/rank aeo [dir]` | rank-aeo | Answer engine optimization |
|
|
16
|
+
| `/rank fix [dir]` | rank-fix | Auto-fix all findings |
|
|
17
|
+
| `/rank schema [dir]` | rank-schema | Schema detect/validate/generate |
|
|
18
|
+
| `/rank technical [dir]` | rank-technical | Technical SEO (Phase 2) |
|
|
19
|
+
| `/rank content [dir]` | rank-content | E-E-A-T content analysis (Phase 2) |
|
|
20
|
+
| `/rank speed [dir]` | rank-speed | Core Web Vitals (Phase 2) |
|
|
21
|
+
| `/rank local [dir]` | rank-local | Local SEO (Phase 3) |
|
|
22
|
+
| `/rank images [dir]` | rank-images | Image optimization (Phase 3) |
|
|
23
|
+
| `/rank competitor [dir]` | rank-competitor | Competitive intelligence (Phase 4) |
|
|
24
|
+
| `/rank keywords [dir]` | rank-keywords | Keyword research (Phase 4) |
|
|
25
|
+
| `/rank report [dir]` | rank-report | Client report generation (Phase 5) |
|
|
26
|
+
| `/rank plan [type]` | rank-plan | Strategic SEO roadmap (Phase 5) |
|
|
27
|
+
|
|
28
|
+
## Quick Health Check (bare /rank)
|
|
29
|
+
|
|
30
|
+
1. Run available scanners in parallel:
|
|
31
|
+
- `node ${CLAUDE_PLUGIN_ROOT}/tools/seo-scanner.mjs <dir>`
|
|
32
|
+
- `node ${CLAUDE_PLUGIN_ROOT}/tools/geo-scanner.mjs <dir>`
|
|
33
|
+
- `node ${CLAUDE_PLUGIN_ROOT}/tools/aeo-scanner.mjs <dir>`
|
|
34
|
+
2. Display scores table with grades (SEO, GEO, AEO; Technical and Content show "—" until Phase 2)
|
|
35
|
+
3. **Overall Rank Score** = weighted average: SEO (40%), GEO (40%), AEO (20%)
|
|
36
|
+
4. Show top 3 quick wins (highest-impact fixes)
|
|
37
|
+
5. Show trend vs last scan (if history exists)
|
|
38
|
+
|
|
39
|
+
**Grade thresholds:** A (90-100), B (80-89), C (70-79), D (60-69), F (<60)
|
|
40
|
+
|
|
41
|
+
## Project Type Detection
|
|
42
|
+
|
|
43
|
+
Scan for signals to auto-detect:
|
|
44
|
+
- **SaaS**: pricing page, free trial CTA, /dashboard route
|
|
45
|
+
- **E-commerce**: product pages, cart, checkout, Product schema
|
|
46
|
+
- **Local business**: service area, phone, address, Google Maps embed
|
|
47
|
+
- **Publisher/Blog**: /blog, article schema, author bios, RSS feed
|
|
48
|
+
- **Agency**: client testimonials, case studies, service pages
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-aeo
|
|
3
|
+
description: Answer engine optimization. Optimize for featured snippets, voice search, People Also Ask.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AEO Audit — Answer Engine Optimization
|
|
7
|
+
|
|
8
|
+
## Phase 1: Scan
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/aeo-scanner.mjs <project-directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Phase 2: Report
|
|
15
|
+
|
|
16
|
+
Present AEO findings:
|
|
17
|
+
- **Schema** — FAQPage, HowTo, speakable, Article/BlogPosting
|
|
18
|
+
- **Snippet Readiness** — direct answers, numbered steps, concise paragraphs
|
|
19
|
+
- **Voice Search** — conversational patterns, 29-word answer targets
|
|
20
|
+
|
|
21
|
+
## Phase 3: Fix
|
|
22
|
+
|
|
23
|
+
- Missing FAQPage → detect Q&A patterns in content, generate schema: `node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs generate FAQPage`
|
|
24
|
+
- Missing speakable → add speakable schema targeting key answer sections
|
|
25
|
+
- Long answers → restructure to 40-60 word direct answers after question H2s
|
|
26
|
+
- No numbered steps → convert procedural content to ordered lists
|
|
27
|
+
- Missing featured image → flag for user to add hero image
|
|
28
|
+
|
|
29
|
+
## Phase 4: Verify
|
|
30
|
+
|
|
31
|
+
Re-run aeo-scanner. Show before/after AEO score.
|
|
32
|
+
|
|
33
|
+
## Phase 5: Voice Search Guidance
|
|
34
|
+
|
|
35
|
+
- Target conversational long-tail queries ("how do I...", "what is the best...")
|
|
36
|
+
- Keep primary answers under 29 words (Google voice search average)
|
|
37
|
+
- Add People Also Ask patterns as H2/H3 questions throughout content
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-audit
|
|
3
|
+
description: Full SEO/GEO/AEO audit with auto-fix. Scans, reports, fixes, and verifies.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Full Audit
|
|
7
|
+
|
|
8
|
+
Comprehensive search optimization audit. Finds issues AND fixes them.
|
|
9
|
+
|
|
10
|
+
## Phase 1: Parallel Scan
|
|
11
|
+
|
|
12
|
+
Run all three scanners:
|
|
13
|
+
```bash
|
|
14
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/seo-scanner.mjs <project-directory>
|
|
15
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/geo-scanner.mjs <project-directory>
|
|
16
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/aeo-scanner.mjs <project-directory>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Parse JSON output from each for findings and scores.
|
|
20
|
+
|
|
21
|
+
## Phase 2: Report
|
|
22
|
+
|
|
23
|
+
Present findings grouped by category (SEO / GEO / AEO) with severity.
|
|
24
|
+
Show scores table: SEO, GEO, AEO, Overall Rank Score.
|
|
25
|
+
Show summary: X critical, Y high, Z medium, W low.
|
|
26
|
+
|
|
27
|
+
## Phase 3: Auto-Fix
|
|
28
|
+
|
|
29
|
+
For each finding, apply the appropriate fix:
|
|
30
|
+
|
|
31
|
+
**SEO fixes** (Edit tool on HTML files):
|
|
32
|
+
- Missing title → add `<title>` in `<head>`
|
|
33
|
+
- Missing meta description → add `<meta name="description">`
|
|
34
|
+
- Missing OG tags → generate from page content
|
|
35
|
+
- Missing H1 → add heading from page content
|
|
36
|
+
- Missing alt text → add descriptive alt attributes
|
|
37
|
+
- Missing canonical → add `<link rel="canonical">`
|
|
38
|
+
- Missing sitemap → run: `node ${CLAUDE_PLUGIN_ROOT}/tools/sitemap-analyzer.mjs generate <dir> <url>`
|
|
39
|
+
- Missing robots.txt → run: `node ${CLAUDE_PLUGIN_ROOT}/tools/robots-analyzer.mjs generate <dir> <url>`
|
|
40
|
+
|
|
41
|
+
**GEO fixes**:
|
|
42
|
+
- Missing llms.txt → run: `node ${CLAUDE_PLUGIN_ROOT}/tools/llms-txt-generator.mjs <dir>`
|
|
43
|
+
- Missing structured data → run: `node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs generate <type> --out=<path>`
|
|
44
|
+
- Blocked AI bots → update robots.txt to allow GPTBot, PerplexityBot, ClaudeBot, Google-Extended
|
|
45
|
+
- Improve content structure: add question-based H2s, TL;DR summaries, definition patterns
|
|
46
|
+
|
|
47
|
+
**AEO fixes**:
|
|
48
|
+
- Missing FAQ schema → generate FAQPage from Q&A content on page
|
|
49
|
+
- Missing speakable → add speakable schema for key content sections
|
|
50
|
+
- Snippet optimization → restructure answers to 40-60 word direct answers
|
|
51
|
+
|
|
52
|
+
## Phase 4: Verify
|
|
53
|
+
|
|
54
|
+
Re-run all three scanners. Show before/after score comparison.
|
|
55
|
+
|
|
56
|
+
## Phase 5: Save History
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/audit-history.mjs save <dir> seo <score>
|
|
60
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/audit-history.mjs save <dir> geo <score>
|
|
61
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/audit-history.mjs save <dir> aeo <score>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Phase 6: Content Strategy
|
|
65
|
+
|
|
66
|
+
Advise on content optimizations the scanner cannot automate:
|
|
67
|
+
- Rewrite H2 headers as questions for AI citation
|
|
68
|
+
- Add concise TL;DR summaries under key sections
|
|
69
|
+
- Write in citation-ready format: factual, quotable, 134-167 word passages
|
|
70
|
+
- Create comparison tables, statistics pages, glossaries
|
|
71
|
+
|
|
72
|
+
## Phase 7: Backlink Strategy
|
|
73
|
+
|
|
74
|
+
Guide link building: create link-worthy assets, guest posting, broken link building, HARO.
|
|
75
|
+
|
|
76
|
+
## Phase 8: Next Steps
|
|
77
|
+
|
|
78
|
+
Recommend which /rank sub-commands to run next based on lowest scores.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-fix
|
|
3
|
+
description: Auto-fix all SEO/GEO/AEO findings in one command. Scan, fix, verify.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Auto-Fix All
|
|
7
|
+
|
|
8
|
+
Fix everything that can be automated in one pass.
|
|
9
|
+
|
|
10
|
+
## Step 1: Scan
|
|
11
|
+
|
|
12
|
+
Run all scanners to get current findings:
|
|
13
|
+
```bash
|
|
14
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/seo-scanner.mjs <dir>
|
|
15
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/geo-scanner.mjs <dir>
|
|
16
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/aeo-scanner.mjs <dir>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Step 2: Fix
|
|
20
|
+
|
|
21
|
+
For each finding, apply automated fix:
|
|
22
|
+
|
|
23
|
+
**File generation** (create missing files):
|
|
24
|
+
- robots.txt → `node ${CLAUDE_PLUGIN_ROOT}/tools/robots-analyzer.mjs generate <dir> <url>`
|
|
25
|
+
- sitemap.xml → `node ${CLAUDE_PLUGIN_ROOT}/tools/sitemap-analyzer.mjs generate <dir> <url>`
|
|
26
|
+
- llms.txt → `node ${CLAUDE_PLUGIN_ROOT}/tools/llms-txt-generator.mjs <dir>`
|
|
27
|
+
- JSON-LD schema → `node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs generate <type> --out=<path>`
|
|
28
|
+
|
|
29
|
+
**HTML edits** (use Edit tool):
|
|
30
|
+
- Missing title, meta description, OG tags, canonical, viewport, charset, lang
|
|
31
|
+
- Missing H1, alt text on images, semantic landmarks (main, nav, footer)
|
|
32
|
+
- Inject generated schema into head before closing tag
|
|
33
|
+
|
|
34
|
+
**robots.txt edits** (use Edit tool):
|
|
35
|
+
- Unblock AI bots (GPTBot, PerplexityBot, ClaudeBot, Google-Extended)
|
|
36
|
+
- Add Sitemap directive
|
|
37
|
+
|
|
38
|
+
## Step 3: Verify
|
|
39
|
+
|
|
40
|
+
Re-run all scanners. Report:
|
|
41
|
+
- Issues found: X
|
|
42
|
+
- Auto-fixed: Y
|
|
43
|
+
- Remaining (manual): Z
|
|
44
|
+
- Score improvement: before → after
|
|
45
|
+
|
|
46
|
+
## Step 4: Save History
|
|
47
|
+
|
|
48
|
+
Save new scores via audit-history tool.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-geo
|
|
3
|
+
description: AI search optimization audit. Optimize content for ChatGPT, Perplexity, Google AI Overviews.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GEO Audit — AI Search Optimization
|
|
7
|
+
|
|
8
|
+
## Phase 1: Scan
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/geo-scanner.mjs <project-directory>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Phase 2: Report
|
|
15
|
+
|
|
16
|
+
Present GEO findings grouped by:
|
|
17
|
+
- **AI Bot Access** — which bots are allowed/blocked in robots.txt
|
|
18
|
+
- **Structured Data** — JSON-LD quality for AI extraction
|
|
19
|
+
- **Content Structure** — question headers, definitions, citation-ready passages
|
|
20
|
+
- **Discoverability** — llms.txt, sitemap, breadcrumbs
|
|
21
|
+
|
|
22
|
+
## Phase 3: Fix
|
|
23
|
+
|
|
24
|
+
- Blocked AI bots → update robots.txt: `node ${CLAUDE_PLUGIN_ROOT}/tools/robots-analyzer.mjs generate <dir> <url>`
|
|
25
|
+
- Missing llms.txt → generate: `node ${CLAUDE_PLUGIN_ROOT}/tools/llms-txt-generator.mjs <dir>`
|
|
26
|
+
- Missing Organization schema → generate: `node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs generate Organization --name="..." --url="..."`
|
|
27
|
+
- Missing Author schema → generate Person schema with credentials
|
|
28
|
+
- No question H2s → rewrite key H2 headers as "What is...", "How does...", "Why..."
|
|
29
|
+
- No TL;DR patterns → add 1-2 sentence summaries under important H2 sections
|
|
30
|
+
- No definition patterns → add "[Product] is [clear definition]" in opening paragraphs
|
|
31
|
+
|
|
32
|
+
## Phase 4: Verify
|
|
33
|
+
|
|
34
|
+
Re-run geo-scanner. Show before/after GEO score.
|
|
35
|
+
|
|
36
|
+
## Phase 5: Advanced Guidance
|
|
37
|
+
|
|
38
|
+
Advise user to:
|
|
39
|
+
1. Search top 5 keywords in ChatGPT, Perplexity, Google AI Overviews
|
|
40
|
+
2. Note which competitors are cited
|
|
41
|
+
3. Create citation-ready content for each gap (134-167 word passages)
|
|
42
|
+
4. Add comparison tables and statistics (156% higher AI selection with multimedia)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rank-schema
|
|
3
|
+
description: Structured data management. Detect, validate, generate, and inject JSON-LD schema.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Schema Management
|
|
7
|
+
|
|
8
|
+
## Phase 1: Detect
|
|
9
|
+
|
|
10
|
+
Scan all HTML files for existing JSON-LD:
|
|
11
|
+
```bash
|
|
12
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs detect <dir>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Report: which schema types found, which files contain them.
|
|
16
|
+
|
|
17
|
+
## Phase 2: Validate
|
|
18
|
+
|
|
19
|
+
For each detected schema, validate against Google's requirements. Report: missing required fields, deprecated types, invalid values.
|
|
20
|
+
|
|
21
|
+
## Phase 3: Recommend
|
|
22
|
+
|
|
23
|
+
Based on project type detection:
|
|
24
|
+
- SaaS → Organization, WebSite+SearchAction, SoftwareApplication, FAQPage
|
|
25
|
+
- E-commerce → Product+Offer, Organization, BreadcrumbList, FAQPage
|
|
26
|
+
- Local → LocalBusiness, Organization, FAQPage, BreadcrumbList
|
|
27
|
+
- Publisher → Article/BlogPosting, Person (author), Organization, BreadcrumbList
|
|
28
|
+
|
|
29
|
+
Flag missing recommended types.
|
|
30
|
+
|
|
31
|
+
## Phase 4: Generate + Inject
|
|
32
|
+
|
|
33
|
+
For each missing schema:
|
|
34
|
+
```bash
|
|
35
|
+
node ${CLAUDE_PLUGIN_ROOT}/tools/schema-engine.mjs generate <type> --name="..." --url="..."
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Inject into HTML: add script tag before closing head using Edit tool.
|
|
39
|
+
|
|
40
|
+
## Phase 5: Verify
|
|
41
|
+
|
|
42
|
+
Re-run detect to confirm all schema is present and valid.
|