close

Hướng dẫn cách tạo workflow crawl dữ liệu website với n8n đơn giản

Tác giả: Đông Tùng Ngày đăng: 07/07/2025 Chuyên mục: n8n
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Crawl dữ liệu website với n8n là dùng workflow tự động gửi yêu cầu tới trang web (qua node HTTP Request hoặc một API crawl như Dumpling AI), lấy nội dung, rồi chuyển cho các node khác xử lý. Ví dụ dưới đây đọc danh sách URL từ Google Sheets, crawl, nhờ AI Agent tóm tắt và gửi bản tin qua Gmail.

Bạn không cần viết một công cụ crawl riêng: n8n có sẵn node HTTP Request, node HTML để tách dữ liệu và node AI Agent trong n8n để tóm tắt. Trước khi crawl, hãy đọc mục pháp lý ở cuối hướng dẫn.

Web crawling là gì?

Web crawling là quá trình tự động truy cập vào các trang web, thu thập và trích xuất dữ liệu từ nội dung hiển thị trên website đó. Công cụ hoặc chương trình thực hiện việc này được gọi là crawler hoặc web spider.

Crawler hoạt động bằng cách gửi yêu cầu đến một URL, đọc nội dung HTML trả về, sau đó phân tích và lấy ra các thông tin cần thiết như tiêu đề bài viết, giá sản phẩm, hình ảnh, liên kết,… Sau khi thu thập xong, dữ liệu có thể được lưu trữ hoặc xử lý tùy vào mục đích sử dụng.

Các ứng dụng phổ biến của việc crawl dữ liệu

Việc crawl dữ liệu website có thể ứng dụng trong nhiều lĩnh vực và mục tiêu khác nhau:

  • Theo dõi giá sản phẩm: Thu thập giá công khai từ các trang thương mại điện tử để so sánh, làm công cụ cảnh báo khi giá giảm.
  • Tổng hợp tin tức: Lấy tiêu đề và đoạn tóm tắt từ các trang báo điện tử để cập nhật nhanh hoặc phân tích xu hướng, kèm link nguồn.
  • Thu thập dữ liệu tuyển dụng: Lấy danh sách việc làm từ các trang tuyển dụng cho phép, lọc theo ngành, địa điểm, mức lương.
  • Phân tích đối thủ cạnh tranh: Theo dõi các thay đổi sản phẩm, dịch vụ, chiến lược content hoặc SEO của đối thủ.
  • Nghiên cứu thị trường: Tổng hợp đánh giá sản phẩm ở dạng thống kê, không lưu thông tin cá nhân của người viết đánh giá.

Vì sao nên dùng n8n để crawl thay vì code tay?

Thông thường, để crawl dữ liệu, bạn cần biết lập trình với các ngôn ngữ như Python, sử dụng thư viện như BeautifulSoup, Scrapy… Đó là rào cản lớn với những ai không có nền tảng kỹ thuật.

n8n mang lại một giải pháp đơn giản hơn rất nhiều:

  • Ít code: Bạn chủ yếu kéo-thả các node có sẵn như HTTP Request, HTML, Split Out.
  • Giao diện trực quan: Thiết kế luồng công việc dễ nhìn, dễ hiểu, phù hợp cho cả người mới bắt đầu.
  • Tự động hóa mở rộng: Sau khi crawl xong, bạn có thể kết nối dữ liệu với Google Sheets, gửi email, đẩy lên API khác hoặc lưu trữ ở nơi khác.
  • Dễ bảo trì và chỉnh sửa: Nếu muốn thay đổi nguồn crawl, cấu trúc dữ liệu hay điểm lưu trữ, bạn chỉ cần điều chỉnh lại vài node trong workflow.

Trang tĩnh chỉ cần node HTTP Request. Trang cần chạy JavaScript mới hiện nội dung thì dùng Puppeteer với n8n; muốn dùng crawler dựng sẵn trên cloud thì xem tích hợp Apify vào n8n hoặc Scraper API với n8n.

Hướng dẫn cách crawl dữ liệu website với n8n

Workflow mẫu gồm 9 node: Manual Trigger → Google Sheets → HTTP Request (Dumpling AI) → Split Out → Edit Fields → Code → AI Agent → Edit Fields → Gmail.

Toàn bộ workflow crawl trong n8n: Start Workflow Manually, Google Sheet, HTTP Request, Split Out, Edit Field, Code, AI Agent với Google Gemini Chat Model, Edit Fields, Gmail
Toàn cảnh workflow. Ảnh chụp ở n8n 1.x; trên n8n 2.x công tắc Inactive được thay bằng nút Publish, nút Test workflow đổi thành Execute workflow.

Bước 1: Thêm node Manually Trigger

Node này là điểm khởi đầu của workflow, cho phép bạn kích hoạt toàn bộ quá trình một cách thủ công. Khi chạy ổn, có thể đổi sang Schedule Trigger để crawl định kỳ.

