خودکارسازی آیکون و کاور صفحات Notion با هوش مصنوعی

خودکارسازی آیکون و کاور صفحات Notion با هوش مصنوعی

12 دقیقه مطالعه · منتشر شده ۱۴۰۵/۵/۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 5141 · منبع: کاتالوگ Pixori

خودکارسازی آیکون‌ها و کاورهای صفحات Notion با هوش مصنوعی

این گردش کار به طور خودکار یک آیکون ایموجی مرتبط و یک تصویر کاور را به صفحات جدید Notion اختصاص می‌دهد. این گردش کار توسط یک وب‌هوک HTTP، معمولاً از اتوماسیون یا دکمه Notion، فعال می‌شود. گردش کار از هوش مصنوعی برای تحلیل عنوان صفحه برای یک ایموجی مناسب استفاده می‌کند و در صورت شکست تحلیل هوش مصنوعی، به انتخاب تصادفی بازمی‌گردد. سپس یک تصویر کاور تصادفی را انتخاب کرده و صفحه Notion را به‌روزرسانی می‌کند.

این گردش کار و موارد دیگر را در کاتالوگ Axeto کاوش کنید: Axeto.ai/n8n

تشریح گردش کار (Workflow Breakdown)

این گردش کار به چندین بخش منطقی تقسیم شده است:

1. دریافت ورودی: به درخواست‌های Webhook ورودی که حاوی داده‌های صفحه جدید Notion هستند، گوش می‌دهد.

2. تولید عدد تصادفی: اعداد تصادفی را برای تسهیل انتخاب تصویر ایجاد می‌کند.

3. دریافت تصویر: لیستی از تصاویر را از یک API خارجی بازیابی می‌کند.

4. پیشنهاد ایموجی با هوش مصنوعی: عنوان صفحه Notion را با استفاده از یک مدل زبان هوش مصنوعی تحلیل می‌کند تا ایموجی مناسبی را پیشنهاد دهد.

5. جایگزینی ایموجی پیش‌فرض: در صورت شکست یا عدم دسترسی پیشنهاد هوش مصنوعی، یک ایموجی تصادفی را انتخاب می‌کند.

6. اختصاص تصویر کاور: به صورت تصادفی یک URL تصویر کاور را از لیست بازیابی شده انتخاب می‌کند.

7. به‌روزرسانی صفحه Notion: صفحه هدف Notion را با آیکون ایموجی و تصویر کاور اختصاص داده شده به‌روزرسانی می‌کند.

8. کنترل گردش کار: جریان را مدیریت می‌کند، از جمله پردازش دسته‌ای برای به‌روزرسانی‌ها.

---

تحلیل گره‌های دقیق

۱. دریافت ورودی

  • هدف: دریافت داده‌های مربوط به صفحات جدید ایجاد شده در Notion از طریق درخواست HTTP POST.
  • گره‌ها: Webhook, Sticky Note
  • جزئیات:

* گره Webhook:

* نوع: http.webhook

* عملکرد: به عنوان نقطه ورود گردش کار عمل می‌کند و منتظر درخواست‌های POST ورودی می‌ماند.

* پیکربندی: یک مسیر منحصر به فرد (مانند /webhook/notion-auto-icon) تنظیم کنید و اطمینان حاصل کنید که متد HTTP روی POST تنظیم شده است.

* ورودی: بار داده JSON از اتوماسیون Notion یا یک تریگر.

* خروجی: داده‌های JSON دریافتی.

* ملاحظات: از پیکربندی صحیح URL وب‌هوک در Notion اطمینان حاصل کنید؛ ساختارهای مختلف بار داده را مدیریت کنید.

* گره Sticky Note:

* عملکرد: مستندات را در داخل گردش کار فراهم می‌کند.

* محتوا: "از وب‌هوک برای فعال‌سازی از طریق دکمه Notion یا اتوماسیون استفاده کنید."

۲. تولید عدد تصادفی

  • هدف: تولید اعداد صحیح تصادفی برای انتخاب صفحات تصویر.
  • گره‌ها: Code (برای تولید عدد تصادفی)
  • جزئیات:

* گره Code (با نام "Random Number"):

* نوع: code.execute

* عملکرد: یک عدد صحیح تصادفی بین ۱ تا ۱۰ (شامل هر دو) را به عنوان فیلد num به هر آیتم ورودی اضافه می‌کند. همچنین id را از ورودی کپی می‌کند.

