webpeel 0.14.2 → 0.14.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.
Files changed (107) hide show
  1. package/dist/cache.d.ts.map +1 -1
  2. package/dist/cache.js +11 -4
  3. package/dist/cache.js.map +1 -1
  4. package/dist/cli.bundle.cjs +159248 -0
  5. package/dist/cli.js +1 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/core/agent.js +12 -8
  8. package/dist/core/agent.js.map +1 -1
  9. package/dist/core/application-tracker.js +3 -2
  10. package/dist/core/application-tracker.js.map +1 -1
  11. package/dist/core/auto-extract.js +6 -4
  12. package/dist/core/auto-extract.js.map +1 -1
  13. package/dist/core/browser-fetch.d.ts +90 -0
  14. package/dist/core/browser-fetch.d.ts.map +1 -0
  15. package/dist/core/browser-fetch.js +599 -0
  16. package/dist/core/browser-fetch.js.map +1 -0
  17. package/dist/core/browser-pool.d.ts +70 -0
  18. package/dist/core/browser-pool.d.ts.map +1 -0
  19. package/dist/core/browser-pool.js +378 -0
  20. package/dist/core/browser-pool.js.map +1 -0
  21. package/dist/core/change-tracking.js +3 -2
  22. package/dist/core/change-tracking.js.map +1 -1
  23. package/dist/core/diff.js +3 -2
  24. package/dist/core/diff.js.map +1 -1
  25. package/dist/core/domain-extractors.js +3 -2
  26. package/dist/core/domain-extractors.js.map +1 -1
  27. package/dist/core/extract-inline.js +6 -4
  28. package/dist/core/extract-inline.js.map +1 -1
  29. package/dist/core/fetcher.d.ts +9 -116
  30. package/dist/core/fetcher.d.ts.map +1 -1
  31. package/dist/core/fetcher.js +10 -1484
  32. package/dist/core/fetcher.js.map +1 -1
  33. package/dist/core/http-fetch.d.ts +37 -0
  34. package/dist/core/http-fetch.d.ts.map +1 -0
  35. package/dist/core/http-fetch.js +618 -0
  36. package/dist/core/http-fetch.js.map +1 -0
  37. package/dist/core/metadata.js +18 -12
  38. package/dist/core/metadata.js.map +1 -1
  39. package/dist/core/pipeline.d.ts +104 -0
  40. package/dist/core/pipeline.d.ts.map +1 -0
  41. package/dist/core/pipeline.js +623 -0
  42. package/dist/core/pipeline.js.map +1 -0
  43. package/dist/core/profiles.js +15 -10
  44. package/dist/core/profiles.js.map +1 -1
  45. package/dist/core/quick-answer.d.ts.map +1 -1
  46. package/dist/core/quick-answer.js +120 -9
  47. package/dist/core/quick-answer.js.map +1 -1
  48. package/dist/core/rate-governor.js +3 -2
  49. package/dist/core/rate-governor.js.map +1 -1
  50. package/dist/core/readability.d.ts.map +1 -1
  51. package/dist/core/readability.js +19 -6
  52. package/dist/core/readability.js.map +1 -1
  53. package/dist/core/research.js +9 -6
  54. package/dist/core/research.js.map +1 -1
  55. package/dist/core/search-provider.js +12 -8
  56. package/dist/core/search-provider.js.map +1 -1
  57. package/dist/core/strategies.d.ts.map +1 -1
  58. package/dist/core/strategies.js +14 -5
  59. package/dist/core/strategies.js.map +1 -1
  60. package/dist/core/timing.d.ts +22 -0
  61. package/dist/core/timing.d.ts.map +1 -0
  62. package/dist/core/timing.js +34 -0
  63. package/dist/core/timing.js.map +1 -0
  64. package/dist/core/youtube.d.ts.map +1 -1
  65. package/dist/core/youtube.js +19 -6
  66. package/dist/core/youtube.js.map +1 -1
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +13 -444
  70. package/dist/index.js.map +1 -1
  71. package/dist/mcp/server.js +1 -1
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/server/middleware/auth.js +3 -2
  74. package/dist/server/middleware/auth.js.map +1 -1
  75. package/dist/server/routes/answer.d.ts.map +1 -1
  76. package/dist/server/routes/answer.js +5 -0
  77. package/dist/server/routes/answer.js.map +1 -1
  78. package/dist/server/routes/compat.js +3 -2
  79. package/dist/server/routes/compat.js.map +1 -1
  80. package/dist/server/routes/deep-fetch.d.ts.map +1 -1
  81. package/dist/server/routes/deep-fetch.js +5 -0
  82. package/dist/server/routes/deep-fetch.js.map +1 -1
  83. package/dist/server/routes/fetch.d.ts.map +1 -1
  84. package/dist/server/routes/fetch.js +44 -4
  85. package/dist/server/routes/fetch.js.map +1 -1
  86. package/dist/server/routes/health.js +3 -2
  87. package/dist/server/routes/health.js.map +1 -1
  88. package/dist/server/routes/mcp.js +1 -1
  89. package/dist/server/routes/mcp.js.map +1 -1
  90. package/dist/server/routes/quick-answer.d.ts.map +1 -1
  91. package/dist/server/routes/quick-answer.js +5 -0
  92. package/dist/server/routes/quick-answer.js.map +1 -1
  93. package/dist/server/routes/search.js +6 -4
  94. package/dist/server/routes/search.js.map +1 -1
  95. package/dist/server/routes/users.js +3 -2
  96. package/dist/server/routes/users.js.map +1 -1
  97. package/dist/server/routes/webhooks.d.ts +1 -0
  98. package/dist/server/routes/webhooks.d.ts.map +1 -1
  99. package/dist/server/routes/webhooks.js +1 -0
  100. package/dist/server/routes/webhooks.js.map +1 -1
  101. package/dist/server/routes/youtube.d.ts.map +1 -1
  102. package/dist/server/routes/youtube.js +5 -0
  103. package/dist/server/routes/youtube.js.map +1 -1
  104. package/dist/types.d.ts +2 -0
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/types.js.map +1 -1
  107. package/package.json +5 -2
