mcp-scraper 0.54.2 → 0.54.4
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/CHANGELOG.md +15 -1
- package/README.md +1 -1
- package/dist/bin/api-server.cjs +48 -21
- package/dist/bin/api-server.cjs.map +1 -1
- package/dist/bin/api-server.js +1 -1
- 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-install.cjs +1 -1
- package/dist/bin/mcp-scraper-install.cjs.map +1 -1
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.cjs +1 -1
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +2 -2
- package/dist/chunk-HNP2Z7VL.js +7 -0
- package/dist/chunk-HNP2Z7VL.js.map +1 -0
- package/dist/{chunk-47JKN332.js → chunk-QZY3Z26T.js} +2 -2
- package/dist/{server-SRQRVPHA.js → server-PLOSYQMO.js} +50 -23
- package/dist/{server-SRQRVPHA.js.map → server-PLOSYQMO.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-6JN6DKMY.js +0 -7
- package/dist/chunk-6JN6DKMY.js.map +0 -1
- /package/dist/{chunk-47JKN332.js.map → chunk-QZY3Z26T.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.54.4] - 2026-08-14
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Reddit Google discovery now retries one fresh managed SERP session when the first page is unexpectedly empty or fails, before entering the slower Reddit-browser fallback. Successful discovery still uses one Google search.
|
|
12
|
+
|
|
13
|
+
## [0.54.3] - 2026-08-14
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Reddit Google discovery now keeps its first-page managed SERP result instead of risking the entire discovery on a second-page navigation. The SERP-only route uses one attempt and an explicit one-question no-op bound, removing the inherited `maxQuestions: 100` diagnostic while preserving the original query and 30-day filter.
|
|
18
|
+
|
|
7
19
|
## [0.54.2] - 2026-08-14
|
|
8
20
|
|
|
9
21
|
### Changed
|
|
@@ -864,7 +876,9 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
864
876
|
- Write actions remain unavailable until the account owner explicitly enables them.
|
|
865
877
|
- Provider-specific connection data is normalized into one agent-facing contract.
|
|
866
878
|
|
|
867
|
-
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.
|
|
879
|
+
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.4...HEAD
|
|
880
|
+
[0.54.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.3...v0.54.4
|
|
881
|
+
[0.54.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.2...v0.54.3
|
|
868
882
|
[0.54.2]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.1...v0.54.2
|
|
869
883
|
[0.54.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.54.0...v0.54.1
|
|
870
884
|
[0.54.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.53.1...v0.54.0
|
package/README.md
CHANGED
|
@@ -90,7 +90,7 @@ Build the branded one-click bundle:
|
|
|
90
90
|
npm run build:mcpb
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.54.
|
|
93
|
+
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.54.4`, SHA-256 `745300613bf74c87b9b78a49495c98e0380de5de3825b5caa1ac26f8782bf893`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, and API-key configuration field from the bundle manifest.
|
|
94
94
|
|
|
95
95
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
96
96
|
|
package/dist/bin/api-server.cjs
CHANGED
|
@@ -37905,26 +37905,53 @@ var init_reddit_routes = __esm({
|
|
|
37905
37905
|
let discoverySource = "google_serp";
|
|
37906
37906
|
let primaryDiscoveryDegraded = false;
|
|
37907
37907
|
let primaryDegradationReasons = [];
|
|
37908
|
-
|
|
37909
|
-
|
|
37910
|
-
|
|
37911
|
-
|
|
37912
|
-
|
|
37913
|
-
|
|
37914
|
-
|
|
37915
|
-
|
|
37916
|
-
|
|
37917
|
-
|
|
37918
|
-
|
|
37919
|
-
|
|
37920
|
-
|
|
37921
|
-
|
|
37922
|
-
|
|
37923
|
-
|
|
37924
|
-
|
|
37925
|
-
|
|
37926
|
-
|
|
37927
|
-
|
|
37908
|
+
for (let discoveryAttempt = 1; discoveryAttempt <= 2 && candidates.length === 0; discoveryAttempt++) {
|
|
37909
|
+
try {
|
|
37910
|
+
const serp = await harvest({
|
|
37911
|
+
query: serpQuery,
|
|
37912
|
+
serpOnly: true,
|
|
37913
|
+
proxyMode: "none",
|
|
37914
|
+
pages: 1,
|
|
37915
|
+
maxAttempts: 1,
|
|
37916
|
+
maxQuestions: 1,
|
|
37917
|
+
recency: body.window === "all" ? void 0 : body.window,
|
|
37918
|
+
kernelApiKey: browserServiceApiKey(),
|
|
37919
|
+
format: "json",
|
|
37920
|
+
outputDir: "/tmp/reddit-trending-serp",
|
|
37921
|
+
softDeadlineMs,
|
|
37922
|
+
forceManagedSerp: true
|
|
37923
|
+
});
|
|
37924
|
+
const attemptCandidates = extractRedditThreadUrls(serp.organicResults, body.maxThreads);
|
|
37925
|
+
const attemptDegradationReasons = Array.isArray(serp.diagnostics?.degradationReasons) ? serp.diagnostics.degradationReasons.filter((reason) => typeof reason === "string") : [];
|
|
37926
|
+
if (attemptCandidates.length > 0) {
|
|
37927
|
+
candidates = attemptCandidates;
|
|
37928
|
+
primaryDiscoveryDegraded = serp.diagnostics?.degradedResult === true;
|
|
37929
|
+
primaryDegradationReasons = attemptDegradationReasons;
|
|
37930
|
+
break;
|
|
37931
|
+
}
|
|
37932
|
+
primaryDiscoveryDegraded = true;
|
|
37933
|
+
primaryDegradationReasons = [.../* @__PURE__ */ new Set([
|
|
37934
|
+
...primaryDegradationReasons,
|
|
37935
|
+
...attemptDegradationReasons.length > 0 ? attemptDegradationReasons : ["empty_primary_serp"]
|
|
37936
|
+
])];
|
|
37937
|
+
if (discoveryAttempt < 2) {
|
|
37938
|
+
console.warn(JSON.stringify({
|
|
37939
|
+
event: "reddit_serp_discovery_empty_retry",
|
|
37940
|
+
discovery_attempt: discoveryAttempt,
|
|
37941
|
+
next_attempt: discoveryAttempt + 1
|
|
37942
|
+
}));
|
|
37943
|
+
}
|
|
37944
|
+
} catch (error) {
|
|
37945
|
+
primaryDiscoveryDegraded = true;
|
|
37946
|
+
primaryDegradationReasons = [.../* @__PURE__ */ new Set([...primaryDegradationReasons, "primary_serp_failed"])];
|
|
37947
|
+
console.warn(JSON.stringify({
|
|
37948
|
+
event: "reddit_serp_discovery_failed",
|
|
37949
|
+
discovery_attempt: discoveryAttempt,
|
|
37950
|
+
will_retry: discoveryAttempt < 2,
|
|
37951
|
+
error_name: error instanceof Error ? error.name : "Error",
|
|
37952
|
+
message: error instanceof Error ? error.message : String(error)
|
|
37953
|
+
}));
|
|
37954
|
+
}
|
|
37928
37955
|
}
|
|
37929
37956
|
if (candidates.length === 0) {
|
|
37930
37957
|
const fallback = await discoverOnReddit(body.topic, subreddit, body.window);
|
|
@@ -43975,7 +44002,7 @@ var PACKAGE_VERSION;
|
|
|
43975
44002
|
var init_version = __esm({
|
|
43976
44003
|
"src/version.ts"() {
|
|
43977
44004
|
"use strict";
|
|
43978
|
-
PACKAGE_VERSION = "0.54.
|
|
44005
|
+
PACKAGE_VERSION = "0.54.4";
|
|
43979
44006
|
}
|
|
43980
44007
|
});
|
|
43981
44008
|
|