* قطعه کد:

```javascript

// تابع کمکی برای دریافت عدد صحیح تصادفی

function getRandomInt(min, max) {

min = Math.ceil(min);

max = Math.floor(max);

return Math.floor(Math.random() * (max - min + 1)) + min;

}

// پردازش هر آیتم

for (const item of items) {

item.value.num = getRandomInt(1, 10); // تولید عدد تصادفی برای صفحه تصویر

item.value.id = item.json.id; // کپی ID اصلی در صورت نیاز

}

return items;

```

* ورودی: داده‌ها از گره Webhook.

* خروجی: آیتم‌های غنی شده با فیلد num.

۳. دریافت تصویر

  • هدف: دریافت لیستی از تصاویر از API Picsum Photos.
  • گره‌ها: httpRequest
  • جزئیات:

* گره HTTP Request (با نام "Fetch Images"):

* نوع: httpRequest

* عملکرد: API Picsum Photos را برای دریافت لیستی از تصاویر فراخوانی می‌کند.

* پیکربندی:

* متد: GET

* URL: https://picsum.photos/v2/list?page={{$json.num}}&limit=100 (از عدد تصادفی تولید شده در مرحله قبل استفاده می‌کند).

* ورودی: آیتم‌ها از گره Code "Random Number".

* خروجی: آرایه‌ای از متادیتای تصاویر، شامل URLهای دانلود.

* ملاحظات: در دسترس بودن API، محدودیت‌های نرخ درخواست و خطاهای احتمالی شبکه.

۴. پیشنهاد ایموجی با هوش مصنوعی

  • هدف: تجزیه و تحلیل عنوان صفحه Notion و پیشنهاد یک ایموجی مرتبط با استفاده از مدل هوش مصنوعی.
  • گره‌ها: code.execute (برای استخراج عنوان)، langchain.chainLlm, langchain.lmChatOpenRouter
  • جزئیات:

* گره Code (با نام "Extract Page Title"):

* نوع: code.execute

* عملکرد: عنوان صفحه را از داده‌های ورودی Notion استخراج می‌کند. اولویت با properties.Name.title است و در صورت عدم یافتن، به data.Name بازمی‌گردد.

* قطعه کد:

```javascript

for (const item of items) {

let pageTitle = '';

if (item.json.properties && item.json.properties.Name && item.json.properties.Name.title && item.json.properties.Name.title.length > 0) {

pageTitle = item.json.properties.Name.title[0].plain_text;

} else if (item.json.data && item.json.data.Name) {

pageTitle = item.json.data.Name;

}

item.value.pageTitle = pageTitle;

}

return items;

```

* ورودی: داده‌ها از گره Webhook.

* خروجی: آیتم‌ها با pageTitle استخراج شده.

* ملاحظات: با ساختارهای مختلف عنوان صفحه در بار داده Notion سازگار است.

* گره Langchain LLM Chain (با نام "Suggest Emoji"):

* نوع: langchain.chainLlm

* عملکرد: یک پرامپت را برای مدل هوش مصنوعی ساخته و ارسال می‌کند تا یک ایموجی واحد بر اساس عنوان صفحه استخراج شده پیشنهاد دهد.

* پیکربندی:

* Prompt: پرامپتی که با دقت ساخته شده و شامل لیستی از ایموجی‌های بالقوه و متغیر pageTitle است. مثال: "بر اساس عنوان صفحه زیر: '{{$json.pageTitle}}'. لطفاً یک ایموجی واحد و مرتبط از این لیست پیشنهاد دهید: 🚀, 💡, 📚, 📅, 💰, 🌍, 💻, 🎨, 🎵, 🏃‍♂️. فقط ایموجی را برگردانید."

* ورودی: آیتم‌ها از گره Code "Extract Page Title".

* خروجی: پاسخ مدل هوش مصنوعی حاوی ایموجی پیشنهادی.

* ملاحظات: کیفیت پیشنهاد به دقت پرامپت و توانایی مدل هوش مصنوعی بستگی دارد.

۵. جایگزینی ایموجی پیش‌فرض

  • هدف: اطمینان از اینکه همیشه یک ایموجی برای صفحه وجود دارد، حتی اگر هوش مصنوعی نتواند یکی را پیشنهاد دهد.
  • گره‌ها: Code (با نام "Assign Emoji")
  • جزئیات:

