سير عمل n8n لتوليد الصور: قوالب Nano Banana وGemini

لا يكفي لبناء سير عمل n8n فعّال لتوليد الصور عقدة واحدة. يشرح هذا المقال قوالب Nano Banana وGemini، وإعداد HTTP Request، ومتغيرات الأوامر النصية، والمعالجة بالدفعات، وإعادة المحاولة، وحفظ الصور النهائية في التخزين، مع مسار عبر PicassoIA لاختبار الأوامر النصية أولًا.

سير عمل n8n لتوليد الصور: قوالب Nano Banana وGemini
Cristian Da Conceicao
مؤسس Picasso IA

تفشل معظم أتمتات الصور في n8n بالطريقة نفسها. يربط أحدهم حقل الأمر النصي بعقدة، فيحصل على صورة جميلة في التشغيل الأول، ثم تصطدم دفعة من أربعين صفًا بحد للمعدل، أو بحظر لأسباب السلامة، أو بسلسلة base64 لا تتحول أبدًا إلى ملف حقيقي. يبني هذا المقال سير عمل n8n لتوليد الصور يصمد في التشغيل الثاني، باستخدام عائلة Nano Banana من Google ونقطة نهاية توليد الصور في Gemini التي تقف خلفها.

ستحصل على ترتيب العقد، ونص الطلب الدقيق، وثلاثة قوالب قابلة لإعادة الاستخدام، وإعدادات إعادة المحاولة، وتقديرًا للتكلفة، وطريقة لاختبار الأوامر النصية على PicassoIA قبل أن تنفق أي استدعاء API. Nano Banana هو الاسم المختصر لنموذج Gemini 2.5 Flash Image، لذا ينطبق كل ما هنا على أي اسم تستخدمه.

لماذا يتعطل سير عمل الصور في n8n

تتسامح سير عمل النصوص مع التصميم الإهمالي. إذا أعادت عقدة LLM جملة غريبة قليلًا، تظل العقدة التالية تتلقى سلسلة نصية. أما الصور فمختلفة: المخرج بيانات ثنائية ملفوفة في JSON، والاستدعاء يستغرق من عشر ثوانٍ إلى ثلاثين ثانية، ويمكن لرفض واحد أن يعيد استجابة HTTP 200 سليمة تمامًا دون صورة داخلها. هذا التباين هو سبب أن كثيرًا من القوالب المنسوخة تبدو سليمة في لقطة شاشة، ثم تنهار عند الصف الثالث.

خمسة أعطال تستحق التخطيط لها

يفشل تقريبًا كل سير عمل صور معطّل في واحد من هذه المواضع الخمسة:

  1. لا تتحول base64 إلى ملف. تعيد الواجهة بايتات الصورة كسلسلة نصية طويلة. بدون خطوة تحويل، ترفع سلسلة إلى التخزين ثم تتساءل لماذا تظهر المعاينة فارغة.
  2. استجابات فارغة تبدو سليمة. يمكن للأمر النصي المحظور أن يعيد الحالة 200 دون أي جزء صورة. تعمل العقدة التالية على لا شيء.
  3. حركة مرور متفجرة. إرسال أربعين عنصرًا دفعة واحدة يتجاوز الحد في الدقيقة، ويفشل نصفها برمز 429.
  4. مدخلات أوامر نصية فوضوية. خلايا الجداول التي تحتوي على علامات اقتباس أو فواصل أسطر أو مسافات زائدة تكسر أجسام JSON المبنية يدويًا.
  5. لا توجد خطوة تخزين. يحذف n8n بيانات التنفيذ القديمة افتراضيًا، لذا تختفي الصورة التي لا توجد إلا داخل التنفيذ في النهاية.

باني محبط ينظر إلى لوحة سير العمل وقد حُدِّدت خطوة فاشلة واحدة بإطار

ما يحتاجه الإعداد الموثوق

