GODRICH
#css-animation#button#loader#transition#scroll#ui#xu-huong-thiet-ke

Marketing Automation Basics: 9 Workflow RSS

n8n là công cụ tự động hóa không cần code, nối các app lại với nhau. Bạn làm marketing hay PR, tìm marketing automation basics vì chán mở chục trang tin mỗi

Tự chạy · bấm ô để tới mục đó · cả 9 trong một zip

Chín mục này được sắp xếp theo đúng trình tự mà một thói quen theo dõi tin tức thật sự sẽ lớn dần lên. Bắt đầu từ việc lấy một nguồn (01), rồi đến hai cách gộp nhiều nguồn (02 nối liền một mạch, 03 đếm riêng theo từng nguồn), thu hẹp lại theo hai cách (04 theo từ khóa, 05 theo ngày), làm gọn kết quả theo hai cách (06 loại trùng, 07 dựng thành bảng), rẽ nhánh theo điều kiện một lần (08), và cuối cùng gói tất cả thành thứ chạy một mình mỗi ngày (09). Một đội ngũ thường thêm dần từng thứ theo đúng thứ tự này khi chuyển từ kiểm tra tin bằng tay sang tự động hóa.

01Đọc RSS cơ bản

Bạn thấy gì

Thay vì mở trang web để kiểm tra bài mới, node RSS Read lấy nguyên danh sách bài viết mới nhất, rồi node Set chỉ giữ lại tiêu đề, link và ngày đăng.

Đọc RSS cơ bản
Mở trong tab mới

01 · Đọc RSS cơ bản — Diện tích đo được 2.985% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

RSS ReadSet → title/link/pubDateV2 실행 확인

Dùng ở đâu

Đây là dạng dùng khi bạn theo dõi một blog yêu thích hay mới bước đầu học automation — bản đơn giản nhất trước khi thêm gì khác.

{
  "name": "Keep Fields",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3.5,
  "parameters": {
    "mode": "manual",
    "assignments": {
      "assignments": [
        { "name": "title", "value": "={{ $json.title }}", "type": "string" },
        { "name": "link", "value": "={{ $json.link }}", "type": "string" },
        { "name": "pubDate", "value": "={{ $json.pubDate }}", "type": "string" }
      ]
    }
  }
}

02Gộp hai nguồn RSS, mới nhất trước

Chuyện gì diễn ra trên màn hình

Hai node RSS Read đọc hai trang khác nhau, node Merge ở chế độ append nối hai luồng lại thành một, rồi Sort xếp bài mới nhất lên đầu.

Gộp hai nguồn RSS, mới nhất trước
Mở trong tab mới

02 · Gộp hai nguồn RSS, mới nhất trước — Diện tích đo được 6.001% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

RSS Read ×2Merge appendSort desc → V2 실행 확인

Chỗ dùng

Khi cần xem tin từ nhiều báo trong một chỗ hoặc theo dõi blog đối thủ cùng lúc, một nguồn thôi là không đủ nữa.

{
  "name": "Merge Append",
  "type": "n8n-nodes-base.merge",
  "typeVersion": 3.2,
  "parameters": {
    "mode": "append",
    "numberInputs": 2
  }
}

03Tóm tắt số lượng theo nguồn

Chuyển động thế nào

Nếu mục 02 trộn hai nguồn thành một luồng, mục này giữ chúng tách riêng: hai node Aggregate gộp tiêu đề theo từng nguồn, rồi node Code dựng một object tóm tắt gồm số lượng và 3 tiêu đề tiêu biểu mỗi nguồn.

Tóm tắt số lượng theo nguồn
Mở trong tab mới

03 · Tóm tắt số lượng theo nguồn — Diện tích đo được 9.442% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

RSS Read ×2Aggregate ×2 → Merge by positionCode 요약 → V2 실행 확인

Dùng khi nào

Khi cần so sánh sản lượng theo nguồn hay làm nguyên liệu cho báo cáo tuần, đếm riêng hợp lý hơn trộn chung.

{
  "name": "Build Summary",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "parameters": {
    "jsCode": "const bbc = $json.bbcTitles || [];\nconst ars = $json.arsTitles || [];\nconst summary = {\n  bbc: { count: bbc.length, titles: bbc.slice(0, 3) },\n  ars: { count: ars.length, titles: ars.slice(0, 3) }\n};\nreturn [{ json: { summary } }];"
  }
}

04Lọc theo từ khóa, giữ top N

Bạn thấy gì

Node Filter chỉ giữ bài có tiêu đề chứa một từ khóa (không phân biệt hoa thường), rồi Limit cắt còn top 3.

Lọc theo từ khóa, giữ top N
Mở trong tab mới

04 · Lọc theo từ khóa, giữ top N — Diện tích đo được 4.888% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Filter contains(대소문자 무시)Limit 3V2 실행 확인

Dùng ở đâu

