iAct

Act on Ai

n8n چیست؟ ساخت اتوماسیون و ایجنت هوش مصنوعی بدون کدنویسی (نصبِ رایگان)


n8n چیست؟ ساخت اتوماسیون و ایجنت هوش مصنوعی بدون کدنویسی (نصبِ رایگان)

n8n چیست و اون حلقه‌ی مرموزی که همه ازش حرف می‌زنن یعنی چی

n8n یه نرم‌افزار اتومیشنه. اتومیشن یعنی خودکار کردن یه کار. قبل از n8n، ابزارهایی مثل Zapier یا حتی RSS Feed همین کارو می‌کردن، ولی n8n به‌خاطر ترکیب شدنش با هوش مصنوعی این چند وقته خیلی معروف‌تر شده.

نکته‌ای که فهمیدنش کمک می‌کنه کل ماجرا رو بفهمی اینه: n8n در واقع یه نرم‌افزاره که مدام داره یه حلقه (loop) رو اجرا می‌کنه. این حلقه مدام یه چیزی رو چک می‌کنه — مثلاً می‌پرسه «ایمیل جدیدی اومده یا نه؟». اگه اومده باشه، یه سری استپ پشت سر هم اجرا می‌شن. اگه نیومده، دوباره صبر می‌کنه و بعد یه مدت دوباره چک می‌کنه. دقیقاً همون کاری که اگه بخوای خودت با کد بنویسی، باید یه while loop بزنی و توش شرط بذاری — فقط اینجا با درگ اند دراپ کردن باکس‌ها (که بهشون node یا گره می‌گن) این کارو انجام می‌دی.

Trigger ها: نقطه‌ی شروع هر workflow

هر workflow توی n8n با یه Trigger شروع می‌شه، یعنی چیزی که باعث می‌شه اون حلقه از خواب بیدار بشه و کار کنه. چند نوع رایج Trigger:

  • Manual — خودت دستی روی دکمه‌ی اجرا می‌زنی، مناسب تست کردن.
  • App Event — مثلاً وقتی یه پیام تو تلگرام یا Notion اتفاق افتاد.
  • Schedule — یه تایمر می‌ذاری، مثلاً هر یک ساعت یا هر پنج دقیقه یک‌بار.
  • Form Submission — n8n خودش می‌تونه یه فرم بسازه. وقتی کسی فرم رو پر کرد، workflow شروع می‌شه.
  • Webhook — مهم‌ترین و پرکاربردترینشون که در ادامه توضیح می‌دم.

Webhook: مهم‌ترین Trigger برای ساختن یه بک‌اند ساده

Webhook یه‌کم فرق داره با بقیه. اینجا n8n به‌جای اینکه مدام یه چیزی رو چک کنه، فقط یه آدرس (URL) بهت می‌ده. هر وقت کسی این آدرس رو صدا بزنه، اون‌جوری workflow شروع به کار می‌کنه.

این یعنی می‌تونی این لینک رو داخل هر نرم‌افزار دیگه‌ای بذاری — مثلاً توی یه اپ موبایل، وقتی کاربر روی یه دکمه کلیک کرد، اپ این آدرس رو صدا بزنه و یه سری داده هم باهاش بفرسته. از اون طرف، پشت این Webhook می‌تونه دیتابیس باشه، هوش مصنوعی باشه، هر منطقی که بخوای. یعنی عملاً با n8n می‌تونی بدون نوشتن یک خط کد، بک‌اند یه اپلیکیشن رو بسازی.

ساخت یک workflow واقعی: یک AI کوچک که تشخیص می‌ده

برای اینکه ملموس بشه، این workflow رو در نظر بگیر: یه Webhook که یه پارامتر می‌گیره (مثلاً name)، بعد یه node شرطی (If) چک می‌کنه که آیا مقدار برابر با یه اسم خاصه یا نه، و در نهایت یه جواب متفاوت برمی‌گردونه:

Webhook (دریافت درخواست)
   │
   ▼
