n8n لتوليد الصور عبر OpenRouter: سير عمل النماذج المجانية والتكلفة الحقيقية
لا يدرج OpenRouter أي نموذج لتوليد الصور بوسم مجاني، لكن 16 نموذجًا نصيًا مجانيًا يمكنها كتابة أوامرك النصية. يربط سير العمل هذا في n8n بين هذه النماذج واستدعاء صورة منخفض التكلفة، وفك ترميز base64، وحارس للإنفاق، ومسار مجاني عبر PicassoIA يُبقي التكاليف قريبة من الصفر.
ابحث عن نموذج مجاني لتوليد الصور على OpenRouter وستصطدم بالحائط سريعًا. في 8 أكتوبر 2026، سحبنا قائمة نماذج OpenRouter العامة المصفّاة حسب مخرجات الصور. أعادت 61 نموذجًا، ولم يحمل أي منها وسم :free. أما القائمة غير المصفّاة فتضم 16 نموذجًا مجانيًا، ينتج كل منها نصًا فقط. يبدو هذا خبرًا سيئًا لمن أراد سير عمل n8n يصنع صورًا بلا مقابل، لكنه يشير مباشرة إلى تصميم يعمل: يكتب نموذج نصي مجاني الأوامر، ويولّد أرخص نموذج صور مناسب هذه الأوامر، ويبقى مسار بلا تكلفة جاهزًا لكل ما عدا ذلك.
يبني هذا المقال سير العمل عقدةً عقدةً. ستحصل على المشغّل، وكاتب الأوامر، ونداء HTTP إلى نقطة نهاية الصور في OpenRouter، وفك ترميز base64، والتخزين، وحارسًا للإنفاق يوقف الحلقة المتكررة غير المنضبطة قبل أن يفرغ رصيدك. وستطّلع على تكلفة كل جزء، والإعدادات التي توقع الناس في أخطاء، وكيفية تشغيل المهمة نفسها عبر PicassoIA حين تريد خطوة صور مجانية.
ماذا تعني كلمة مجاني فعلًا على OpenRouter
تُستعمل كلمة "مجاني" بتساهل كبير في أسواق النماذج، لذا حدّد معناها قبل أن تربط أي شيء.
النماذج النصية المجانية تكتب أوامرك
يضع OpenRouter لاحقة :free على معرّف النموذج لتمييز النماذج عديمة التكلفة. في اليوم الذي تحققنا فيه، حملت 16 نموذجًا هذه اللاحقة، من بينها nvidia/nemotron-3-super-120b-a12b:free وgoogle/gemma-4-31b-it:free وpoolside/laguna-s-2.1:free وthinkingmachines/inkling:free، الذي يقبل الصور والصوت أيضًا كمدخلات. وكلها تُرجع نصًا. وهذا بالضبط ما يحتاجه النصف الأول من سير عمل الصور، لأن الأمر النصي يبلغ بضع مئات من التوكنات.
تتغير النماذج المجانية باستمرار، ولها حدود للطلبات في الدقيقة واليوم تتسع بعد أن يشتري الحساب أرصدة. تعامل مع كل معرّف في هذا المقال على أنه مثال، وراجع القائمة الحية قبل أن تثبّت معرّفًا في الكود.
تمر الصور عبر نقطة نهاية مخصصة، https://openrouter.ai/api/v1/images، وتستخدم رمز Bearer نفسه الذي تستخدمه طلبات النص. تعتمد الفوترة على النموذج: بعضها يحاسب على كل صورة، وبعضها على كل ميغابكسل أو على التوكنات. يذكر دليل OpenRouter الخاص بالصور أن التكلفة تتراوح من أقل من سنت بكثير إلى أكثر من عشرة سنتات للصورة الواحدة. يحمل كل رد حقل usage.cost يبيّن الرسوم الفعلية، وهذا هو الرقم الذي ينبغي أن يسجّله سير عملك.
⚠️ تنبيه: وجود 0 في حقول سعر التوكنات لا يجعل النموذج مجانيًا. تُظهر معظم نماذج الصور فقط في القائمة العامة 0 لسعري الأمر النصي والإكمال، ويقول دليل OpenRouter للصور إن أيًا منها لا يحمل وسم المجاني. اقرأ التسعير في صفحة النموذج وثق بـ usage.cost.
سبع خطوات، وكل خطوة تقابل عقدة واحدة في n8n أو زوجًا قصيرًا من العقد:
المشغّل: يدوي أثناء الاختبار، ثم جدول زمني أو Webhook أو صف جديد في جدول بيانات.
المدخلات: الموضوع والأسلوب ونسبة العرض إلى الارتفاع تُضبط في عقدة Edit Fields.
كاتب الأوامر: سلسلة LLM تعمل بنموذج :free.
نداء الصورة: عقدة HTTP Request ترسل طلب POST إلى /api/v1/images.
فك الترميز: انسخ b64_json إلى حقل خاص به، ثم حوّله إلى ملف.
التخزين: Google Drive أو حاوية متوافقة مع S3 أو القرص المحلي.
الحارس: سجّل usage.cost، وأعد المحاولة عند الفشل، وأرسل تنبيهًا عند ظهور أي خلل.
يأتي n8n بعقدة OpenRouter Chat Model لسلاسل الذكاء الاصطناعي، لذا لا تحتاج الخطوة 3 إلى HTTP مخصص. الحاجة إليه في نداء الصورة فقط، لأن عقد السلاسل مصممة للنص.
ابنِه عقدةً عقدةً
ابدأ بعقدة Manual Trigger لتشغّل عنصرًا واحدًا في كل مرة. تليها عقدة Edit Fields تضبط ثلاث قيم: topic (مثلًا "كوب خزفي على حافة نافذة مشمسة")، وstyle ("ضوء طبيعي، 50mm، حبيبات فيلم")، وaspectRatio ("16:9"). بدّل المشغّل بعقدة Schedule Trigger أو صف في Google Sheets بعد أن تعمل السلسلة.
كاتب الأوامر على نموذج مجاني
أضف Basic LLM Chain واربط بها العقدة الفرعية OpenRouter Chat Model. أنشئ بيانات اعتماد OpenRouter برمزك، ثم اختر أحد معرّفات :free. استخدم رسالة نظام على هذا النحو:
You write one image prompt per request. Describe subject, setting,
light, lens and mood in 60 to 90 words. Put no text in the image.
Return only the prompt.
تبدو النتيجة الجيدة هكذا: "كوب قهوة سوداء من الخزف على حافة نافذة مشمسة، والبخار يتلوى نحو ستارة من الكتان، وضوء صباح ناعم من اليسار، وعدسة 50mm بفتحة f/2، وعمق ميدان ضحل، وطلاء مطفأ بنقاط دقيقة، ومزاج هادئ وساكن." وهي قصيرة وملموسة وخالية من الحشو الذي تتجاهله نماذج الصور.
مرّر {{ $json.topic }} و{{ $json.style }} كرسالة مستخدم، واجعل temperature قرب 0.7. تعيد السلسلة الأمر النصي في حقل text. راجع تبويب المخرجات، وعدّل الاسم إذا كانت نسختك من n8n مختلفة.
بدّل المعرّف بأي نموذج من القائمة المصفّاة. يختلف دعم المعاملات من مزوّد لآخر، فأزل أي خيار يرفضه النموذج. تقبل نقطة النهاية أيضًا resolution وquality وn لعدة صور دفعة واحدة، وinput_references للتعديل انطلاقًا من صورة مصدر.
افتح إعدادات العقدة وفعّل Retry On Fail مع محاولتين أو ثلاث ومهلة انتظار بضع ثوانٍ. أخطاء المزوّد العابرة شائعة، وإعادة المحاولة لا تكلّف شيئًا إذا لم يُحاسَب النداء الفاشل.
فك الترميز وتخزين الملف
أضف عقدة Edit Fields ثانية بتعيينين: image_base64 يساوي {{ $json.data[0].b64_json }}، وcost يساوي {{ $json.usage.cost }}. ثم أضف Convert to File، واختر "Move Base64 String to File"، واكتب image_base64 اسمًا لحقل الإدخال. هذا اسم الحقل، لا السلسلة المشفّرة نفسها، وهو أكثر الأخطاء شيوعًا مع هذه العقدة.
سمِّ الملف {{ $now.toFormat('yyyyMMdd-HHmmss') }}.webp، واجعل امتداده متوافقًا مع output_format الذي طلبته. عدم التطابق ينتج ملفات لا تفتح.
اختم بعقدة Google Drive، أو عقدة S3 موجّهة إلى أي حاوية متوافقة مع S3، أو Read/Write Files from Disk إذا كان n8n يعمل على جهازك.
إبقاء الإنفاق تحت السيطرة
سير العمل الذي يدور في حلقة بالخطأ هو أسرع طريقة لتحويل "شبه مجاني" إلى فاتورة مفاجئة.
ضع حدًا للإنفاق وسجّله
اضبط حد أرصدة على رمز OpenRouter الذي تسلّمه إلى n8n، ليكون أسوأ سيناريو رقمًا اخترته مسبقًا. ثم أضف cost وطابعًا زمنيًا إلى صف في Google Sheets في كل تشغيل. تقارن عقدة IF قيمة cost بعتبة محددة، وتُربط بتنبيه بريد أو محادثة، فتلتقط النموذج الذي صار فجأة أغلى مما كان عليه الأسبوع الماضي.
أبطئ النداءات المجانية
تُرد النماذج المجانية بأخطاء تجاوز الحد حين تدفعها بقوة. ضع عقدة Loop Over Items بحجم دفعة 1 قبل كاتب الأوامر، وأضف عقدة Wait لبضع ثوانٍ داخل الحلقة، وأبقِ Retry On Fail مفعّلًا. عندها تمر دفعة من خمسين موضوعًا بانسيابية بدلًا من أن تفشل عند العنصر الثاني عشر. عامل نداء الصور بالطريقة نفسها، لأن المزوّدين قد يخنقون الطلبات المتتالية هناك أيضًا.
اختر نموذج صور يناسبك
تنتمي عدة معرّفات صور من OpenRouter إلى عائلات يمكنك تجربتها يدويًا على PicassoIA، وهذه طريقة سريعة للحكم على الشكل قبل أن تثبّت معرّفًا في سير العمل.
للصور الرئيسية وأي شيء فيه تفاصيل مقروءة، ادفع مقابل نموذج من الفئة العليا مثل GPT Image 2 وولّد صورة واحدة لكل موضوع. أما الحجم الكبير، مثل الصور المصغّرة والنسخ المخصصة لوسائل التواصل، فاختر معرّفًا أصغر وأرخص ودع كاتب الأوامر المجاني يتولى العمل الشاق.
قبل أن تلتزم، شغّل عشرة مواضيع نموذجية على معرّفين مرشحين، واجمع عمود cost في جدولك. كثيرًا ما يفوز النموذج الأرخص في الصور المصغّرة ويخسر في كتابة النصوص والأيدي وتفاصيل المنتجات الدقيقة، وتريك تجربة من عشرة مواضيع ذلك خلال دقائق. احفظ المعرّف الفائز في مكان واحد، مثل عقدة Edit Fields في بداية سير العمل، ليصبح تبديل النموذج تعديلًا في سطر واحد.
راجع قبل النشر
لا ينبغي للأتمتة أن تنشر دون مراجعة. احفظ النتائج في مجلد، وأرسل شبكة مصغّرات إلى قناة محادثة، وانتظر إبهامًا مرفوعًا قبل أن تصل أي صورة إلى موقع. دقيقتان من مراجعة بشرية أفضل من يد مشوهة في صورة منتج.
مسار مجاني عبر PicassoIA
تنشر PicassoIA واجهة API بأسلوب تدفق يشبه Replicate. تسرد صفحة الواجهة أربعة نماذج: picassoia/picassoia-image لتحويل النص إلى صورة، وpicassoia/picassoia-image-editor-pro لتعديل الصور ودمجها، وpicassoia/picassoia-video، وpicassoia/seedance-2.5-lite للفيديو مع صوت متزامن. وتنص الصفحة نفسها على أن "تنبؤات API مجانية حاليًا" ولا تستهلك نقاطًا، وأن إنشاء التنبؤات يتطلب خطة Infinite. أكّد الشروط في صفحة PicassoIA API قبل أن تبني عليها، لأن الخطط تتغير. ويقتصر التزامن على 5 تنبؤات لكل حساب.
احتفظ بكلمات الأسلوب التي نجحت وضعها في حقل style داخل عقدة Edit Fields.
أنشئ، انتظر، استعلم، نزّل
تعمل مهام PicassoIA بشكل غير متزامن، لذا يتكون تخطيط n8n من أربع عقد بدلًا من واحدة:
HTTP Request (الإنشاء): طلب POST إلى https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions مع ترويسة Bearer وجسم { "input": { "prompt": "...", "aspect_ratio": "16:9", "num_outputs": 1, "output_format": "webp" } }. ابنِه بـ JSON.stringify كما سبق.
Wait: من خمس إلى عشر ثوانٍ.
HTTP Request (الاستعلام): طلب GET إلى https://api.picassoia.com/v1/predictions/{{ $json.id }}.
IF: عندما يساوي status القيمة succeeded، تابع. عندما تكون starting أو processing، عُد إلى عقدة Wait. عندما تكون failed أو canceled، وجّه إلى التنبيه.
عند النجاح يحمل حقل output رابطًا، أو قائمة روابط. أضف عقدة HTTP Request أخرى بتنسيق استجابة مضبوط على File ونزّل الملف، ثم أعد استخدام عقدة التخزين نفسها كما سبق.
💡 نصيحة: إن أردت تعديل صورة بدلًا من توليدها، فإن PicassoIA Image Editor Pro يتولى تعديل الصور ودمجها، وهو النموذج الذي تستدعيه لتبديل الخلفيات وتحسين المنتجات.
يمكن للصور التي يحفظها سير عملك أن تغذي خطوة فيديو أيضًا. تحوّل نماذج تحويل الصورة إلى فيديو مثل Wan 2.7 I2V وLTX 2.3 Fast وSeedance 2.0 صورة واحدة إلى مقطع قصير، وPicassoIA Video هو مسار API للفكرة نفسها. أضفه كفرع ثانٍ بعد عقدة التخزين، فيُنتج موضوع واحد صورة ومقطعًا معًا.
إبقاؤه يعمل
إصلاحات للأعطال الشائعة
العَرَض
السبب المحتمل
الإصلاح
HTTP 402
نفد رصيد الحساب
أضف أرصدة، أو انقل الخطوة الفاشلة إلى مسار مجاني
HTTP 429
تجاوز حد معدل النموذج المجاني
Loop Over Items وعقدة Wait وRetry On Fail
Invalid JSON body
علامات اقتباس في الأمر كسرت قالبًا مكتوبًا يدويًا
ابنِ الجسم بـ JSON.stringify
الملف لا يفتح
اسم حقل إدخال خاطئ، أو امتداد مختلف عن media_type
استخدم اسم الحقل image_base64 وطابق الامتداد مع output_format
Slug not found
أُعيدت تسمية النموذج أو سُحب من الخدمة
أعد سحب قائمة النماذج وحدّث المعرّف
base64 مشوّه
أعاد مسار chat completions رابط بيانات data URL
احذف بادئة data:image/...;base64, في Edit Fields
مسار chat completions، الذي يستخدم مصفوفة modalities، هو الطريقة الأقدم للحصول على صور من النماذج التي تعيد النص والصور معًا. ما زال يعمل مع تلك النماذج، لكن نقطة نهاية الصور المخصصة تمنحك ردًا أنظف، وهي التي يعتمدها هذا المقال في كل مكان.
راقب ظهور نموذج صور مجاني
قد تظهر نماذج صور مجانية يومًا ما، وستريد أن تعرف بذلك في الصباح نفسه. ابنِ سير عمل ثانيًا صغيرًا:
Schedule Trigger يعمل مرة واحدة كل أسبوع.
HTTP Request إلى https://openrouter.ai/api/v1/models?output_modalities=image، ولا يحتاج إلى رمز.
عقدة Code تعيد المعرّفات التي تنتهي بـ :free.
عقدة IF ترسل رسالة فقط عندما تكون تلك القائمة غير فارغة.
هذا بناء يستغرق خمس دقائق، ويعني أن الخلاصة المحورية لهذا المقال تُعاد مراجعتها تلقائيًا بدلًا من أن تصبح قديمة.
جرّبه على PicassoIA اليوم
صار لسير عملك الآن دماغ مجاني للأوامر، وخطوة صور مدفوعة يمكنك تسعيرها بدقة السنت، وفرع بلا تكلفة لوقت ضيق الميزانية. أسرع طريقة لإيجاد الشكل الذي تريده هي تشغيل بضعة أوامر يدويًا أولًا. افتح PicassoIA Image، والصق الأمر الذي كتبته سلسلة n8n، وقارنه بـ Flux 2 Pro وNano Banana Pro. وحين يعطيك أحدهما الصورة التي تخيلتها، انسخ إعداداته إلى سير العمل ودعه يعمل.