firecrawl-cli 1.6.2 → 1.7.1

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.
@@ -2,11 +2,49 @@
2
2
  /**
3
3
  * Scrape command implementation
4
4
  */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.executeScrape = executeScrape;
7
40
  exports.handleScrapeCommand = handleScrapeCommand;
41
+ exports.handleMultiScrapeCommand = handleMultiScrapeCommand;
42
+ exports.handleAllScrapeCommand = handleAllScrapeCommand;
8
43
  const client_1 = require("../utils/client");
9
44
  const output_1 = require("../utils/output");
45
+ const url_1 = require("../utils/url");
46
+ const map_1 = require("./map");
47
+ const status_1 = require("./status");
10
48
  /**
11
49
  * Output timing information if requested
12
50
  */
@@ -38,7 +76,10 @@ async function executeScrape(options) {
38
76
  formats.push(...options.formats);
39
77
  }
40
78
  // Add screenshot format if requested and not already included
41
- if (options.screenshot && !formats.includes('screenshot')) {
79
+ if (options.fullPageScreenshot) {
80
+ formats.push({ type: 'screenshot', fullPage: true });
81
+ }
82
+ else if (options.screenshot && !formats.includes('screenshot')) {
42
83
  formats.push('screenshot');
43
84
  }
44
85
  // If no formats specified, default to markdown
@@ -101,4 +142,401 @@ async function handleScrapeCommand(options) {
101
142
  }
102
143
  (0, output_1.handleScrapeOutput)(result, effectiveFormats, options.output, options.pretty, options.json);
103
144
  }