Bước 2: Thêm node Google Sheet

Node Google Sheet được sử dụng để đọc danh sách các URL từ một bảng tính Google Sheet. Điều này giúp bạn dễ dàng quản lý các trang web cần crawl mà không cần chỉnh sửa workflow mỗi lần.

Trước tiên, bạn cần chuẩn bị một bảng Google Sheets gồm một cột đặt tên là websites (chữ thường, khớp biểu thức ở Bước 3) chứa URL các website cần crawl. Ví dụ:

Bảng Google Sheets tên Crawl, ô A1 là tiêu đề cột websites, ô A2 chứa https://example.com/
Cột websites chứa URL cần crawl (URL trong ảnh đã thay bằng ví dụ)

Sau đó, quay lại n8n và cấu hình như sau:

  • Credential to connect with: Bạn cần thiết lập credential Google Sheets để n8n có thể truy cập vào bảng tính của bạn. Tham khảo bài viết: Cách xác thực Credential cho Google trên n8n
  • Resource: Chọn Sheet Within Document.
  • Operation: Chọn Get Row(s) để lấy tất cả các hàng từ bảng tính.
  • Document: Chọn By URL và nhập URL của Google Sheet của bạn vào trường https://docs.google.com/spreadsheets/….
  • Sheet: Chọn tên trang tính mà bạn muốn đọc dữ liệu, ví dụ: Trang tính1.
Node Google Sheet trong n8n: Resource Sheet Within Document, Operation Get Row(s), Document By URL, Sheet Trang tính1
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.

Bước 3: Thêm node HTTP Request (Dumpling AI Crawl Endpoint)

Node HTTP Request là phần crawl dữ liệu, nơi bạn gửi yêu cầu đến API của Dumpling AI để trích xuất nội dung từ các URL. Dumpling AI là dịch vụ cung cấp API crawl website, trả về nội dung đã làm sạch của nhiều trang trong cùng một site.

Trước tiên, bạn đăng nhập Dumpling AI, vào mục API Keys và bấm Generate new secret API Key. Key chỉ hiện một lần, hãy lưu ngay vào credential n8n.

Trang API Keys của Dumpling AI với nút Generate new secret API Key và khung Usage hiển thị số credit
Trang API Keys của Dumpling AI (ảnh chụp năm 2025)
Hộp thoại API Key generated của Dumpling AI, giá trị key đã che
Key chỉ hiện một lần (đã che)

Sau đó, quay lại n8n và cấu hình node HTTP Request:

  • Method: Chọn POST.
  • URL: Nhập điểm cuối API của Dumpling AI: https://app.dumplingai.com/api/v1/crawl (đúng theo tài liệu Crawl Website ngày 23/10/2026).
  • Authentication: Chọn Generic Credential Type.
  • Generic Auth Type: Chọn Header Auth.
Node HTTP Request trong n8n: Method POST, URL https://app.dumplingai.com/api/v1/crawl, Authentication Generic Credential Type, Header Auth
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.
  • Header Auth: Tạo một credential Header Auth mới để lưu API Key của Dumpling AI:
    • Name: Nhập Authorization.
    • Value: Nhập Bearer, một dấu cách, rồi API Key, ví dụ: Bearer sk_YOUR_API_KEY.
Credential Header Auth account trong n8n: Name Authorization, Value đã ẩn
Credential Header Auth lưu API Key, không ghi key thẳng vào node
  • Send Body: Bật tùy chọn này.
  • Body Content Type: Chọn JSON.
  • Specify Body: Chọn Using JSON.
  • JSON: Nhập cấu trúc JSON sau để gửi các tham số crawl đến Dumpling AI, dùng biểu thức n8n để lấy URL từ node Google Sheet:
    • url: {{ $json.websites }} lấy giá trị ở cột websites.
    • limit: Số trang tối đa được crawl (mặc định 5).
    • depth: Độ sâu crawl tính từ đường dẫn gốc (mặc định 2).
    • format: Định dạng nội dung trả về: markdown, text hoặc raw; ở đây là text.
Phần Send Body của node HTTP Request: Body Content Type JSON, Specify Body Using JSON, JSON gồm url là biểu thức json.websites, limit 5, depth 2, format text
Body JSON gửi tới Dumpling AI

Theo tài liệu Dumpling AI ngày 23/10/2026, endpoint crawl tốn 10 credit cho mỗi trang được crawl, nên limit 5 nghĩa là tối đa 50 credit mỗi URL. Đặt limit nhỏ khi chạy thử.

Bước 4: Thêm node Split Out

Node Split Out được sử dụng để tách các kết quả trả về từ Dumpling AI thành các mục riêng lẻ, giúp xử lý từng trang một cách độc lập.