Khi mục tiêu là chỉ nhận thông báo về chủ đề quan tâm và giảm nhiễu, thu hẹp trước rồi mới gửi hợp lý hơn gửi hết rồi lọc sau.

{
  "conditions": {
    "options": { "caseSensitive": false, "version": 2 },
    "conditions": [
      {
        "leftValue": "={{ $json.title }}",
        "rightValue": "ai",
        "operator": { "type": "string", "operation": "contains" }
      }
    ],
    "combinator": "and"
  }
}

05Chỉ giữ bài trong N ngày gần đây

Chuyện gì diễn ra trên màn hình

Filter so sánh pubDate với thời điểm hiện tại trừ 3 ngày bằng toán tử after của điều kiện dateTime, chỉ giữ bài gần đây.

Chỉ giữ bài trong N ngày gần đây
Mở trong tab mới

05 · Chỉ giữ bài trong N ngày gần đây — Diện tích đo được 2.972% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Filter dateTime after$now.minus(days:3)V2 실행 확인

Chỗ dùng

Nếu chỉ cần loại bài cũ khỏi tổng hợp tuần và đảm bảo tính mới, lọc theo ngày thôi là đủ, không cần từ khóa.

{
  "conditions": [
    {
      "leftValue": "={{ $json.pubDate }}",
      "rightValue": "={{ $now.minus({ days: 3 }) }}",
      "operator": { "type": "dateTime", "operation": "after" }
    }
  ],
  "combinator": "and"
}

06Chỉ giữ bài mới qua các lần chạy

Chuyển động thế nào

Thao tác Remove Items Processed in Previous Executions của Remove Duplicates lọc bỏ các link đã thấy ở lần chạy trước, rồi Set gắn nhãn isNew cho bài mới.

Chỉ giữ bài mới qua các lần chạy
Mở trong tab mới

06 · Chỉ giữ bài mới qua các lần chạy — Diện tích đo được 4.796% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Remove Duplicatesscope: workflowV2 실행 확인

Dùng khi nào

Khi mục tiêu là chạy cùng giờ mỗi ngày mà không lặp lại thông báo, lọc trùng trong một lần chạy là chưa đủ — cần nhớ được giữa các lần chạy.

{
  "name": "Remove Seen Links",
  "type": "n8n-nodes-base.removeDuplicates",
  "typeVersion": 2,
  "parameters": {
    "operation": "removeItemsSeenInPreviousExecutions",
    "logic": "removeItemsWithAlreadySeenKeyValues",
    "dedupeValue": "={{ $json.link }}",
    "options": { "scope": "workflow" }
  }
}

07Bản tin dạng bảng HTML

Bạn thấy gì

Limit giữ 8 mục đầu tiên, rồi thao tác Convert to HTML Table của node HTML biến chúng thành bảng ngay.

Bản tin dạng bảng HTML
Mở trong tab mới

07 · Bản tin dạng bảng HTML — Diện tích đo được 6.013% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Limit 8HTML convertToHtmlTableV2 실행 확인

Dùng ở đâu

Khi cần chèn bảng tin vào nội dung email hay làm widget dashboard, bảng dễ nhìn lướt qua hơn một danh sách trần trụi.

{
  "name": "Build Table",
  "type": "n8n-nodes-base.html",
  "typeVersion": 1.2,
  "parameters": {
    "operation": "convertToHtmlTable",
    "options": {
      "capitalize": true,
      "caption": "Fox News latest headlines"
    }
  }
}

08Định tuyến theo từ khóa

Chuyện gì diễn ra trên màn hình

Switch chia bài theo từ khóa trong tiêu đề thành 3 nhánh — ai, security (hoặc breach), và còn lại — mỗi nhánh có Set gắn nhãn route, rồi Merge gom lại.

Định tuyến theo từ khóa
Mở trong tab mới

08 · Định tuyến theo từ khóa — Diện tích đo được 9.49% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Switch 3 routesfallbackOutput: extraV2 실행 확인

Chỗ dùng

Khi cần tự động phân loại gửi theo kênh chủ đề hay định tuyến thông báo với hơn hai kết quả, một node IF là không đủ.

{
  "mode": "rules",
  "rules": {
    "values": [
      {
        "conditions": {
          "conditions": [
            { "leftValue": "={{ $json.title }}", "rightValue": "ai",
              "operator": { "type": "string", "operation": "contains" } }
          ]
        },
        "outputKey": "ai"
      }
    ]
  },
  "options": { "fallbackOutput": "extra", "renameFallbackOutput": "other" }
}

09Gửi bản tin tổng hợp theo lịch

Chuyển động thế nào

Schedule khởi động mỗi ngày lúc 8:00 (Manual Trigger cũng test được ngay), RSS Read lấy bài mới nhất, Aggregate gộp tiêu đề và link thành mảng, rồi Markdown ghép cặp chúng vào field digest.

Gửi bản tin tổng hợp theo lịch
Mở trong tab mới

