# Thu Thập Dữ Liệu Web cho Doanh Nghiệp Việt với n8n và Firecrawl

Node Firecrawl trong n8n có sáu thao tác dễ nhầm nhau: scrape, crawl, map, search, get status và cancel. Bài này đi qua từng cái, khi nào dùng, và cách cấu hình credentials cho cả bản cloud lẫn bản tự dựng.

Published: 2026-04-11 · Language: vi · Tags: n8n, Firecrawl, Web Scraping, Tự động hóa, Doanh nghiệp Việt · Canonical: https://hecigo.com/blog/toi-uu-hoa-quy-trinh-thu-thap-du-lieu-web-cho-doanh-nghiep-viet-voi-n8n-va-firec/

---

Trang cần cào render bằng JavaScript, nên `HTTP Request` của n8n trả về khung HTML rỗng. Đổi sang một dịch vụ scraping thì lại vướng chuyện khác: node Firecrawl có sáu thao tác, tên nghe gần giống nhau, và chọn sai thì hoặc thiếu dữ liệu hoặc đốt credit vào việc mình không cần.

Bài này đi qua sáu thao tác đó theo thứ tự, kèm chỗ mỗi cái hỏng: cài node vào n8n, cấu hình credentials cho bản cloud và bản tự dựng, rồi scrape, crawl, map, search và hai thao tác quản lý job.

## Firecrawl là gì?