Cấu hình chi tiết:

  • Fields To Split Out: Nhập results, là mảng kết quả trong phản hồi của Dumpling AI.
  • Include: Chọn No Other Fields để chỉ giữ lại các trường đã tách.
Node Split Out trong n8n: Fields To Split Out là results, Include No Other Fields
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.

Bước 5: Thêm node Edit Fields (Set)

Node Edit Fields (Set) được sử dụng để ánh xạ và chuẩn bị dữ liệu từ mỗi trang đã crawl, đảm bảo rằng các trường cần thiết có sẵn cho các bước tiếp theo của workflow.

Cấu hình chi tiết:

  • Mode: Chọn Manual Mapping.
  • Fields to Set: Thêm các trường sau và ánh xạ chúng từ dữ liệu JSON đầu vào:
    • metadata.title: Kiểu String, giá trị {{ $json.metadata.title }}. Đây là tiêu đề của bài viết.
    • content: Kiểu String, giá trị {{ $json.content }}. Đây là nội dung chính của bài viết.
    • metadata.original_url: Kiểu String, giá trị {{ $json.metadata.original_url }}. Đây là URL gốc của bài viết.
Node Edit Field (Set) trong n8n với ba trường metadata.title, content, metadata.original_url
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.

Lưu ý: tài liệu Dumpling AI hiện mô tả mỗi phần tử results gồm content, url, status. Nếu đầu ra của bạn không có metadata, hãy dùng {{ $json.url }} cho URL và lấy dòng đầu của content làm tiêu đề.

Bước 6: Thêm node Code

Node Code được sử dụng để xử lý và định dạng dữ liệu từ các bài viết đã crawl thành một chuỗi văn bản cho bản tin. Nó cũng tổng hợp thông tin để tạo ra một lời nhắc (prompt) cho AI Agent.

Cấu hình chi tiết:

  • Mode: Chọn Run Once for All Items.
  • Language: Chọn JavaScript.
  • JavaScript Code: Nhập đoạn mã JavaScript sau:
let output = '';

items.forEach((item, index) => {
  const title = item.json.metadata?.title || 'No title';
  const url = item.json.metadata?.original_url || item.json.url || 'No URL';
  const content = item.json.content || 'No content';

  output += `${index + 1}. ${title}\n${url}\n${content}\n\n`;
});

return [{ json: { aggregatedArticles: output } }];
Node Code trong n8n, Mode Run Once for All Items, Language JavaScript, đoạn mã gom các bài thành biến aggregatedArticles
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.

Bước 7: Thêm node AI Agent

Node AI Agent là nơi bạn định nghĩa vai trò và hướng dẫn cho mô hình AI để tạo ra bản tin. Nó hoạt động như một lớp trung gian để làm việc với các mô hình ngôn ngữ lớn như Google Gemini.

Cấu hình chi tiết:

  • Source for Prompt (User Message): Chọn Define below.
  • Prompt (User Message): Nhập ngữ cảnh cho AI: đóng vai trợ lý bản tin, viết một tiêu đề và bản tóm tắt các bài ở định dạng HTML, trả kết quả dạng JSON có hai trường subject và body. Mỗi bài tóm tắt kèm link nguồn.
Node AI Agent trong n8n, Source for Prompt Define below, ô Prompt mô tả vai trò trợ lý bản tin
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.
Node Google Gemini Chat Model trong n8n với credential Test và model gemini-2.0-flash
Ảnh chụp năm 2025: model gemini-2.0-flash đã ngừng hoạt động, hãy chọn model đang có trong danh sách của node.

Lưu ý: Bạn có thể thay node AI Agent này bằng node OpenAI (thao tác Message a Model).

Bước 8: Thêm node Edit Fields

Trong phần “Fields to Set”, tạo 2 trường lấy từ JSON mà AI trả về:

  • subject: {{ JSON.parse($json.output.replaceAll('```json', '').replaceAll('```', '').trim()).subject }}
  • body: {{ JSON.parse($json.output.replaceAll('```json', '').replaceAll('```', '').trim()).body }}
Node Edit Fields trong n8n với hai trường subject và body dùng JSON.parse trên output của AI Agent
Ảnh chụp ở n8n 1.x; trên n8n 2.x nút Test step đổi thành Execute step.

Bước 9: Thêm node Gmail

Node Gmail là bước cuối cùng trong workflow, nơi bản tin được tạo bởi AI sẽ được gửi đến địa chỉ email của người nhận.

Cấu hình chi tiết:

  • Credential to connect with: Thiết lập credential cho tài khoản Gmail của bạn. Quá trình này sẽ yêu cầu bạn cấp quyền cho n8n để gửi email từ tài khoản của bạn.
  • Resource: Chọn Message.
  • Operation: Chọn Send.
  • To: Nhập địa chỉ email người nhận bản tin, ví dụ: ten@example.com. Chỉ gửi cho người đã đồng ý nhận.
  • Subject: Sử dụng biểu thức để lấy tiêu đề bản tin từ bước trước: {{ $json.subject }}.
  • Email Type: Chọn HTML.
  • Message: Sử dụng biểu thức để lấy nội dung HTML của bản tin: {{ $json.body }}.