package/dist/index.js CHANGED
@@ -3,20 +3,8 @@
3
3
  *
4
4
  * Main library export
5
5
  */
6
- import { createHash } from 'crypto';
7
- import { smartFetch } from './core/strategies.js';
8
- import { htmlToMarkdown, htmlToText, estimateTokens, selectContent, detectMainContent, calculateQuality, truncateToTokenBudget, filterByTags } from './core/markdown.js';
9
- import { pruneContent } from './core/content-pruner.js';
10
- import { distillToBudget } from './core/budget.js';
11
- import { extractMetadata, extractLinks, extractImages } from './core/metadata.js';
12
6
  import { cleanup, warmup, closePool, scrollAndWait, closeProfileBrowser } from './core/fetcher.js';
13
- import { autoScroll as runAutoScroll } from './core/actions.js';
14
- import { extractStructured } from './core/extract.js';
15
- import { isPdfContentType, isDocxContentType, extractDocumentToFormat } from './core/documents.js';
16
- import { parseYouTubeUrl, getYouTubeTranscript } from './core/youtube.js';
17
- import { extractDomainData, getDomainExtractor } from './core/domain-extractors.js';
18
- import { extractReadableContent } from './core/readability.js';
19
- import { quickAnswer as runQuickAnswer } from './core/quick-answer.js';
7
+ import { createContext, normalizeOptions, handleYouTube, fetchContent, detectContentType, parseContent, postProcess, finalize, buildResult, } from './core/pipeline.js';
20
8
  export * from './types.js';
21
9
  export { getDomainExtractor, extractDomainData } from './core/domain-extractors.js';
22
10
  export { crawl } from './core/crawler.js';
