@houtini/seo-crawler-mcp 2.1.3 → 2.1.5
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 +26 -1
- package/build/analyzers/queries/README.md +228 -0
- package/build/analyzers/queries/content/duplicate-h1.sql +18 -0
- package/build/analyzers/queries/content/duplicate-meta-descriptions.sql +18 -0
- package/build/analyzers/queries/content/duplicate-titles.sql +19 -0
- package/build/analyzers/queries/content/missing-h1.sql +18 -0
- package/build/analyzers/queries/content/missing-meta-descriptions.sql +19 -0
- package/build/analyzers/queries/content/multiple-h1.sql +17 -0
- package/build/analyzers/queries/content/thin-content.sql +18 -0
- package/build/analyzers/queries/critical/404-errors.sql +14 -0
- package/build/analyzers/queries/critical/broken-internal-links.sql +22 -0
- package/build/analyzers/queries/critical/missing-titles.sql +17 -0
- package/build/analyzers/queries/critical/server-errors.sql +15 -0
- package/build/analyzers/queries/opportunities/high-external-links.sql +18 -0
- package/build/analyzers/queries/opportunities/meta-description-length.sql +27 -0
- package/build/analyzers/queries/opportunities/missing-images.sql +18 -0
- package/build/analyzers/queries/opportunities/no-outbound-links.sql +18 -0
- package/build/analyzers/queries/opportunities/title-equals-h1.sql +21 -0
- package/build/analyzers/queries/opportunities/title-length.sql +27 -0
- package/build/analyzers/queries/opportunities/uncrawled-internal-links.sql +20 -0
- package/build/analyzers/queries/security/missing-csp.sql +16 -0
- package/build/analyzers/queries/security/missing-hsts.sql +17 -0
- package/build/analyzers/queries/security/missing-referrer-policy.sql +16 -0
- package/build/analyzers/queries/security/missing-x-frame-options.sql +16 -0
- package/build/analyzers/queries/security/protocol-relative-links.sql +16 -0
- package/build/analyzers/queries/security/unsafe-external-links.sql +17 -0
- package/build/analyzers/queries/technical/canonical-issues.sql +20 -0
- package/build/analyzers/queries/technical/heading-hierarchy-issues.sql +19 -0
- package/build/analyzers/queries/technical/non-https.sql +16 -0
- package/build/analyzers/queries/technical/orphan-pages.sql +21 -0
- package/build/analyzers/queries/technical/redirects.sql +15 -0
- package/build/core/CrawlDatabase.d.ts +1 -1
- package/build/core/CrawlDatabase.d.ts.map +1 -1
- package/build/core/CrawlDatabase.js +2 -2
- package/build/core/CrawlDatabase.js.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/package.json +3 -3
- package/server.json +36 -36
- package/houtini-logo.jpg +0 -0
package/README.md
CHANGED
|
@@ -5,12 +5,21 @@
|
|
|
5
5
|
[](https://github.com/houtini-ai/seo-crawler-mcp/actions)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
[](https://www.npmjs.com/package/@houtini/seo-crawler-mcp)
|
|
8
|
-
[](https://snyk.io/test/github/houtini-ai/seo-crawler-mcp)
|
|
9
8
|
[](https://registry.modelcontextprotocol.io)
|
|
10
9
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
11
10
|
|
|
12
11
|
**Crawl and analyse your website for errors and issues that probably affect your site's SEO**
|
|
13
12
|
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://glama.ai/mcp/servers/@houtini-ai/seo-crawler-mcp">
|
|
15
|
+
<img width="380" height="200" src="https://glama.ai/mcp/servers/@houtini-ai/seo-crawler-mcp/badge" alt="SEO Crawler MCP server" />
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
> **Quick Navigation**
|
|
20
|
+
>
|
|
21
|
+
> [Installation](#installation) | [CLI mode](#cli-mode-terminal-usage) | [How to use](#how-to-use-this) | [What gets detected](#what-gets-detected) | [Data storage](#data-storage) | [Performance](#performance) | [Tools reference](#mcp-tools-reference) | [Available queries](#available-queries)
|
|
22
|
+
|
|
14
23
|
I wanted to build on my experience working with the MCP protocol SDK to see just how far we can extend an AI assistant's capabilities. I decided that I'd quite like to build a crawler to check my site's "technical SEO" health and came across Crawlee - which seemed like the ideal library to base the crawl component of my MCP.
|
|
15
24
|
|
|
16
25
|
What's interesting is that MCP usually indicates a server connection of some sort. This is not so with SEO Crawler MCP. The MCP protocol is probably more powerful than I realised - this is a self-contained application wrapped in the MCP SDK that handles everything locally:
|
|
@@ -69,6 +78,22 @@ Restart Claude Desktop. Four tools will be available:
|
|
|
69
78
|
- `seo-crawler-mcp:query_seo_data`
|
|
70
79
|
- `seo-crawler-mcp:list_seo_queries`
|
|
71
80
|
|
|
81
|
+
### Claude Code (CLI)
|
|
82
|
+
|
|
83
|
+
Claude Code uses a different registration mechanism -- it doesn't read `claude_desktop_config.json`. Use `claude mcp add` instead:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
claude mcp add -e OUTPUT_DIR=/path/to/seo-audits -s user seo-crawler-mcp -- npx -y @houtini/seo-crawler-mcp
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Verify with:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
claude mcp get seo-crawler-mcp
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
You should see `Status: Connected`.
|
|
96
|
+
|
|
72
97
|
### Development Install
|
|
73
98
|
|
|
74
99
|
```bash
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# SEO Analysis Query Library
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Last Updated:** 2026-02-01
|
|
5
|
+
**Coverage:** 25 detectable SEO issues
|
|
6
|
+
|
|
7
|
+
## Query Organization
|
|
8
|
+
|
|
9
|
+
All queries follow a standard format:
|
|
10
|
+
- SQL comments describing the issue
|
|
11
|
+
- Priority level (CRITICAL, HIGH, MEDIUM, LOW)
|
|
12
|
+
- Category classification
|
|
13
|
+
- Optimized SELECT statements with ORDER BY and LIMIT
|
|
14
|
+
- Results limited to 100 rows for performance
|
|
15
|
+
|
|
16
|
+
## Critical Issues (4 queries)
|
|
17
|
+
|
|
18
|
+
**Indexability issues that must be fixed immediately**
|
|
19
|
+
|
|
20
|
+
1. **missing-titles.sql** - Pages without title tags
|
|
21
|
+
- Priority: CRITICAL
|
|
22
|
+
- Impact: Major indexability problem
|
|
23
|
+
- Fix: Add unique, descriptive title tags
|
|
24
|
+
|
|
25
|
+
2. **broken-internal-links.sql** - Internal links to 404/5xx pages
|
|
26
|
+
- Priority: CRITICAL
|
|
27
|
+
- Impact: Poor user experience, crawl budget waste
|
|
28
|
+
- Fix: Update or remove broken links
|
|
29
|
+
|
|
30
|
+
3. **server-errors.sql** - Pages returning 5xx errors
|
|
31
|
+
- Priority: CRITICAL
|
|
32
|
+
- Impact: Prevents indexing
|
|
33
|
+
- Fix: Debug server issues immediately
|
|
34
|
+
|
|
35
|
+
4. **404-errors.sql** - Pages not found
|
|
36
|
+
- Priority: CRITICAL
|
|
37
|
+
- Impact: Dead ends for users and crawlers
|
|
38
|
+
- Fix: Redirect to relevant pages or restore content
|
|
39
|
+
|
|
40
|
+
## Content Quality Issues (7 queries)
|
|
41
|
+
|
|
42
|
+
**Problems with page content and metadata**
|
|
43
|
+
|
|
44
|
+
5. **duplicate-titles.sql** - Multiple pages with same title
|
|
45
|
+
- Priority: HIGH
|
|
46
|
+
- Impact: Cannibalization, poor CTR
|
|
47
|
+
- Fix: Create unique titles for each page
|
|
48
|
+
|
|
49
|
+
6. **duplicate-meta-descriptions.sql** - Duplicate meta descriptions
|
|
50
|
+
- Priority: MEDIUM
|
|
51
|
+
- Impact: Reduced CTR, missed opportunities
|
|
52
|
+
- Fix: Write unique descriptions
|
|
53
|
+
|
|
54
|
+
7. **missing-meta-descriptions.sql** - Pages without descriptions
|
|
55
|
+
- Priority: MEDIUM
|
|
56
|
+
- Impact: Search engines auto-generate poor snippets
|
|
57
|
+
- Fix: Add compelling meta descriptions
|
|
58
|
+
|
|
59
|
+
8. **thin-content.sql** - Pages with < 300 words
|
|
60
|
+
- Priority: MEDIUM
|
|
61
|
+
- Impact: Low quality signals
|
|
62
|
+
- Fix: Expand content or consolidate pages
|
|
63
|
+
|
|
64
|
+
9. **missing-h1.sql** - Pages without H1 tags
|
|
65
|
+
- Priority: HIGH
|
|
66
|
+
- Impact: Unclear page topic
|
|
67
|
+
- Fix: Add descriptive H1 tags
|
|
68
|
+
|
|
69
|
+
10. **multiple-h1.sql** - Pages with multiple H1 tags
|
|
70
|
+
- Priority: MEDIUM
|
|
71
|
+
- Impact: Diluted topical focus
|
|
72
|
+
- Fix: Use single H1 per page
|
|
73
|
+
|
|
74
|
+
11. **duplicate-h1.sql** - Multiple pages with same H1
|
|
75
|
+
- Priority: MEDIUM
|
|
76
|
+
- Impact: Content cannibalization
|
|
77
|
+
- Fix: Differentiate H1 tags
|
|
78
|
+
|
|
79
|
+
## Technical SEO Issues (5 queries)
|
|
80
|
+
|
|
81
|
+
**Infrastructure and architecture problems**
|
|
82
|
+
|
|
83
|
+
12. **redirects.sql** - Pages with 3xx redirect status
|
|
84
|
+
- Priority: MEDIUM
|
|
85
|
+
- Impact: Crawl budget waste, slow page speed
|
|
86
|
+
- Fix: Update links to final destinations
|
|
87
|
+
|
|
88
|
+
13. **orphan-pages.sql** - Pages with no internal links
|
|
89
|
+
- Priority: MEDIUM
|
|
90
|
+
- Impact: Difficult to discover and crawl
|
|
91
|
+
- Fix: Add internal links from related pages
|
|
92
|
+
|
|
93
|
+
14. **canonical-issues.sql** - Canonical URL differs from actual URL
|
|
94
|
+
- Priority: MEDIUM
|
|
95
|
+
- Impact: Duplicate content confusion
|
|
96
|
+
- Fix: Review canonical implementation
|
|
97
|
+
|
|
98
|
+
15. **non-https.sql** - Pages not using HTTPS
|
|
99
|
+
- Priority: MEDIUM
|
|
100
|
+
- Impact: Security warnings, ranking penalty
|
|
101
|
+
- Fix: Migrate to HTTPS
|
|
102
|
+
|
|
103
|
+
16. **heading-hierarchy-issues.sql** - Non-sequential headings
|
|
104
|
+
- Priority: MEDIUM
|
|
105
|
+
- Impact: Poor document structure
|
|
106
|
+
- Fix: Correct heading order (h1 → h2 → h3)
|
|
107
|
+
|
|
108
|
+
## Security Issues (6 queries)
|
|
109
|
+
|
|
110
|
+
**Security header and link security problems**
|
|
111
|
+
|
|
112
|
+
17. **missing-hsts.sql** - No Strict-Transport-Security header
|
|
113
|
+
- Priority: HIGH
|
|
114
|
+
- Impact: HTTPS downgrade attacks possible
|
|
115
|
+
- Fix: Add HSTS header to server config
|
|
116
|
+
|
|
117
|
+
18. **missing-csp.sql** - No Content-Security-Policy header
|
|
118
|
+
- Priority: MEDIUM
|
|
119
|
+
- Impact: XSS vulnerability
|
|
120
|
+
- Fix: Implement CSP header
|
|
121
|
+
|
|
122
|
+
19. **missing-x-frame-options.sql** - No X-Frame-Options header
|
|
123
|
+
- Priority: MEDIUM
|
|
124
|
+
- Impact: Clickjacking vulnerability
|
|
125
|
+
- Fix: Add X-Frame-Options: DENY
|
|
126
|
+
|
|
127
|
+
20. **missing-referrer-policy.sql** - No Referrer-Policy header
|
|
128
|
+
- Priority: LOW
|
|
129
|
+
- Impact: Privacy leaks
|
|
130
|
+
- Fix: Add Referrer-Policy header
|
|
131
|
+
|
|
132
|
+
21. **unsafe-external-links.sql** - target="_blank" without rel="noopener"
|
|
133
|
+
- Priority: MEDIUM
|
|
134
|
+
- Impact: Tabnabbing vulnerability
|
|
135
|
+
- Fix: Add rel="noopener noreferrer"
|
|
136
|
+
|
|
137
|
+
22. **protocol-relative-links.sql** - Links using //example.com format
|
|
138
|
+
- Priority: LOW
|
|
139
|
+
- Impact: Mixed content warnings
|
|
140
|
+
- Fix: Use absolute HTTPS URLs
|
|
141
|
+
|
|
142
|
+
## Optimization Opportunities (6 queries)
|
|
143
|
+
|
|
144
|
+
**Enhancement opportunities for better SEO**
|
|
145
|
+
|
|
146
|
+
23. **title-length.sql** - Titles too short (< 30) or too long (> 60)
|
|
147
|
+
- Priority: MEDIUM
|
|
148
|
+
- Impact: Truncated or poor SERP display
|
|
149
|
+
- Fix: Optimize title length to 30-60 characters
|
|
150
|
+
|
|
151
|
+
24. **meta-description-length.sql** - Descriptions too short/long
|
|
152
|
+
- Priority: LOW
|
|
153
|
+
- Impact: Suboptimal SERP snippets
|
|
154
|
+
- Fix: Optimize to 120-160 characters
|
|
155
|
+
|
|
156
|
+
25. **title-equals-h1.sql** - Title and H1 are identical
|
|
157
|
+
- Priority: LOW
|
|
158
|
+
- Impact: Missed keyword opportunity
|
|
159
|
+
- Fix: Differentiate title and H1 slightly
|
|
160
|
+
|
|
161
|
+
26. **no-outbound-links.sql** - Pages with no links
|
|
162
|
+
- Priority: LOW
|
|
163
|
+
- Impact: Poor user experience, low PageRank flow
|
|
164
|
+
- Fix: Add relevant internal/external links
|
|
165
|
+
|
|
166
|
+
27. **high-external-links.sql** - Pages with > 20 external links
|
|
167
|
+
- Priority: LOW
|
|
168
|
+
- Impact: Excessive PageRank dilution
|
|
169
|
+
- Fix: Review and reduce external links
|
|
170
|
+
|
|
171
|
+
28. **missing-images.sql** - Content pages without images
|
|
172
|
+
- Priority: LOW
|
|
173
|
+
- Impact: Poor engagement, no image search visibility
|
|
174
|
+
- Fix: Add relevant images with alt text
|
|
175
|
+
|
|
176
|
+
## Query Performance
|
|
177
|
+
|
|
178
|
+
All queries are optimized for SQLite with:
|
|
179
|
+
- Indexed columns (url, status_code, depth)
|
|
180
|
+
- LIMIT clauses to prevent excessive results
|
|
181
|
+
- Strategic WHERE clauses to filter early
|
|
182
|
+
- Simple JOINs where necessary
|
|
183
|
+
|
|
184
|
+
**Expected Performance:**
|
|
185
|
+
- Simple queries: < 10ms
|
|
186
|
+
- Complex queries (duplicates, orphans): < 100ms
|
|
187
|
+
- Join queries (broken links): < 200ms
|
|
188
|
+
|
|
189
|
+
## Usage Patterns
|
|
190
|
+
|
|
191
|
+
### Direct SQL Execution
|
|
192
|
+
```typescript
|
|
193
|
+
import Database from 'better-sqlite3';
|
|
194
|
+
import fs from 'fs';
|
|
195
|
+
|
|
196
|
+
const db = new Database('./crawl-data.db');
|
|
197
|
+
const query = fs.readFileSync('./queries/critical/missing-titles.sql', 'utf-8');
|
|
198
|
+
const results = db.prepare(query).all();
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Programmatic Analysis
|
|
202
|
+
```typescript
|
|
203
|
+
import { SQLAnalyzer } from './SQLAnalyzer.js';
|
|
204
|
+
|
|
205
|
+
const analyzer = new SQLAnalyzer(crawlId);
|
|
206
|
+
const report = await analyzer.generateReport();
|
|
207
|
+
// Returns structured SEOAnalysisReport
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### MCP Tool Integration
|
|
211
|
+
```bash
|
|
212
|
+
seo-crawler-mcp:analyze_seo crawlId="431841d4"
|
|
213
|
+
# Returns JSON report with all 25 issues checked
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Future Enhancements
|
|
217
|
+
|
|
218
|
+
**Not yet implemented (requires additional data capture):**
|
|
219
|
+
- Core Web Vitals analysis (requires Playwright)
|
|
220
|
+
- Robots.txt validation (requires separate parser)
|
|
221
|
+
- Readability scoring (requires text analysis library)
|
|
222
|
+
- Mobile rendering issues (requires device emulation)
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
**Query Coverage: 25 Production-Ready SEO Checks**
|
|
227
|
+
**Status: Production Ready**
|
|
228
|
+
**Next Step: Build SQLAnalyzer.ts class**
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Duplicate H1 Tags (MEDIUM)
|
|
2
|
+
-- Multiple pages sharing the same H1 tag
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: content
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
h1,
|
|
8
|
+
COUNT(*) as page_count,
|
|
9
|
+
GROUP_CONCAT(url, '|||') as urls,
|
|
10
|
+
MIN(title) as example_title
|
|
11
|
+
FROM pages
|
|
12
|
+
WHERE h1 IS NOT NULL
|
|
13
|
+
AND TRIM(h1) != ''
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
GROUP BY h1
|
|
16
|
+
HAVING COUNT(*) > 1
|
|
17
|
+
ORDER BY page_count DESC
|
|
18
|
+
LIMIT 50;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Duplicate Meta Descriptions (MEDIUM)
|
|
2
|
+
-- Multiple pages sharing the same meta description
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: content
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
meta_description,
|
|
8
|
+
COUNT(*) as page_count,
|
|
9
|
+
GROUP_CONCAT(url, '|||') as urls,
|
|
10
|
+
MIN(title) as example_title
|
|
11
|
+
FROM pages
|
|
12
|
+
WHERE meta_description IS NOT NULL
|
|
13
|
+
AND TRIM(meta_description) != ''
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
GROUP BY meta_description
|
|
16
|
+
HAVING COUNT(*) > 1
|
|
17
|
+
ORDER BY page_count DESC
|
|
18
|
+
LIMIT 50;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- Duplicate Title Tags (HIGH)
|
|
2
|
+
-- Multiple pages sharing the same title tag
|
|
3
|
+
-- Priority: HIGH
|
|
4
|
+
-- Category: content
|
|
5
|
+
-- Impact: Title duplication causes keyword cannibalization where pages compete against each other. Reduces click-through rates as users can't distinguish between pages in search results.
|
|
6
|
+
-- Fix: Create unique, descriptive title tags for each page that accurately reflect the page's specific content and target different keyword variations.
|
|
7
|
+
|
|
8
|
+
SELECT
|
|
9
|
+
title,
|
|
10
|
+
GROUP_CONCAT(url, ', ') as duplicate_urls,
|
|
11
|
+
COUNT(*) as count
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE title IS NOT NULL
|
|
14
|
+
AND title != ''
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
GROUP BY title
|
|
17
|
+
HAVING count > 1
|
|
18
|
+
ORDER BY count DESC
|
|
19
|
+
LIMIT 100;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Missing H1 Tags (HIGH)
|
|
2
|
+
-- Pages without H1 headings
|
|
3
|
+
-- Priority: HIGH
|
|
4
|
+
-- Category: content
|
|
5
|
+
-- Impact: H1 tags are critical for SEO and accessibility. Their absence makes it unclear to search engines and users what the page is about. Impacts topic clarity and ranking potential.
|
|
6
|
+
-- Fix: Ensure every important page has exactly one descriptive H1 tag that clearly indicates the main topic. Include primary keywords naturally without keyword stuffing.
|
|
7
|
+
|
|
8
|
+
SELECT
|
|
9
|
+
url,
|
|
10
|
+
title,
|
|
11
|
+
word_count,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE (h1 IS NULL OR h1 = '' OR TRIM(h1) = '')
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
AND content_type LIKE '%text/html%'
|
|
17
|
+
ORDER BY word_count DESC
|
|
18
|
+
LIMIT 100;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- Missing Meta Descriptions (MEDIUM)
|
|
2
|
+
-- Pages without meta descriptions
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: content
|
|
5
|
+
-- Impact: Search engines auto-generate snippets which are often poor quality and don't entice clicks. Missed opportunity to control your SERP messaging and improve click-through rates.
|
|
6
|
+
-- Fix: Write unique, compelling meta descriptions (120-160 characters) for key pages. Focus on benefits and include a call-to-action. Avoid duplicating title tag content.
|
|
7
|
+
|
|
8
|
+
SELECT
|
|
9
|
+
url,
|
|
10
|
+
title,
|
|
11
|
+
word_count,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE (meta_description IS NULL OR meta_description = '' OR TRIM(meta_description) = '')
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
AND content_type LIKE '%text/html%'
|
|
17
|
+
AND depth <= 5
|
|
18
|
+
ORDER BY word_count DESC
|
|
19
|
+
LIMIT 100;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- Multiple H1 Tags (MEDIUM)
|
|
2
|
+
-- Pages with more than one H1 tag (can confuse search engines)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: content
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
heading_count_h1,
|
|
10
|
+
h1,
|
|
11
|
+
status_code,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE heading_count_h1 > 1
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
ORDER BY heading_count_h1 DESC, depth ASC
|
|
17
|
+
LIMIT 100;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Thin Content (MEDIUM)
|
|
2
|
+
-- Pages with insufficient content (< 300 words)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: content
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
word_count,
|
|
10
|
+
status_code,
|
|
11
|
+
depth,
|
|
12
|
+
internal_links
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE word_count < 300
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
AND content_type LIKE '%text/html%'
|
|
17
|
+
ORDER BY word_count ASC
|
|
18
|
+
LIMIT 100;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-- Broken Internal Links (CRITICAL)
|
|
2
|
+
-- Internal links pointing to pages that actually returned HTTP errors (404, 500, etc.)
|
|
3
|
+
-- Priority: CRITICAL
|
|
4
|
+
-- Category: critical
|
|
5
|
+
-- Impact: Poor user experience, wasted crawl budget, and loss of link equity. Users encounter dead ends and search engines waste resources crawling broken links.
|
|
6
|
+
-- Fix: View URLs that link to errors using the 'inlinks' tab and export them in bulk. Update broken links to point to correct URLs or remove them. Consider implementing 301 redirects for permanently moved content.
|
|
7
|
+
-- Note: This query only reports links to pages that were crawled AND returned errors. Un-crawled links are reported separately in the opportunities category.
|
|
8
|
+
|
|
9
|
+
SELECT
|
|
10
|
+
l.source_url,
|
|
11
|
+
l.target_url,
|
|
12
|
+
l.anchor_text,
|
|
13
|
+
l.placement,
|
|
14
|
+
p.status_code,
|
|
15
|
+
COUNT(*) as occurrences
|
|
16
|
+
FROM links l
|
|
17
|
+
INNER JOIN pages p ON l.target_url = p.url -- Only check pages we actually crawled
|
|
18
|
+
WHERE l.is_internal = 1
|
|
19
|
+
AND p.status_code >= 400 -- Only actual HTTP errors (404, 500, etc.)
|
|
20
|
+
GROUP BY l.target_url, l.source_url, p.status_code
|
|
21
|
+
ORDER BY occurrences DESC
|
|
22
|
+
LIMIT 100;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- Missing Title Tags (CRITICAL)
|
|
2
|
+
-- Pages without title tags - catastrophic for SEO
|
|
3
|
+
-- Priority: CRITICAL
|
|
4
|
+
-- Category: critical
|
|
5
|
+
-- Impact: Pages are essentially invisible to search engines. Title tags are the most important on-page SEO element and their absence prevents proper indexing and ranking.
|
|
6
|
+
-- Fix: Add unique, descriptive title tags (50-60 characters) to all pages immediately. Include primary keywords and brand name where appropriate.
|
|
7
|
+
|
|
8
|
+
SELECT
|
|
9
|
+
url,
|
|
10
|
+
word_count,
|
|
11
|
+
heading_count_h1
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE (title IS NULL OR title = '' OR TRIM(title) = '')
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
AND depth <= 5
|
|
16
|
+
ORDER BY word_count DESC
|
|
17
|
+
LIMIT 100;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- Server Errors (5xx) (CRITICAL)
|
|
2
|
+
-- Pages returning 500, 502, 503, 504 errors
|
|
3
|
+
-- Priority: CRITICAL
|
|
4
|
+
-- Category: indexability
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
status_code,
|
|
9
|
+
depth,
|
|
10
|
+
linked_from,
|
|
11
|
+
crawled_at
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE status_code >= 500 AND status_code < 600
|
|
14
|
+
ORDER BY status_code ASC, depth ASC
|
|
15
|
+
LIMIT 100;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- High External Link Count (LOW)
|
|
2
|
+
-- Pages with unusually high number of external links
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
external_links,
|
|
10
|
+
internal_links,
|
|
11
|
+
word_count,
|
|
12
|
+
status_code,
|
|
13
|
+
depth
|
|
14
|
+
FROM pages
|
|
15
|
+
WHERE external_links > 20
|
|
16
|
+
AND status_code = 200
|
|
17
|
+
ORDER BY external_links DESC
|
|
18
|
+
LIMIT 100;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-- Meta Description Length Issues (LOW)
|
|
2
|
+
-- Meta descriptions that are too short (< 120 chars) or too long (> 160 chars)
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
meta_description,
|
|
10
|
+
meta_description_length,
|
|
11
|
+
status_code,
|
|
12
|
+
CASE
|
|
13
|
+
WHEN meta_description_length < 120 THEN 'Too Short'
|
|
14
|
+
WHEN meta_description_length > 160 THEN 'Too Long'
|
|
15
|
+
END as issue_type
|
|
16
|
+
FROM pages
|
|
17
|
+
WHERE (meta_description_length < 120 OR meta_description_length > 160)
|
|
18
|
+
AND meta_description IS NOT NULL
|
|
19
|
+
AND TRIM(meta_description) != ''
|
|
20
|
+
AND status_code = 200
|
|
21
|
+
ORDER BY
|
|
22
|
+
CASE
|
|
23
|
+
WHEN meta_description_length < 120 THEN 1
|
|
24
|
+
ELSE 2
|
|
25
|
+
END,
|
|
26
|
+
meta_description_length ASC
|
|
27
|
+
LIMIT 100;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Missing Images (LOW)
|
|
2
|
+
-- Pages with no images
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
word_count,
|
|
10
|
+
images,
|
|
11
|
+
status_code,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE (images = '[]' OR images IS NULL OR images = '')
|
|
15
|
+
AND word_count > 300
|
|
16
|
+
AND status_code = 200
|
|
17
|
+
ORDER BY word_count DESC
|
|
18
|
+
LIMIT 100;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Pages with No Outbound Links (LOW)
|
|
2
|
+
-- Pages with no internal or external links
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
word_count,
|
|
10
|
+
internal_links,
|
|
11
|
+
external_links,
|
|
12
|
+
status_code,
|
|
13
|
+
depth
|
|
14
|
+
FROM pages
|
|
15
|
+
WHERE (internal_links = 0 AND external_links = 0)
|
|
16
|
+
AND status_code = 200
|
|
17
|
+
ORDER BY word_count DESC, depth ASC
|
|
18
|
+
LIMIT 100;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- Pages with Title = H1 (OPPORTUNITY)
|
|
2
|
+
-- Pages where title and H1 are identical (opportunity for differentiation)
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
h1,
|
|
10
|
+
word_count,
|
|
11
|
+
status_code,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE title = h1
|
|
15
|
+
AND title IS NOT NULL
|
|
16
|
+
AND TRIM(title) != ''
|
|
17
|
+
AND h1 IS NOT NULL
|
|
18
|
+
AND TRIM(h1) != ''
|
|
19
|
+
AND status_code = 200
|
|
20
|
+
ORDER BY word_count DESC
|
|
21
|
+
LIMIT 100;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-- Title Length Issues (MEDIUM)
|
|
2
|
+
-- Titles that are too short (< 30 chars) or too long (> 60 chars)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: optimization
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
title_length,
|
|
10
|
+
status_code,
|
|
11
|
+
depth,
|
|
12
|
+
CASE
|
|
13
|
+
WHEN title_length < 30 THEN 'Too Short'
|
|
14
|
+
WHEN title_length > 60 THEN 'Too Long'
|
|
15
|
+
END as issue_type
|
|
16
|
+
FROM pages
|
|
17
|
+
WHERE (title_length < 30 OR title_length > 60)
|
|
18
|
+
AND title IS NOT NULL
|
|
19
|
+
AND TRIM(title) != ''
|
|
20
|
+
AND status_code = 200
|
|
21
|
+
ORDER BY
|
|
22
|
+
CASE
|
|
23
|
+
WHEN title_length < 30 THEN 1
|
|
24
|
+
ELSE 2
|
|
25
|
+
END,
|
|
26
|
+
title_length ASC
|
|
27
|
+
LIMIT 100;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Un-crawled Internal Links (OPPORTUNITIES)
|
|
2
|
+
-- Internal links discovered but not crawled (likely due to depth or page limits)
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: opportunities
|
|
5
|
+
-- Impact: These links were discovered during the crawl but not visited, usually because the crawler reached its depth limit or page count limit. Not necessarily broken - just outside the crawl scope.
|
|
6
|
+
-- Fix: Review these URLs to determine if they should be included in future crawls. Consider increasing maxPages or maxDiscoveryDepth if important sections of your site are being missed.
|
|
7
|
+
|
|
8
|
+
SELECT
|
|
9
|
+
l.source_url,
|
|
10
|
+
l.target_url,
|
|
11
|
+
l.anchor_text,
|
|
12
|
+
l.placement,
|
|
13
|
+
COUNT(*) as occurrences
|
|
14
|
+
FROM links l
|
|
15
|
+
LEFT JOIN pages p ON l.target_url = p.url
|
|
16
|
+
WHERE l.is_internal = 1
|
|
17
|
+
AND p.url IS NULL -- Link discovered but page never crawled
|
|
18
|
+
GROUP BY l.target_url, l.source_url
|
|
19
|
+
ORDER BY occurrences DESC
|
|
20
|
+
LIMIT 100;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Missing Security Headers - CSP (MEDIUM)
|
|
2
|
+
-- Pages missing Content-Security-Policy header
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
status_code,
|
|
10
|
+
depth,
|
|
11
|
+
security_headers_csp
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE (security_headers_csp IS NULL OR security_headers_csp = '')
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
ORDER BY depth ASC
|
|
16
|
+
LIMIT 100;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- Missing Security Headers - HSTS (HIGH)
|
|
2
|
+
-- Pages missing Strict-Transport-Security header
|
|
3
|
+
-- Priority: HIGH
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
status_code,
|
|
10
|
+
depth,
|
|
11
|
+
security_headers_hsts
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE (security_headers_hsts IS NULL OR security_headers_hsts = '')
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
AND url LIKE 'https://%'
|
|
16
|
+
ORDER BY depth ASC
|
|
17
|
+
LIMIT 100;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Missing Security Headers - Referrer-Policy (LOW)
|
|
2
|
+
-- Pages missing Referrer-Policy header (privacy protection)
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
status_code,
|
|
10
|
+
depth,
|
|
11
|
+
security_headers_referrer
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE (security_headers_referrer IS NULL OR security_headers_referrer = '')
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
ORDER BY depth ASC
|
|
16
|
+
LIMIT 100;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Missing Security Headers - X-Frame-Options (MEDIUM)
|
|
2
|
+
-- Pages missing X-Frame-Options header (clickjacking protection)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
status_code,
|
|
10
|
+
depth,
|
|
11
|
+
security_headers_x_frame
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE (security_headers_x_frame IS NULL OR security_headers_x_frame = '')
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
ORDER BY depth ASC
|
|
16
|
+
LIMIT 100;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Protocol-Relative Links (LOW)
|
|
2
|
+
-- Links using protocol-relative URLs (//example.com) which can cause mixed content warnings
|
|
3
|
+
-- Priority: LOW
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
link_protocol_relative_count,
|
|
10
|
+
status_code,
|
|
11
|
+
depth
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE link_protocol_relative_count > 0
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
ORDER BY link_protocol_relative_count DESC
|
|
16
|
+
LIMIT 100;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- Unsafe External Links (MEDIUM)
|
|
2
|
+
-- External links with target="_blank" but missing rel="noopener noreferrer"
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: security
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
link_ext_target_blank_count,
|
|
10
|
+
link_ext_target_blank_no_rel_count,
|
|
11
|
+
status_code,
|
|
12
|
+
depth
|
|
13
|
+
FROM pages
|
|
14
|
+
WHERE link_ext_target_blank_no_rel_count > 0
|
|
15
|
+
AND status_code = 200
|
|
16
|
+
ORDER BY link_ext_target_blank_no_rel_count DESC
|
|
17
|
+
LIMIT 100;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Canonical Issues (MEDIUM)
|
|
2
|
+
-- Pages where canonical URL differs from actual URL
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: technical
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
canonical_url,
|
|
9
|
+
title,
|
|
10
|
+
status_code,
|
|
11
|
+
depth
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE canonical_url IS NOT NULL
|
|
14
|
+
AND canonical_url != ''
|
|
15
|
+
AND canonical_url != url
|
|
16
|
+
-- Ignore trailing slash differences (normalize both URLs)
|
|
17
|
+
AND RTRIM(canonical_url, '/') != RTRIM(url, '/')
|
|
18
|
+
AND status_code = 200
|
|
19
|
+
ORDER BY depth ASC
|
|
20
|
+
LIMIT 100;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- Heading Hierarchy Issues (MEDIUM)
|
|
2
|
+
-- Pages with non-sequential heading structures (h1 -> h3, skipping h2)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: technical
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
heading_hierarchy,
|
|
10
|
+
heading_sequential_errors,
|
|
11
|
+
heading_count_h1,
|
|
12
|
+
heading_count_h2,
|
|
13
|
+
heading_count_h3
|
|
14
|
+
FROM pages
|
|
15
|
+
WHERE heading_sequential_errors IS NOT NULL
|
|
16
|
+
AND heading_sequential_errors != '[]'
|
|
17
|
+
AND status_code = 200
|
|
18
|
+
ORDER BY depth ASC
|
|
19
|
+
LIMIT 100;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Non-HTTPS Pages (MEDIUM)
|
|
2
|
+
-- Pages not using HTTPS protocol
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: technical
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
title,
|
|
9
|
+
status_code,
|
|
10
|
+
depth,
|
|
11
|
+
linked_from
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE url NOT LIKE 'https://%'
|
|
14
|
+
AND status_code = 200
|
|
15
|
+
ORDER BY depth ASC
|
|
16
|
+
LIMIT 100;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- Orphan Pages (MEDIUM)
|
|
2
|
+
-- Pages not linked from any other internal page
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: technical
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
p.url,
|
|
8
|
+
p.title,
|
|
9
|
+
p.depth,
|
|
10
|
+
p.word_count,
|
|
11
|
+
p.status_code
|
|
12
|
+
FROM pages p
|
|
13
|
+
WHERE p.url NOT IN (
|
|
14
|
+
SELECT DISTINCT target_url
|
|
15
|
+
FROM links
|
|
16
|
+
WHERE is_internal = 1
|
|
17
|
+
)
|
|
18
|
+
AND p.depth > 0
|
|
19
|
+
AND p.status_code = 200
|
|
20
|
+
ORDER BY p.word_count DESC, p.depth ASC
|
|
21
|
+
LIMIT 100;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- Redirect Chains (MEDIUM)
|
|
2
|
+
-- Pages that redirect (3xx status codes)
|
|
3
|
+
-- Priority: MEDIUM
|
|
4
|
+
-- Category: technical
|
|
5
|
+
|
|
6
|
+
SELECT
|
|
7
|
+
url,
|
|
8
|
+
status_code,
|
|
9
|
+
canonical_url,
|
|
10
|
+
depth,
|
|
11
|
+
redirects
|
|
12
|
+
FROM pages
|
|
13
|
+
WHERE status_code >= 300 AND status_code < 400
|
|
14
|
+
ORDER BY status_code ASC, depth ASC
|
|
15
|
+
LIMIT 100;
|
|
@@ -16,7 +16,7 @@ export declare class CrawlDatabase {
|
|
|
16
16
|
saveLinks(links: LinkData[]): void;
|
|
17
17
|
getAllLinks(): LinkData[];
|
|
18
18
|
getLinkCount(): number;
|
|
19
|
-
saveError(error: CrawlError): void;
|
|
19
|
+
saveError(crawlId: string, error: CrawlError): void;
|
|
20
20
|
getAllErrors(crawlId: string): CrawlError[];
|
|
21
21
|
exportToCsv(outputPath: string): void;
|
|
22
22
|
private generateCsvFromRows;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrawlDatabase.d.ts","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,gBAAgB;IAuIxB,OAAO,CAAC,uBAAuB;IA0H/B,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI;IA4ChF,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA6C1D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAyBvD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IA6F9B,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAUrC,WAAW,IAAI,QAAQ,EAAE;IAQzB,YAAY,IAAI,MAAM;IAQtB,OAAO,CAAC,aAAa;IAuErB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IA6BlC,WAAW,IAAI,QAAQ,EAAE;IAkBzB,YAAY,IAAI,MAAM;IAQtB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"CrawlDatabase.d.ts","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,gBAAgB;IAuIxB,OAAO,CAAC,uBAAuB;IA0H/B,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI;IA4ChF,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA6C1D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAyBvD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IA6F9B,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAUrC,WAAW,IAAI,QAAQ,EAAE;IAQzB,YAAY,IAAI,MAAM;IAQtB,OAAO,CAAC,aAAa;IAuErB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IA6BlC,WAAW,IAAI,QAAQ,EAAE;IAkBzB,YAAY,IAAI,MAAM;IAQtB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAenD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAa3C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAqCrC,OAAO,CAAC,mBAAmB;IAsB3B,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -523,12 +523,12 @@ export class CrawlDatabase {
|
|
|
523
523
|
`).get();
|
|
524
524
|
return result.count;
|
|
525
525
|
}
|
|
526
|
-
saveError(error) {
|
|
526
|
+
saveError(crawlId, error) {
|
|
527
527
|
const stmt = this.db.prepare(`
|
|
528
528
|
INSERT INTO errors (crawl_id, url, error_type, error_message, timestamp)
|
|
529
529
|
VALUES (?, ?, ?, ?, ?)
|
|
530
530
|
`);
|
|
531
|
-
stmt.run(
|
|
531
|
+
stmt.run(crawlId, error.url, error.errorType, error.message, error.timestamp);
|
|
532
532
|
}
|
|
533
533
|
getAllErrors(crawlId) {
|
|
534
534
|
const rows = this.db.prepare(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrawlDatabase.js","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAOtC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAwBZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;KAKZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;KAiBZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;KAIZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;KAYZ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;KAEZ,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;OAEZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,QAAuB,EAAE,OAAgB,EAAE,MAAY;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAO5B,CAAC,CAAC;QAGH,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,aAAa,GAAG,OAAO,IAAI,EAAE,CAAC;QAElC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBAChC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC7B,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CACN,QAAQ,CAAC,OAAO,EAChB,aAAa,EACb,UAAU,EACV,QAAQ,CAAC,MAAM,EACf,MAAM,EAAE,QAAQ,IAAI,CAAC,EACrB,MAAM,EAAE,QAAQ,IAAI,CAAC,EACrB,MAAM,EAAE,SAAS,IAAI,QAAQ,EAC7B,QAAQ,CAAC,KAAK,CAAC,UAAU,EACzB,QAAQ,CAAC,KAAK,CAAC,OAAO,EACtB,QAAQ,CAAC,KAAK,CAAC,MAAM,EACrB,QAAQ,CAAC,KAAK,CAAC,OAAO,EACtB,QAAQ,CAAC,KAAK,CAAC,KAAK,EACpB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CACrB,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,OAA+B;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;YAClJ,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,KAAK,CAAC,UAAU,EACxB,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CACpB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAChF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAQ,CAAC;QAEvB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,QAAQ,EAAE,GAAG,CAAC,WAAW;YACzB,KAAK,EAAE;gBACL,UAAU,EAAE,GAAG,CAAC,eAAe;gBAC/B,OAAO,EAAE,GAAG,CAAC,YAAY;gBACzB,MAAM,EAAE,GAAG,CAAC,WAAW;gBACvB,OAAO,EAAE,GAAG,CAAC,YAAY;gBACzB,KAAK,EAAE,GAAG,CAAC,iBAAiB;gBAC5B,KAAK,EAAE,GAAG,CAAC,mBAAmB;aAC/B;YACD,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgC5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EACvB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAC1C,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAC5C,IAAI,CAAC,eAAe,CAAC,aAAa,EAClC,IAAI,CAAC,eAAe,CAAC,cAAc,EACnC,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,EACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAC5C,IAAI,CAAC,WAAW,CAAC,wBAAwB,EACzC,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAC9C,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAC5C,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE3B,CAAC,CAAC,GAAG,CAAC,GAAG,CAAQ,CAAC;QAEnB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC,GAAG,EAAW,CAAC;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE9B,CAAC,CAAC,GAAG,EAAS,CAAC;QAEhB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,GAAQ;QAC5B,OAAO;YACL,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;YAC5C,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;YAC/C,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;YACtB,eAAe,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE;YAC3C,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE;YAChB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;YAC9B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;YAC9B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;YAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;YAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;YACxB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;YACrC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;YACvC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;YAC7C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;YACvC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC;YACjD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;YACtC,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,aAAa,EAAE,GAAG,CAAC,cAAc;YACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;YAC1C,eAAe,EAAE;gBACf,qBAAqB,EAAE,GAAG,CAAC,oBAAoB,IAAI,IAAI;gBACvD,uBAAuB,EAAE,GAAG,CAAC,qBAAqB,IAAI,IAAI;gBAC1D,aAAa,EAAE,GAAG,CAAC,wBAAwB,IAAI,IAAI;gBACnD,cAAc,EAAE,GAAG,CAAC,yBAAyB,IAAI,IAAI;aACtD;YACD,aAAa,EAAE;gBACb,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;gBAC7B,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;gBAC7B,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;gBAC7B,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;gBAC7B,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;gBAC7B,EAAE,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC;aAC9B;YACD,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC;YAC3D,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC;YAC1E,WAAW,EAAE;gBACX,wBAAwB,EAAE,GAAG,CAAC,2BAA2B,IAAI,CAAC;gBAC9D,6BAA6B,EAAE,GAAG,CAAC,kCAAkC,IAAI,CAAC;gBAC1E,0BAA0B,EAAE,GAAG,CAAC,4BAA4B,IAAI,CAAC;aAClE;YACD,SAAS,EAAE;gBACT,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAClD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;gBACvB,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;gBACvB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC/B,QAAQ,EAAE,KAAK;aAChB;YACD,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,KAAiB;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CAClB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC,GAAG,EAAW,CAAC;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;YACjC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACpC,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,SAAS,EAAE,GAAG,CAAC,SAA6C;YAC5D,YAAY,EAAE,GAAG,CAAC,aAAa;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE9B,CAAC,CAAC,GAAG,EAAS,CAAC;QAEhB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,SAAS,CAAC,KAAiB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,CAChB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAU,CAAC;QAEzB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS,EAAE,GAAG,CAAC,UAAqC;YACpD,OAAO,EAAE,GAAG,CAAC,aAAa;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,UAAkB;QAC5B,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6Bb,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAW,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,mBAAmB,CAAC,IAAW;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAErC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAClC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBACrD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzF,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;gBAChD,CAAC;gBACD,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"CrawlDatabase.js","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { analyzeSeo } from './tools/analyze-seo.js';
|
|
|
8
8
|
import { querySeoData } from './tools/query-seo-data.js';
|
|
9
9
|
import { listQueries } from './tools/list-queries.js';
|
|
10
10
|
const SERVER_NAME = 'seo-crawler-mcp';
|
|
11
|
-
const SERVER_VERSION = '2.1.
|
|
11
|
+
const SERVER_VERSION = '2.1.4';
|
|
12
12
|
const tools = [
|
|
13
13
|
{
|
|
14
14
|
name: 'run_seo_audit',
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@houtini/seo-crawler-mcp",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"mcpName": "io.github.houtini-ai/seo-crawler-mcp",
|
|
5
5
|
"description": "Crawl and analyse websites for SEO errors and issues using Crawlee with SQLite storage",
|
|
6
6
|
"type": "module",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"node": ">=18.0.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
|
-
"build": "tsc",
|
|
38
|
+
"build": "tsc && node --input-type=commonjs -e \"require('fs').cpSync('src/analyzers/queries','build/analyzers/queries',{recursive:true})\"",
|
|
39
39
|
"dev": "tsc --watch",
|
|
40
40
|
"start": "node build/index.js",
|
|
41
41
|
"test": "npm run build && echo 'Build successful - all checks passed'",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@crawlee/memory-storage": "^3.7.0",
|
|
46
|
-
"@modelcontextprotocol/sdk": "^1.0
|
|
46
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
47
47
|
"@types/better-sqlite3": "^7.6.13",
|
|
48
48
|
"better-sqlite3": "^12.6.2",
|
|
49
49
|
"cheerio": "^1.0.0-rc.12",
|
package/server.json
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
-
"name": "io.github.houtini-ai/seo-crawler-mcp",
|
|
4
|
-
"description": "Crawl and analyse websites for SEO errors using Crawlee with SQLite storage",
|
|
5
|
-
"repository": {
|
|
6
|
-
"url": "https://github.com/houtini-ai/seo-crawler-mcp",
|
|
7
|
-
"source": "github"
|
|
8
|
-
},
|
|
9
|
-
"version": "2.1.
|
|
10
|
-
"packages": [
|
|
11
|
-
{
|
|
12
|
-
"registryType": "npm",
|
|
13
|
-
"identifier": "@houtini/seo-crawler-mcp",
|
|
14
|
-
"version": "2.1.
|
|
15
|
-
"transport": {
|
|
16
|
-
"type": "stdio"
|
|
17
|
-
},
|
|
18
|
-
"environmentVariables": [
|
|
19
|
-
{
|
|
20
|
-
"name": "OUTPUT_DIR",
|
|
21
|
-
"description": "Directory where crawl results are saved",
|
|
22
|
-
"isRequired": true,
|
|
23
|
-
"format": "string",
|
|
24
|
-
"isSecret": false
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"name": "DEBUG",
|
|
28
|
-
"description": "Enable verbose debug logging (set to 'true' to enable)",
|
|
29
|
-
"isRequired": false,
|
|
30
|
-
"format": "string",
|
|
31
|
-
"isSecret": false
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.houtini-ai/seo-crawler-mcp",
|
|
4
|
+
"description": "Crawl and analyse websites for SEO errors using Crawlee with SQLite storage",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/houtini-ai/seo-crawler-mcp",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"version": "2.1.5",
|
|
10
|
+
"packages": [
|
|
11
|
+
{
|
|
12
|
+
"registryType": "npm",
|
|
13
|
+
"identifier": "@houtini/seo-crawler-mcp",
|
|
14
|
+
"version": "2.1.5",
|
|
15
|
+
"transport": {
|
|
16
|
+
"type": "stdio"
|
|
17
|
+
},
|
|
18
|
+
"environmentVariables": [
|
|
19
|
+
{
|
|
20
|
+
"name": "OUTPUT_DIR",
|
|
21
|
+
"description": "Directory where crawl results are saved",
|
|
22
|
+
"isRequired": true,
|
|
23
|
+
"format": "string",
|
|
24
|
+
"isSecret": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "DEBUG",
|
|
28
|
+
"description": "Enable verbose debug logging (set to 'true' to enable)",
|
|
29
|
+
"isRequired": false,
|
|
30
|
+
"format": "string",
|
|
31
|
+
"isSecret": false
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
package/houtini-logo.jpg
DELETED
|
Binary file
|