If (شرط: name == "Ilya"؟)
   │
   ├── True  → Respond to Webhook: "Hello boss"
   └── False → Respond to Webhook: "I don't know you"

نکته‌ی مهم: وقتی می‌خوای این workflow همیشه فعال باشه و هر بار که کسی صداش می‌زنه جواب بده، باید دکمه‌ی Publish رو بزنی. تا وقتی Publish نکردی، فقط یه Test URL داری که یک‌بار مصرفه؛ بعد از Publish، یه Production URL دائمی می‌گیری که همیشه در دسترسه.

جایگزین کردن شرط ساده با هوش مصنوعی

حالا به‌جای اینکه با یه If ساده فقط اسم رو چک کنی، می‌تونی یه node هوش مصنوعی اضافه کنی که خودش تشخیص بده:

  • Message a Model — ساده‌تره. فقط یه مدل چت رو وصل می‌کنی و یه پیام می‌فرستی، جواب می‌گیری.
  • AI Agent — پیچیده‌تره ولی کامل‌تره. اینجا می‌تونی به مدل، حافظه (Memory)، دیتابیس، و ابزار (Tool/MCP) هم وصل کنی تا خودش بر اساس نیازش تصمیم بگیره.

فرقشون این نیست که یکی «بهتره»، فرقشون میزان پیچیدگی و امکاناتیه که لازم داری.

مجبور کردن مدل به خروجی مشخص (Function Calling واقعی چیه)

نکته‌ای که خیلی مهمه: وقتی توی System Prompt به مدل می‌گی «اگه کاربر گفت فلان اسم و فلان رمز درسته، توی خروجیت یه فیلد به اسم isIlya بذار و مقدارش رو true کن»، این خودش یه نوع Function Calling هست. تو داری یه قانون و یه ساختار (schema) به مدل تحمیل می‌کنی و مدل مجبوره طبق اون قالب جواب بده.

برای این‌که مطمئن بشی خروجی همیشه همون فرمت رو داره، از node ای به اسم Structured Output Parser استفاده می‌کنی. اینجا یه نمونه از خروجی مورد انتظار رو بهش نشون می‌دی (مثلاً {"message": "...", "isIlya": true}) و n8n خودش پشت صحنه کاری می‌کنه که مدل واقعاً همون قالب رو رعایت کنه.

ذخیره کردن داده با Data Table داخلی n8n

n8n یه قابلیت داره به اسم Data Table که یه دیتابیس ساده‌ی داخلیه، بدون نیاز به وصل کردن Postgres یا هر چیز جداگانه‌ای. مثلاً می‌تونی وقتی یکی سعی می‌کنه با اسم یا رمز اشتباه وارد سیستمت بشه، اون تلاش رو با یه Insert Row داخل این Data Table ذخیره کنی. بعداً هم با Get Rows و یه شرط می‌تونی همون رکوردها رو بخونی، نمایش بدی، و بعد با Update Rows علامت بزنی که دیده شدن.

نصب رایگان n8n با Docker (مسیر Self-Hosted)

نسخه‌ی ابری n8n رایگان نیست؛ حتی ساده‌ترین پلن حدود ۲۰ دلار در ماه هزینه داره، و اکانت رایگانش هم بعد از ۱۴ روز غیرفعال می‌شه. راه جایگزین اینه که n8n رو روی کامپیوتر یا سرور خودت Self-Host کنی، که کاملاً رایگانه.

ساده‌ترین روش نصبش استفاده از Dockerه. اول باید Docker Desktop رو نصب کنی. بعد از نصب و بالا اومدن Docker، این دستورها رو توی ترمینال اجرا کن:

docker volume create n8n_data

این دستور یه Volume می‌سازه، یعنی یه فضای ذخیره‌سازی که حتی اگه کانتینر Docker رو خاموش/روشن کنی، داده‌هات از بین نمی‌ره. بعدش:

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -e GENERIC_TIMEZONE="Asia/Tehran" \
  -e TZ="Asia/Tehran" \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n

