<div dir="rtl">

# 🎬 ساخت و انتشار ویدیوی یوتیوب با هوش مصنوعی — نسخه 2.0

ورکفلوی **n8n** که از یک **ایده‌ی فارسی**، ویدیوی کوتاه می‌سازد، عنوان و توضیحات و تگ سئو‌شده می‌نویسد و مستقیم در **یوتیوب** (Shorts یا افقی) آپلود می‌کند.

طراحی و آموزش: **مرتضی عظیمی** — [mortezaazimi.ir](https://mortezaazimi.ir)

## ✨ قابلیت‌ها

- 🧠 **Gemini** ایده‌ی فارسی را به پرامپت حرفه‌ای انگلیسی برای مدل ویدیو تبدیل می‌کند
- ✍️ **عنوان، توضیحات و ۸ تا ۱۲ تگ** به فارسی یا انگلیسی
- 🎨 **۷ سبک تصویر:** سینمایی واقع‌گرا، انیمه، انیمیشن سه‌بعدی، خمیری، کمیک، سایبرپانک، آبرنگ
- 📱 **Shorts عمودی (9:16)** یا **افقی (16:9)**؛ برای Shorts، `#Shorts` خودکار اضافه می‌شود
- 🎥 ساخت ویدیو با **fal.ai** (مدل PixVerse v4.5 Fast، ۷۲۰p)
- ⏳ **چک وضعیت واقعی** به‌جای انتظار ثابت؛ تا ۱۵ دقیقه صبر و بعد خطای واضح
- 📤 آپلود مستقیم در یوتیوب و نمایش لینک ویدیو
- ۱۳ گره، بدون Google Drive، با راهنمای فارسی کنار هر بخش

## 🧭 مسیر کار

```
فرم → Gemini – Plan Video → Prepare Video → fal – Start Video
   → Wait 20s → fal – Check Status → Ready?
        ├─ بله → fal – Get Result → Download Video → Upload to YouTube → Done Page
        └─ نه  → Timed Out? ── نه → (دوباره Wait 20s)
                            └─ بله → Stop: Too Slow
```

## 🚀 راه‌اندازی

### ۱. Import
در n8n: **Workflows ← Import from File** ← `YouTube-AI-Video.json`

### ۲. کلید Gemini
از [aistudio.google.com/apikey](https://aistudio.google.com/apikey) کلید بگیرید. در گره **Gemini – Plan Video** یک **Header Auth** بسازید:
- Name: `x-goog-api-key` · Value: کلید Gemini

### ۳. کلید fal.ai
در [fal.ai](https://fal.ai) ثبت‌نام کنید، اعتبار شارژ کنید و از **Dashboard ← Keys** کلید بسازید. یک **Header Auth** دیگر بسازید و در هر ۳ گره fal انتخاب کنید:
- Name: `Authorization` · Value: `Key کلید_fal` (کلمه‌ی Key و یک فاصله قبل از کلید)

### ۴. اتصال یوتیوب
1. در [console.cloud.google.com](https://console.cloud.google.com) یک پروژه بسازید و **YouTube Data API v3** را فعال کنید.
2. **OAuth consent screen** را تنظیم کنید و ایمیل خودتان را به **Test users** اضافه کنید.
3. در **Credentials ← Create Credentials ← OAuth client ID** نوع **Web application** را بسازید و **Redirect URI** را همان آدرسی بگذارید که n8n در پنجره‌ی اعتبارنامه نشان می‌دهد.
4. در n8n اعتبارنامه‌ی **YouTube OAuth2 API** را با Client ID و Secret بسازید و **Sign in with Google** را بزنید.

### ۵. اجرا
ورکفلو را **Active** کنید و آدرس **Production URL** فرم را باز کنید.

---

## ⚠️ دو نکته‌ی مهم یوتیوب

- **پروژه‌های تأییدنشده:** ویدیوهایی که با API یک پروژه‌ی Google Cloud تأییدنشده آپلود می‌شوند، **خصوصی قفل می‌شوند** تا وقتی که [YouTube API Audit](https://support.google.com/youtube/contact/yt_api_form) را بگذرانید. تا آن موقع، ویدیو را بعد از آپلود از YouTube Studio عمومی کنید.
- **محتوای ساخته‌شده با هوش مصنوعی:** یوتیوب می‌خواهد ویدیوهای **واقع‌نما**ی ساخته‌شده با هوش مصنوعی اعلام شوند. در YouTube Studio گزینه‌ی **Altered or synthetic content** را برای این ویدیوها روشن کنید.

## 🎛 شخصی‌سازی

| چه چیزی | کجا | چطور |
|---|---|---|
| مدل ویدیو | **fal – Start Video** | آدرس مدل دیگری از fal.ai (مثلاً Kling یا Veo) را بگذارید؛ بدنه را طبق صفحه‌ی آن مدل تنظیم کنید |
| کیفیت | **fal – Start Video** | `resolution: '720p'` ← `'1080p'` (گران‌تر) |
| دسته‌بندی و کشور | **Upload to YouTube** | Region Code و Category (پیش‌فرض US و 24 = Entertainment) |
| سبک‌های تصویر | **YouTube Video Form** | گزینه‌ی جدید به فیلد «سبک تصویر» اضافه کنید |
| قواعد نوشتن | **Gemini – Plan Video** | متن `systemInstruction` در بدنه |
| حداکثر زمان انتظار | **Timed Out?** | عدد `45` (هر بار ۲۰ ثانیه) |

## 🛠 عیب‌یابی

| مشکل | راه‌حل |
|---|---|
| `401` در گره‌های fal | مقدار Header باید `Key ` + کلید باشد. |
| `403` یا خطای اعتبار در fal | حساب fal.ai اعتبار ندارد. |
| ویدیو ساخته نشد و خطای محتوا داد | ایده را تغییر دهید؛ مدل‌ها محتوای حساس را رد می‌کنند. |
| «Stop: Too Slow» | صف fal شلوغ بوده؛ دوباره اجرا کنید یا عدد Timed Out? را بیشتر کنید. |
| ویدیو خصوصی ماند | پروژه‌ی Google Cloud هنوز Audit نشده؛ بخش «دو نکته‌ی مهم» را ببینید. |
| `quotaExceeded` در یوتیوب | سهمیه‌ی روزانه‌ی API (هر آپلود ۱۶۰۰ واحد از ۱۰٬۰۰۰) تمام شده؛ فردا دوباره امتحان کنید. |

## ⚠️ تغییرات نسبت به نسخه‌ی قبل

- مسیر تکراری اجرای دستی با پرامپت ثابت حذف شد
- آدرس اشتباه گرفتن نتیجه (`flux-pro` برای درخواست PixVerse) اصلاح شد؛ حالا از آدرس خود پاسخ fal استفاده می‌شود
- انتظار ثابت ۷۰ ثانیه‌ای به **چک وضعیت تا آماده شدن** تبدیل شد
- آپلود و دانلود بی‌مورد در Google Drive حذف شد
- AI Agent + Chat Model + Output Parser به یک گره Gemini با خروجی JSON تضمین‌شده تبدیل شد
- مدل منسوخ `gemini-2.5-flash` با `gemini-3.5-flash-lite` جایگزین شد
- اضافه شد: سبک تصویر، زبان، فرم فارسی، `#Shorts` خودکار، رعایت سقف‌های یوتیوب و صفحه‌ی نتیجه

</div>
