mcp-scraper 0.3.15 → 0.3.17

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 (35) hide show
  1. package/dist/bin/api-server.cjs +420 -25
  2. package/dist/bin/api-server.cjs.map +1 -1
  3. package/dist/bin/api-server.js +1 -1
  4. package/dist/bin/browser-agent-stdio-server.cjs +1 -1
  5. package/dist/bin/browser-agent-stdio-server.cjs.map +1 -1
  6. package/dist/bin/browser-agent-stdio-server.js +2 -2
  7. package/dist/bin/mcp-scraper-cli.cjs +1 -1
  8. package/dist/bin/mcp-scraper-cli.cjs.map +1 -1
  9. package/dist/bin/mcp-scraper-cli.js +1 -1
  10. package/dist/bin/mcp-scraper-combined-stdio-server.cjs +371 -20
  11. package/dist/bin/mcp-scraper-combined-stdio-server.cjs.map +1 -1
  12. package/dist/bin/mcp-scraper-combined-stdio-server.js +4 -4
  13. package/dist/bin/mcp-scraper-install.cjs +3 -3
  14. package/dist/bin/mcp-scraper-install.cjs.map +1 -1
  15. package/dist/bin/mcp-scraper-install.js +2 -2
  16. package/dist/bin/mcp-stdio-server.cjs +369 -18
  17. package/dist/bin/mcp-stdio-server.cjs.map +1 -1
  18. package/dist/bin/mcp-stdio-server.js +2 -2
  19. package/dist/{chunk-7Y6JDBML.js → chunk-ACIUCZ27.js} +3 -3
  20. package/dist/chunk-ACIUCZ27.js.map +1 -0
  21. package/dist/{chunk-WQAIOY2D.js → chunk-N33YEY6W.js} +374 -19
  22. package/dist/chunk-N33YEY6W.js.map +1 -0
  23. package/dist/chunk-PVWWY5NV.js +7 -0
  24. package/dist/chunk-PVWWY5NV.js.map +1 -0
  25. package/dist/{chunk-WJ2LWHPA.js → chunk-UFD7N36R.js} +2 -2
  26. package/dist/{server-UOQ2JIUQ.js → server-TKWY47JA.js} +43 -10
  27. package/dist/server-TKWY47JA.js.map +1 -0
  28. package/docs/mcp-tool-manifest.generated.json +45 -10
  29. package/package.json +1 -1
  30. package/dist/chunk-2MX5WOII.js +0 -7
  31. package/dist/chunk-2MX5WOII.js.map +0 -1
  32. package/dist/chunk-7Y6JDBML.js.map +0 -1
  33. package/dist/chunk-WQAIOY2D.js.map +0 -1
  34. package/dist/server-UOQ2JIUQ.js.map +0 -1
  35. /package/dist/{chunk-WJ2LWHPA.js.map → chunk-UFD7N36R.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ // src/version.ts
2
+ var PACKAGE_VERSION = "0.3.17";
3
+
4
+ export {
5
+ PACKAGE_VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-PVWWY5NV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const PACKAGE_VERSION = '0.3.17'\n"],"mappings":";AAAO,IAAM,kBAAkB;","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-WN7PBKMV.js";
8
8
  import {
9
9
  PACKAGE_VERSION
10
- } from "./chunk-2MX5WOII.js";
10
+ } from "./chunk-PVWWY5NV.js";
11
11
 
12
12
  // src/mcp/browser-agent-mcp-server.ts
13
13
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -1329,4 +1329,4 @@ export {
1329
1329
  buildBrowserAgentMcpServer,
1330
1330
  registerBrowserAgentMcpTools
1331
1331
  };
1332
- //# sourceMappingURL=chunk-WJ2LWHPA.js.map
1332
+ //# sourceMappingURL=chunk-UFD7N36R.js.map
@@ -92,7 +92,9 @@ import {
92
92
  CaptureSerpSnapshotInputSchema,
93
93
  CaptureSerpSnapshotOutputSchema,
94
94
  HttpMcpToolExecutor,
95
+ auditImages,
95
96
  buildLinkGraph,
97
+ buildLinkReport,
96
98
  buildPaaExtractorMcpServer,
97
99
  computeIssues,
98
100
  configureReportSaving,
@@ -101,8 +103,10 @@ import {
101
103
  harvestTimeoutBudget,
102
104
  liveWebToolAnnotations,
103
105
  outputBaseDir,
104
- renderIssueReport
105
- } from "./chunk-WQAIOY2D.js";
106
+ renderImageSection,
107
+ renderIssueReport,
108
+ renderLinkReport
109
+ } from "./chunk-N33YEY6W.js";
106
110
  import {
107
111
  CaptchaError,
108
112
  RECAPTCHA_INSTRUCTIONS,
@@ -138,7 +142,7 @@ import {
138
142
  RawMapsOverviewSchema,
139
143
  RawMapsReviewStatsSchema
140
144
  } from "./chunk-LFATOGDF.js";
141
- import "./chunk-2MX5WOII.js";
145
+ import "./chunk-PVWWY5NV.js";
142
146
 
143
147
  // src/api/outbound-sanitize.ts
144
148
  var KEY_RENAMES = {
@@ -7587,10 +7591,14 @@ function chunk(items, size) {
7587
7591
  for (let i = 0; i < items.length; i += size) out.push(items.slice(i, i + size));
7588
7592
  return out;
7589
7593
  }
7590
- function buildArtifacts(job, pages, branding) {
7594
+ function buildArtifacts(job, pages, branding, imageAudit) {
7591
7595
  const { edges, metrics } = buildLinkGraph(pages, job.startUrl);
7592
7596
  const issues = computeIssues(pages, metrics);
7593
- const reportMd = renderIssueReport(job.startUrl, pages, issues, metrics);
7597
+ const linkReport = buildLinkReport(edges, [...metrics.values()], job.startUrl);
7598
+ let reportMd = renderIssueReport(job.startUrl, pages, issues, metrics);
7599
+ if (imageAudit) reportMd += `
7600
+
7601
+ ${renderImageSection(imageAudit)}`;
7594
7602
  const pageRows = pages.map((p) => {
7595
7603
  const { bodyMarkdown: _b, schema: _s, outlinks: _o, ...rest } = p;
7596
7604
  const m = metrics.get(p.url);
@@ -7602,8 +7610,15 @@ function buildArtifacts(job, pages, branding) {
7602
7610
  { name: "issues.json", body: JSON.stringify(issues, null, 2), type: "application/json" },
7603
7611
  { name: "pages.jsonl", body: jsonl(pageRows), type: "application/x-ndjson" },
7604
7612
  { name: "links.jsonl", body: jsonl(edges), type: "application/x-ndjson" },
7605
- { name: "link-metrics.jsonl", body: jsonl([...metrics.values()]), type: "application/x-ndjson" }
7613
+ { name: "link-metrics.jsonl", body: jsonl([...metrics.values()]), type: "application/x-ndjson" },
7614
+ { name: "link-report.md", body: renderLinkReport(linkReport), type: "text/markdown" },
7615
+ { name: "links-summary.json", body: JSON.stringify(linkReport.summary, null, 2), type: "application/json" },
7616
+ { name: "external-domains.json", body: JSON.stringify(linkReport.externalDomains, null, 2), type: "application/json" }
7606
7617
  ];
7618
+ if (imageAudit) {
7619
+ files.push({ name: "images.jsonl", body: jsonl(imageAudit.rows), type: "application/x-ndjson" });
7620
+ files.push({ name: "images-summary.json", body: JSON.stringify(imageAudit.summary, null, 2), type: "application/json" });
7621
+ }
7607
7622
  if (branding) files.push({ name: "branding.json", body: JSON.stringify(branding, null, 2), type: "application/json" });
7608
7623
  return files;
7609
7624
  }
@@ -7648,10 +7663,14 @@ var siteExtractFn = inngest.createFunction(
7648
7663
  });
7649
7664
  }
7650
7665
  const branding = Array.isArray(job.options.formats) && job.options.formats.includes("branding") ? await step.run("branding", () => extractBranding(job.startUrl, key).catch(() => null)) : null;
7666
+ const imageAudit = Array.isArray(job.options.formats) && job.options.formats.includes("images") ? await step.run("image-audit", async () => {
7667
+ const pages = await getExtractedPages(jobId);
7668
+ return auditImages(pages, { concurrency: 12, timeoutMs: 12e3 });
7669
+ }) : null;
7651
7670
  const artifacts = await step.run("finalize", async () => {
7652
7671
  const pages = await getExtractedPages(jobId);
7653
7672
  const store = getBlobStore();
7654
- const files = buildArtifacts(job, pages, branding);
7673
+ const files = buildArtifacts(job, pages, branding, imageAudit);
7655
7674
  const stored = [];
7656
7675
  for (const f of files) stored.push(await store.put(`extract/${jobId}/${f.name}`, f.body, f.type));
7657
7676
  await completeExtractJob(jobId, stored);
@@ -7920,7 +7939,7 @@ var CATALOG = {
7920
7939
  kind: "simple",
7921
7940
  endpoint: "/extract-site",
7922
7941
  mcpName: "extract_site",
7923
- tagline: "Map + bulk scrape + SEO report",
7942
+ tagline: "Map + bulk scrape (content)",
7924
7943
  params: [
7925
7944
  URL_PARAM,
7926
7945
  { key: "maxPages", label: "Max pages", type: "number", min: 1, max: 1e4, default: 100 },
@@ -7928,7 +7947,21 @@ var CATALOG = {
7928
7947
  { key: "rotateProxies", label: "Rotate proxies (blocked sites)", type: "boolean", default: true },
7929
7948
  { key: "background", label: "Run in background", type: "boolean", default: true, advanced: true }
7930
7949
  ],
7931
- examples: ["https://steenshoney.com/ (full-site SEO crawl)"]
7950
+ examples: ["https://steenshoney.com/ (full-site content crawl)"]
7951
+ },
7952
+ {
7953
+ key: "audit_site",
7954
+ label: "Audit",
7955
+ kind: "simple",
7956
+ endpoint: "/extract-site",
7957
+ mcpName: "audit_site",
7958
+ tagline: "Technical SEO audit (Screaming-Frog style)",
7959
+ params: [
7960
+ URL_PARAM,
7961
+ { key: "maxPages", label: "Max pages", type: "number", min: 1, max: 1e4, default: 100 },
7962
+ { key: "rotateProxies", label: "Rotate proxies (blocked sites)", type: "boolean", default: true }
7963
+ ],
7964
+ examples: ["https://steenshoney.com/ (issues + link graph + image audit)"]
7932
7965
  }
7933
7966
  ]
7934
7967
  },
@@ -17475,4 +17508,4 @@ app.get("/blog/:slug/", (c) => {
17475
17508
  export {
17476
17509
  app
17477
17510
  };
17478
- //# sourceMappingURL=server-UOQ2JIUQ.js.map
17511
+ //# sourceMappingURL=server-TKWY47JA.js.map