@@ -45,6 +33,7 @@ export { watch, parseDuration, parseAssertion, } from './core/watch.js';
45
33
  export { diffUrl, } from './core/diff.js';
46
34
  export { extractReadableContent } from './core/readability.js';
47
35
  export { quickAnswer } from './core/quick-answer.js';
36
+ export { Timer } from './core/timing.js';
48
37
  /**
49
38
  * Fetch and extract content from a URL
50
39
  *
@@ -62,438 +51,18 @@ export { quickAnswer } from './core/quick-answer.js';
62
51
  * ```
63
52
  */
64
53
  export async function peel(url, options = {}) {
65
- const startTime = Date.now();
66
- // Apply agent-mode defaults (can be overridden by explicit options)
67
- if (options.agentMode) {
68
- if (options.budget === undefined)
69
- options.budget = 4000;
70
- if (options.format === undefined)
71
- options.format = 'markdown';
72
- }
73
- let { render = false, stealth = false, wait = 0, format = 'markdown', timeout = 30000, userAgent, screenshot = false, screenshotFullPage = false, selector, exclude, includeTags, excludeTags, headers, cookies, raw = false, actions, extract, maxTokens, images: extractImagesFlag = false, location: _location, stream: _stream, profileDir, headed = false, storageState, proxy, fullPage = false, autoScroll: autoScrollOption, } = options;
74
- void _stream;
75
- // Normalize autoScroll option
76
- const autoScrollOpts = autoScrollOption
77
- ? (typeof autoScrollOption === 'boolean' ? {} : autoScrollOption)
78
- : undefined;
79
- // NOTE: PDFs/DOCX are now handled via simpleFetch + document parser.
80
- // No need to force browser rendering for them.
81
- // If screenshot is requested, force render mode
82
- if (screenshot) {
83
- render = true;
84
- }
85
- // If stealth is requested, force render mode
86
- if (stealth) {
87
- render = true;
88
- }
89
- // If actions are provided, force render mode
90
- if (actions && actions.length > 0) {
91
- render = true;
92
- }
93
- // If branding is requested, force render mode
94
- if (options.branding) {
95
- render = true;
96
- }
97
- // If autoScroll is requested, force render mode
98
- if (autoScrollOpts) {
99
- render = true;
100
- }
101
- // ---------------------------------------------------------------------------
102
- // YouTube special case — extract transcript instead of fetching the page HTML
103
- // ---------------------------------------------------------------------------
104
- const ytVideoId = parseYouTubeUrl(url);
105
- if (ytVideoId) {
106
- const ytStartTime = Date.now();
107
- try {
108
- const transcript = await getYouTubeTranscript(url, {
109
- language: options.language ?? 'en',
110
- });
111
- // Build a clean markdown representation of the video + transcript
112
- const videoInfoLines = [
113
- `# ${transcript.title}`,
114
- '',
115
- `**Channel:** ${transcript.channel}`,
116
- `**Duration:** ${transcript.duration}`,
117
- `**Language:** ${transcript.language}`,
118
- transcript.availableLanguages.length > 1
119
- ? `**Available Languages:** ${transcript.availableLanguages.join(', ')}`
120
- : '',
121
- '',
122
- '## Transcript',
123
- '',
124
- transcript.fullText,
125
- ].filter(l => l !== undefined);
126
- const videoInfoContent = videoInfoLines.join('\n');
127
- const elapsed = Date.now() - ytStartTime;
128
- const tokens = estimateTokens(videoInfoContent);
129
- const fingerprint = createHash('sha256').update(videoInfoContent).digest('hex').slice(0, 16);
130
- return {
131
- url: `https://www.youtube.com/watch?v=${ytVideoId}`,
132
- title: transcript.title,
133
- content: videoInfoContent,
134
- metadata: {
135
- description: `YouTube video by ${transcript.channel}, duration ${transcript.duration}`,
136
- author: transcript.channel,
137
- },
138
- links: [`https://www.youtube.com/watch?v=${ytVideoId}`],
139
- tokens,
140
- method: 'simple',
141
- elapsed,
142
- contentType: 'youtube',
143
- quality: 1.0,
144
- fingerprint,
145
- extracted: undefined,
146
- structured: transcript,
147
- };
148
- }
149
- catch (_ytError) {
150
- // If transcript extraction fails (no captions, page changed, etc.),
151
- // fall through to the normal HTML fetch pipeline below.
152
- }
153
- }
54
+ const ctx = createContext(url, options);
55
+ normalizeOptions(ctx);
56
+ const ytResult = await handleYouTube(ctx);
57
+ if (ytResult)
58
+ return ytResult;
154
59
  try {
155
- // Fetch the page (keep browser open if branding extraction or autoScroll is needed)
156
- const needsBranding = options.branding && render;
157
- const needsAutoScroll = !!autoScrollOpts && render;
158
- const fetchResult = await smartFetch(url, {
159
- forceBrowser: render,
160
- stealth,
161
- waitMs: wait,
162
- userAgent,
163
- timeoutMs: timeout,
164
- screenshot,
165
- screenshotFullPage,
166
- headers,
167
- cookies,
168
- actions,
169
- keepPageOpen: needsBranding || needsAutoScroll,
170
- profileDir,
171
- headed,
172
- storageState,
173
- proxy,
174
- });
175
- // Auto-scroll to load lazy content, then grab fresh HTML
176
- if (needsAutoScroll && fetchResult.page) {
177
- try {
178
- await runAutoScroll(fetchResult.page, autoScrollOpts);
179
- // Capture refreshed HTML after scrolling
180
- fetchResult.html = await fetchResult.page.content();
181
- }
182
- catch {
183
- // If autoScroll fails, continue with whatever HTML we have
184
- }
185
- finally {
186
- // Close page unless branding also needs it
187
- if (!needsBranding) {
188
- try {
189
- await fetchResult.page.close().catch(() => { });
190
- if (fetchResult.browser && !needsBranding) {
191
- await fetchResult.browser.close().catch(() => { });
192
- }
193
- }
194
- catch { /* ignore cleanup errors */ }
195
- fetchResult.page = undefined;
196
- }
197
- }
198
- }
199
- // Detect content type from the response
200
- const ct = (fetchResult.contentType || '').toLowerCase();
201
- const urlLower = fetchResult.url.toLowerCase();
202
- // Check for binary document types (PDF/DOCX)
203
- const isDocument = isPdfContentType(ct) || isDocxContentType(ct) ||
204
- urlLower.endsWith('.pdf') || urlLower.endsWith('.docx');
205
- const hasBuffer = !!fetchResult.buffer;
206
- const isHTML = !isDocument && (ct.includes('html') || ct.includes('xhtml') || (!ct && fetchResult.html.trimStart().startsWith('<')));
207
- const isJSON = !isDocument && ct.includes('json');
208
- const isXML = !isDocument && (ct.includes('xml') || ct.includes('rss') || ct.includes('atom'));
209
- const isPlainText = !isDocument && (ct.includes('text/plain') || ct.includes('text/markdown') || ct.includes('text/csv') || ct.includes('text/css') || ct.includes('javascript'));
210
- const detectedType = isDocument ? 'document' : isHTML ? 'html' : isJSON ? 'json' : isXML ? 'xml' : isPlainText ? 'text' : 'html';
211
- let content;
212
- let title = '';
213
- let metadata = {};
214
- let links = [];
215
- let quality = 0;
216
- let prunedPercent;
217
- if (isDocument && hasBuffer) {
218
- // Document parsing pipeline (PDF/DOCX)
219
- const docResult = await extractDocumentToFormat(fetchResult.buffer, {
220
- url: fetchResult.url,
221
- contentType: fetchResult.contentType,
222
- format,
223
- });
224
- content = docResult.content;
225
- title = docResult.metadata.title;
226
- metadata = docResult.metadata;
227
- quality = 1.0; // Documents are inherently structured content
228
- }
229
- else if (isHTML) {
230
- // Standard HTML pipeline
231
- let html = fetchResult.html;
232
- // Apply include/exclude tags filtering first (before selector)
233
- if (includeTags || excludeTags) {
234
- html = filterByTags(html, includeTags, excludeTags);
235
- }
236
- if (selector) {
237
- html = selectContent(html, selector, exclude);
238
- }
239
- else if (exclude?.length) {
240
- // Apply exclude selectors even without a specific selector
241
- const cheerio = await import('cheerio');
242
- const $doc = cheerio.load(html);
243
- exclude.forEach(sel => $doc(sel).remove());
244
- html = $doc.html() || html;
245
- }
246
- // Smart main content detection (unless raw or selector specified)
247
- let contentHtml = html;
248
- if (!raw && !selector) {
249
- const detected = detectMainContent(html);
250
- if (detected.detected) {
251
- contentHtml = detected.html;
252
- }
253
- }
254
- const metadataTask = Promise.resolve().then(() => {
255
- const meta = extractMetadata(html, fetchResult.url);
256
- return {
257
- title: meta.title,
258
- metadata: meta.metadata,
259
- links: extractLinks(html, fetchResult.url),
260
- };
261
- });
262
- // Content density pruning — runs on HTML before markdown conversion.
263
- // Removes low-value blocks (sidebars, footers, ads) CSS selectors miss.
264
- // OFF when fullPage=true or format !== markdown.
265
- if (format === 'markdown' && !fullPage) {
266
- const pruned = pruneContent(contentHtml, { dynamic: true });
267
- contentHtml = pruned.html;
268
- if (pruned.nodesRemoved > 0) {
269
- prunedPercent = pruned.reductionPercent;
270
- }
271
- }
272
- const contentTask = Promise.resolve().then(() => {
273
- switch (format) {
274
- case 'html':
275
- return contentHtml;
276
- case 'text':
277
- return htmlToText(contentHtml);
278
- case 'markdown':
279
- default:
280
- // prune:false — already pruned above; avoid double-pruning in htmlToMarkdown
281
- return htmlToMarkdown(contentHtml, { raw, prune: false });
282
- }
283
- });
284
- const [metaResult, convertedContent] = await Promise.all([metadataTask, contentTask]);
285
- title = metaResult.title;
286
- metadata = metaResult.metadata;
287
- links = metaResult.links;
288
- content = convertedContent;
289
- quality = calculateQuality(content, fetchResult.html);
290
- }
291
- else if (isJSON) {
292
- // JSON content — format nicely
293
- try {
294
- const parsed = JSON.parse(fetchResult.html);
295
- content = JSON.stringify(parsed, null, 2);
296
- title = 'JSON Response';
297
- // Extract any URLs from JSON for links
298
- const urlRegex = /https?:\/\/[^\s"'`,\]})]+/g;
299
- const found = content.match(urlRegex) || [];
300
- links = [...new Set(found)];
301
- }
302
- catch {
303
- content = fetchResult.html;
304
- title = 'JSON Response (malformed)';
305
- }
306
- quality = 1.0; // JSON is structured, always "clean"
307
- }
308
- else if (isXML) {
309
- // XML/RSS/Atom — convert to readable format
310
- try {
311
- const $ = (await import('cheerio')).load(fetchResult.html, { xml: true });
312
- // Check if RSS/Atom feed
313
- const items = $('item, entry');
314
- if (items.length > 0) {
315
- title = $('channel > title, feed > title').first().text() || 'RSS/Atom Feed';
316
- const feedItems = [];
317
- items.each((_, el) => {
318
- const itemTitle = $(el).find('title').first().text();
319
- const itemLink = $(el).find('link').first().text() || $(el).find('link').first().attr('href') || '';
320
- const itemDesc = $(el).find('description, summary, content').first().text().slice(0, 200);
321
- feedItems.push(`## ${itemTitle}\n${itemLink}\n${itemDesc}`);
322
- if (itemLink)
323
- links.push(itemLink);
324
- });
325
- content = `# ${title}\n\n${feedItems.join('\n\n---\n\n')}`;
326
- }
327
- else {
328
- content = fetchResult.html;
329
- title = $('title').first().text() || 'XML Document';
330
- }
331
- }
332
- catch {
333
- content = fetchResult.html;
334
- title = 'XML Document';
335
- }
336
- quality = 0.9;
337
- }
338
- else {
339
- // Plain text, CSS, JS, etc — return as-is
340
- content = fetchResult.html;
341
- title = fetchResult.url.split('/').pop() || 'Text Document';
342
- // Extract URLs from plain text
343
- const urlRegex = /https?:\/\/[^\s"'`,\]})]+/g;
344
- const found = content.match(urlRegex) || [];
345
- links = [...new Set(found)];
346
- quality = 1.0;
347
- }
348
- // Readability mode
349
- let readabilityResult;
350
- if (options.readable && isHTML && fetchResult.html) {
351
- const readResult = extractReadableContent(fetchResult.html, fetchResult.url);
352
- readabilityResult = readResult;
353
- content = readResult.content;
354
- metadata = {
355
- ...metadata,
356
- title: readResult.title || metadata?.title,
357
- author: readResult.author || undefined,
358
- publishedDate: readResult.date || undefined,
359
- };
360
- title = readResult.title || title;
361
- }
362
- // Extract images if requested
363
- let imagesList;
364
- if (extractImagesFlag && isHTML) {
365
- imagesList = extractImages(fetchResult.html, fetchResult.url);
366
- }
367
- // Extract structured data if requested
368
- let extracted;
369
- if (extract && isHTML) {
370
- if (extract.llmApiKey && (extract.prompt || extract.schema)) {
371
- // LLM-powered extraction
372
- const { extractWithLLM } = await import('./core/extract.js');
373
- extracted = await extractWithLLM(content, extract);
374
- }
375
- else if (extract.selectors || extract.schema) {
376
- // CSS-based extraction (existing)
377
- extracted = extractStructured(fetchResult.html, extract);
378
- }
379
- }
380
- // Truncate to token budget if requested (simple truncation)
381
- if (maxTokens && maxTokens > 0) {
382
- content = truncateToTokenBudget(content, maxTokens);
383
- }
384
- // Smart budget distillation — applied AFTER maxTokens truncation
385
- // This intelligently compresses content (strips boilerplate, compresses
386
- // tables, removes weak paragraphs) rather than blindly cutting.
387
- if (options.budget && options.budget > 0) {
388
- const budgetFormat = detectedType === 'json' ? 'json' :
389
- format === 'text' ? 'text' : 'markdown';
390
- content = distillToBudget(content, options.budget, budgetFormat);
391
- }
392
- // Domain-aware structured extraction (Twitter, Reddit, GitHub, HN)
393
- // Fires when URL matches a known domain. Replaces content with clean markdown.
394
- let domainData;
395
- if (getDomainExtractor(fetchResult.url)) {
396
- try {
397
- const ddResult = await extractDomainData(fetchResult.html, fetchResult.url);
398
- if (ddResult) {
399
- domainData = ddResult;
400
- content = ddResult.cleanContent;
401
- }
402
- }
403
- catch {
404
- // Domain extraction failure is non-fatal; continue with normal content
405
- }
406
- }
407
- // Quick answer (LLM-free)
408
- let quickAnswerResult;
409
- if (options.question && content) {
410
- const qa = runQuickAnswer({
411
- question: options.question,
412
- content,
413
- url: fetchResult.url,
414
- });
415
- quickAnswerResult = qa;
416
- }
417
- // Calculate elapsed time, tokens, and fingerprint
418
- const elapsed = Date.now() - startTime;
419
- const tokens = estimateTokens(content);
420
- const fingerprint = createHash('sha256').update(content).digest('hex').slice(0, 16);
421
- // Convert screenshot buffer to base64 if present
422
- const screenshotBase64 = fetchResult.screenshot?.toString('base64');
423
- // Extract branding if requested (reuses existing browser page when available)
424
- let brandingProfile;
425
- if (options.branding && render && fetchResult.page) {
426
- try {
427
- const { extractBranding } = await import('./core/branding.js');
428
- brandingProfile = await extractBranding(fetchResult.page);
429
- }
430
- catch (error) {
431
- console.error('Branding extraction failed:', error);
432
- }
433
- finally {
434
- // Clean up the kept-open page and browser
435
- try {
436
- await fetchResult.page.close().catch(() => { });
437
- if (fetchResult.browser) {
438
- await fetchResult.browser.close().catch(() => { });
439
- }
440
- }
441
- catch { /* ignore cleanup errors */ }
442
- }
443
- }
444
- // Track content changes if requested
445
- let changeResult;
446
- if (options.changeTracking) {
447
- try {
448
- const { trackChange } = await import('./core/change-tracking.js');
449
- changeResult = await trackChange(fetchResult.url, content, fingerprint);
450
- }
451
- catch (error) {
452
- console.error('Change tracking failed:', error);
453
- }
454
- }
455
- // Generate AI summary if requested
456
- let summaryText;
457
- if (options.summary && options.llm) {
458
- try {
459
- const { summarizeContent } = await import('./core/summarize.js');
460
- const maxLength = typeof options.summary === 'object' && options.summary.maxLength
461
- ? options.summary.maxLength
462
- : 150;
463
- summaryText = await summarizeContent(content, {
464
- apiKey: options.llm.apiKey,
465
- model: options.llm.model,
466
- apiBase: options.llm.baseUrl,
467
- maxWords: maxLength,
468
- });
469
- }
470
- catch (error) {
471
- console.error('Summary generation failed:', error);
472
- }
473
- }
474
- return {
475
- url: fetchResult.url,
476
- title,
477
- content,
478
- metadata,
479
- links,
480
- tokens,
481
- method: fetchResult.method === 'cached' ? 'simple' : fetchResult.method,
482
- elapsed,
483
- screenshot: screenshotBase64,
484
- contentType: detectedType,
485
- quality,
486
- fingerprint,
487
- extracted,
488
- branding: brandingProfile,
489
- changeTracking: changeResult,
490
- summary: summaryText,
491
- images: imagesList,
492
- ...(prunedPercent !== undefined ? { prunedPercent } : {}),
493
- ...(domainData !== undefined ? { domainData } : {}),
494
- ...(readabilityResult !== undefined ? { readability: readabilityResult } : {}),
495
- ...(quickAnswerResult !== undefined ? { quickAnswer: quickAnswerResult } : {}),
496
- };
60
+ await fetchContent(ctx);
61
+ detectContentType(ctx);
62
+ await parseContent(ctx);
63
+ await postProcess(ctx);
64
+ await finalize(ctx);
65
+ return buildResult(ctx);
497
66
  }
498
67
  catch (error) {
499
68
  // Clean up browser resources on error
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ const server = new Server({
59
59
  const tools = [
60
60
  {
61
61
  name: 'webpeel_fetch',
62
- description: 'Fetch any URL and return clean markdown content. Handles JavaScript rendering, bot detection, and content extraction automatically. Set readable=true for article-only content.',
62
+ description: 'Fetch any URL and return clean markdown content. Use budget=4000 to get token-efficient output (strips boilerplate, compresses tables). Handles JavaScript rendering and bot detection automatically. Use readable=true for article-only content, question="..." for instant Q&A.',
63
63
  annotations: {
64
64
  title: 'Fetch Web Page',
65
65
  readOnlyHint: true,