geo-ai-search-optimization 2.7.0 → 2.8.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.
- package/README.md +168 -45
- package/action.yml +1 -1
- package/package.json +1 -1
- package/src/accessibility-audit.js +549 -0
- package/src/batch-full-page-audit.js +4 -1
- package/src/cache-layer.js +228 -0
- package/src/cli-site-ops-commands.js +59 -2
- package/src/compare.js +4 -2
- package/src/csv-export.js +4 -3
- package/src/dashboard-html.js +1 -1
- package/src/deep-benchmark.js +4 -2
- package/src/diagnose.js +9 -3
- package/src/fetch-utils.js +1 -1
- package/src/full-page-audit.js +58 -18
- package/src/geo-score-api.js +70 -2
- package/src/index.d.ts +96 -1
- package/src/index.js +3 -0
- package/src/pdf-report.js +1 -1
- package/src/performance-hints.js +256 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The most comprehensive open-source CLI toolkit for **Generative Engine Optimization (GEO)**. Optimize your website for AI-powered search engines — ChatGPT, Perplexity, Gemini, Google AI Overviews, and Bing Copilot.
|
|
4
4
|
|
|
5
|
-
**Zero dependencies.
|
|
5
|
+
**Zero dependencies. 55+ commands. 18+ analysis dimensions. Full TypeScript support. REST API included.**
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/geo-ai-search-optimization)
|
|
8
8
|
[](LICENSE)
|
|
@@ -25,7 +25,7 @@ npx geo-ai-search-optimization diagnose https://example.com
|
|
|
25
25
|
# Smart diagnosis — auto-detects URL, directory, or file
|
|
26
26
|
geo-ai-search-optimization diagnose https://example.com
|
|
27
27
|
|
|
28
|
-
# Full
|
|
28
|
+
# Full multi-dimension page audit
|
|
29
29
|
geo-ai-search-optimization full-page-audit https://example.com/blog/post
|
|
30
30
|
|
|
31
31
|
# Generate ready-to-use fix code
|
|
@@ -34,18 +34,18 @@ geo-ai-search-optimization auto-fix https://example.com/blog/post
|
|
|
34
34
|
# Compare two pages
|
|
35
35
|
geo-ai-search-optimization compare https://yoursite.com https://competitor.com
|
|
36
36
|
|
|
37
|
-
#
|
|
38
|
-
geo-ai-search-optimization
|
|
37
|
+
# Interactive HTML dashboard
|
|
38
|
+
geo-ai-search-optimization dashboard https://example.com --out report.html
|
|
39
39
|
|
|
40
|
-
#
|
|
41
|
-
geo-ai-search-optimization
|
|
40
|
+
# Start REST API server
|
|
41
|
+
geo-ai-search-optimization api-server --port 3456
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
## What It Does
|
|
45
45
|
|
|
46
46
|
GEO is **Generative Engine Optimization** — the practice of making your content understandable, extractable, and citable by AI search engines.
|
|
47
47
|
|
|
48
|
-
This tool analyzes your pages across **
|
|
48
|
+
This tool analyzes your pages across **18+ dimensions** and tells you exactly what to fix:
|
|
49
49
|
|
|
50
50
|
| Dimension | What It Checks |
|
|
51
51
|
|-----------|---------------|
|
|
@@ -55,12 +55,20 @@ This tool analyzes your pages across **12 dimensions** and tells you exactly wha
|
|
|
55
55
|
| **Readability** | Flesch-Kincaid grade, sentence length, passive voice, reading time |
|
|
56
56
|
| **Heading Structure** | H1-H6 hierarchy, semantic coverage, question headings |
|
|
57
57
|
| **Internal Links** | Link count, anchor text quality, path depth |
|
|
58
|
+
| **Link Quality** | External link health, broken links, domain diversity, rel attributes |
|
|
58
59
|
| **Social Meta** | Open Graph (10 tags), Twitter Card (7 tags) |
|
|
59
60
|
| **Platform Readiness** | ChatGPT, Perplexity, Gemini, Google AI Overviews, Bing Copilot |
|
|
60
61
|
| **Schema Validation** | JSON-LD correctness, required fields, AI discoverability enhancements |
|
|
61
|
-
| **Content Freshness** | Date extraction
|
|
62
|
+
| **Content Freshness** | Date extraction, temporal signals, stale references, evergreen scoring |
|
|
62
63
|
| **Security** | HTTPS, security headers, viewport, robots meta, mixed content |
|
|
63
64
|
| **Topic Coverage** | TF-IDF keywords, bigrams, topic clusters |
|
|
65
|
+
| **Image Audit** | Alt text quality, lazy loading, srcset, og:image, ImageObject schema |
|
|
66
|
+
| **Backlink Profile** | Authority signals, expert authorship, original research, link-worthiness |
|
|
67
|
+
| **AI Snippet Readiness** | Predicted AI citations, quotable passages, snippet simulation |
|
|
68
|
+
| **Multi-Language** | Language detection, hreflang validation, content-language consistency |
|
|
69
|
+
| **Canonical** | Canonical URL issues, signal conflicts, redirect consistency |
|
|
70
|
+
| **Accessibility** | Semantic HTML, heading order, alt text, ARIA landmarks, form labels, skip links |
|
|
71
|
+
| **Performance** | Page weight, render-blocking resources, lazy loading, resource hints |
|
|
64
72
|
|
|
65
73
|
## Commands
|
|
66
74
|
|
|
@@ -68,17 +76,19 @@ This tool analyzes your pages across **12 dimensions** and tells you exactly wha
|
|
|
68
76
|
|
|
69
77
|
```bash
|
|
70
78
|
diagnose <url|dir|file> # Auto-detect input, run right analysis
|
|
71
|
-
|
|
79
|
+
summary <url|dir|file> # One-line score summary
|
|
80
|
+
compare <page-A> <page-B> # Multi-dimension side-by-side comparison
|
|
72
81
|
auto-fix <url|file> # Generate fix code (meta, JSON-LD, robots.txt, llms.txt)
|
|
82
|
+
explain <url|file> # Explain scores with evidence
|
|
73
83
|
```
|
|
74
84
|
|
|
75
85
|
### Page-Level Analysis
|
|
76
86
|
|
|
77
87
|
```bash
|
|
78
88
|
page-audit <url|file> # Basic GEO page audit
|
|
79
|
-
full-page-audit <url|file> # Full
|
|
89
|
+
full-page-audit <url|file> # Full multi-dimension audit (with --save for snapshots)
|
|
80
90
|
batch-page-audit <urls...> # Batch basic audits
|
|
81
|
-
batch-full-page-audit <urls...> # Batch
|
|
91
|
+
batch-full-page-audit <urls...> # Batch multi-dimension audits
|
|
82
92
|
```
|
|
83
93
|
|
|
84
94
|
### Project-Level Analysis
|
|
@@ -87,9 +97,10 @@ batch-full-page-audit <urls...> # Batch 12-dimension audits
|
|
|
87
97
|
scan <dir> # Signal scanning
|
|
88
98
|
audit <dir> # Project audit with scoring
|
|
89
99
|
full-audit <dir> # Project + infra + optional page sampling
|
|
100
|
+
bulk-optimize <url|urls-file> # Site-wide audit with prioritized fix list
|
|
90
101
|
```
|
|
91
102
|
|
|
92
|
-
### Specialized Analysis (
|
|
103
|
+
### Specialized Analysis (20+ commands)
|
|
93
104
|
|
|
94
105
|
```bash
|
|
95
106
|
crawlers <url|file> # AI crawler access (GPTBot, ClaudeBot, etc.)
|
|
@@ -97,7 +108,8 @@ citability <url|file> # Static citability scoring
|
|
|
97
108
|
eeat <url|file> # E-E-A-T signal analysis
|
|
98
109
|
readability <url|file> # Flesch-Kincaid, reading ease
|
|
99
110
|
heading-structure <url|file> # H1-H6 hierarchy analysis
|
|
100
|
-
internal-links <url|file> #
|
|
111
|
+
internal-links <url|file> # Internal link analysis
|
|
112
|
+
link-quality <url|file> # External link quality audit
|
|
101
113
|
social-meta <url|file> # OG + Twitter tags
|
|
102
114
|
platform-ready <url|file> # Multi-platform readiness
|
|
103
115
|
validate-schema <url|file> # JSON-LD validation
|
|
@@ -105,23 +117,51 @@ validate-llms <url|file> # llms.txt validation
|
|
|
105
117
|
sitemap <url|file> # XML sitemap analysis
|
|
106
118
|
security <url|file> # Security headers + checks
|
|
107
119
|
freshness <url|file> # Content age analysis
|
|
120
|
+
content-freshness <url|file> # Deep freshness with temporal signals
|
|
108
121
|
topics <url|file> # Keyword + topic extraction
|
|
122
|
+
image-audit <url|file> # Image SEO/GEO audit
|
|
123
|
+
backlink-profile <url|file> # Authority signal analysis
|
|
124
|
+
ai-snippet <url|file> # AI snippet simulation
|
|
125
|
+
canonical <url|file> # Canonical URL diagnostics
|
|
126
|
+
multi-lang <url|file> # Multi-language / hreflang audit
|
|
127
|
+
accessibility <url|file> # Accessibility audit (12 checks)
|
|
128
|
+
performance <url|file> # Performance hints for AI crawlers
|
|
109
129
|
```
|
|
110
130
|
|
|
111
131
|
### Competitive Analysis
|
|
112
132
|
|
|
113
133
|
```bash
|
|
114
|
-
benchmark <url> --competitors <urls>
|
|
115
|
-
|
|
134
|
+
benchmark <url> --competitors <urls> # Signal matrix comparison
|
|
135
|
+
deep-benchmark <url> --competitors <urls> # Deep multi-dimension benchmark
|
|
136
|
+
content-gap <url> --competitors <urls> # Content gap analysis
|
|
137
|
+
keyword-gap <url> --competitors <urls> # Keyword coverage gaps
|
|
138
|
+
track-competitors <url> --competitors <urls> # Persistent competitor tracking
|
|
139
|
+
watch-competitors <url> --competitors <urls> # Single-pass competitor watch
|
|
116
140
|
```
|
|
117
141
|
|
|
118
|
-
###
|
|
142
|
+
### Content Generation & Optimization
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
auto-fix <url|file> # Generate meta tags, JSON-LD, robots.txt, llms.txt
|
|
146
|
+
generate-llms <url|file> # Smart llms.txt generation from site content
|
|
147
|
+
optimize-llms <url|file> # Optimize existing llms.txt
|
|
148
|
+
generate-schema <url|file> # Auto-generate JSON-LD schemas
|
|
149
|
+
generate-sitemap <url|dir> # Generate XML sitemap
|
|
150
|
+
rewrite-content <url|file> # Content improvement suggestions
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Tracking & Monitoring
|
|
119
154
|
|
|
120
155
|
```bash
|
|
121
156
|
full-page-audit <url> --save # Save page snapshot
|
|
122
157
|
page-trend <url> # View page score history
|
|
123
158
|
trend # View project score trend
|
|
124
|
-
|
|
159
|
+
monitor <url> # Detect score drops
|
|
160
|
+
score-history <url> # View score history with sparklines
|
|
161
|
+
record-score <url> --score <n> # Record a score entry
|
|
162
|
+
alert-check <url> # Evaluate alert rules
|
|
163
|
+
cache-stats # View cache statistics
|
|
164
|
+
cache-clear # Clear cached results
|
|
125
165
|
ci <dir> --min-score 60 # CI/CD gate
|
|
126
166
|
watch <dir> # Auto-audit on file changes
|
|
127
167
|
init-hook # Git pre-commit hook
|
|
@@ -130,30 +170,69 @@ init-hook # Git pre-commit hook
|
|
|
130
170
|
### Citation Tracking
|
|
131
171
|
|
|
132
172
|
```bash
|
|
133
|
-
citation-check <url> --queries <q1,q2>
|
|
173
|
+
citation-check <url> --queries <q1,q2> # Check if cited in AI search
|
|
134
174
|
citation-monitor <url> --queries-file <file> # Monitor citation rate
|
|
135
175
|
```
|
|
136
176
|
|
|
137
|
-
###
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
auto-fix <url|file> # Generate meta tags, JSON-LD, robots.txt, llms.txt
|
|
141
|
-
init-llms [dir] # Generate llms.txt template
|
|
142
|
-
init-schema <type> [dir] # Generate JSON-LD template
|
|
143
|
-
init-config [dir] # Generate .georc.json
|
|
144
|
-
init-hook [dir] # Generate pre-commit hook
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### Reports & Export
|
|
177
|
+
### Reports & Output
|
|
148
178
|
|
|
149
179
|
```bash
|
|
150
180
|
report <input> # Unified report (markdown/html/json)
|
|
151
181
|
pdf-report <audit.json> # PDF-ready HTML report
|
|
182
|
+
dashboard <url|file> # Interactive HTML dashboard
|
|
183
|
+
slack-report <audit.json> # Slack/Discord webhook report
|
|
152
184
|
html-pack <input> --out-dir <dir> # Static HTML pages
|
|
153
185
|
export-pack <input> --out-dir <dir> # Multi-format export
|
|
154
186
|
publish-pack <input> --out-dir <dir> # Full deliverable package
|
|
155
187
|
```
|
|
156
188
|
|
|
189
|
+
### REST API Server
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
api-server [--port 3456] [--host 127.0.0.1]
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
All API responses are cached for 10 minutes by default. Add `?no-cache=1` to bypass. Use `/api/cache-stats` and `POST /api/cache-clear` to manage.
|
|
196
|
+
|
|
197
|
+
Exposes all analysis functions as HTTP endpoints:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
GET /api/health
|
|
201
|
+
GET /api/full-audit?url=<url>
|
|
202
|
+
GET /api/citability?url=<url>
|
|
203
|
+
GET /api/eeat?url=<url>
|
|
204
|
+
GET /api/crawlers?url=<url>
|
|
205
|
+
GET /api/link-quality?url=<url>
|
|
206
|
+
GET /api/content-freshness?url=<url>
|
|
207
|
+
GET /api/ai-snippet?url=<url>
|
|
208
|
+
GET /api/structured-data?url=<url>
|
|
209
|
+
GET /api/backlink-profile?url=<url>
|
|
210
|
+
GET /api/accessibility?url=<url>
|
|
211
|
+
GET /api/performance?url=<url>
|
|
212
|
+
GET /api/readability?url=<url>
|
|
213
|
+
GET /api/heading-structure?url=<url>
|
|
214
|
+
GET /api/internal-links?url=<url>
|
|
215
|
+
GET /api/social-meta?url=<url>
|
|
216
|
+
GET /api/security?url=<url>
|
|
217
|
+
GET /api/topics?url=<url>
|
|
218
|
+
GET /api/validate-schema?url=<url>
|
|
219
|
+
GET /api/platform-ready?url=<url>
|
|
220
|
+
GET /api/image-audit?url=<url>
|
|
221
|
+
GET /api/cache-stats
|
|
222
|
+
POST /api/cache-clear
|
|
223
|
+
GET /api/endpoints
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Init & Config
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
init-llms [dir] # Generate llms.txt template
|
|
230
|
+
init-schema <type> [dir] # Generate JSON-LD template
|
|
231
|
+
init-config [dir] # Generate .georc.json
|
|
232
|
+
init-hook [dir] # Generate pre-commit hook
|
|
233
|
+
doctor # Check installation health
|
|
234
|
+
```
|
|
235
|
+
|
|
157
236
|
## Programmatic API
|
|
158
237
|
|
|
159
238
|
```javascript
|
|
@@ -165,35 +244,61 @@ import {
|
|
|
165
244
|
analyzeCrawlers,
|
|
166
245
|
analyzeCitability,
|
|
167
246
|
analyzeEeat,
|
|
168
|
-
|
|
247
|
+
analyzeLinkQuality,
|
|
248
|
+
analyzeContentFreshness,
|
|
249
|
+
simulateAiSnippet,
|
|
250
|
+
generateStructuredData,
|
|
251
|
+
analyzeBacklinkProfile,
|
|
252
|
+
trackCompetitors,
|
|
253
|
+
bulkOptimize,
|
|
254
|
+
generateLlmsTxt,
|
|
255
|
+
optimizeLlmsTxt,
|
|
256
|
+
startApiServer,
|
|
257
|
+
formatSlackReport,
|
|
258
|
+
generateDashboard,
|
|
259
|
+
evaluateAlertRules,
|
|
260
|
+
getScoreHistory,
|
|
261
|
+
auditAccessibility,
|
|
262
|
+
analyzePerformance,
|
|
263
|
+
createCache
|
|
169
264
|
} from 'geo-ai-search-optimization';
|
|
170
265
|
|
|
171
266
|
// Smart diagnosis
|
|
172
267
|
const result = await diagnose('https://example.com');
|
|
173
268
|
console.log(result.score, result.quickWins);
|
|
174
269
|
|
|
175
|
-
// Full
|
|
270
|
+
// Full multi-dimension audit
|
|
176
271
|
const audit = await fullPageAudit('https://example.com/blog/post');
|
|
177
272
|
console.log(audit.compositeScore, audit.dimensions);
|
|
178
273
|
|
|
179
|
-
//
|
|
180
|
-
const
|
|
274
|
+
// AI snippet simulation
|
|
275
|
+
const snippet = await simulateAiSnippet('https://example.com/blog/post');
|
|
276
|
+
console.log(snippet.simulatedSnippets.chatgpt);
|
|
277
|
+
|
|
278
|
+
// Competitor tracking with alerts
|
|
279
|
+
const tracking = await trackCompetitors(
|
|
181
280
|
'https://yoursite.com',
|
|
182
|
-
'https://
|
|
281
|
+
['https://competitor1.com', 'https://competitor2.com']
|
|
183
282
|
);
|
|
184
|
-
console.log(
|
|
283
|
+
console.log(tracking.ownRank, tracking.alerts);
|
|
284
|
+
|
|
285
|
+
// Start REST API
|
|
286
|
+
const api = await startApiServer({ port: 3456 });
|
|
287
|
+
console.log(`API running at ${api.url}`);
|
|
185
288
|
|
|
186
|
-
// Generate
|
|
187
|
-
const
|
|
188
|
-
|
|
289
|
+
// Generate HTML dashboard
|
|
290
|
+
const dashboard = await generateDashboard('https://example.com', {
|
|
291
|
+
outputPath: 'report.html',
|
|
292
|
+
theme: 'dark'
|
|
293
|
+
});
|
|
189
294
|
```
|
|
190
295
|
|
|
191
|
-
Full TypeScript declarations included (`index.d.ts`) —
|
|
296
|
+
Full TypeScript declarations included (`index.d.ts`) — 300+ exports with IDE autocomplete.
|
|
192
297
|
|
|
193
298
|
## GitHub Action
|
|
194
299
|
|
|
195
300
|
```yaml
|
|
196
|
-
- uses: redredchen01/geo-ai-search-optimization@v2.
|
|
301
|
+
- uses: redredchen01/geo-ai-search-optimization@v2.8.1
|
|
197
302
|
with:
|
|
198
303
|
project-path: ./your-project
|
|
199
304
|
min-score: 60
|
|
@@ -236,25 +341,43 @@ export function register(api) {
|
|
|
236
341
|
|
|
237
342
|
Load via config: `"plugins": ["./my-plugin.js"]`
|
|
238
343
|
|
|
344
|
+
## Alert Rules
|
|
345
|
+
|
|
346
|
+
Configure automated alerts in a JSON file:
|
|
347
|
+
|
|
348
|
+
```json
|
|
349
|
+
[
|
|
350
|
+
{ "name": "Low Score", "condition": "score-below", "threshold": 40, "action": "webhook", "actionConfig": { "url": "https://hooks.slack.com/..." } },
|
|
351
|
+
{ "name": "Score Drop", "condition": "score-drop", "threshold": 10, "action": "console" },
|
|
352
|
+
{ "name": "Weak Citability", "condition": "dimension-below", "threshold": 30, "dimension": "citability", "action": "file", "actionConfig": { "filePath": "alerts.log" } }
|
|
353
|
+
]
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
geo-ai-search-optimization alert-check https://example.com --rules-file rules.json
|
|
358
|
+
```
|
|
359
|
+
|
|
239
360
|
## Why GEO?
|
|
240
361
|
|
|
241
362
|
- **35%+ of search queries** are now handled by AI assistants (2026)
|
|
242
363
|
- **SaaS GEO tools cost $100-$3000/month** — this is free and open-source
|
|
243
364
|
- **No other npm package** provides comprehensive GEO analysis with zero dependencies
|
|
244
365
|
- **CI/CD native** — fail your build if GEO score drops
|
|
245
|
-
- **
|
|
366
|
+
- **REST API included** — integrate with any tool or pipeline
|
|
367
|
+
- **Agent-friendly** — 25+ bundled Codex skills for AI coding assistants
|
|
246
368
|
|
|
247
369
|
## Numbers
|
|
248
370
|
|
|
249
371
|
| Metric | Value |
|
|
250
372
|
|--------|-------|
|
|
251
|
-
| CLI Commands |
|
|
252
|
-
| API Exports |
|
|
253
|
-
| Analysis Dimensions |
|
|
254
|
-
| Test Cases |
|
|
373
|
+
| CLI Commands | 50+ |
|
|
374
|
+
| API Exports | 300+ |
|
|
375
|
+
| Analysis Dimensions | 15+ |
|
|
376
|
+
| Test Cases | 466 |
|
|
255
377
|
| External Dependencies | 0 |
|
|
256
378
|
| TypeScript Support | Full declarations |
|
|
257
379
|
| GitHub Action | Included |
|
|
380
|
+
| REST API | Included |
|
|
258
381
|
| Plugin System | Extensible |
|
|
259
382
|
|
|
260
383
|
## License
|
package/action.yml
CHANGED
package/package.json
CHANGED