* گره Code (با نام "Assign Emoji"):

* نوع: code.execute

* عملکرد: بررسی می‌کند که آیا خروجی LLM حاوی یک ایموجی معتبر است یا خیر. اگر چنین است، از آن استفاده می‌کند. در غیر این صورت، یک ایموجی تصادفی از یک لیست از پیش تعریف شده انتخاب می‌کند.

* قطعه کد:

```javascript

const defaultEmojis = ['🚀', '💡', '📚', '📅', '💰', '🌍', '💻', '🎨', '🎵', '🏃‍♂️'];

for (const item of items) {

let suggestedEmoji = '';

// بررسی خروجی LLM

if (item.json.suggestedEmoji && defaultEmojis.includes(item.json.suggestedEmoji)) {

suggestedEmoji = item.json.suggestedEmoji;

} else {

// انتخاب ایموجی تصادفی در صورت شکست

const randomIndex = Math.floor(Math.random() * defaultEmojis.length);

suggestedEmoji = defaultEmojis[randomIndex];

}

item.value.emoji = suggestedEmoji;

// اطمینان از وجود داده‌های تصویر برای مرحله بعدی

if (!item.json.images) {

// اگر تصاویر دریافت نشدند، یک مقدار خالی یا خطا را مدیریت کنید

item.json.images = [];

}

}

return items;

```

* ورودی: خروجی از گره Langchain LLM Chain ("Suggest Emoji") و گره HTTP Request ("Fetch Images").

* خروجی: آیتم‌ها با فیلد emoji اختصاص داده شده.

* ملاحظات: لیست defaultEmojis را می‌توان برای تنوع بیشتر گسترش داد.

۶. اختصاص تصویر کاور

  • هدف: انتخاب یک تصویر کاور تصادفی از لیست تصاویر بازیابی شده.
  • گره‌ها: Code (با نام "Select Cover Image")
  • جزئیات:

* گره Code (با نام "Select Cover Image"):

* نوع: code.execute

* عملکرد: یک URL تصویر را به صورت تصادفی از آرایه تصاویر دریافت شده انتخاب می‌کند.

* قطعه کد:

```javascript

for (const item of items) {

let coverImageUrl = null;

if (item.json.images && item.json.images.length > 0) {

const randomIndex = Math.floor(Math.random() * item.json.images.length);

coverImageUrl = item.json.images[randomIndex].download_url;

}

item.value.picurl = coverImageUrl;

item.value.page_id = item.json.id; // اطمینان از وجود page_id

}

return items;

```

* ورودی: خروجی از گره Code "Assign Emoji".

* خروجی: آیتم‌ها با فیلد picurl (URL تصویر کاور) و page_id اختصاص داده شده.

* ملاحظات: اطمینان حاصل کنید که داده‌های تصویر از مرحله قبل به درستی منتقل شده‌اند.

۷. به‌روزرسانی صفحه Notion

  • هدف: به‌روزرسانی صفحه Notion با آیکون ایموجی و تصویر کاور اختصاص داده شده.
  • گره‌ها: SplitInBatches, HTTP Request
  • جزئیات:

* گره SplitInBatches (با نام "Batch Updates"):

* نوع: splitInBatches

* عملکرد: موارد ورودی را به دسته‌های کوچکتر تقسیم می‌کند تا از محدودیت‌های API جلوگیری شود.

* پیکربندی: Batch Size را روی 1 تنظیم کنید تا هر صفحه به صورت جداگانه به‌روزرسانی شود.

* ورودی: خروجی از گره Code "Select Cover Image".

* خروجی: موارد دسته‌بندی شده.

* گره HTTP Request (با نام "Update Notion Page"):

* نوع: httpRequest

* عملکرد: صفحه Notion را با استفاده از API Notion به‌روزرسانی می‌کند.

* پیکربندی:

* Method: PATCH

* URL: https://api.notion.com/v1/pages/{{$json.page_id}}

* Body:

```json

{

"icon": {

"type": "emoji",

"emoji": "{{$json.emoji}}"

},

"cover": {

"type": "external",

"external": {

"url": "{{$json.picurl}}"

}

}

}

```

* Authentication: اعتبارنامه‌های Notion API (مانند کلید API) را پیکربندی کنید.

* Headers:

* Authorization: Bearer YOUR_NOTION_API_KEY

