@houtini/seo-audit-console 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +16 -14
  2. package/dist/audit/checks.d.ts +0 -7
  3. package/dist/audit/checks.d.ts.map +1 -1
  4. package/dist/audit/checks.js +22 -282
  5. package/dist/audit/checks.js.map +1 -1
  6. package/dist/audit/drift.d.ts +0 -12
  7. package/dist/audit/drift.d.ts.map +1 -1
  8. package/dist/audit/drift.js +0 -15
  9. package/dist/audit/drift.js.map +1 -1
  10. package/dist/audit/engine.d.ts +0 -3
  11. package/dist/audit/engine.d.ts.map +1 -1
  12. package/dist/audit/engine.js +7 -42
  13. package/dist/audit/engine.js.map +1 -1
  14. package/dist/audit/keywordList.d.ts +0 -14
  15. package/dist/audit/keywordList.d.ts.map +1 -1
  16. package/dist/audit/keywordList.js +0 -5
  17. package/dist/audit/keywordList.js.map +1 -1
  18. package/dist/audit/opportunities.js +3 -26
  19. package/dist/audit/opportunities.js.map +1 -1
  20. package/dist/audit/recon.d.ts +0 -31
  21. package/dist/audit/recon.d.ts.map +1 -1
  22. package/dist/audit/recon.js +0 -27
  23. package/dist/audit/recon.js.map +1 -1
  24. package/dist/audit/report.d.ts +0 -4
  25. package/dist/audit/report.d.ts.map +1 -1
  26. package/dist/audit/report.js +0 -7
  27. package/dist/audit/report.js.map +1 -1
  28. package/dist/audit/schema-validate.d.ts +0 -26
  29. package/dist/audit/schema-validate.d.ts.map +1 -1
  30. package/dist/audit/schema-validate.js +8 -64
  31. package/dist/audit/schema-validate.js.map +1 -1
  32. package/dist/audit/templates.d.ts +0 -24
  33. package/dist/audit/templates.d.ts.map +1 -1
  34. package/dist/audit/templates.js +1 -21
  35. package/dist/audit/templates.js.map +1 -1
  36. package/dist/audit/topicGaps.d.ts +0 -1
  37. package/dist/audit/topicGaps.d.ts.map +1 -1
  38. package/dist/audit/topicGaps.js +3 -24
  39. package/dist/audit/topicGaps.js.map +1 -1
  40. package/dist/core/AuditDatabase.d.ts +0 -14
  41. package/dist/core/AuditDatabase.d.ts.map +1 -1
  42. package/dist/core/AuditDatabase.js +8 -61
  43. package/dist/core/AuditDatabase.js.map +1 -1
  44. package/dist/core/Backlinks.d.ts +0 -7
  45. package/dist/core/Backlinks.d.ts.map +1 -1
  46. package/dist/core/Backlinks.js +1 -23
  47. package/dist/core/Backlinks.js.map +1 -1
  48. package/dist/core/Crawler.d.ts +0 -1
  49. package/dist/core/Crawler.d.ts.map +1 -1
  50. package/dist/core/Crawler.js +24 -119
  51. package/dist/core/Crawler.js.map +1 -1
  52. package/dist/core/DataForSeoClient.d.ts +25 -74
  53. package/dist/core/DataForSeoClient.d.ts.map +1 -1
  54. package/dist/core/DataForSeoClient.js +65 -90
  55. package/dist/core/DataForSeoClient.js.map +1 -1
  56. package/dist/core/Entities.d.ts +0 -6
  57. package/dist/core/Entities.d.ts.map +1 -1
  58. package/dist/core/Entities.js +0 -8
  59. package/dist/core/Entities.js.map +1 -1
  60. package/dist/core/FirecrawlClient.d.ts +0 -18
  61. package/dist/core/FirecrawlClient.d.ts.map +1 -1
  62. package/dist/core/FirecrawlClient.js +1 -13
  63. package/dist/core/FirecrawlClient.js.map +1 -1
  64. package/dist/core/GscClient.d.ts +0 -7
  65. package/dist/core/GscClient.d.ts.map +1 -1
  66. package/dist/core/GscClient.js +1 -10
  67. package/dist/core/GscClient.js.map +1 -1
  68. package/dist/core/GscSync.d.ts +0 -4
  69. package/dist/core/GscSync.d.ts.map +1 -1
  70. package/dist/core/GscSync.js +2 -33
  71. package/dist/core/GscSync.js.map +1 -1
  72. package/dist/core/JobManager.d.ts +0 -5
  73. package/dist/core/JobManager.d.ts.map +1 -1
  74. package/dist/core/JobManager.js +0 -8
  75. package/dist/core/JobManager.js.map +1 -1
  76. package/dist/core/LinkIntersect.d.ts +0 -1
  77. package/dist/core/LinkIntersect.d.ts.map +1 -1
  78. package/dist/core/LinkIntersect.js +1 -37
  79. package/dist/core/LinkIntersect.js.map +1 -1
  80. package/dist/core/MajesticClient.d.ts +0 -26
  81. package/dist/core/MajesticClient.d.ts.map +1 -1
  82. package/dist/core/MajesticClient.js +0 -15
  83. package/dist/core/MajesticClient.js.map +1 -1
  84. package/dist/core/RankTracker.d.ts +0 -4
  85. package/dist/core/RankTracker.d.ts.map +1 -1
  86. package/dist/core/RankTracker.js +0 -9
  87. package/dist/core/RankTracker.js.map +1 -1
  88. package/dist/core/Refresh.d.ts +0 -6
  89. package/dist/core/Refresh.d.ts.map +1 -1
  90. package/dist/core/Refresh.js +0 -6
  91. package/dist/core/Refresh.js.map +1 -1
  92. package/dist/core/SupadataClient.d.ts +0 -11
  93. package/dist/core/SupadataClient.d.ts.map +1 -1
  94. package/dist/core/SupadataClient.js +0 -5
  95. package/dist/core/SupadataClient.js.map +1 -1
  96. package/dist/core/UrlInspector.d.ts +0 -5
  97. package/dist/core/UrlInspector.d.ts.map +1 -1
  98. package/dist/core/UrlInspector.js +0 -6
  99. package/dist/core/UrlInspector.js.map +1 -1
  100. package/dist/core/WikidataClient.d.ts +0 -2
  101. package/dist/core/WikidataClient.d.ts.map +1 -1
  102. package/dist/core/WikidataClient.js +0 -7
  103. package/dist/core/WikidataClient.js.map +1 -1
  104. package/dist/core/agentReadiness.d.ts +0 -9
  105. package/dist/core/agentReadiness.d.ts.map +1 -1
  106. package/dist/core/agentReadiness.js +0 -13
  107. package/dist/core/agentReadiness.js.map +1 -1
  108. package/dist/core/ctrModel.js +0 -3
  109. package/dist/core/ctrModel.js.map +1 -1
  110. package/dist/core/dashboardData.d.ts +0 -1
  111. package/dist/core/dashboardData.d.ts.map +1 -1
  112. package/dist/core/dashboardData.js +13 -95
  113. package/dist/core/dashboardData.js.map +1 -1
  114. package/dist/core/dataStorage.d.ts +0 -2
  115. package/dist/core/dataStorage.d.ts.map +1 -1
  116. package/dist/core/dataStorage.js +6 -19
  117. package/dist/core/dataStorage.js.map +1 -1
  118. package/dist/core/draftBrief.d.ts +0 -7
  119. package/dist/core/draftBrief.d.ts.map +1 -1
  120. package/dist/core/draftBrief.js +0 -10
  121. package/dist/core/draftBrief.js.map +1 -1
  122. package/dist/core/extract.d.ts +0 -11
  123. package/dist/core/extract.d.ts.map +1 -1
  124. package/dist/core/extract.js +1 -38
  125. package/dist/core/extract.js.map +1 -1
  126. package/dist/core/googleNews.d.ts +0 -11
  127. package/dist/core/googleNews.d.ts.map +1 -1
  128. package/dist/core/googleNews.js +0 -7
  129. package/dist/core/googleNews.js.map +1 -1
  130. package/dist/core/gscFreshness.d.ts +0 -10
  131. package/dist/core/gscFreshness.d.ts.map +1 -1
  132. package/dist/core/gscFreshness.js +0 -11
  133. package/dist/core/gscFreshness.js.map +1 -1
  134. package/dist/core/linkGraph.d.ts +0 -15
  135. package/dist/core/linkGraph.d.ts.map +1 -1
  136. package/dist/core/linkGraph.js +1 -23
  137. package/dist/core/linkGraph.js.map +1 -1
  138. package/dist/core/marketSizing.d.ts +0 -13
  139. package/dist/core/marketSizing.d.ts.map +1 -1
  140. package/dist/core/marketSizing.js +1 -1
  141. package/dist/core/marketSizing.js.map +1 -1
  142. package/dist/core/passageScore.d.ts +0 -13
  143. package/dist/core/passageScore.d.ts.map +1 -1
  144. package/dist/core/passageScore.js +1 -16
  145. package/dist/core/passageScore.js.map +1 -1
  146. package/dist/core/paths.d.ts +0 -3
  147. package/dist/core/paths.d.ts.map +1 -1
  148. package/dist/core/paths.js +0 -0
  149. package/dist/core/paths.js.map +1 -1
  150. package/dist/core/queryData.d.ts +0 -1
  151. package/dist/core/queryData.d.ts.map +1 -1
  152. package/dist/core/queryData.js +0 -18
  153. package/dist/core/queryData.js.map +1 -1
  154. package/dist/core/reconFetch.d.ts +0 -6
  155. package/dist/core/reconFetch.d.ts.map +1 -1
  156. package/dist/core/reconFetch.js +1 -4
  157. package/dist/core/reconFetch.js.map +1 -1
  158. package/dist/core/reconResearch.d.ts +0 -20
  159. package/dist/core/reconResearch.d.ts.map +1 -1
  160. package/dist/core/reconResearch.js +1 -16
  161. package/dist/core/reconResearch.js.map +1 -1
  162. package/dist/core/reranker.d.ts +0 -2
  163. package/dist/core/reranker.d.ts.map +1 -1
  164. package/dist/core/reranker.js +1 -11
  165. package/dist/core/reranker.js.map +1 -1
  166. package/dist/core/robots.d.ts +0 -6
  167. package/dist/core/robots.d.ts.map +1 -1
  168. package/dist/core/robots.js +1 -7
  169. package/dist/core/robots.js.map +1 -1
  170. package/dist/core/serpFootprint.d.ts +0 -12
  171. package/dist/core/serpFootprint.d.ts.map +1 -1
  172. package/dist/core/serpFootprint.js +0 -1
  173. package/dist/core/serpFootprint.js.map +1 -1
  174. package/dist/core/serpRecon.d.ts +0 -14
  175. package/dist/core/serpRecon.d.ts.map +1 -1
  176. package/dist/core/serpRecon.js +1 -13
  177. package/dist/core/serpRecon.js.map +1 -1
  178. package/dist/core/sitemap.js +3 -16
  179. package/dist/core/sitemap.js.map +1 -1
  180. package/dist/core/sql.d.ts +0 -4
  181. package/dist/core/sql.d.ts.map +1 -1
  182. package/dist/core/sql.js +0 -4
  183. package/dist/core/sql.js.map +1 -1
  184. package/dist/core/url-key.d.ts +0 -31
  185. package/dist/core/url-key.d.ts.map +1 -1
  186. package/dist/core/url-key.js +1 -38
  187. package/dist/core/url-key.js.map +1 -1
  188. package/dist/core/webHandlers.d.ts +0 -6
  189. package/dist/core/webHandlers.d.ts.map +1 -1
  190. package/dist/core/webHandlers.js +2 -5
  191. package/dist/core/webHandlers.js.map +1 -1
  192. package/dist/core/webServer.d.ts +0 -16
  193. package/dist/core/webServer.d.ts.map +1 -1
  194. package/dist/core/webServer.js +3 -17
  195. package/dist/core/webServer.js.map +1 -1
  196. package/dist/dashboard.js +0 -23
  197. package/dist/dashboard.js.map +1 -1
  198. package/dist/generators/index.d.ts +0 -7
  199. package/dist/generators/index.d.ts.map +1 -1
  200. package/dist/generators/index.js +1 -26
  201. package/dist/generators/index.js.map +1 -1
  202. package/dist/index.js +0 -2
  203. package/dist/index.js.map +1 -1
  204. package/dist/server.d.ts.map +1 -1
  205. package/dist/server.js +190 -312
  206. package/dist/server.js.map +1 -1
  207. package/package.json +1 -1
  208. package/server.json +85 -85
