نود YouTube در n8n
نود YouTube در n8n به شما کمک میکند تا بدون کدنویسی، با YouTube Data API کار کنید: اطلاعات کانال و ویدیوها را بگیرید، در پلیلیستها جستجو و مدیریت انجام دهید، و خروجی را به ابزارهایی مثل Google Sheets، Telegram، Slack یا پایگاهدادهها منتقل کنید. اگر هدف شما مانیتور کردن محتوا، گزارشگیری، یا ساخت اتوماسیون برای تیم محتوا و مارکتینگ است، این نود یکی از کاربردیترین گزینههاست.
معرفی نود در N8N
نود YouTube یک نود از نوع Integration است؛ یعنی برای اتصال مستقیم به سرویس YouTube (از طریق Google/YouTube API) استفاده میشود و معمولاً در کنار نودهای Trigger و Action دیگر قرار میگیرد تا یک ورکفلو کامل بسازد.
- کارکرد اصلی: فراخوانی عملیاتهای YouTube Data API مانند جستجوی ویدیو، دریافت جزئیات ویدیو/کانال/پلیلیست و مدیریت برخی منابع (بسته به سطح دسترسی و قابلیتهای نسخه n8n).
- دستهبندی: Integration (گاهی در عمل نقش Action هم دارد چون داده را از سرویس میگیرد یا به سرویس میفرستد).
- اهمیت در ورکفلوها: ساخت گزارشهای خودکار از عملکرد محتوا، پایش انتشار ویدیوهای جدید، جمعآوری داده برای داشبورد، و اتصال دادههای YouTube به CRM/Sheets/Database.
موارد استفاده
۱) پایش ویدیوهای جدید یک کانال و ارسال اعلان
- سناریو: هر روز یکبار ویدیوهای جدید یک کانال را بررسی کنید و اگر ویدیوی جدیدی منتشر شده بود، در Telegram یا Slack پیام ارسال شود.
- ترکیب پیشنهادی نودها: Cron Trigger + YouTube (Search/List) + IF + Telegram/Slack + Data Store (برای جلوگیری از اعلان تکراری).
۲) گزارشگیری از آمار ویدیوها و ذخیره در Google Sheets
- سناریو: لیستی از Video IDها دارید و میخواهید viewCount/likeCount/commentCount را روزانه ثبت کنید.
- ترکیب پیشنهادی نودها: Cron Trigger + Google Sheets (Read IDs) + Split In Batches + YouTube (Videos: Get/List) + Google Sheets (Append Row).
۳) استخراج نتایج جستجو برای ایدهپردازی محتوا
- سناریو: با یک کلمه کلیدی (مثلاً “n8n automation”) جستجو کنید و ۲۰ ویدیوی برتر را با عنوان، کانال و تاریخ انتشار ذخیره کنید.
- ترکیب پیشنهادی نودها: Manual Trigger + Set (Keyword) + YouTube (Search) + HTML Extract/Code (اختیاری برای پردازش) + Notion/Sheets/Airtable.
۴) پیدا کردن ویدیوهای یک پلیلیست برای ساخت آرشیو
- سناریو: آیتمهای یک Playlist را دریافت کنید و لینک هر ویدیو را در دیتابیس ثبت کنید.
- ترکیب پیشنهادی نودها: Manual/Cron + YouTube (Playlist Items) + PostgreSQL/MySQL/Notion.
پارامترها و تنظیمات
پارامترهای دقیق ممکن است بسته به نسخه n8n و پیادهسازی نود YouTube کمی متفاوت باشد، اما ساختار عمومی تقریباً ثابت است: انتخاب Credential، انتخاب Resource، انتخاب Operation و سپس فیلدهای ورودی همان عملیات.
۱) Credentials (اعتبارنامه)
- نام پارامتر: Credentials
نوع داده: Credential (OAuth2 یا API Key بسته به نود/عملیات)
توضیح: برای دسترسی به YouTube Data API باید احراز هویت انجام شود. برای عملیات صرفاً خواندنی در برخی سناریوها ممکن است API Key کافی باشد، اما بسیاری از قابلیتها به OAuth2 نیاز دارند.
مثال عملی: اتصال با OAuth2 به حساب Google که دسترسی YouTube دارد، سپس اجرای عملیات Search یا Videos: Get.
نکته مهم: اگر نرخ درخواستها بالا باشد یا چندین ورکفلو همزمان از یک Credential استفاده کنند، احتمال برخورد با محدودیت سهمیه (Quota) زیاد میشود.
۲) Resource (منبع)
- نام پارامتر: Resource
نوع داده: گزینهای (Option)
توضیح: نوع دادهای که با آن کار میکنید؛ معمولاً مواردی مثل Video، Channel، Playlist، Playlist Item، Search.
مثال عملی: انتخاب Resource = Video برای دریافت جزئیات یک ویدیو با Video ID.
۳) Operation (عملیات)
- نام پارامتر: Operation
نوع داده: گزینهای (Option)
توضیح: عملی که روی Resource انجام میشود؛ رایجترینها: Get، List، Search.
مثال عملی: Resource = Search و Operation = Search برای جستجوی ویدیو با کلمه کلیدی.
۴) پارامترهای رایج در عملیاتهای خواندنی (Read)
- نام پارامتر: Video ID / Channel ID / Playlist ID
نوع داده: String
توضیح: شناسه یکتا برای دریافت اطلاعات دقیق.
مثال عملی: Video ID = dQw4w9WgXcQ
- نام پارامتر: Query (q)
نوع داده: String
توضیح: عبارت جستجو در عملیات Search.
مثال عملی: q = “n8n automation”
- نام پارامتر: Type
نوع داده: Option (video/channel/playlist)
توضیح: تعیین میکند جستجو روی چه نوع منبعی انجام شود.
مثال عملی: type = video
- نام پارامتر: Max Results
نوع داده: Number
توضیح: تعداد نتایج برگشتی در هر درخواست (معمولاً تا 50).
مثال عملی: maxResults = 20
- نام پارامتر: Order
نوع داده: Option (date/rating/relevance/title/viewCount)
توضیح: ترتیب نتایج جستجو.
مثال عملی: order = date برای دریافت جدیدترینها.
- نام پارامتر: Published After / Published Before
نوع داده: DateTime (ISO 8601)
توضیح: فیلتر نتایج بر اساس بازه زمانی انتشار.
مثال عملی: publishedAfter = 2026-01-01T00:00:00Z
- نام پارامتر: Region Code / Relevance Language
نوع داده: String
توضیح: محدودسازی نتایج بر اساس کشور یا زبان.
مثال عملی: regionCode = IR یا relevanceLanguage = fa
- نام پارامتر: Parts
نوع داده: String یا Multi-Option (مثل snippet,contentDetails,statistics)
توضیح: تعیین میکند API چه بخشهایی از داده را برگرداند. انتخاب کمتر = خروجی سبکتر و گاهی مصرف سهمیه کمتر.
مثال عملی: parts = snippet,statistics
- نام پارامتر: Page Token
نوع داده: String
توضیح: برای صفحهبندی نتایج (nextPageToken/prevPageToken).
مثال عملی: قرار دادن {{$json.nextPageToken}} برای دریافت صفحه بعد.
نکات مهم هنگام پیکربندی
- فرمت تاریخ: اگر فیلد زمان دارید، از ISO 8601 استفاده کنید (مانند 2026-01-31T00:00:00Z).
- Page Size: برای حجم بالا، بهجای زیاد کردن maxResults، صفحهبندی را مدیریت کنید تا کنترل بهتری روی نرخ درخواست داشته باشید.
- Parts: فقط بخشهای لازم را بگیرید؛ مثلاً برای گزارش آمار، snippet و statistics کافی است.
- Quota: عملیاتهای مختلف هزینه سهمیه متفاوت دارند. در پروژههای گزارشگیری روزانه، تعداد درخواستها را به حداقل برسانید.
ورودیها و خروجیها
ورودیها (Input)
بسته به عملیات، ورودی میتواند از فیلدهای ثابت نود یا از داده نود قبلی با Expression تامین شود. رایجترین ورودیها:
- شناسهها (Video ID / Channel ID / Playlist ID) از نودهایی مثل Set، Google Sheets، یا Database
- عبارت جستجو (Query) از فرم، Webhook، یا یک لیست کلمات کلیدی
- توکن صفحه (Page Token) از خروجی درخواست قبلی برای صفحهبندی
خروجیها (Output)
خروجی معمولاً شامل آرایهای از آیتمهاست که هر آیتم یک نتیجه از YouTube API است. نمونه ساختار رایج برای Search:
{ "kind": "youtube#searchListResponse", "etag": "etagValue", "nextPageToken": "CAUQAA", "regionCode": "US", "pageInfo": { "totalResults": 1000000, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#searchResult", "etag": "etagItem", "id": { "kind": "youtube#video", "videoId": "abc123" }, "snippet": { "publishedAt": "2026-01-15T12:00:00Z", "channelId": "chan123", "title": "Automation with n8n", "description": "....", "channelTitle": "My Channel", "thumbnails": { "default": { "url": "https://..." }, "medium": { "url": "https://..." }, "high": { "url": "https://..." } } } } ]}برای دریافت آمار ویدیوها (Videos: List/Get) معمولاً در خروجی فیلدی مثل statistics خواهید داشت:
{ "items": [ { "id": "abc123", "snippet": { "title": "Automation with n8n" }, "statistics": { "viewCount": "15230", "likeCount": "980", "commentCount": "120" } } ]}نکات پیشرفته و ترفندها
۱) جلوگیری از پردازش تکراری با Data Store
برای سناریوی “ویدیوهای جدید کانال”، بهتر است شناسه آخرین ویدیوی پردازششده (یا آخرین تاریخ انتشار) را در Data Store ذخیره کنید و هر بار فقط موارد جدیدتر را پردازش کنید. این کار هم هزینه سهمیه را کاهش میدهد، هم خروجیها را تمیزتر میکند.
۲) صفحهبندی حرفهای با Loop و Page Token
اگر به بیش از maxResults نیاز دارید، از nextPageToken استفاده کنید:
- در اجرای اول token خالی است.
- خروجی nextPageToken را بردارید و دوباره همان نود YouTube را با token جدید اجرا کنید.
- برای کنترل این حلقه از IF + Merge یا Loop Over Items (در نسخههای جدید n8n) استفاده کنید.
۳) بهینهسازی هزینه سهمیه (Quota) با انتخاب درست Parts و عملیاتها
اگر فقط عنوان و تاریخ انتشار میخواهید، فقط snippet را بگیرید. اگر آمار میخواهید، statistics را اضافه کنید. جمع کردن داده از چند منبع با یک درخواست ممکن نیست، اما میتوانید با طراحی درست، تعداد درخواستها را کاهش دهید (مثلاً بهجای گرفتن جزئیات تکبهتک، از List با چند ID در یک درخواست استفاده کنید؛ در صورتی که نود/عملیات این قابلیت را ارائه دهد).
۴) خروجی تمیز برای ابزارهای دیگر با Set و Item Lists
خروجی YouTube معمولاً عمیق و تو در تو است. قبل از ارسال به Sheets/Notion، با نود Set فقط فیلدهای لازم را انتخاب کنید:
- title = {{$json.snippet.title}}
- videoId = {{$json.id.videoId}}
- publishedAt = {{$json.snippet.publishedAt}}
- url = https://www.youtube.com/watch?v={{$json.id.videoId}}
محدودیتها و خطاها
محدودیتها
- Quota Limit: YouTube Data API سهمیه روزانه/پروژه دارد و در حجم بالا سریع به محدودیت میرسد.
- دسترسیها: بعضی عملیاتها نیاز به OAuth و Scopeهای مشخص دارند و با API Key انجام نمیشوند.
- دادههای خصوصی: دسترسی به دادههای خصوصی (مثل پلیلیستهای خصوصی یا اطلاعات حساس) فقط با مجوزهای درست و حسابی که مالک آن داده است ممکن است.
خطاهای رایج و راهحلها
- خطا: 403 Quota Exceeded
علت: مصرف سهمیه از حد مجاز بیشتر شده است.
راهحل: تعداد درخواستها را کاهش دهید، صفحهبندی را کنترل کنید، Parts را محدود کنید، زمانبندی Cron را کمتر کنید، یا چند پروژه API جداگانه (در صورت امکان و مطابق سیاستها) مدیریت کنید.
- خطا: 401 Unauthorized / Invalid Credentials
علت: Credential اشتباه است یا توکن OAuth منقضی/نامعتبر شده است.
راهحل: Credential را دوباره authorize کنید، Scopeها را بررسی کنید، مطمئن شوید حساب Google به درستی انتخاب شده است.
- خطا: 400 Bad Request
علت: پارامترها معتبر نیستند (مثلاً تاریخ با فرمت اشتباه یا ترکیب نامعتبر فیلدها).
راهحل: فرمت ISO تاریخ را چک کنید، type و resource را درست انتخاب کنید، و اگر از Expression استفاده میکنید مقدار نهایی را در Output بررسی کنید.
- خطا: 404 Not Found
علت: ID اشتباه است یا ویدیو/پلیلیست حذف شده یا دسترسی ندارید.
راهحل: ID را از URL یا API معتبر استخراج کنید، دسترسی حساب را بررسی کنید، و برای موارد حذفشده مسیر جایگزین (IF برای هندل خطا) بگذارید.
ایده ها
- ساخت داشبورد روزانه عملکرد ویدیوها: گرفتن آمار و ذخیره در Google Sheets و نمایش در Looker Studio.
- سیستم هشدار برای رقبا: جستجوی نام برند/رقبا و ارسال نتایج جدید به Slack.
- آرشیو خودکار پلیلیست آموزشی: دریافت آیتمهای پلیلیست و ساخت صفحه Notion با لینک و عنوان.
- پایش کلیدواژههای محتوایی: اجرای روزانه Search روی چند کلمه کلیدی و ثبت ترندها در دیتابیس.
- تولید RSS سفارشی: تبدیل خروجی Search/Channel Videos به یک فید RSS با Webhook Response یا نودهای کمکی.