الإصلاح مملّ، وهذا هو المقصود. يحتاج سير العمل الموثوق إلى خطوة تحقق بعد استدعاء API، وخطوة تحويل تنتج ملفًا حقيقيًا، وخطوة تخزين تعيد رابطًا دائمًا، وتنظيم للإيقاع بين الاستدعاءات. كل ما تبقى في هذا المقال تنويع على هذه القطع الأربع.

💡 ابنِ بعنصر واحد أولًا. شغّل السلسلة كاملة على صف واحد باستخدام Manual Trigger. أضف الحلقة والجدولة فقط بعد أن تصل صورة واحدة إلى التخزين باسم الملف الصحيح.

اختيار نموذج الصور من Google

التسمية دون التباس

تتحرك تسميات Google بسرعة. بدأ Nano Banana اسمًا مختصرًا لـ Gemini 2.5 Flash Image، ثم تلته إصدارات Pro وذات الرقم 2 وLite. في جانب API، يرتبط كل اسم مختصر بمعرّف نموذج، وتتغير هذه المعرّفات أكثر من الأسماء المختصرة. احفظ المعرّف في حقل واحد داخل أول عقدة Edit Fields، وأشر إليه في كل مكان. عندما يصدر نموذج أفضل، تغيّر قيمة واحدة بدلًا من تحرير خمس عقد.

يعرض PicassoIA العائلة كاملة، ما يجعله مكانًا مناسبًا لمقارنة المخرجات قبل أن تربط أي شيء: Nano Banana، وNano Banana 2، وNano Banana 2 Lite، وNano Banana Pro، وGemini 2.5 Flash Image.

ثلاث صور فوتوغرافية مطبوعة وموزة ناضجة مرتبة على طاولة من الإسمنت

اختيار المستوى المناسب

النموذجأفضل استخدام في n8nما يجب معرفته
Nano Bananaمسودات سريعة وتعديلات على الصور باستخدام صور مرجعيةيقبل عدة صور مرجعية، ويُخرج JPG أو PNG
Gemini 2.5 Flash Imageمعرّف النموذج الذي تستدعيه معظم إعدادات HTTP Request أولًامن العائلة نفسها التي ينتمي إليها Nano Banana، وسرعة استجابة عالية
Nano Banana 2تعديلات تكرارية وشخصيات متسقة عبر المشاهدحتى 14 صورة مرجعية، ومخرجات من 1K إلى 4K، و15 نسبة عرض إلى ارتفاع
Nano Banana 2 Liteدفعات كبيرة تكون فيها السرعة الأهمنسخة تركز على السرعة من الجيل الثاني
Nano Banana Proالأعمال النهائية للطباعة أو المواقع البارزةمصمم لمخرجات 4K

قاعدة عملية: صمّم المسودات بالمستوى الأرخص، وأعد توليد الفائزين المعتمدين فقط بمستوى Pro. يمكن لفرع ثانٍ في سير العمل نفسه أن يتولى هذا الترقية تلقائيًا بعد وضع علامة "معتمد" على الصف.

سير العمل الأساسي، عقدة بعقدة

يتكون سير العمل الأساسي من سبع عقد. ابنها بهذا الترتيب واختبر بعد كل واحدة:

  1. Manual Trigger أثناء البناء، ثم يُستبدل لاحقًا بمشغّل Schedule أو Webhook
  2. Edit Fields، وتُعاد تسميتها إلى Prompt Fields
  3. HTTP Request، وتُعاد تسميتها إلى Gemini Image
  4. Code، وتُعاد تسميتها إلى Extract Image
  5. Convert to File
  6. رفع إلى S3-compatible (Cloudflare R2 أو AWS S3 أو أي مخزن مشابه)
  7. Edit Fields أو Google Sheets لتسجيل الرابط النهائي

المشغّل وحقول الأمر النصي

