n8n یک ابزار اتوماسیون گردش کار (Workflow Automation) متن‌باز (Open Source) است که به شما اجازه می‌دهد بدون نیاز به کدنویسی یا با کمترین کدنویسی، سیستم‌ها و سرویس‌های مختلف را به هم متصل کرده و وظایف تکراری را خودکارسازی کنید.

n8n چیست؟

n8n (مخفف “nodemation“) یک ابزار Node.js-based است که:

  • از بیش از 300 سرویس مختلف (مانند Slack، Gmail، PostgreSQL، Airtable، GitHub، Telegram، Discord و…) پشتیبانی می‌کند.
  • از logic پیشرفته (مثل if/else، loops، conditions و branches) پشتیبانی می‌کند.
  • می‌توان آن را روی سرور شخصی نصب کرد (Self-hosted) یا از نسخه ابری آن (Cloud) استفاده کرد.
  • برخلاف سرویس‌هایی مثل Zapier و Make (Integromat)، محدودیت سخت‌گیرانه‌ای برای تعداد اجرای گردش کار ندارد.

کاربردهای رایج n8n

  1. اتوماسیون‌های روزمره:
    • گرفتن ایمیل جدید → ذخیره در Google Sheets
    • دریافت فرم از Typeform → ارسال در Slack
  2. مدیریت پایگاه داده:
    • دریافت داده از API → ذخیره در PostgreSQL یا MongoDB
  3. DevOps و نظارت:
    • وقتی سروری Down شد → ارسال پیام به Telegram
    • بررسی دوره‌ای API ها یا سیستم‌ها
  4. ساخت ربات‌ها:
    • ربات تلگرام برای ارسال گزارش یا اطلاعات لحظه‌ای
  5. ETL ساده:
    • Extract → Transform → Load داده بین سیستم‌های مختلف
  6. اتوماسیون فروش و بازاریابی:
    • اتصال Hubspot یا CRM به ایمیل و اطلاع‌رسانی تیم فروش

مزایای n8n

  • متن‌باز و قابل توسعه
  • کنترل کامل بر روی داده‌ها (در نسخه self-hosted)
  • رابط کاربری گرافیکی (drag and drop)
  • پشتیبانی از جاوااسکریپت در گره‌ها (nodes) برای منطق‌های سفارشی

مثال ساده

فرض کنید می‌خواهید:

وقتی یک ایمیل جدید از Gmail دریافت شد و عنوانش حاوی “فاکتور” بود، آن را در Google Drive ذخیره کنید و یک پیام به Slack بفرستید.

در n8n، کافیست این ۳ گره را به هم متصل کنید:

  • Gmail Trigger
  • Google Drive Upload
  • Slack Notification

مثال ساده از یک گردش کار (Workflow) در n8n می‌سازیم که:

وقتی کسی یک فرم تماس پر کرد (مثلاً از وب‌سایت)، اطلاعات فرم را دریافت کنیم و به یک چت در تلگرام نوتیف بدهیم.

سناریو:

فرض کن یک فرم HTML ساده داریم که از طریق یک Webhook به n8n ارسال می‌شود.

ابزارها:

  • Webhook → نقطه ورودی اطلاعات فرم تماس
  • Telegram → برای ارسال پیام

نمودار گردش کار (Schema)

┌────────────┐      ┌────────────────────┐      ┌───────────────────────┐
│  Webhook   │ ──▶  │  Set (format data) │ ──▶  │  Telegram SendMessage │
└────────────┘      └────────────────────┘      └───────────────────────┘

تنظیمات مرحله‌به‌مرحله

1. Webhook Node

  • نوع: Webhook
  • روش: POST
  • مسیر: /contact-form
  • این گره ورودی فرم تماس شما را دریافت می‌کند. مثلا:
{
  "name": "Ali",
  "email": "ali@example.com",
  "message": "سلام، لطفا با من تماس بگیرید."
}

2. Set Node

  • نوع: Set
  • هدف: فرمت‌دهی به پیام برای ارسال به تلگرام
  • مقادیر تنظیم شده:
نام فیلدمقدار
messageTextNew contact form submission:\nName: {{$json["name"]}}\nEmail: {{$json["email"]}}\nMessage: {{$json["message"]}}

3. Telegram Node

  • نوع: Telegram
  • عملیات: Send Message
  • Bot Token: از ربات BotFather بگیر
  • Chat ID: عدد آی‌دی چت/کانال (مثلاً @your_channel_name)
  • Text: {{$json["messageText"]}}

نتیجه:

هر بار که کسی فرم تماس رو پر کنه، n8n با استفاده از Webhook داده‌ها رو می‌گیره، فرمت‌شون می‌کنه، و بلافاصله پیام زیر رو در تلگرام ارسال می‌کنه:

New contact form submission:
Name: Ali
Email: ali@example.com
Message: سلام، لطفا با من تماس بگیرید.