[Firecrawl](https://firecrawl.dev/) là một công cụ web scraping thế hệ mới, được thiết kế để giải quyết các thách thức trong việc thu thập dữ liệu từ các trang web hiện đại. Nó có khả năng xử lý JavaScript, vượt qua các biện pháp chống bot và trích xuất dữ liệu có cấu trúc một cách dễ dàng. **n8n Firecrawl node** (`n8n-nodes-firecrawl-v2`) tích hợp tất cả 10 thao tác API Firecrawl v2 vào n8n, cho phép bạn làm việc với cả Firecrawl Cloud và các phiên bản tự lưu trữ.

Theo [THE NEXOVA](https://thenexova.com/n8n-firecrawl-node-web-scraping-crawling-and-ai-extraction-guide/), node này đặc biệt hữu ích cho các kỹ sư tự động hóa và tích hợp, những người muốn xây dựng các workflow thu thập dữ liệu sản xuất trên n8n.

### Cloud vs Self-Hosted

Firecrawl cung cấp hai tùy chọn triển khai: Cloud và Self-Hosted. Dưới đây là so sánh giữa hai tùy chọn này:

|     | Firecrawl Cloud | Self-Hosted |
| --- | --- | --- |
| **Thiết lập** | Đăng ký tại firecrawl.dev, nhận API key | Triển khai qua Docker trên máy chủ của bạn |
| **Base URL** | `https://api.firecrawl.dev/v2` | `http://your-server:3002/v2` |
| **Phù hợp nhất cho** | Kiểm tra nhanh, khối lượng thấp | Sản xuất, dữ liệu nhạy cảm, số lượng yêu cầu không giới hạn |
| **Chi phí** | Giá dựa trên mức sử dụng | Chỉ chi phí cơ sở hạ tầng |

Chúng tôi chạy Firecrawl bản self-hosted thay vì gọi dịch vụ đám mây: độ trễ thấp hơn và dữ liệu cào về không rời khỏi hạ tầng của mình. Các workflow theo dõi đối thủ chạy trên thiết lập này xử lý hàng trăm trang mỗi ngày.

## Cài đặt

### Cài đặt Node

Bạn có thể cài đặt node Firecrawl trong n8n thông qua giao diện người dùng:

    Settings > Community Nodes > Install > n8n-nodes-firecrawl-v2

Hoặc thông qua dòng lệnh:

```shell
cd ~/.n8n
npm install n8n-nodes-firecrawl-v2
```
Khởi động lại n8n sau khi cài đặt.

### Cấu hình Credentials

Tạo một credential mới có kiểu **Firecrawl API**:

| Trường | Mặc định | Mô tả |
| --- | --- | --- |
| Base URL | `https://api.firecrawl.dev/v2` | Thay đổi cho các phiên bản tự lưu trữ. **Phải bao gồm `/v2`**. |
| API Key |     | API key Firecrawl của bạn |

Authentication sử dụng `Authorization: Bearer apiKey`. Khi lưu, n8n sẽ kiểm tra kết nối bằng cách cào `https://example.com`.

## Các thao tác

Node Firecrawl cung cấp nhiều thao tác khác nhau để thu thập và trích xuất dữ liệu web. Dưới đây là một số thao tác quan trọng nhất:

### 1. Scrape

Thao tác được sử dụng phổ biến nhất. **Scrape** trích xuất nội dung từ một URL duy nhất với hỗ trợ đầy đủ cho JavaScript rendering.

**Endpoint:** `POST /scrape`

| Tham số | Loại | Mặc định | Mô tả |
| --- | --- | --- | --- |
| `url` | String |     | URL mục tiêu (bắt buộc) |

**Các tùy chọn Scrape (tất cả đều tùy chọn):**

| Tham số | Mặc định | Mô tả |
| --- | --- | --- |
| `formats` | `markdown` | Các định dạng đầu ra: `markdown`, `html`, `rawHtml`, `links`, `screenshot`, `json`, `summary`, `images`, `audio`, `changeTracking` |
| `onlyMainContent` | `true` | Loại bỏ headers, navigation và footers |
| `includeTags` |     | Các CSS selector để giữ lại (ví dụ: `article, .content`) |
| `excludeTags` |     | Các CSS selector để loại bỏ (ví dụ: `nav, .sidebar`) |
| `waitFor` | `0` | Chờ JS rendering (ms). Tăng lên cho các trang SPA/React. |
| `timeout` | `30000` | Thời gian chờ yêu cầu (ms), tối đa 300,000 |
| `mobile` | `false` | Giả lập viewport của thiết bị di động |
| `blockAds` | `true` | Chặn quảng cáo và cookie consent popups |
| `proxy` | `auto` | Chế độ proxy: `auto`, `basic`, `enhanced` |
| `locationCountry` |     | Mã quốc gia ISO (ví dụ: `VN`, `US`) |
| `locationLanguages` |     | Mã ngôn ngữ (ví dụ: `vi-VN, en-US`) |

**Ví dụ đầu ra:**

```json
{
  "markdown": "# Page Title\n\nMain content extracted...",
  "metadata": {
    "title": "Page Title",
    "description": "Meta description",
    "sourceURL": "https://example.com",
    "statusCode": 200
  }
}
```

### 2. Crawl

**Crawl** xử lý toàn bộ trang web bằng cách theo dõi các liên kết từ một URL bắt đầu. Đây là một công việc không đồng bộ có thể mất từ vài phút đến vài giờ tùy thuộc vào kích thước trang web.

**Endpoint:** `POST /crawl`

| Tham số | Mặc định | Mô tả |
| --- | --- | --- |
| `crawlUrl` |     | URL bắt đầu (bắt buộc) |
| `waitForCompletion` | `false` | Giữ thực thi cho đến khi crawl hoàn tất |
| `maxPollTime` | `300` | Thời gian chờ tối đa tính bằng giây |

**Các tùy chọn Crawl:**

| Tham số | Mặc định | Mô tả |
| --- | --- | --- |
| `limit` | `100` | Số lượng trang tối đa để crawl |
| `maxDiscoveryDepth` | `2` | Độ sâu liên kết tối đa |
| `includePaths` |     | Các mẫu regex để bao gồm (ví dụ: `/blog/*, /docs/*`) |
| `excludePaths` |     | Các mẫu regex để loại trừ (ví dụ: `/admin/*, /login`) |
| `sitemap` | `include` | Xử lý sitemap: `include`, `skip` hoặc `only` |
| `crawlEntireDomain` | `false` | Theo dõi các liên kết cùng cấp và cha trên toàn miền |
| `allowExternalLinks` | `false` | Theo dõi các liên kết đến các miền bên ngoài |
| `allowSubdomains` | `false` | Crawl các subdomain |
| `delay` | `0` | Số giây giữa các yêu cầu (buộc concurrency về 1) |
| `formats` | `markdown` | Định dạng đầu ra cho mỗi trang |
| `onlyMainContent` | `true` | Loại bỏ boilerplate khỏi mỗi trang |

**Khi `waitForCompletion` tắt:** đầu ra chỉ chứa `id` của công việc. Sử dụng thao tác **Get Crawl Status** để truy xuất kết quả sau. Khoảng thời gian polling nội bộ là 2 giây.

### 3. Get Crawl Status / 4. Cancel Crawl

| Thao tác | Endpoint | Tham số |
| --- | --- | --- |
| Get Crawl Status | `GET /crawl/:id` | `crawlId` (job ID từ Crawl) |
| Cancel Crawl | `DELETE /crawl/:id` | `cancelCrawlId` (job ID) |

### 5. Map

**Map** khám phá tất cả các URL trên một trang web mà không cần cào nội dung của chúng. Nó nhanh hơn đáng kể so với Crawl và hoạt động tốt như một bước đầu tiên trước khi cào có mục tiêu.

**Endpoint:** `POST /map`

| Tham số | Mặc định | Mô tả |
| --- | --- | --- |
| `mapUrl` |     | URL bắt đầu (bắt buộc) |
| `search` |     | Truy vấn tìm kiếm để xếp hạng kết quả theo mức độ liên quan |
| `includeSubdomains` | `true` | Bao gồm các URL subdomain |
| `limit` | `5000` | Số lượng URL tối đa để trả về (tối đa: 100,000) |
| `ignoreQueryParameters` | `true` | Loại bỏ các URL trùng lặp bằng cách loại bỏ query string |
| `ignoreCache` | `false` | Bỏ qua bộ nhớ cache sitemap |

### 6. Search

**Search** thực hiện tìm kiếm trên web và tùy chọn cào từng trang kết quả. Điều này kết hợp khám phá tìm kiếm và trích xuất nội dung.

**Endpoint:** `POST /search`

| Tham số | Mặc định | Mô tả |
| --- | --- | --- |
| `query` |     | Truy vấn tìm kiếm (bắt buộc) |
| `limit` | `5` | Số lượng kết quả tối đa |
| `lang` |     | Mã ngôn ngữ (ví dụ: `vi`, `en`) |
| `country` |     | Mã quốc gia (ví dụ: `VN`, `US`) |
| `scrapeOptions` |     | Áp dụng các tùy chọn scrape cho mỗi kết quả |

## Ứng dụng thực tế cho doanh nghiệp Việt

Sự kết hợp giữa [n8n](https://n8n.partnerlinks.io/thenexova) và Firecrawl mở ra nhiều khả năng cho doanh nghiệp Việt Nam:

- **Theo dõi đối thủ cạnh tranh:** Tự động crawl và so sánh giá cả, sản phẩm từ các website đối thủ
- **Thu thập dữ liệu thị trường:** Scrape thông tin từ các sàn thương mại điện tử như Shopee, Tiki, Lazada
- **Tổng hợp tin tức ngành:** Map và crawl các trang tin tức công nghệ, tài chính để cập nhật xu hướng
- **Lead generation:** Search và scrape thông tin doanh nghiệp từ các danh bạ trực tuyến

## hecigo và node này

`n8n-nodes-firecrawl-v2` là node cộng đồng do hecigo phát triển và duy trì trên npm. Gặp trang mà node chưa cào được thì mở issue trên GitHub kèm URL, đó là cách nhanh nhất để nó được xử lý.

Cào được dữ liệu mới là nửa đầu. Nửa sau là đưa dữ liệu đó vào đúng chỗ trong hệ thống của bạn mà không trùng, không mất, và biết được khi nào một lần cào thất bại. Nếu bạn đang vướng ở nửa sau, [mô tả cho chúng tôi](https://hecigo.com/#contact) hai hệ thống đang cần nối và chỗ nào đang sai.

## Nguồn tham khảo

*   [n8n Firecrawl Node: Web Scraping, Crawling & AI Extraction Guide | THE NEXOVA](https://thenexova.com/n8n-firecrawl-node-web-scraping-crawling-and-ai-extraction-guide/)
*   [Digital Transformation: Vietnam's Business-First Approach | THE NEXOVA](https://thenexova.com/digital-transformation-vietnams-business-first-approach/)

---

Published by hecigo, middleware & integration lab. https://hecigo.com · hi@hecigo.com