ابدأ بعقدة Manual Trigger وبعقدة Edit Fields تنشئ أربعة حقول: prompt، وaspect_ratio، وslug، وmodel. استخدم 16:9 لرؤوس المدونة، و1:1 للقطات المنتجات. اجعل الـ slug بأحرف صغيرة مع شرطات، لأنه يصبح اسم الملف.

نظّف الأمر النصي في هذه المرحلة باستخدام تعبير مثل {{ $json.prompt.trim() }}. المسافات الزائدة وفواصل الأسطر الزائدة القادمة من الجدول أسباب شائعة بشكل مفاجئ لنتائج غريبة.

استدعاء Gemini عبر HTTP Request

أضف عقدة HTTP Request، واضبط الطريقة على POST، واستخدم هذا الرابط، مع قراءة معرّف النموذج من حقل model لديك:

https://generativelanguage.googleapis.com/v1beta/models/{{ $json.model }}:generateContent

للمصادقة، اختر بيانات اعتماد Google Gemini(PaLM) Api إذا كانت إصدارة n8n لديك تدرجها لعقدة HTTP Request. إذا لم تكن مدرجة، فاستخدم Header Auth مع اسم الترويسة من توثيق API الخاص بـ Google. ثم فعّل Send Body، واختر JSON، وابنِ الجسم كتعبير حتى لا تكسره علامات الاقتباس داخل الأمر النصي أبدًا:

{{ JSON.stringify({
  contents: [{ parts: [{ text: $json.prompt }] }],
  generationConfig: {
    responseModalities: ["TEXT", "IMAGE"],
    imageConfig: { aspectRatio: $json.aspect_ratio }
  }
}) }}

ضمن Options، ارفع المهلة الزمنية إلى 120000 ms. استدعاءات الصور أبطأ من استدعاءات النصوص، والقيمة الافتراضية ستقطع طلبًا سليمًا.

💡 يأتي n8n أيضًا بعقدة Google Gemini أصلية، وقد تغيّرت عملياتها الخاصة بالصور بين الإصدارات. تحقق من قائمة العمليات في تثبيتك. يعمل نهج HTTP Request المعروض هنا في كل إصدار، ويكشف الاستجابة كاملة، وهذا ما يجعل خطوة التحقق ممكنة.

أيدٍ تكتب على لوحة مفاتيح أمام شاشة غير واضحة تعرض أسطرًا قصيرة من الشيفرة

تحويل base64 إلى ملف

تضع الاستجابة الصورة داخل candidates[0].content.parts، إلى جانب أي نص أضافه النموذج. يحمل جزء الصورة كائن inlineData يحتوي على mimeType وسلسلة base64 بعنوان data. لا تفترض أن الصورة هي الجزء الأول. ابحث عنها.

أضف عقدة Code في وضع Run Once for Each Item:

const parts = $json.candidates?.[0]?.content?.parts ?? [];
const img = parts.find(p => p.inlineData);
if (!img) {
  const reason = $json.promptFeedback ?? $json.candidates?.[0]?.finishReason ?? 'unknown';
  throw new Error('No image returned: ' + JSON.stringify(reason));
}
return {
  json: {
    image_b64: img.inlineData.data,
    mimeType: img.inlineData.mimeType,
    slug: $('Prompt Fields').item.json.slug
  }
};

رمي خطأ عند غياب الصورة مقصود. يحوّل الإخفاق الصامت إلى إخفاق مرئي، ويتيح لإعدادات إعادة المحاولة ومخرج الأخطاء في القسم التالي أن تعمل.

ثم تأتي عقدة Convert to File بالعملية Move Base64 String to File. اضبط حقل إدخال base64 على image_b64، وسمِّ الملف {{ $json.slug }}.png. يصل مخرج صور Gemini عادةً بصيغة PNG، ويمكنك قراءة mimeType إذا أردت التحقق الصارم من الامتداد. أخيرًا، أرسل الملف إلى مخزنك بعقدة S3، واكتب الرابط العام إلى المكان الذي يعيش فيه محتواك.

