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.
- package/dist/bin/api-server.cjs +420 -25
- package/dist/bin/api-server.cjs.map +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/browser-agent-stdio-server.cjs +1 -1
- package/dist/bin/browser-agent-stdio-server.cjs.map +1 -1
- package/dist/bin/browser-agent-stdio-server.js +2 -2
- package/dist/bin/mcp-scraper-cli.cjs +1 -1
- package/dist/bin/mcp-scraper-cli.cjs.map +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-combined-stdio-server.cjs +371 -20
- package/dist/bin/mcp-scraper-combined-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-scraper-combined-stdio-server.js +4 -4
- package/dist/bin/mcp-scraper-install.cjs +3 -3
- package/dist/bin/mcp-scraper-install.cjs.map +1 -1
- package/dist/bin/mcp-scraper-install.js +2 -2
- package/dist/bin/mcp-stdio-server.cjs +369 -18
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +2 -2
- package/dist/{chunk-7Y6JDBML.js → chunk-ACIUCZ27.js} +3 -3
- package/dist/chunk-ACIUCZ27.js.map +1 -0
- package/dist/{chunk-WQAIOY2D.js → chunk-N33YEY6W.js} +374 -19
- package/dist/chunk-N33YEY6W.js.map +1 -0
- package/dist/chunk-PVWWY5NV.js +7 -0
- package/dist/chunk-PVWWY5NV.js.map +1 -0
- package/dist/{chunk-WJ2LWHPA.js → chunk-UFD7N36R.js} +2 -2
- package/dist/{server-UOQ2JIUQ.js → server-TKWY47JA.js} +43 -10
- package/dist/server-TKWY47JA.js.map +1 -0
- package/docs/mcp-tool-manifest.generated.json +45 -10
- package/package.json +1 -1
- package/dist/chunk-2MX5WOII.js +0 -7
- package/dist/chunk-2MX5WOII.js.map +0 -1
- package/dist/chunk-7Y6JDBML.js.map +0 -1
- package/dist/chunk-WQAIOY2D.js.map +0 -1
- package/dist/server-UOQ2JIUQ.js.map +0 -1
- /package/dist/{chunk-WJ2LWHPA.js.map → chunk-UFD7N36R.js.map} +0 -0
|
@@ -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-
|
|
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-
|
|
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
|
-
|
|
105
|
-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
17511
|
+
//# sourceMappingURL=server-TKWY47JA.js.map
|