@houtini/seo-audit-console 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +308 -306
- package/dist/audit/checks.d.ts +0 -7
- package/dist/audit/checks.d.ts.map +1 -1
- package/dist/audit/checks.js +130 -242
- package/dist/audit/checks.js.map +1 -1
- package/dist/audit/drift.d.ts +0 -12
- package/dist/audit/drift.d.ts.map +1 -1
- package/dist/audit/drift.js +0 -15
- package/dist/audit/drift.js.map +1 -1
- package/dist/audit/engine.d.ts +0 -3
- package/dist/audit/engine.d.ts.map +1 -1
- package/dist/audit/engine.js +7 -42
- package/dist/audit/engine.js.map +1 -1
- package/dist/audit/keywordList.d.ts +0 -14
- package/dist/audit/keywordList.d.ts.map +1 -1
- package/dist/audit/keywordList.js +0 -5
- package/dist/audit/keywordList.js.map +1 -1
- package/dist/audit/opportunities.js +3 -26
- package/dist/audit/opportunities.js.map +1 -1
- package/dist/audit/recon.d.ts +0 -31
- package/dist/audit/recon.d.ts.map +1 -1
- package/dist/audit/recon.js +0 -27
- package/dist/audit/recon.js.map +1 -1
- package/dist/audit/report.d.ts +0 -4
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +0 -7
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/schema-validate.d.ts +0 -26
- package/dist/audit/schema-validate.d.ts.map +1 -1
- package/dist/audit/schema-validate.js +8 -64
- package/dist/audit/schema-validate.js.map +1 -1
- package/dist/audit/templates.d.ts +0 -24
- package/dist/audit/templates.d.ts.map +1 -1
- package/dist/audit/templates.js +1 -21
- package/dist/audit/templates.js.map +1 -1
- package/dist/audit/topicGaps.d.ts +0 -1
- package/dist/audit/topicGaps.d.ts.map +1 -1
- package/dist/audit/topicGaps.js +3 -24
- package/dist/audit/topicGaps.js.map +1 -1
- package/dist/core/AuditDatabase.d.ts +0 -14
- package/dist/core/AuditDatabase.d.ts.map +1 -1
- package/dist/core/AuditDatabase.js +8 -61
- package/dist/core/AuditDatabase.js.map +1 -1
- package/dist/core/Backlinks.d.ts +0 -7
- package/dist/core/Backlinks.d.ts.map +1 -1
- package/dist/core/Backlinks.js +1 -23
- package/dist/core/Backlinks.js.map +1 -1
- package/dist/core/Crawler.d.ts +0 -1
- package/dist/core/Crawler.d.ts.map +1 -1
- package/dist/core/Crawler.js +24 -119
- package/dist/core/Crawler.js.map +1 -1
- package/dist/core/DataForSeoClient.d.ts +0 -74
- package/dist/core/DataForSeoClient.d.ts.map +1 -1
- package/dist/core/DataForSeoClient.js +1 -72
- package/dist/core/DataForSeoClient.js.map +1 -1
- package/dist/core/Entities.d.ts +0 -6
- package/dist/core/Entities.d.ts.map +1 -1
- package/dist/core/Entities.js +0 -8
- package/dist/core/Entities.js.map +1 -1
- package/dist/core/FirecrawlClient.d.ts +0 -18
- package/dist/core/FirecrawlClient.d.ts.map +1 -1
- package/dist/core/FirecrawlClient.js +1 -13
- package/dist/core/FirecrawlClient.js.map +1 -1
- package/dist/core/GscClient.d.ts +0 -7
- package/dist/core/GscClient.d.ts.map +1 -1
- package/dist/core/GscClient.js +1 -10
- package/dist/core/GscClient.js.map +1 -1
- package/dist/core/GscSync.d.ts +0 -4
- package/dist/core/GscSync.d.ts.map +1 -1
- package/dist/core/GscSync.js +2 -33
- package/dist/core/GscSync.js.map +1 -1
- package/dist/core/JobManager.d.ts +0 -5
- package/dist/core/JobManager.d.ts.map +1 -1
- package/dist/core/JobManager.js +0 -8
- package/dist/core/JobManager.js.map +1 -1
- package/dist/core/LinkIntersect.d.ts +0 -1
- package/dist/core/LinkIntersect.d.ts.map +1 -1
- package/dist/core/LinkIntersect.js +1 -37
- package/dist/core/LinkIntersect.js.map +1 -1
- package/dist/core/MajesticClient.d.ts +0 -26
- package/dist/core/MajesticClient.d.ts.map +1 -1
- package/dist/core/MajesticClient.js +0 -15
- package/dist/core/MajesticClient.js.map +1 -1
- package/dist/core/RankTracker.d.ts +0 -4
- package/dist/core/RankTracker.d.ts.map +1 -1
- package/dist/core/RankTracker.js +0 -9
- package/dist/core/RankTracker.js.map +1 -1
- package/dist/core/Refresh.d.ts +0 -6
- package/dist/core/Refresh.d.ts.map +1 -1
- package/dist/core/Refresh.js +0 -6
- package/dist/core/Refresh.js.map +1 -1
- package/dist/core/SupadataClient.d.ts +0 -11
- package/dist/core/SupadataClient.d.ts.map +1 -1
- package/dist/core/SupadataClient.js +0 -5
- package/dist/core/SupadataClient.js.map +1 -1
- package/dist/core/UrlInspector.d.ts +0 -5
- package/dist/core/UrlInspector.d.ts.map +1 -1
- package/dist/core/UrlInspector.js +0 -6
- package/dist/core/UrlInspector.js.map +1 -1
- package/dist/core/WikidataClient.d.ts +0 -2
- package/dist/core/WikidataClient.d.ts.map +1 -1
- package/dist/core/WikidataClient.js +0 -7
- package/dist/core/WikidataClient.js.map +1 -1
- package/dist/core/agentReadiness.d.ts +0 -9
- package/dist/core/agentReadiness.d.ts.map +1 -1
- package/dist/core/agentReadiness.js +0 -13
- package/dist/core/agentReadiness.js.map +1 -1
- package/dist/core/ctrModel.js +0 -3
- package/dist/core/ctrModel.js.map +1 -1
- package/dist/core/dashboardData.d.ts +0 -1
- package/dist/core/dashboardData.d.ts.map +1 -1
- package/dist/core/dashboardData.js +13 -95
- package/dist/core/dashboardData.js.map +1 -1
- package/dist/core/dataStorage.d.ts +0 -2
- package/dist/core/dataStorage.d.ts.map +1 -1
- package/dist/core/dataStorage.js +6 -19
- package/dist/core/dataStorage.js.map +1 -1
- package/dist/core/draftBrief.d.ts +0 -7
- package/dist/core/draftBrief.d.ts.map +1 -1
- package/dist/core/draftBrief.js +0 -10
- package/dist/core/draftBrief.js.map +1 -1
- package/dist/core/extract.d.ts +0 -11
- package/dist/core/extract.d.ts.map +1 -1
- package/dist/core/extract.js +1 -38
- package/dist/core/extract.js.map +1 -1
- package/dist/core/googleNews.d.ts +0 -11
- package/dist/core/googleNews.d.ts.map +1 -1
- package/dist/core/googleNews.js +0 -7
- package/dist/core/googleNews.js.map +1 -1
- package/dist/core/gscFreshness.d.ts +0 -10
- package/dist/core/gscFreshness.d.ts.map +1 -1
- package/dist/core/gscFreshness.js +0 -11
- package/dist/core/gscFreshness.js.map +1 -1
- package/dist/core/linkGraph.d.ts +0 -15
- package/dist/core/linkGraph.d.ts.map +1 -1
- package/dist/core/linkGraph.js +1 -23
- package/dist/core/linkGraph.js.map +1 -1
- package/dist/core/marketSizing.d.ts +0 -13
- package/dist/core/marketSizing.d.ts.map +1 -1
- package/dist/core/marketSizing.js +1 -1
- package/dist/core/marketSizing.js.map +1 -1
- package/dist/core/passageScore.d.ts +0 -13
- package/dist/core/passageScore.d.ts.map +1 -1
- package/dist/core/passageScore.js +1 -16
- package/dist/core/passageScore.js.map +1 -1
- package/dist/core/paths.d.ts +0 -3
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +0 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/queryData.d.ts +0 -1
- package/dist/core/queryData.d.ts.map +1 -1
- package/dist/core/queryData.js +0 -18
- package/dist/core/queryData.js.map +1 -1
- package/dist/core/reconFetch.d.ts +0 -6
- package/dist/core/reconFetch.d.ts.map +1 -1
- package/dist/core/reconFetch.js +1 -4
- package/dist/core/reconFetch.js.map +1 -1
- package/dist/core/reconResearch.d.ts +0 -20
- package/dist/core/reconResearch.d.ts.map +1 -1
- package/dist/core/reconResearch.js +1 -16
- package/dist/core/reconResearch.js.map +1 -1
- package/dist/core/reranker.d.ts +0 -2
- package/dist/core/reranker.d.ts.map +1 -1
- package/dist/core/reranker.js +1 -11
- package/dist/core/reranker.js.map +1 -1
- package/dist/core/robots.d.ts +0 -6
- package/dist/core/robots.d.ts.map +1 -1
- package/dist/core/robots.js +1 -7
- package/dist/core/robots.js.map +1 -1
- package/dist/core/serpFootprint.d.ts +0 -12
- package/dist/core/serpFootprint.d.ts.map +1 -1
- package/dist/core/serpFootprint.js +0 -1
- package/dist/core/serpFootprint.js.map +1 -1
- package/dist/core/serpRecon.d.ts +0 -14
- package/dist/core/serpRecon.d.ts.map +1 -1
- package/dist/core/serpRecon.js +1 -13
- package/dist/core/serpRecon.js.map +1 -1
- package/dist/core/sitemap.js +3 -16
- package/dist/core/sitemap.js.map +1 -1
- package/dist/core/sql.d.ts +0 -4
- package/dist/core/sql.d.ts.map +1 -1
- package/dist/core/sql.js +0 -4
- package/dist/core/sql.js.map +1 -1
- package/dist/core/url-key.d.ts +0 -31
- package/dist/core/url-key.d.ts.map +1 -1
- package/dist/core/url-key.js +1 -38
- package/dist/core/url-key.js.map +1 -1
- package/dist/core/webHandlers.d.ts +0 -6
- package/dist/core/webHandlers.d.ts.map +1 -1
- package/dist/core/webHandlers.js +2 -5
- package/dist/core/webHandlers.js.map +1 -1
- package/dist/core/webServer.d.ts +0 -16
- package/dist/core/webServer.d.ts.map +1 -1
- package/dist/core/webServer.js +3 -17
- package/dist/core/webServer.js.map +1 -1
- package/dist/dashboard.js +0 -23
- package/dist/dashboard.js.map +1 -1
- package/dist/generators/index.d.ts +0 -7
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +1 -26
- package/dist/generators/index.js.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/server.js +16 -166
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/dist/core/Crawler.js
CHANGED
|
@@ -8,13 +8,8 @@ import { fetchRobots } from './robots.js';
|
|
|
8
8
|
import { finalizeLinkGraph } from './linkGraph.js';
|
|
9
9
|
import { fetchSitemapUrls } from './sitemap.js';
|
|
10
10
|
import { snapshotCrawl } from '../audit/drift.js';
|
|
11
|
-
// Robust HTML detection from a Content-Type header: take the MIME type before any
|
|
12
|
-
// parameters (charset, boundary), normalised — text/html and XHTML count as HTML.
|
|
13
11
|
const HTML_MIME_TYPES = new Set(['text/html', 'application/xhtml+xml']);
|
|
14
12
|
export const isHtmlContentType = (ct) => HTML_MIME_TYPES.has((ct ?? '').split(';')[0].trim().toLowerCase());
|
|
15
|
-
// File types we never need the body of — images, media, fonts, archives, office docs, css/js,
|
|
16
|
-
// pdf. We HEAD these (status + content-type only, no download) — a big bandwidth/time win on
|
|
17
|
-
// asset-heavy sites. We still record them (status/type) so broken-link checks work.
|
|
18
13
|
const ASSET_EXT = /\.(jpe?g|png|gif|webp|avif|svg|svgz|ico|bmp|tiff?|heic|psd|pdf|zip|rar|7z|gz|tgz|tar|bz2|mp4|mpeg|mpg|m4v|webm|mov|avi|mkv|flv|wmv|mp3|m4a|aac|opus|weba|wav|ogg|oga|flac|wma|css|js|mjs|cjs|map|woff2?|ttf|otf|eot|dmg|exe|msi|apk|bin|doc|docx|xls|xlsx|ppt|pptx)$/i;
|
|
19
14
|
const isAssetUrl = (u) => { try {
|
|
20
15
|
return ASSET_EXT.test(new URL(u).pathname);
|
|
@@ -22,30 +17,25 @@ const isAssetUrl = (u) => { try {
|
|
|
22
17
|
catch {
|
|
23
18
|
return false;
|
|
24
19
|
} };
|
|
25
|
-
// URL patterns never worth crawling — internal site-search, infinite param spaces, cart/builder
|
|
26
|
-
// states and CMS infrastructure. Skipped at enqueue (never fetched) so large sites stay light
|
|
27
|
-
// and the crawl doesn't drown in low-value URLs. Extend per-crawl via opts.excludePatterns.
|
|
28
20
|
const SKIP_PATTERNS = [
|
|
29
21
|
/[?&](sps_query|s|q|search|keyword|orderby|sort_by|add-to-cart|fl_builder|elementor-preview)=/i,
|
|
30
|
-
/[?&](pf_|filter[._]|dppref|variant=)/i,
|
|
31
|
-
/[?&](client_id|redirect_uri|response_type)=|\/authentication\/|\/oauth\/|\/login_with_shop\//i,
|
|
22
|
+
/[?&](pf_|filter[._]|dppref|variant=)/i,
|
|
23
|
+
/[?&](client_id|redirect_uri|response_type)=|\/authentication\/|\/oauth\/|\/login_with_shop\//i,
|
|
32
24
|
/\/search(-results)?\//i,
|
|
33
25
|
/[?&]replytocom=/i,
|
|
34
26
|
/\/(wp-json|wp-admin|wp-login\.php|xmlrpc\.php)(\/|$|\?)/i,
|
|
35
27
|
/\/(cart|checkout|my-account|basket)(\/|$)/i,
|
|
36
28
|
];
|
|
37
29
|
const skipUrl = (u, extra) => SKIP_PATTERNS.some(re => re.test(u)) || extra.some(re => re.test(u));
|
|
38
|
-
// Classify a fetched URL's indexability + the REASON it's not indexable, so an audit can
|
|
39
|
-
// report *why* Google would skip a page (status, directives, canonical, type) — not just yes/no.
|
|
40
30
|
function classifyIndexability(isHtml, status, noindexMeta, xRobotsTag, canonicalKey, finalKey) {
|
|
41
31
|
if (status >= 400)
|
|
42
|
-
return { indexable: 0, reason: `http-${status}` };
|
|
32
|
+
return { indexable: 0, reason: `http-${status}` };
|
|
43
33
|
if (status >= 300)
|
|
44
|
-
return { indexable: 0, reason: 'redirect' };
|
|
34
|
+
return { indexable: 0, reason: 'redirect' };
|
|
45
35
|
if (!isHtml)
|
|
46
36
|
return { indexable: 0, reason: 'non-html' };
|
|
47
37
|
if (/noindex/i.test(xRobotsTag ?? ''))
|
|
48
|
-
return { indexable: 0, reason: 'noindex-header' };
|
|
38
|
+
return { indexable: 0, reason: 'noindex-header' };
|
|
49
39
|
if (noindexMeta)
|
|
50
40
|
return { indexable: 0, reason: 'noindex-meta' };
|
|
51
41
|
if (canonicalKey && canonicalKey !== finalKey)
|
|
@@ -54,24 +44,16 @@ function classifyIndexability(isHtml, status, noindexMeta, xRobotsTag, canonical
|
|
|
54
44
|
}
|
|
55
45
|
const DEFAULT_UA = 'Mozilla/5.0 (compatible; seo-audit-console/0.1; +https://github.com/houtini-ai/seo-audit-console)';
|
|
56
46
|
const FETCH_TIMEOUT_MS = 20000;
|
|
57
|
-
const MAX_TRANSIENT_RETRIES = 4;
|
|
47
|
+
const MAX_TRANSIENT_RETRIES = 4;
|
|
58
48
|
const FLUSH_EVERY = 50;
|
|
59
|
-
// Per-crawl connection pool: HTTP/2 when the origin supports it (one multiplexed connection
|
|
60
|
-
// instead of N TCP handshakes), keep-alive reuse, bounded per-origin connections. Compression
|
|
61
|
-
// is negotiated explicitly (gzip/br/deflate — undici decompresses transparently; the recorded
|
|
62
|
-
// content_encoding header still reflects what the server actually served).
|
|
63
49
|
const makeDispatcher = (connections) => new Agent({ allowH2: true, connections, keepAliveTimeout: 30_000, keepAliveMaxTimeout: 60_000 });
|
|
64
50
|
async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
65
51
|
const redirects = [];
|
|
66
52
|
let current = url;
|
|
67
53
|
let hops = 0;
|
|
68
|
-
let transientRetries = 0;
|
|
69
|
-
let netRetries = 0;
|
|
54
|
+
let transientRetries = 0;
|
|
55
|
+
let netRetries = 0;
|
|
70
56
|
const start = Date.now();
|
|
71
|
-
// Always GET — never HEAD. Some servers/CDNs return a different status for HEAD than for GET
|
|
72
|
-
// (e.g. a 404 on HEAD where GET is 200, or vice-versa), which would mis-record a URL's real
|
|
73
|
-
// status. We still avoid downloading asset bytes by cancelling the body stream for any non-HTML
|
|
74
|
-
// response below, so a GET stays as light as a HEAD for images/PDFs/etc.
|
|
75
57
|
const method = 'GET';
|
|
76
58
|
while (true) {
|
|
77
59
|
let res;
|
|
@@ -80,7 +62,6 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
80
62
|
method,
|
|
81
63
|
redirect: 'manual',
|
|
82
64
|
dispatcher,
|
|
83
|
-
// pages change between crawls — ask upstream caches/CDNs for the current copy
|
|
84
65
|
headers: {
|
|
85
66
|
'user-agent': ua,
|
|
86
67
|
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
@@ -92,11 +73,6 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
92
73
|
}));
|
|
93
74
|
}
|
|
94
75
|
catch (err) {
|
|
95
|
-
// The server slowed past the timeout or dropped the connection. Don't lose the page to a
|
|
96
|
-
// transient hiccup — wait (10s, 20s, 30s) and retry before giving up, so a slowdown becomes
|
|
97
|
-
// latency rather than a silent coverage gap. Uses its OWN budget (not the 429/503 one) so a
|
|
98
|
-
// page that 503s then times out still gets full network retries; trips `throttled` so the
|
|
99
|
-
// crawl paces itself down. Surfaces as a failure only after the budget is exhausted.
|
|
100
76
|
if (netRetries < MAX_TRANSIENT_RETRIES) {
|
|
101
77
|
netRetries++;
|
|
102
78
|
await sleep(Math.min(10000 * netRetries, 30000));
|
|
@@ -104,28 +80,23 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
104
80
|
}
|
|
105
81
|
throw err;
|
|
106
82
|
}
|
|
107
|
-
// Transient throttling (429 Too Many Requests / 503 Service Unavailable) is NOT a broken
|
|
108
|
-
// page — back off (respecting Retry-After) and retry, so a fast crawl doesn't poison the
|
|
109
|
-
// data with rate-limit statuses. Only the final status after retries is recorded.
|
|
110
83
|
if ((res.status === 429 || res.status === 503) && transientRetries < MAX_TRANSIENT_RETRIES) {
|
|
111
84
|
const ra = Number(res.headers.get('retry-after'));
|
|
112
85
|
const waitMs = Number.isFinite(ra) && ra > 0 ? Math.min(ra * 1000, 20000) : Math.min(1000 * 2 ** transientRetries, 8000);
|
|
113
86
|
try {
|
|
114
87
|
await res.body?.cancel();
|
|
115
88
|
}
|
|
116
|
-
catch {
|
|
89
|
+
catch { }
|
|
117
90
|
transientRetries++;
|
|
118
91
|
await sleep(waitMs);
|
|
119
92
|
continue;
|
|
120
93
|
}
|
|
121
94
|
if (res.status >= 300 && res.status < 400 && res.headers.get('location') && hops < maxHops) {
|
|
122
95
|
const loc = new URL(res.headers.get('location'), current).toString();
|
|
123
|
-
// Drain the redirect response's body (some servers attach HTML to 301s) so the
|
|
124
|
-
// keep-alive connection is released — otherwise redirect-heavy crawls leak sockets.
|
|
125
96
|
try {
|
|
126
97
|
await res.body?.cancel();
|
|
127
98
|
}
|
|
128
|
-
catch {
|
|
99
|
+
catch { }
|
|
129
100
|
redirects.push({ from: current, to: loc, status: res.status });
|
|
130
101
|
current = loc;
|
|
131
102
|
hops++;
|
|
@@ -133,8 +104,6 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
133
104
|
}
|
|
134
105
|
const contentType = res.headers.get('content-type') ?? '';
|
|
135
106
|
const isHtml = isHtmlContentType(contentType);
|
|
136
|
-
// Read the body only for HTML; for any non-HTML response (image/PDF/asset) abort the transfer
|
|
137
|
-
// so we never pull the bytes — keeping the always-GET fetch as cheap as a HEAD would have been.
|
|
138
107
|
let body = '';
|
|
139
108
|
if (isHtml)
|
|
140
109
|
body = await res.text();
|
|
@@ -142,7 +111,7 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
142
111
|
try {
|
|
143
112
|
await res.body?.cancel();
|
|
144
113
|
}
|
|
145
|
-
catch {
|
|
114
|
+
catch { }
|
|
146
115
|
}
|
|
147
116
|
const h = (name) => res.headers.get(name);
|
|
148
117
|
const sec = {};
|
|
@@ -169,9 +138,6 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
169
138
|
body,
|
|
170
139
|
redirects,
|
|
171
140
|
xRobotsTag: h('x-robots-tag'),
|
|
172
|
-
// For HTML (body read) always the DECODED size — content-length on a compressed
|
|
173
|
-
// response is the wire size, and downstream transfer estimates (×0.22) assume raw.
|
|
174
|
-
// Non-HTML: content-length when given, else null (body isn't read; 0 would mislead).
|
|
175
141
|
bytes: body ? Buffer.byteLength(body) : (Number(h('content-length')) || null),
|
|
176
142
|
timeMs: Date.now() - start,
|
|
177
143
|
throttled: transientRetries > 0 || netRetries > 0,
|
|
@@ -179,7 +145,6 @@ async function fetchWithRedirects(url, ua, dispatcher, maxHops = 5) {
|
|
|
179
145
|
}
|
|
180
146
|
}
|
|
181
147
|
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
182
|
-
/** Self-contained, stdio-safe HTTP crawler writing into a property's AuditDatabase. */
|
|
183
148
|
export class Crawler {
|
|
184
149
|
dataDir;
|
|
185
150
|
constructor(dataDir) {
|
|
@@ -188,9 +153,6 @@ export class Crawler {
|
|
|
188
153
|
async run(siteUrl, opts, update, signal) {
|
|
189
154
|
const maxPages = opts.maxPages ?? 4000;
|
|
190
155
|
const maxDepth = opts.maxDepth ?? 10;
|
|
191
|
-
// Default 8 parallel fetches (was 4) — with HTTP/2 multiplexing this is one or two
|
|
192
|
-
// connections, not 8 sockets. Adaptive throttling still ramps the delay on any 429/503,
|
|
193
|
-
// so a struggling host slows the whole pool down.
|
|
194
156
|
const concurrency = Math.max(1, Math.min(opts.maxConcurrency ?? 8, 24));
|
|
195
157
|
const delayMs = opts.delayMs ?? 250;
|
|
196
158
|
const ua = opts.userAgent ?? DEFAULT_UA;
|
|
@@ -212,15 +174,7 @@ export class Crawler {
|
|
|
212
174
|
db.db.prepare(`INSERT INTO crawl_metadata (crawl_id, base_url, base_domain, status, max_depth, max_pages, user_agent, started_at)
|
|
213
175
|
VALUES (?, ?, ?, 'running', ?, ?, ?, ?)`).run(crawlId, seed, baseHost, maxDepth, maxPages, ua, startedAt);
|
|
214
176
|
try {
|
|
215
|
-
|
|
216
|
-
// re-crawls reflect changes (the "fix → re-crawl → verify" loop) instead of
|
|
217
|
-
// accumulating stale pages / duplicate links. GSC/inspection/findings are separate.
|
|
218
|
-
// The pages/links wipe is DEFERRED until the first successful page write: if the crawl
|
|
219
|
-
// dies before fetching anything (site down, seed unreachable), the previous good
|
|
220
|
-
// snapshot survives instead of leaving every downstream consumer an empty table.
|
|
221
|
-
// (It must still run before the first insert — old rows would otherwise absorb the
|
|
222
|
-
// new crawl's writes via ON CONFLICT(url_key) DO NOTHING.)
|
|
223
|
-
db.db.exec('DELETE FROM errors;'); // per-crawl diagnostics, not part of the snapshot
|
|
177
|
+
db.db.exec('DELETE FROM errors;');
|
|
224
178
|
let wipedPrior = false;
|
|
225
179
|
const ensureWiped = () => {
|
|
226
180
|
if (wipedPrior)
|
|
@@ -246,8 +200,6 @@ export class Crawler {
|
|
|
246
200
|
@h2_count,@heading_skips,@rel_next,@rel_prev,@rel_amphtml,@mixed_content_count,@twitter_tags,
|
|
247
201
|
@has_microdata,@has_rdfa,@has_favicon,@has_analytics,@body_chunks,@security_headers)
|
|
248
202
|
ON CONFLICT(url_key) DO NOTHING`);
|
|
249
|
-
// Robots-disallowed URLs are NOT fetched (we respect robots), but we record them as
|
|
250
|
-
// known + not-indexable with the reason, so the audit can report what robots is blocking.
|
|
251
203
|
const robotsInsert = db.db.prepare(`INSERT INTO pages (crawl_id, url, url_key, status_code, is_internal, indexable, indexable_reason, depth)
|
|
252
204
|
VALUES (@crawl_id,@url,@url_key,NULL,1,0,'robots-disallowed',@depth)
|
|
253
205
|
ON CONFLICT(url_key) DO NOTHING`);
|
|
@@ -261,8 +213,8 @@ export class Crawler {
|
|
|
261
213
|
const pageBuf = [];
|
|
262
214
|
const linkBuf = [];
|
|
263
215
|
const visited = new Set();
|
|
264
|
-
const emitted = new Set();
|
|
265
|
-
const imageRefs = new Map();
|
|
216
|
+
const emitted = new Set();
|
|
217
|
+
const imageRefs = new Map();
|
|
266
218
|
const frontier = [];
|
|
267
219
|
let crawled = 0, failed = 0, skipped = 0, discovered = 0;
|
|
268
220
|
const enqueue = (url, depth) => {
|
|
@@ -274,10 +226,6 @@ export class Crawler {
|
|
|
274
226
|
frontier.push({ url, depth });
|
|
275
227
|
};
|
|
276
228
|
enqueue(seed, 0);
|
|
277
|
-
// Seed the frontier from the XML sitemap so unlinked/orphan pages get crawled — link-following
|
|
278
|
-
// alone misses them (e.g. directdrivewheels: 367 sitemap URLs, only ~100 reachable via links).
|
|
279
|
-
// Also stores the sitemap for crawl↔sitemap reconciliation. Off-host/junk/asset URLs filtered;
|
|
280
|
-
// bounded by maxPages.
|
|
281
229
|
if (!signal.aborted) {
|
|
282
230
|
try {
|
|
283
231
|
const sm = await fetchSitemapUrls(origin, ua, keyOpts);
|
|
@@ -296,20 +244,14 @@ export class Crawler {
|
|
|
296
244
|
}
|
|
297
245
|
if (!isInternalHost(host, baseHost) || skipUrl(u.url, excludeRes) || isAssetUrl(u.url))
|
|
298
246
|
continue;
|
|
299
|
-
enqueue(u.url, 1);
|
|
247
|
+
enqueue(u.url, 1);
|
|
300
248
|
}
|
|
301
249
|
}
|
|
302
250
|
catch (err) {
|
|
303
251
|
console.error('[crawl] sitemap seed skipped:', err instanceof Error ? err.message : String(err));
|
|
304
252
|
}
|
|
305
253
|
}
|
|
306
|
-
// Also seed from GSC-known URLs (pages Google sends traffic to) so coverage doesn't depend on
|
|
307
|
-
// the site's sitemap being complete — e.g. simracing has 334 sitemap URLs but GSC knows 1,299.
|
|
308
|
-
// page_key is already a normalised URL; off-host/junk/asset filtered; bounded by maxPages.
|
|
309
254
|
try {
|
|
310
|
-
// Seed with the RAW GSC page URL, not the normalised page_key — the key strips
|
|
311
|
-
// trailing slashes / sorts params, so fetching it can add a phantom 301 hop (or 404)
|
|
312
|
-
// on sites where the canonical form matters. Fall back to page_key for old rows.
|
|
313
255
|
for (const row of db.db.prepare(`SELECT DISTINCT COALESCE(page, page_key) AS u FROM search_analytics WHERE COALESCE(page, page_key) IS NOT NULL`).all()) {
|
|
314
256
|
if (discovered >= maxPages)
|
|
315
257
|
break;
|
|
@@ -343,9 +285,6 @@ export class Crawler {
|
|
|
343
285
|
.run(discovered, crawled, failed, skipped, crawlId);
|
|
344
286
|
update({ crawlId, crawled, discovered, failed, skipped });
|
|
345
287
|
};
|
|
346
|
-
// Adaptive pacing: start at the configured delay; ramp UP when the host throttles (429/503)
|
|
347
|
-
// and decay back toward base when it's clear. Same pages crawled (no data lost) — just paced
|
|
348
|
-
// so hard-throttled sites stop triggering retries (net faster + cleaner) and fast sites stay fast.
|
|
349
288
|
let dynamicDelay = delayMs;
|
|
350
289
|
const processOne = async (item) => {
|
|
351
290
|
if (dynamicDelay)
|
|
@@ -361,30 +300,23 @@ export class Crawler {
|
|
|
361
300
|
try {
|
|
362
301
|
robotsInsert.run({ crawl_id: crawlId, url: item.url, url_key: urlKey(item.url, keyOpts), depth: item.depth });
|
|
363
302
|
}
|
|
364
|
-
catch {
|
|
303
|
+
catch { }
|
|
365
304
|
skipped++;
|
|
366
305
|
return;
|
|
367
306
|
}
|
|
368
307
|
try {
|
|
369
308
|
const r = await fetchWithRedirects(item.url, ua, dispatcher);
|
|
370
|
-
// Self-tune the delay from the throttle signal.
|
|
371
309
|
if (r.throttled)
|
|
372
310
|
dynamicDelay = Math.min(Math.round(dynamicDelay * 1.5) + 200, 5000);
|
|
373
311
|
else if (dynamicDelay > delayMs)
|
|
374
312
|
dynamicDelay = Math.max(delayMs, Math.round(dynamicDelay * 0.9));
|
|
375
|
-
// Redirect that leaves the internal host or lands on a skip-pattern URL (e.g. an internal
|
|
376
|
-
// link 301-ing into Shopify's accounts.<domain> OAuth flow): record the ORIGINAL URL as a
|
|
377
|
-
// redirect-out and do NOT store the off-site target as a page or extract its links.
|
|
378
313
|
let offsite = false;
|
|
379
314
|
try {
|
|
380
315
|
offsite = r.redirects.length > 0 && (!isInternalHost(new URL(r.finalUrl).hostname, baseHost) || skipUrl(r.finalUrl, excludeRes));
|
|
381
316
|
}
|
|
382
|
-
catch {
|
|
317
|
+
catch { }
|
|
383
318
|
const pageUrl = offsite ? item.url : r.finalUrl;
|
|
384
319
|
const finalKey = urlKey(pageUrl, keyOpts);
|
|
385
|
-
// Multiple enqueued URLs can redirect to the same final page. The pages table
|
|
386
|
-
// dedupes via ON CONFLICT(url_key), but re-extracting the same HTML would insert
|
|
387
|
-
// its outlinks AGAIN, inflating inlink_count/iPR weights — so skip re-processing.
|
|
388
320
|
if (emitted.has(finalKey)) {
|
|
389
321
|
crawled++;
|
|
390
322
|
flush();
|
|
@@ -394,7 +326,6 @@ export class Crawler {
|
|
|
394
326
|
const status = offsite ? (r.redirects[0]?.status ?? r.status) : r.status;
|
|
395
327
|
const isHtml = !offsite && isHtmlContentType(r.contentType);
|
|
396
328
|
const ex = isHtml && r.status === 200 ? extractPage(r.body, r.finalUrl, baseHost, keyOpts, r.xRobotsTag) : null;
|
|
397
|
-
// Only HTML 200s are indexable; otherwise capture WHY not (status/type/directive/canonical).
|
|
398
329
|
const { indexable, reason } = offsite
|
|
399
330
|
? { indexable: 0, reason: 'redirect' }
|
|
400
331
|
: classifyIndexability(isHtml, r.status, !!ex?.noindex, r.xRobotsTag, ex?.canonicalKey ?? null, finalKey);
|
|
@@ -408,7 +339,7 @@ export class Crawler {
|
|
|
408
339
|
meta_description: ex?.metaDescription ?? null, meta_description_length: ex?.metaDescriptionLength ?? 0,
|
|
409
340
|
h1: ex?.h1 ?? null, h1_count: ex?.h1Count ?? 0, word_count: ex?.wordCount ?? 0,
|
|
410
341
|
lang: ex?.lang ?? null,
|
|
411
|
-
charset: ex?.charset ?? r.contentType.match(/charset=([\w-]+)/i)?.[1] ?? null,
|
|
342
|
+
charset: ex?.charset ?? r.contentType.match(/charset=([\w-]+)/i)?.[1] ?? null,
|
|
412
343
|
canonical_url: ex?.canonicalUrl ?? null, canonical_key: ex?.canonicalKey ?? null,
|
|
413
344
|
robots: ex?.robots ?? null, x_robots_tag: r.xRobotsTag ?? null, viewport: ex?.viewport ?? null,
|
|
414
345
|
json_ld: ex?.jsonLd ?? null, og_tags: ex?.ogTags ?? null, hreflang: ex?.hreflang ?? null,
|
|
@@ -449,9 +380,6 @@ export class Crawler {
|
|
|
449
380
|
errorInsert.run(crawlId, item.url, 'fetch', err instanceof Error ? err.message : String(err));
|
|
450
381
|
}
|
|
451
382
|
};
|
|
452
|
-
// Concurrency pool over the shared frontier. Only resolve once all in-flight
|
|
453
|
-
// work has drained — never while requests are still running (avoids late
|
|
454
|
-
// writes after the DB is closed when the page cap is hit mid-flight).
|
|
455
383
|
await new Promise((resolve) => {
|
|
456
384
|
let running = 0;
|
|
457
385
|
let finished = false;
|
|
@@ -465,7 +393,7 @@ export class Crawler {
|
|
|
465
393
|
return;
|
|
466
394
|
}
|
|
467
395
|
if (capHit)
|
|
468
|
-
return;
|
|
396
|
+
return;
|
|
469
397
|
while (running < concurrency && frontier.length > 0 && crawled < maxPages && !signal.aborted) {
|
|
470
398
|
const item = frontier.shift();
|
|
471
399
|
running++;
|
|
@@ -475,23 +403,16 @@ export class Crawler {
|
|
|
475
403
|
pump();
|
|
476
404
|
});
|
|
477
405
|
flush(true);
|
|
478
|
-
|
|
479
|
-
// reading ONLY the response headers (content-length + content-type) — the body is cancelled
|
|
480
|
-
// immediately, so no image bytes are ever downloaded. Bounded so a huge site can't stall
|
|
481
|
-
// the crawl; feeds the Site health image-weight report.
|
|
482
|
-
if (!signal.aborted && wipedPrior) { // wipedPrior = the crawl really wrote pages; keep old sample otherwise
|
|
406
|
+
if (!signal.aborted && wipedPrior) {
|
|
483
407
|
db.db.exec('DELETE FROM image_assets');
|
|
484
408
|
}
|
|
485
|
-
// Shared header-only probe for the two post-crawl passes: fetch, read headers, cancel the
|
|
486
|
-
// body immediately — the bytes are never downloaded. Politeness lives in probePool: 2
|
|
487
|
-
// workers paced at (at least) the crawl delay, so the aggregate stays at a few rps.
|
|
488
409
|
const headProbe = async (url, extraHeaders, redirect) => {
|
|
489
410
|
try {
|
|
490
411
|
const res = await ufetch(url, { headers: { 'user-agent': ua, ...extraHeaders }, redirect, dispatcher, signal: AbortSignal.timeout(10000) });
|
|
491
412
|
try {
|
|
492
413
|
await res.body?.cancel();
|
|
493
414
|
}
|
|
494
|
-
catch {
|
|
415
|
+
catch { }
|
|
495
416
|
return { status: res.status, header: (n) => res.headers.get(n) };
|
|
496
417
|
}
|
|
497
418
|
catch {
|
|
@@ -511,9 +432,6 @@ export class Crawler {
|
|
|
511
432
|
};
|
|
512
433
|
if (!signal.aborted && imageRefs.size) {
|
|
513
434
|
const MAX_IMAGES = 500;
|
|
514
|
-
// Same-host images obey the site's robots rules (same gate as the page crawl). Off-host
|
|
515
|
-
// (CDN) images are kept — the SEO question is what the page loads, not where it's hosted —
|
|
516
|
-
// but they go through the paced pool like everything else.
|
|
517
435
|
const sample = [...imageRefs.entries()]
|
|
518
436
|
.filter(([url]) => {
|
|
519
437
|
try {
|
|
@@ -540,12 +458,7 @@ export class Crawler {
|
|
|
540
458
|
db.db.transaction(() => { for (const r of rows)
|
|
541
459
|
imgInsert.run(...r); })();
|
|
542
460
|
}
|
|
543
|
-
// Post-crawl: in-degree (orphans), internal PageRank (iPR) + body-only click depth.
|
|
544
461
|
finalizeLinkGraph(db.db, crawlId, urlKey(seed, keyOpts));
|
|
545
|
-
// Post-crawl: conditional-revalidation probe. Pages that advertised validators
|
|
546
|
-
// (Last-Modified / ETag) get ONE conditional re-request — a properly configured server
|
|
547
|
-
// answers 304 Not Modified; a 200 means it re-serves the full body to every revalidating
|
|
548
|
-
// crawler and cache, wasting crawl budget. Bounded sample, most-linked pages first.
|
|
549
462
|
if (!signal.aborted) {
|
|
550
463
|
const cands = db.db.prepare(`SELECT url, url_key, last_modified lm, etag FROM pages
|
|
551
464
|
WHERE status_code=200 AND is_internal=1 AND (last_modified IS NOT NULL OR etag IS NOT NULL)
|
|
@@ -559,22 +472,14 @@ export class Crawler {
|
|
|
559
472
|
headers['if-modified-since'] = p.lm;
|
|
560
473
|
const r = await headProbe(p.url, headers, 'manual');
|
|
561
474
|
if (r)
|
|
562
|
-
upd.run(r.status === 304 ? 1 : 0, p.url_key);
|
|
475
|
+
upd.run(r.status === 304 ? 1 : 0, p.url_key);
|
|
563
476
|
});
|
|
564
477
|
}
|
|
565
|
-
// (Sitemap is now fetched + stored + used as crawl seeds at the start of the crawl.)
|
|
566
478
|
const finishedAt = new Date().toISOString();
|
|
567
479
|
db.db.prepare(`UPDATE crawl_metadata SET status=?, urls_discovered=?, urls_crawled=?, urls_failed=?, urls_skipped=?,
|
|
568
480
|
finished_at=?, duration_ms=? WHERE crawl_id=?`).run(signal.aborted ? 'cancelled' : 'completed', discovered, crawled, failed, skipped, finishedAt, Date.parse(finishedAt) - Date.parse(startedAt), crawlId);
|
|
569
481
|
db.db.prepare(`UPDATE property_meta SET last_crawl_id=? WHERE site_url=?`).run(crawlId, siteUrl);
|
|
570
|
-
// Drift snapshot — the crawl OWNS its own history. This used to happen only in runAudit, so a
|
|
571
|
-
// crawl that wasn't followed by an audit never entered page_snapshots and detect_changes
|
|
572
|
-
// silently diffed older crawls while presenting them as current. Idempotent per crawl_id, so
|
|
573
|
-
// the runAudit call stays as a self-heal for legacy/killed crawls.
|
|
574
|
-
// Skipped on cancel: a partial page set would read as hundreds of pages "removed" next diff.
|
|
575
482
|
if (!signal.aborted) {
|
|
576
|
-
// Never fail a good crawl over its history — but say so, because a silently missing
|
|
577
|
-
// snapshot is the exact failure this fix exists to remove. diffLatest also reports the gap.
|
|
578
483
|
try {
|
|
579
484
|
snapshotCrawl(db.db, crawlId, finishedAt);
|
|
580
485
|
}
|
|
@@ -589,7 +494,7 @@ export class Crawler {
|
|
|
589
494
|
db.db.prepare(`UPDATE crawl_metadata SET status='failed', error=?, finished_at=datetime('now') WHERE crawl_id=? AND status='running'`)
|
|
590
495
|
.run(err instanceof Error ? err.message : String(err), crawlId);
|
|
591
496
|
}
|
|
592
|
-
catch {
|
|
497
|
+
catch { }
|
|
593
498
|
throw err;
|
|
594
499
|
}
|
|
595
500
|
finally {
|
|
@@ -597,7 +502,7 @@ export class Crawler {
|
|
|
597
502
|
try {
|
|
598
503
|
await dispatcher.close();
|
|
599
504
|
}
|
|
600
|
-
catch {
|
|
505
|
+
catch { }
|
|
601
506
|
}
|
|
602
507
|
}
|
|
603
508
|
}
|
package/dist/core/Crawler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crawler.js","sourceRoot":"","sources":["../../src/core/Crawler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Crawler.js","sourceRoot":"","sources":["../../src/core/Crawler.ts"],"names":[],"mappings":"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"}
|