يد تسحب صورة فوتوغرافية مطبوعة حديثًا لبحيرة جبلية من طابعة مكتبية

ثلاثة قوالب تستحق النسخ

تحتوي مكتبة قوالب n8n على كثير من سير العمل المجتمعية المبنية حول صور Nano Banana وGemini، وتصفح بعضها طريقة سريعة لرؤية تخطيطات مختلفة. الجودة متفاوتة، فتحقق من كل واحد منها في ضوء الأعطال الخمسة أعلاه. الهياكل الثلاثة أدناه هي الأكثر تكرارًا.

القالب الأول: دفعة صور الرؤوس

استخدم هذا عندما يحتاج فريق المحتوى إلى صورة رأس لكل مقال في جدول.

التدفق: Schedule Trigger → Google Sheets (الصفوف التي يكون فيها status فارغًا) ← Loop Over Items (حجم الدفعة 2) ← Prompt Fields ← Gemini Image ← Extract Image ← Convert to File ← رفع S3 ← Google Sheets (كتابة image_url وstatus = done) ← Wait (6 ثوانٍ) ← العودة إلى الحلقة.

ابنِ الأمر النصي من عنوان المقال مع لاحقة أسلوب ثابتة حتى تتشارك كل الرؤوس مظهرًا واحدًا: {{ $json.title }}, wide editorial photograph, natural window light, 35mm lens, shallow depth of field, no text. احتفظ باللاحقة في مكان واحد، وستبدو أربعون صورة كأنها تنتمي إلى الموقع نفسه.

عمود الحالة أهم مما يبدو. الصفوف المعلَّمة done تُتجاوز في التشغيل التالي، فيستأنف التشغيل المتعطل من حيث توقف بدلًا من دفع ثمن الصور نفسها مرتين.

زميلان يراجعان جدارًا يضم ست عشرة صورة رأس مطبوعة لمدونة

القالب الثاني: متغيرات صور المنتجات

يعدّل هذا القالب صورة موجودة ويغيّر البيئة المحيطة بها. الطلب هو نفسه السابق مع جزء إضافي: الصورة المصدر بصيغة base64. نزّل الصورة بعقدة HTTP Request، ومررها عبر Extract From File باستخدام Move File to Base64 String، وأضفها إلى جانب جزء النص:

parts: [
  { text: $json.prompt },
  { inlineData: { mimeType: 'image/jpeg', data: $json.photo_b64 } }
]

ثم كرّر أربعة أوامر نصية على كل منتج: منضدة رخامية في ضوء الصباح، وطاولة بلوط فاتحة، وكتان مطوي، وحافة حجرية في الخارج. أدرج دائمًا الجملة Keep the product exactly unchanged and change only the surroundings. بدونها، تحب نماذج الصور إعادة تصميم الملصق.

كوب سيراميك أبيض ومحفظة جلدية على لوح بلوط في إعداد استوديو صغير

القالب الثالث: من Webhook إلى منشور اجتماعي

يستقبل مشغّل Webhook موضوعًا ومنصة. تكتب سلسلة Basic LLM Chain مع نموذج دردشة Google Gemini أمرًا نصيًا فوتوغرافيًا، ثم يأتي استدعاء الصورة، ويعود الرابط النهائي إلى من طلبه.

قد تستغرق استدعاءات الصور من عشر ثوانٍ إلى ثلاثين ثانية. إذا كان وكيل proxy أمام n8n يقطع الطلبات عند 30 أو 60 ثانية، فأجب على الـ webhook فورًا برقم مهمة، وأرسل الرابط النهائي إلى عنوان callback لاحقًا. وإلا سيرى المتصل مهلة منتهية بينما ينهي n8n المهمة بسعادة ويحتسب تكلفتها عليك.

إعادة المحاولة وحدود المعدل والتكاليف

إعدادات إعادة المحاولة والإيقاع