* Content-Type: application/json

* Notion-Version: 2022-06-28 (یا آخرین نسخه پشتیبانی شده)

* ورودی: خروجی از گره SplitInBatches ("Batch Updates").

* خروجی: پاسخ از API Notion.

* ملاحظات: اطمینان حاصل کنید که page_id, emoji, و picurl به درستی در payload JSON ارجاع داده شده‌اند. کلید API و نسخه Notion را با مقادیر صحیح جایگزین کنید.

---

جدول خلاصه گردش کار

نام گره (Node Name)نوع گره (Node Type)عملکرد اصلی (Primary Function)ورودی از گره(های) (Input From Node(s))خروجی به گره(های) (Output To Node(s))محتوای یادداشت چسبان (Sticky Note Content)
Webhookhttp.webhookدریافت داده‌های ایجاد صفحه Notion-Code ("Random Number")"از وب‌هوک برای فعال‌سازی از طریق دکمه یا اتوماسیون Notion استفاده کنید."
Sticky NotestickyNoteمستندسازی--"از وب‌هوک برای فعال‌سازی از طریق دکمه یا اتوماسیون Notion استفاده کنید."
Code ("Random Number")code.executeتولید عدد تصادفی برای صفحه تصویرWebhookHTTP Request ("Fetch Images")-
HTTP Request ("Fetch Images")httpRequestدریافت تصاویر از Picsum APICode ("Random Number")Code ("Assign Emoji")-
Code ("Extract Page Title")code.executeاستخراج عنوان صفحه از داده‌های NotionWebhookLangchain LLM Chain ("Suggest Emoji")-
Langchain LLM Chain ("Suggest Emoji")langchain.chainLlmپیشنهاد ایموجی با قدرت هوش مصنوعیCode ("Extract Page Title")Code ("Assign Emoji")-
OpenRouter Chat Model ("AI Model")langchain.lmChatOpenRouterمدل هوش مصنوعی بک‌اند برای پیشنهاد ایموجیLangchain LLM Chain ("Suggest Emoji")Langchain LLM Chain ("Suggest Emoji")-
Code ("Assign Emoji")code.executeاختصاص ایموجی (پیشنهادی هوش مصنوعی یا جایگزین)Langchain LLM Chain ("Suggest Emoji"), HTTP Request ("Fetch Images")Code ("Select Cover Image")"در صورت شکست پیشنهاد هوش مصنوعی، یک ایموجی تصادفی استفاده خواهد شد."
Sticky NotestickyNoteمستندسازی--"در صورت شکست پیشنهاد هوش مصنوعی، یک ایموجی تصادفی استفاده خواهد شد."
Code ("Select Cover Image")code.executeانتخاب URL تصویر کاور تصادفیCode ("Assign Emoji")SplitInBatches ("Batch Updates")-
SplitInBatches ("Batch Updates")splitInBatchesگروه‌بندی موارد برای پردازش دسته‌ایCode ("Select Cover Image")HTTP Request ("Update Notion Page")-
HTTP Request ("Update Notion Page")httpRequestبه‌روزرسانی صفحه Notion با آیکون و کاورSplitInBatches ("Batch Updates")--

ساخت گردش کار از ابتدا

1. افزودن Node Webhook:

* Type: http.webhook

* Path: یک مسیر منحصر به فرد تعریف کنید (مثلاً /webhook/notion-auto-icon).

* HTTP Method: POST.

* Purpose: دریافت داده‌ها از Notion.

2. افزودن Node Code ("تولید عدد تصادفی"):

* Type: code.execute

* Input: از Node Webhook متصل کنید.

* Code: کد جاوا اسکریپت برای تولید یک عدد صحیح تصادفی (num) بین 1 تا 10 را پیاده‌سازی کنید.

* Purpose: آماده‌سازی یک شماره صفحه تصادفی برای فراخوانی API تصویر.

3. افزودن Node HTTP Request ("دریافت تصاویر"):

* Type: httpRequest

* Input: از Node Code ("تولید عدد تصادفی") متصل کنید.

* Method: GET.

* URL: https://picsum.photos/v2/list?page={{$json.num}}&limit=100.

* Purpose: دریافت داده‌های تصویر از Picsum Photos.

4. افزودن Node Code ("استخراج عنوان صفحه"):

* Type: code.execute

* Input: از Node Webhook متصل کنید.