@@ -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, // Shopify/WooCommerce faceted filters + variant duplicates
31
- /[?&](client_id|redirect_uri|response_type)=|\/authentication\/|\/oauth\/|\/login_with_shop\//i, // auth/login flows (no SEO value)
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}` }; // 404, 410, 500, 503, …
32
+ return { indexable: 0, reason: `http-${status}` };
43
33
  if (status >= 300)
44
- return { indexable: 0, reason: 'redirect' }; // redirect chain exceeded maxHops
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' }; // X-Robots-Tag
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; // 429/503 backoff attempts before recording the status
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; // 429/503 backoff budget
69
- let netRetries = 0; // network-error (timeout/reset) budget — separate so a 503 then a timeout doesn't starve it
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 { /* no body */ }
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 { /* already closed */ }
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 { /* already closed */ }
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
- // A crawl is a fresh snapshot of the current site — prior crawl data is cleared so
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(); // final url_keys already extracted+written
265
- const imageRefs = new Map(); // distinct <img> src → pages using it
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); // sitemap URLs are top-level entry points
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 { /* dup */ }
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 { /* unparseable final URL */ }
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, // meta, else Content-Type header
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; // stop starting new work; let in-flight drain via finally → pump
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
- // Post-crawl: sample image weights. One request per distinct <img> src, most-used first,
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 { /* already closed */ }
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); // fetch error → leave NULL, never counted against the server
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 { /* best-effort */ }
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 { /* pool already gone */ }
505
+ catch { }
601
506
  }
602
507
  }
603
508
  }
@@ -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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"}