تحدد إعادة المحاولة والإيقاع ما إذا كان تشغيل من 200 صف سينتهي ليلًا أم سيتوقف عند الصف 12. اضبط هذه الإعدادات على العقد نفسها:

الإعدادالقيمةالسبب
Retry On Fail (Gemini Image)مفعّل، Max Tries 3أخطاء 429 و5xx العابرة تزول عادةً من تلقاء نفسها
Wait Between Tries5000 ms أو أكثريمنح حد الدقيقة وقتًا لإعادة الضبط
Timeout (خيار HTTP Request)120000 msاستدعاءات الصور أبطأ من استدعاءات النصوص
On ErrorContinue (using error output)ترسل الصفوف الفاشلة إلى فرع منفصل بدلًا من إيقاف التشغيل
Loop Over Items batch sizeمن 2 إلى 5يُبقي الدفعات تحت الحد
Wait node between batchesمن 5 إلى 10 ثوانٍيوزع الاستدعاءات على مدار الدقيقة

وجّه مخرج الأخطاء إلى تحديث في Sheets يكتب failed مع رسالة الخطأ. تصبح إعادة محاولة الصفوف الفاشلة لاحقًا فلترة بنقرة واحدة، وتظهر الأنماط بسرعة، مثل عبارة أمر نصي واحدة تُفعّل فلتر السلامة في كل مرة.

آلة حاسبة وجدول بيانات مطبوع وقلم ومؤقت مطبخ منظورة من الأعلى

تقدير الفاتورة

أدرجت Google سعر Gemini 2.5 Flash Image عند الإطلاق بنحو 0.039 دولار لكل صورة. تحقق من صفحة الأسعار الحالية قبل وضع الميزانية، لكن الحساب بسيط: 500 صورة رأس بهذا السعر تبلغ نحو 19.50 دولارًا، وكل إعادة محاولة تنتج صورة تُحسب مرة أخرى. المستويات الأعلى تكلف أكثر لكل صورة. ثلاث عادات تقلل الإنفاق:

  • اختبر الأوامر النصية على PicassoIA أولًا. Nano Banana 2 مدرج هناك مع توليدات غير محدودة، لذا فإعادة صياغة أمر نصي اثنتي عشرة مرة لا تكلفك شيئًا.
  • أعد المحاولة للفاشل فقط، لا للدفعات كاملة أبدًا.
  • صمّم بالرخيص، وأنهِ بالغالي. استخدم المستوى الأخف للمسودات، وأعد توليد الصفوف المعتمدة فقط بمستوى Pro.

أنماط أوامر نصية تصمد

دع LLM يكتب الأوامر النصية

صف في جدول يقول Remote work setup ليس أمرًا نصيًا. أضف Basic LLM Chain قبل استدعاء الصورة، واربط بها نموذج دردشة Google Gemini، وأعطه تعليمة ثابتة: حوّل الموضوع إلى أمر نصي فوتوغرافي واحد من 50 إلى 70 كلمة، يتضمن الشخص والإعداد واتجاه الضوء والعدسة وتفاصيل الملمس، وأعد الأمر النصي فقط. يصلح Gemini 3.5 Flash وGemini 3 Flash كلاهما لهذه المهمة، لأن المهمة قصيرة والسرعة أهم من العمق.

💡 سجّل الأمر النصي المولّد بجانب رابط الصورة في جدولك. عندما تخيّبك صورة، ترى بالضبط ما طُلب من النموذج.

مصطلحات التصوير التي يستجيب لها النموذج

تميل نماذج الصور إلى الاستجابة جيدًا لمفردات المصور. استخدم هذا الترتيب: الشخص والفعل، والإعداد، واتجاه الضوء، والكاميرا والعدسة، وملمس السطح، والمزاج.