09 · Gửi bản tin tổng hợp theo lịch — Diện tích đo được 5.581% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Schedule triggerAtHour 8 + ManualAggregate → MarkdownV2 실행 확인

Dùng khi nào

Muốn dùng thật cho bản tin buổi sáng ở kênh nhóm hay bot thông báo cá nhân, lịch chạy tự động và bước test thủ công cần nằm trong cùng một luồng.

{
  "name": "Build Digest",
  "type": "n8n-nodes-base.markdown",
  "typeVersion": 1,
  "parameters": {
    "mode": "markdownToHtml",
    "markdown": "={{ '# Daily Digest\\n\\n' + $json.title.map((t, i) => '- [' + t + '](' + $json.link[i] + ')').join('\\n') }}",
    "destinationKey": "digest"
  }
}

Cần chuẩn bị gì

Bảng điểm và phiên bản

Cả 9 mục đều ghi "không cần" ở cột chuẩn bị, nhưng bảng vẫn cần thiết vì n8n bản cũ có thể từ chối typeVersion của một node. Thang điểm đi qua ba mức: V0 (cấu trúc), V1 (đã xác minh import), V2 (đã chạy và xác nhận) — cả 9 mục ở đây đều đạt V2.

Mục Điểm Cần chuẩn bị Phiên bản n8n
01 Đọc RSS cơ bản V2 không cần 2.38.5
02 Gộp hai nguồn RSS, mới nhất trước V2 không cần 2.38.5
03 Tóm tắt số lượng theo nguồn V2 không cần 2.38.5
04 Lọc theo từ khóa, giữ top N V2 không cần 2.38.5
05 Chỉ giữ bài trong N ngày gần đây V2 không cần 2.38.5
06 Chỉ giữ bài mới qua các lần chạy V2 không cần 2.38.5
07 Bản tin dạng bảng HTML V2 không cần 2.38.5
08 Định tuyến theo từ khóa V2 không cần 2.38.5
09 Gửi bản tin tổng hợp theo lịch V2 không cần 2.38.5

Ba cách import

Có ba cách để import: dán thẳng đoạn JSON vào canvas n8n bằng Ctrl/Cmd+V, dùng Import from File trong menu canvas để chọn file trong zip, hoặc chạy n8n import:workflow --input=file.json bằng CLI. Sau khi import xong, chỉ cần bấm nút Test workflow ở góc trên bên trái để chạy thử ngay.

Chỗ dễ vỡ nhất

Tùy chọn Include Other Input Fields

Cái bẫy âm thầm nhất nằm ở mục 06: nếu bạn bật tùy chọn "Include Other Input Fields" của node Set bằng cách đặt nó vào bên trong khối Options, workflow vẫn chạy xong (exit 0), nhưng field title lặng lẽ biến mất, chỉ còn isNew. Thực ra tùy chọn này nằm ở tầng trên cùng của node, ngang hàng với mode và assignments, không phải bên trong Options — đặt sai chỗ thì n8n âm thầm dùng giá trị mặc định (false) mà không báo lỗi. Mật khẩu để mở file zip này là xu26t3qn, giải nén ra sẽ thấy đủ 9 file JSON nằm trong workflows/. Remove Duplicates ở mục 06 còn một bẫy dễ vỡ nữa: vì nó nhớ giữa các lần chạy, chạy thử cùng một workflow nhiều lần liên tiếp sẽ khiến số bài "mới" giảm dần về 0, và khi đó node Set phía sau không chạy nữa nên field isNew biến mất hoàn toàn khỏi kết quả.

FAQ

Dùng được trên n8n cloud không?

Được. Các workflow này không dùng community node hay thông tin đăng nhập gắn với tài khoản nào, nên import thẳng qua menu Import là chạy. Riêng Schedule Trigger ở mục 09 chỉ tự chạy hằng ngày khi workflow được bật Active.

Nếu phiên bản n8n của tôi khác thì sao?

Gặp lỗi typeVersion nghĩa là bạn nên tạo lại node đó trên canvas, export ra để xem giá trị thật, rồi hạ xuống cho khớp mà dùng. File zip này đã xác minh cả import lẫn chạy thử trên n8n 2.38.5 (Node 24).

Không biết code thì có hiểu được phần lọc trùng ở mục 06 không?

Có. Ngoại trừ node Code ở mục 03, tám mục còn lại chỉ dùng node có sẵn của n8n nên dù không biết JavaScript, bạn vẫn làm theo được. Mục 06 cũng chỉ là chọn tùy chọn trên node Remove Duplicates bằng giao diện, chi tiết các tùy chọn có ở tài liệu chính thức của n8n.

Nếu bạn mới làm quen với n8n, danh mục automation có thêm nhiều ví dụ cùng hướng, còn trang giới thiệu ghi rõ trang này kiểm chứng nội dung theo tiêu chuẩn nào.

Nhập mật khẩu file nén

Mật khẩu nằm ngay trong bài viết này. Đọc tới đó bạn sẽ thấy.