تنظیمات timezone رو خودت باید داخل ترمینال عوض کنی، نه اینکه مقدارها رو جدا جدا توی یه فیلد آنلاین پیست کنی — چون گاهی کاراکترهای Enter قاطی می‌شن و دستور خراب می‌شه. اولین بار که این دستور رو اجرا کنی، ایمیج داکر دانلود می‌شه؛ دفعات بعد سریع‌تر بالا میاد.

با این حالت، تا وقتی ترمینال باز باشه n8n روشنه؛ اگه ترمینال رو ببندی، متوقف می‌شه. اگه می‌خوای در پس‌زمینه اجرا بمونه، باید فلگ -d رو به دستور اضافه کنی. بعد از اجرا، با رفتن به http://localhost:5678 به رابط n8n دسترسی داری و یه اکانت می‌سازی.

چرا وصل کردن جیمیل یا اینستاگرام سخت‌تره

توی نسخه‌ی Self-Hosted، وصل کردن سرویس‌هایی مثل Gmail یا Instagram به‌این‌سادگی‌ها نیست. باید بری توی Google Cloud یه پروژه بسازی، Credential تعریف کنی، و چون این سرویس‌ها OAuth می‌خوان، لازمه یه دامنه و سرور با HTTPS هم داشته باشی تا callback درست کار کنه. توی نسخه‌ی ابری (پولی) n8n، همه‌ی این پیچیدگی حل شده. اگه برنامه‌نویس نیستی و می‌خوای این‌جور اتصال‌ها رو راحت داشته باشی، دو مسیر منطقی‌تره: یا از نسخه‌ی خود سایت n8n استفاده کنی، یا از یه instance که یکی دیگه Self-Host کرده و بهت دسترسی می‌ده.

وصل کردن مدل‌های هوش مصنوعی به‌شکل سازگار با OpenAI

برای وصل کردن مدل به n8n، لازم نیست حتماً از OpenAI مستقیم استفاده کنی. هر سرویسی که API سازگار با OpenAI داشته باشه رو می‌شه به همون node مدل OpenAI وصل کرد؛ فقط کافیه Base URL رو به آدرس اون سرویس تغییر بدی و API Key رو بذاری. برای این ویدیو از AI Pass به همین شکل استفاده شده: یه API Key ساخته شده، Base URL روی مسیر سازگار با OpenAI تنظیم شده، و از بین مدل‌های در دسترس یه مدل سبک مثل Gemini Flash Lite انتخاب شده. هزینه‌ی هر درخواست هم به‌خاطر کوچیک بودن context، معمولاً کمتر از یک سنت بوده.

چرا همه‌چیز رو نباید با یک AI Agent تنها انجام داد

یه سوال منطقی اینه: چرا کل این منطق رو با یه ایجنت هوش مصنوعی تنها انجام ندیم؟ جوابش مصرف توکنه. اگه بخوای هر بار که حلقه اجرا می‌شه، خود AI بره یه سایت رو بخونه، چک کنه، تصمیم بگیره، دوباره صبر کنه و دوباره از اول این کار رو تکرار کنه، کلی توکن و context مصرف می‌شه — چون هر بار باید از صفر context رو پر کنه. در حالی که وقتی بخشی از این منطق (چک‌های شرطی ساده، ذخیره‌سازی، فرمت خروجی) رو با node های معمولی n8n انجام بدی و فقط جایی که واقعاً به تشخیص هوشمند نیاز داری AI رو صدا بزنی، هم توکن کمتری مصرف می‌شه هم خروجی قابل‌اعتمادتره. البته با ارزون‌تر و قوی‌تر شدن مدل‌ها، این مرز کم‌کم داره جابه‌جا می‌شه؛ ولی فعلاً ترکیب منطق نرم‌افزاری با هوش مصنوعی، هم صرفه‌جویی توکن داره هم نتیجه‌ی پایدارتری می‌ده.

اگه دوست داری ویدئوش رو هم ببینی، لینکش پایین صفحه‌ست.


دیدگاهتان را بنویسید