العنصرالصياغة الضعيفةالصياغة الأقوى
الضوءساطعضوء نافذة ناعم من الجهة اليسرى، في أواخر الصباح
العدسةكاميرا جميلة85mm عند f/1.8، وعمق ميداني ضحل
الزاويةزاوية جيدةزاوية منخفضة، تنظر قليلًا نحو الأعلى
الملمسمفصّلتفاصيل واضحة لألياف الخشب ونسج القماش وألياف الورق
النصاكتب عنوانًالا يوجد نص داخل الإطار

اطلب عدم وجود نص افتراضيًا. الحروف المولّدة هي السبب الأكثر شيوعًا لرفض صورة رأس جيدة في غير ذلك، ومن الأسهل إضافة عنوان حقيقي في أداة التصميم لاحقًا.

طاولة عمل لمصوّر تضم كاميرا فيلم قديمة ومقياس ضوء ودفتر رسم

كيفية استخدام Nano Banana على PicassoIA

تكون الأوامر النصية أرخص في الإصلاح قبل أن تعيش داخل سير عمل. يتبع Nano Banana على PicassoIA العائلة نفسها التي تستدعيها عقدة HTTP لديك، لذا فالأمر النصي الذي ينجح هناك مرشح قوي للأتمتة.

  1. افتح صفحة Nano Banana على PicassoIA.
  2. الصق الأمر النصي تمامًا كما ستنتجه عقدة Edit Fields، مع لاحقة الأسلوب.
  3. أضف صورًا مرجعية في حقل Image Input إذا كان سير عملك يعدّل صورًا موجودة. يقبل النموذج عدة صور في وقت واحد.
  4. اختر JPG أو PNG كصيغة للمخرج.
  5. أنتج ثلاث نسخ، مع تغيير عبارة واحدة في كل مرة: الضوء أو العدسة أو الإعداد.
  6. انسخ الصياغة الفائزة وأعدها إلى n8n.

انتقل إلى Nano Banana 2 عندما تحتاج إلى مزيد من التحكم. يضيف 15 خيار نسبة عرض إلى ارتفاع تشمل 16:9 و9:16 و4:5، ودقة 1K و2K و4K، وحتى 14 صورة مرجعية، وربطًا اختياريًا بنتائج Google Search. ترتبط إعدادات نسبة العرض إلى الارتفاع مباشرة بحقل aspectRatio في جسم طلبك. للدفعات التي تركز على السرعة يوجد Nano Banana 2 Lite، ويتولى Nano Banana Pro مخرجات 4K النهائية.

صقل النتائج قبل النشر

تستفيد حتى المخرجات القوية من مرحلة تشطيب. يكبّر Real-ESRGAN وCrystal Upscaler الصور للمواقع البارزة، ويقتطع Bria Remove Background صور المنتجات لصفحات الكتالوج. إذا لم يناسبك أسلوب نماذج Google، فقارن Seedream 4.5 وFlux 2 Pro وImagen 4 بالأمر النصي نفسه قبل تغيير سير عملك. مقارنة مدتها عشر دقائق تتفوق على أسبوع من تعديل الأوامر النصية.

امرأة مبتسمة عند نافذة مقهى تجلس إلى طاولة مع حاسوب محمول يعرض منظر غابة مولّد

شغّل أول دفعة لك على Picasso IA

لديك الآن السلسلة كاملة: طلب متحقق منه، وملفات حقيقية، وتخزين، وإيقاع، وإعادة محاولة، وأوامر نصية تستحق الأتمتة. ابنها بصف واحد، ثم بعشرة، ثم بالجدول كاملًا.

قبل أن تفعل ذلك، أمضِ خمس عشرة دقيقة على Picasso IA مع أهم خمسة أوامر نصية لديك. جرّبها على Nano Banana 2، وقارن النتائج مع Nano Banana Pro، واحتفظ بالصياغة الفائزة. ثم الصق تلك الأوامر النصية في عقدة Edit Fields ودع n8n يتولى الحجم. تصفح كل النماذج على picassoia.com/en/all-models وابدأ بصورة رأس لمقالك القادم.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة