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
- اتوماسیونهای روزمره:
- گرفتن ایمیل جدید → ذخیره در Google Sheets
- دریافت فرم از Typeform → ارسال در Slack
- مدیریت پایگاه داده:
- دریافت داده از API → ذخیره در PostgreSQL یا MongoDB
- DevOps و نظارت:
- وقتی سروری Down شد → ارسال پیام به Telegram
- بررسی دورهای API ها یا سیستمها
- ساخت رباتها:
- ربات تلگرام برای ارسال گزارش یا اطلاعات لحظهای
- ETL ساده:
- Extract → Transform → Load داده بین سیستمهای مختلف
- اتوماسیون فروش و بازاریابی:
- اتصال 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
- هدف: فرمتدهی به پیام برای ارسال به تلگرام
- مقادیر تنظیم شده:
نام فیلد | مقدار |
---|---|
messageText | New 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: سلام، لطفا با من تماس بگیرید.