145
+ /**
146
+ * Generate a filename from a URL for saving to .firecrawl/
147
+ */
148
+ function urlToFilename(url) {
149
+ try {
150
+ const parsed = new URL(url);
151
+ const host = parsed.hostname.replace(/^www\./, '');
152
+ const pathPart = parsed.pathname
153
+ .replace(/^\/|\/$/g, '')
154
+ .replace(/\//g, '-');
155
+ if (!pathPart)
156
+ return `${host}.md`;
157
+ return `${host}-${pathPart}.md`;
158
+ }
159
+ catch {
160
+ return url.replace(/[^a-zA-Z0-9.-]/g, '_') + '.md';
161
+ }
162
+ }
163
+ /**
164
+ * Handle scrape for multiple URLs.
165
+ * Each result is saved as a separate file in .firecrawl/
166
+ */
167
+ async function handleMultiScrapeCommand(urls, options) {
168
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
169
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
170
+ const dir = '.firecrawl';
171
+ if (!fs.existsSync(dir)) {
172
+ fs.mkdirSync(dir, { recursive: true });
173
+ }
174
+ let completedCount = 0;
175
+ let errorCount = 0;
176
+ const total = urls.length;
177
+ process.stderr.write(`Scraping ${total} URLs...\n`);
178
+ const promises = urls.map(async (url) => {
179
+ const scrapeOptions = { ...options, url };
180
+ const result = await executeScrape(scrapeOptions);
181
+ const currentCount = ++completedCount;
182
+ if (!result.success) {
183
+ errorCount++;
184
+ process.stderr.write(`[${currentCount}/${total}] Error: ${url} - ${result.error}\n`);
185
+ return;
186
+ }
187
+ const filename = urlToFilename(url);
188
+ const filepath = path.join(dir, filename);
189
+ const content = result.data?.markdown || JSON.stringify(result.data);
190
+ fs.writeFileSync(filepath, content, 'utf-8');
191
+ process.stderr.write(`[${currentCount}/${total}] Saved: ${filepath}\n`);
192
+ });
193
+ await Promise.all(promises);
194
+ process.stderr.write(`\nCompleted: ${completedCount - errorCount}/${total} succeeded`);
195
+ if (errorCount > 0) {
196
+ process.stderr.write(`, ${errorCount} failed`);
197
+ }
198
+ process.stderr.write('\n');
199
+ if (errorCount === total) {
200
+ process.exit(1);
201
+ }
202
+ }
203
+ /**
204
+ * Convert a URL path into a nested directory path with index.md.
205
+ * e.g. https://docs.example.com/features/scrape → docs.example.com/features/scrape/index.md
206
+ * https://docs.example.com/ → docs.example.com/index.md
207
+ */
208
+ function urlToNestedPath(url, filename = 'index.md') {
209
+ try {
210
+ const parsed = new URL(url);
211
+ const host = parsed.hostname.replace(/^www\./, '');
212
+ const pathPart = parsed.pathname.replace(/^\/|\/$/g, '');
213
+ if (!pathPart)
214
+ return `${host}/${filename}`;
215
+ return `${host}/${pathPart}/${filename}`;
216
+ }
217
+ catch {
218
+ return url.replace(/[^a-zA-Z0-9.-]/g, '_') + `/${filename}`;
219
+ }
220
+ }
221
+ /**
222
+ * Ask a question and return the trimmed answer.
223
+ */
224
+ async function ask(question) {
225
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
226
+ const rl = readline.createInterface({
227
+ input: process.stdin,
228
+ output: process.stderr,
229
+ });
230
+ const answer = await new Promise((resolve) => {
231
+ rl.question(question, resolve);
232
+ });
233
+ rl.close();
234
+ return answer.trim();
235
+ }
236
+ /**
237
+ * Extract top-level path segments from URLs and return them with counts, sorted by frequency.
238
+ */
239
+ function getTopPaths(urls) {
240
+ const counts = new Map();
241
+ for (const url of urls) {
242
+ try {
243
+ const parts = new URL(url).pathname.replace(/^\//, '').split('/');
244
+ if (parts[0]) {
245
+ const segment = '/' + parts[0];
246
+ counts.set(segment, (counts.get(segment) || 0) + 1);
247
+ }
248
+ }
249
+ catch {
250
+ // skip
251
+ }
252
+ }
253
+ return [...counts.entries()]
254
+ .sort((a, b) => b[1] - a[1])
255
+ .map(([p, count]) => ({ path: p, count }));
256
+ }
257
+ /**
258
+ * Run the interactive wizard when no flags are passed.
259
+ */
260
+ async function runWizard(urls, options, allOptions) {
261
+ const { checkbox, confirm } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
262
+ // 1. Formats (spacebar multi-select)
263
+ const formatChoices = await checkbox({
264
+ message: 'Which formats? (space to select, enter to confirm)',
265
+ choices: [
266
+ { name: 'markdown', value: 'markdown', checked: true },
267
+ { name: 'html', value: 'html' },
268
+ { name: 'links', value: 'links' },
269
+ { name: 'images', value: 'images' },
270
+ { name: 'summary', value: 'summary' },
271
+ { name: 'screenshot', value: 'screenshot' },
272
+ { name: 'full page screenshot', value: 'fullPageScreenshot' },
273
+ ],
274
+ });
275
+ const formats = [];
276
+ for (const choice of formatChoices) {
277
+ if (choice === 'fullPageScreenshot') {
278
+ options = { ...options, fullPageScreenshot: true };
279
+ }
280
+ else if (choice === 'screenshot') {
281
+ options = { ...options, screenshot: true };
282
+ }
283
+ else {
284
+ formats.push(choice);
285
+ }
286
+ }
287
+ if (formats.length === 0 &&
288
+ !options.screenshot &&
289
+ !options.fullPageScreenshot) {
290
+ formats.push('markdown');
291
+ }
292
+ if (formats.length > 0) {
293
+ options = { ...options, formats };
294
+ }
295
+ // 2. Main content only
296
+ const mainContent = await confirm({
297
+ message: 'Only main content?',
298
+ default: false,
299
+ });
300
+ if (mainContent) {
301
+ options = { ...options, onlyMainContent: true };
302
+ }
303
+ // 3. Filter by paths (spacebar multi-select from discovered paths)
304
+ const topPaths = getTopPaths(urls);
305
+ if (topPaths.length > 1) {
306
+ const pathChoices = await checkbox({
307
+ message: 'Filter to specific paths? (space to select, enter to skip)',
308
+ choices: topPaths.map((p) => ({
309
+ name: `${p.path} (${p.count} pages)`,
310
+ value: p.path,
311
+ })),
312
+ });
313
+ if (pathChoices.length > 0) {
314
+ allOptions = { ...allOptions, includePaths: pathChoices };
315
+ urls = urls.filter((url) => {
316
+ try {
317
+ const pathname = new URL(url).pathname;
318
+ return pathChoices.some((p) => pathname.startsWith(p));
319
+ }
320
+ catch {
321
+ return false;
322
+ }
323
+ });
324
+ }
325
+ }
326
+ return { options, allOptions, urls };
327
+ }
328
+ async function handleAllScrapeCommand(siteUrl, options, allOptions = {}) {
329
+ let { limit, yes, search, includePaths, excludePaths, allowSubdomains } = allOptions;
330
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
331
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
332
+ // Map from origin so non-root URLs (e.g. pasted subpage) work reliably
333
+ const mapUrl = (0, url_1.getOrigin)(siteUrl);
334
+ process.stderr.write(`Mapping ${mapUrl}...\n`);
335
+ const mapResult = await (0, map_1.executeMap)({
336
+ urlOrJobId: mapUrl,
337
+ apiKey: options.apiKey,
338
+ apiUrl: options.apiUrl,
339
+ search,
340
+ includeSubdomains: allowSubdomains,
341
+ });
342
+ if (!mapResult.success || !mapResult.data) {
343
+ console.error('Error mapping site:', mapResult.error);
344
+ process.exit(1);
345
+ }
346
+ const totalFound = mapResult.data.links.length;
347
+ let urls = mapResult.data.links.map((link) => link.url);
348
+ if (urls.length === 0) {
349
+ console.error('No URLs found on site.');
350
+ process.exit(1);
351
+ }
352
+ process.stderr.write(`Found ${totalFound} pages on ${mapUrl}\n`);
353
+ // Detect if user passed any explicit flags (non-interactive mode)
354
+ const hasExplicitFlags = yes ||
355
+ limit !== undefined ||
356
+ includePaths !== undefined ||
357
+ excludePaths !== undefined ||
358
+ (options.formats &&
359
+ options.formats.length > 0 &&
360
+ options.formats[0] !== 'markdown') ||
361
+ options.screenshot ||
362
+ options.fullPageScreenshot ||
363
+ options.onlyMainContent;
364
+ if (!hasExplicitFlags && process.stdin.isTTY) {
365
+ const result = await runWizard(urls, options, allOptions);
366
+ options = result.options;
367
+ allOptions = result.allOptions;
368
+ urls = result.urls;
369
+ includePaths = allOptions.includePaths;
370
+ excludePaths = allOptions.excludePaths;
371
+ }
372
+ else {
373
+ // Apply filters from flags
374
+ if (includePaths && includePaths.length > 0) {
375
+ urls = urls.filter((url) => {
376
+ try {
377
+ const pathname = new URL(url).pathname;
378
+ return includePaths.some((p) => pathname.startsWith(p));
379
+ }
380
+ catch {
381
+ return false;
382
+ }
383
+ });
384
+ }
385
+ if (excludePaths && excludePaths.length > 0) {
386
+ urls = urls.filter((url) => {
387
+ try {
388
+ const pathname = new URL(url).pathname;
389
+ return !excludePaths.some((p) => pathname.startsWith(p));
390
+ }
391
+ catch {
392
+ return true;
393
+ }
394
+ });
395
+ }
396
+ }
397
+ if (urls.length === 0) {
398
+ console.error('No URLs matched after filtering.');
399
+ process.exit(1);
400
+ }
401
+ if (limit && limit > 0) {
402
+ urls = urls.slice(0, limit);
403
+ }
404
+ // Preflight: check credits and concurrency
405
+ const status = await (0, status_1.getStatus)();
406
+ const maxConcurrency = status.concurrency?.max || urls.length;
407
+ if (status.credits) {
408
+ const creditsNeeded = urls.length;
409
+ const remaining = status.credits.remaining;
410
+ if (creditsNeeded > remaining) {
411
+ console.error(`Error: Not enough credits. Need ${creditsNeeded}, have ${remaining}.`);
412
+ process.exit(1);
413
+ }
414
+ }
415
+ if (!yes) {
416
+ const creditsMsg = status.credits
417
+ ? `, ${urls.length} credits (${status.credits.remaining.toLocaleString()} remaining)`
418
+ : '';
419
+ process.stderr.write(`\nScrape ${urls.length} pages${creditsMsg}, ${maxConcurrency} at a time.\n`);
420
+ const answer = await ask('Continue? (y/N or enter a number to set limit) ');
421
+ const asNumber = parseInt(answer, 10);
422
+ if (!isNaN(asNumber) && asNumber > 0) {
423
+ urls = urls.slice(0, asNumber);
424
+ process.stderr.write(`Limiting to ${urls.length} pages.\n`);
425
+ }
426
+ else if (answer.toLowerCase() !== 'y') {
427
+ process.stderr.write('Aborted.\n');
428
+ process.exit(0);
429
+ }
430
+ }
431
+ process.stderr.write(`Scraping ${urls.length}${limit ? ` of ${mapResult.data.links.length}` : ''} pages (${maxConcurrency} at a time)...\n`);
432
+ const baseDir = '.firecrawl';
433
+ let completedCount = 0;
434
+ let errorCount = 0;
435
+ const total = urls.length;
436
+ let urlIndex = 0;
437
+ const processUrl = async (url) => {
438
+ const scrapeOptions = { ...options, url };
439
+ const result = await executeScrape(scrapeOptions);
440
+ const currentCount = ++completedCount;
441
+ if (!result.success) {
442
+ errorCount++;
443
+ process.stderr.write(`[${currentCount}/${total}] Error: ${url} - ${result.error}\n`);
444
+ return;
445
+ }
446
+ // Save each format as its own file
447
+ const formats = [...(options.formats || ['markdown'])];
448
+ if ((options.screenshot || options.fullPageScreenshot) &&
449
+ !formats.includes('screenshot')) {
450
+ formats.push('screenshot');
451
+ }
452
+ // Ensure output directory exists
453
+ const dirPath = urlToNestedPath(url, '').replace(/\/$/, '');
454
+ const dir = path.join(baseDir, dirPath);
455
+ if (!fs.existsSync(dir)) {
456
+ fs.mkdirSync(dir, { recursive: true });
457
+ }
458
+ const savedFiles = [];
459
+ for (const fmt of formats) {
460
+ if (fmt === 'screenshot') {
461
+ if (result.data?.screenshot) {
462
+ try {
463
+ const response = await fetch(result.data.screenshot);
464
+ if (response.ok) {
465
+ const buffer = Buffer.from(await response.arrayBuffer());
466
+ const filepath = path.join(dir, 'screenshot.png');
467
+ fs.writeFileSync(filepath, buffer);
468
+ savedFiles.push(filepath);
469
+ }
470
+ }
471
+ catch {
472
+ // Silently skip failed screenshot downloads
473
+ }
474
+ }
475
+ }
476
+ else if (fmt === 'markdown') {
477
+ if (result.data?.markdown) {
478
+ const filepath = path.join(dir, 'index.md');
479
+ fs.writeFileSync(filepath, result.data.markdown, 'utf-8');
480
+ savedFiles.push(filepath);
481
+ }
482
+ }
483
+ else if (fmt === 'html' || fmt === 'rawHtml') {
484
+ const html = result.data?.html || result.data?.rawHtml;
485
+ if (html) {
486
+ const filepath = path.join(dir, 'index.html');
487
+ fs.writeFileSync(filepath, html, 'utf-8');
488
+ savedFiles.push(filepath);
489
+ }
490
+ }
491
+ else if (fmt === 'links') {
492
+ if (Array.isArray(result.data?.links)) {
493
+ const filepath = path.join(dir, 'links.txt');
494
+ fs.writeFileSync(filepath, result.data.links.join('\n'), 'utf-8');
495
+ savedFiles.push(filepath);
496
+ }
497
+ }
498
+ else if (fmt === 'images') {
499
+ if (Array.isArray(result.data?.images)) {
500
+ const filepath = path.join(dir, 'images.txt');
501
+ fs.writeFileSync(filepath, result.data.images.join('\n'), 'utf-8');
502
+ savedFiles.push(filepath);
503
+ }
504
+ }
505
+ else if (fmt === 'summary') {
506
+ if (result.data?.summary) {
507
+ const filepath = path.join(dir, 'summary.md');
508
+ fs.writeFileSync(filepath, result.data.summary, 'utf-8');
509
+ savedFiles.push(filepath);
510
+ }
511
+ }
512
+ else if (fmt === 'json') {
513
+ const filepath = path.join(dir, 'index.json');
514
+ fs.writeFileSync(filepath, JSON.stringify(result.data, null, 2), 'utf-8');
515
+ savedFiles.push(filepath);
516
+ }
517
+ else {
518
+ const filepath = path.join(dir, 'index.json');
519
+ fs.writeFileSync(filepath, JSON.stringify(result.data, null, 2), 'utf-8');
520
+ savedFiles.push(filepath);
521
+ }
522
+ }
523
+ process.stderr.write(`[${currentCount}/${total}] Saved: ${dir}/ (${savedFiles.length} files)\n`);
524
+ };
525
+ const runWorker = async () => {
526
+ while (urlIndex < urls.length) {
527
+ const currentUrl = urls[urlIndex++];
528
+ await processUrl(currentUrl);
529
+ }
530
+ };
531
+ const workers = Array.from({ length: Math.min(maxConcurrency, urls.length) }, () => runWorker());
532
+ await Promise.all(workers);
533
+ process.stderr.write(`\nCompleted: ${completedCount - errorCount}/${total} succeeded`);
534
+ if (errorCount > 0) {
535
+ process.stderr.write(`, ${errorCount} failed`);
536
+ }
537
+ process.stderr.write('\n');
538
+ if (errorCount === total) {
539
+ process.exit(1);
540
+ }
541
+ }
104
542
  //# sourceMappingURL=scrape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":"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"}