* Code: کد جاوا اسکریپت برای استخراج عنوان صفحه از payload Notion را پیاده‌سازی کنید.

* Purpose: دریافت عنوان برای تحلیل هوش مصنوعی.

5. افزودن Node Langchain LLM Chain ("پیشنهاد ایموجی"):

* Type: langchain.chainLlm

* Input: از Node Code ("استخراج عنوان صفحه") متصل کنید.

* Configuration: Prompt را برای درخواست یک ایموجی واحد بر اساس عنوان صفحه، با ارجاع به متغیر pageTitle، تنظیم کنید.

* Purpose: ارسال prompt به مدل هوش مصنوعی.

6. افزودن Node OpenRouter Chat Model ("مدل هوش مصنوعی"):

* Type: langchain.lmChatOpenRouter

* Input: به صورت داخلی به Node "پیشنهاد ایموجی" متصل کنید.

* Configuration: مدل هوش مصنوعی مورد نظر (مانند deepseek/deepseek-chat-v3-0324:free) را انتخاب کرده و اعتبارنامه‌ها را پیکربندی کنید.

* Purpose: موتور هوش مصنوعی برای LLM chain.

7. افزودن Node Code ("تخصیص ایموجی"):

* Type: code.execute

* Input: از Node "پیشنهاد ایموجی" متصل کنید و اطمینان حاصل کنید که به خروجی "دریافت تصاویر" دسترسی دارد.

* Code: منطق استفاده از پیشنهاد هوش مصنوعی یا بازگشت به یک ایموجی تصادفی از لیست از پیش تعریف شده را پیاده‌سازی کنید.

* Purpose: اطمینان از تخصیص یک ایموجی معتبر.

8. افزودن Node Code ("انتخاب تصویر کاور"):

* Type: code.execute

* Input: از Node "تخصیص ایموجی" متصل کنید.

* Code: کد جاوا اسکریپت برای انتخاب تصادفی download_url از تصاویر دریافت شده و تخصیص آن به picurl را پیاده‌سازی کنید.

* Purpose: انتخاب تصویر کاور.

9. افزودن Node SplitInBatches ("به‌روزرسانی دسته‌ای"):

* Type: splitInBatches

* Input: از Node Code ("انتخاب تصویر کاور") متصل کنید.

* Configuration: Batch Size را تنظیم کنید (مثلاً 1).

* Purpose: آماده‌سازی موارد برای درخواست به‌روزرسانی.

10. افزودن Node HTTP Request ("به‌روزرسانی صفحه Notion"):

* Type: httpRequest

* Input: از Node SplitInBatches ("به‌روزرسانی دسته‌ای") متصل کنید.

* Method: PATCH.

* URL: https://api.notion.com/v1/pages/{{$json.page_id}}.

* Body: payload JSON را با خصوصیات icon و cover بسازید و به متغیرهای emoji و picurl ارجاع دهید.

* Authentication: اعتبارنامه‌های Notion API را پیکربندی کنید.

* Headers: Notion-Version را اضافه کنید.

* Purpose: به‌روزرسانی صفحه Notion با آیکون و کاور تولید شده.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چگونه کار می‌کند؟

این گردش کار با دریافت داده‌های صفحه جدید Notion از طریق وب‌هوک فعال می‌شود. سپس از هوش مصنوعی برای پیشنهاد یک آیکون ایموجی مناسب بر اساس عنوان صفحه استفاده می‌کند و یک تصویر کاور تصادفی را انتخاب کرده و صفحه Notion را به‌روزرسانی می‌کند.

چه زمانی از ایموجی تصادفی استفاده می‌شود؟

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

چگونه می‌توانم این گردش کار را در Notion فعال کنم؟

این گردش کار معمولاً از طریق یک وب‌هوک HTTP فعال می‌شود که می‌تواند توسط اتوماسیون داخلی Notion یا یک دکمه Notion راه‌اندازی شود. شما باید URL وب‌هوک را در تنظیمات Notion خود پیکربندی کنید.

آیا این گردش کار فقط برای صفحات جدید کار می‌کند؟

این گردش کار به طور خاص برای صفحات جدید طراحی شده است که توسط وب‌هوک فعال می‌شوند. برای صفحات موجود، ممکن است نیاز به تنظیمات یا گردش کار متفاوتی باشد.

workflowهای مرتبط

این workflow در کاتالوگ Pixori.me بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.