Node Gmail trong n8n: Resource Message, Operation Send, To ten@example.com, Subject và Message là biểu thức, Email Type HTML
Node Gmail (email trong ảnh đã thay bằng ten@example.com). Ảnh chụp ở n8n 1.x; biểu thức trong ảnh là bản cũ, dùng {{ $json.subject }} và {{ $json.body }} như hướng dẫn.

Bước 10: Kiểm tra workflow

Nhấn nút Execute workflow và kiểm tra kết quả trong hộp thư. Khi đã ổn, đổi Manual Trigger sang Schedule Trigger và bấm Publish để workflow chạy định kỳ.

Kết quả:

Email bản tin do workflow gửi: tiêu đề do AI viết, ba bài tóm tắt kèm dòng Đọc thêm tại đây và link, địa chỉ gửi và link đã thay bằng ví dụ
Bản tin nhận được (email và link trong ảnh đã thay bằng ví dụ)

Crawl dữ liệu website có hợp pháp không?

Crawl dữ liệu website không bị cấm chung, nhưng phải tôn trọng robots.txt và điều khoản của trang đích, không thu thập dữ liệu cá nhân trái quy định và không dùng nội dung có bản quyền vượt quá trích dẫn. Phần dưới là nguyên tắc tham khảo, không phải tư vấn pháp lý.

  • robots.txt và điều khoản sử dụng: đọc /robots.txt của trang (RFC 9309) và mục điều khoản trước khi crawl. Trang cấm thu thập tự động thì không crawl.
  • Dữ liệu cá nhân: họ tên, email, số điện thoại, ảnh của người khác là dữ liệu cá nhân theo Nghị định 13/2023/NĐ-CP và Luật Bảo vệ dữ liệu cá nhân 2025 (Luật số 91/2025/QH15). Không gom các dữ liệu này để làm danh sách tiếp thị.
  • Bản quyền: chỉ lưu tiêu đề, đoạn tóm tắt và link nguồn; không đăng lại nguyên văn bài của người khác.
  • Không gây tải: đặt limit, depth nhỏ, crawl ngoài giờ cao điểm, không lặp lại liên tục trên cùng một site.
  • Không vượt rào: trang yêu cầu đăng nhập, CAPTCHA hoặc chặn bot là tín hiệu chủ trang không muốn bị thu thập tự động.

Workflow crawl định kỳ cần n8n chạy liên tục. Nếu tự host, xem cách dựng ở bài cài đặt n8n trên VPS.

Muốn chạy n8n 24/7 mà không tự cài? VPS n8n của Tino cài sẵn n8n trên VPS NVMe đặt tại Việt Nam; bạn vẫn có quyền root để cấu hình. Xem cấu hình và giá trên trang sản phẩm.

Những câu hỏi thường gặp

Vai trò của Dumpling AI trong workflow crawl dữ liệu là gì?

Dumpling AI nhận một URL, tự đi qua các trang con theo limit và depth, rồi trả về nội dung đã làm sạch (bỏ menu, quảng cáo, footer). Nhờ vậy bạn không phải tự viết bộ tách HTML cho từng website.

API Key Dumpling AI lấy ở đâu?

Đăng nhập Dumpling AI, mở mục API Keys, bấm Generate new secret API Key và sao chép ngay vì key chỉ hiện một lần. Lưu key vào n8n dưới dạng credential Header Auth với giá trị Bearer <key>.

Dumpling AI có giới hạn gì không?

Có. Mỗi trang crawl tốn credit (10 credit/trang theo tài liệu ngày 23/10/2026) và tốc độ gọi bị giới hạn theo gói; phản hồi có header X-RateLimit-Remaining để bạn theo dõi. Số credit miễn phí khi đăng ký có thể thay đổi, hãy xem trang giá của Dumpling AI.

Dumpling AI có giới hạn theo domain không?

Dumpling AI không giới hạn domain, nhưng trang chặn crawler, yêu cầu cookie hoặc đăng nhập có thể trả về lỗi hoặc nội dung rỗng. Gặp trường hợp này, hãy coi đó là tín hiệu nên dùng API chính thức của trang hoặc bỏ nguồn đó.

Tại sao nên xử lý kết quả crawl bằng AI?

Nội dung crawl thường dài và lẫn nhiều phần thừa. Node AI Agent giúp tóm tắt, trích các trường cần thiết (giá, ngày, tiêu đề) hoặc dựng bản tin; hãy luôn giữ link nguồn và kiểm lại số liệu AI trích ra.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan