واجهة API لتوليد فيديو UGC بالذكاء الاصطناعي: أنشئ إعلانات UGC تلقائيًا

مخطط عملي لواجهة API لتوليد فيديو UGC بالذكاء الاصطناعي: كيف تحوّل ملخص المنتج إلى عشرات الإعلانات العمودية بأسلوب المبدعين، تشمل النصوص وصور الشخصيات ومقاطع الفيديو مع الصوت الأصلي، وحدود الطابور، وفحوص الجودة، والإفصاح الواضح عن استخدام الذكاء الاصطناعي، مع كود طلبات بلغتي Python وNode.

واجهة API لتوليد فيديو UGC بالذكاء الاصطناعي: أنشئ إعلانات UGC تلقائيًا
Cristian Da Conceicao
مؤسس Picasso IA

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

يعرض هذا المقال خط إنتاج يمكنك بناؤه هذا الأسبوع. تدخل إليه ملخص المنتج، فيخرج لك عدد من الإعلانات العمودية بأسلوب المبدعين. ستحصل على كود طلبات يعمل بلغتي Python وNode، والحدود الفعلية لواجهة PicassoIA للمطورين، وجدول يوضح ما يفعله كل نموذج، والفحوص التي تحافظ على صدق الإعلانات الآلية والتزامها بهوية العلامة.

لماذا تحتاج إعلانات UGC إلى واجهة API

مشكلة حجم المحتوى الإبداعي

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

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

مطور عند مكتب قرب نافذة تغطيها قطرات المطر وهو يبني خط إعلانات آلي

💡 نصيحة: تعامل مع المحتوى الإبداعي كمخزون. إذا استغرقت الدفعة الجديدة ثلاثة أسابيع للوصول، فستظل دائمًا تعرض الفائزين من الأمس.

إليك مقارنة عملية بين الأسلوبين:

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

ما الذي تحل محله واجهة API

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

العمل غير متزامن: تنشئ تنبؤًا، ثم تستعلم عن حالته، ثم تجلب الملف الجاهز. تصف وثائق المطورين عدم وجود webhooks، لذلك يكون الاستعلام الدوري هو الآلية كلها، وهذا يُبقي التكامل بسيطًا.

تبدو المحفزات المعتادة لتشغيل دفعة كما يلي:

  • يُضاف منتج جديد إلى الكتالوج ويحتاج إلى مجموعة إطلاق.
  • يُظهر إعلان فائز علامات إرهاق ويحتاج إلى عشرة إعلانات شبيهة.
  • يغيّر عرض موسمي الخطاف في كل مقطع نشط.
  • يحتاج سوق جديد إلى نسخ محلية من النص نفسه.

تحل واجهة API محل الإنتاج، لا محل الحكم. لا يزال أحد يقرر أي الادعاءات صحيحة وأي المقاطع جيدة بما يكفي للعرض.

خط الإنتاج من الملخص إلى الإعلان

فكّر في أربع مراحل، لكل منها مدخل واحد ومخرج واحد. عندما تفشل مرحلة، أعد تشغيل تلك المرحلة وحدها، لا السلسلة كلها.

المرحلةالمدخلالمخرج
النصملخص المنتج ونوع الخطافمن 10 إلى 15 ثانية من النص المنطوق
إطار الشخصيةوصف الشخصية والبيئةصورة ثابتة واحدة
الفيديوالصورة الثابتة مع أمر الحركةمقطع مع صوت
المراجعةالمقطع مع البيانات الوصفيةمقبول أو مرفوض

الخطوة 1: نسخ النص

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

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

منظر علوي لنص إعلان مطبوع وزجاجات منتج وهاتف على طاولة خشبية

💡 نصيحة: ادعاء واحد لكل نص. كل ادعاء إضافي هو جملة أخرى عليك التحقق منها قبل أن يُنشر أي شيء.

الخطوة 2: صور الشخصية والمشهد

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

عندما يجب أن يظهر المنتج الحقيقي، استعن بنموذج PicassoIA Image Editor Pro. يقبل من صورة إلى أربع صور مدخلة، لذلك يمكنك إدراج صورة المنتج الفعلية في المشهد والحفاظ على دقة الملصق.

اكتب الأوامر النصية كما يكتب المصور: العدسة، واتجاه الضوء، وملمس البشرة والقماش. ارفض المظهر اللامع. يحتاج UGC إلى غرف غير مثالية وضوء طبيعي.

منظور من زاوية منخفضة لهاتف على حامل ثلاثي يصوّر رجلًا في غرفة معيشة بطابق علوي

الخطوة 3: فيديو مع صوت أصلي

أدخل الإطار إلى Seedance 2.5 Lite مع أمر حركة يوضح ما يفعله الشخص ويقوله عبر المقطع. خيار save_audio مفعّل افتراضيًا، لذلك يصل الكلام وصوت الغرفة داخل الملف، بدلًا من أن يصبحا خطوة منفصلة في الخط.

صف الحركة بالترتيب: ترفع الزجاجة، وتلقي نظرة على العدسة، وتقول الجملة، وتبتسم. واضبط طول النص على طول المقطع أيضًا. يتسع مقطع مدته عشر ثوانٍ لنحو 25 إلى 30 كلمة منطوقة بإيقاع طبيعي، لذلك ستُنطق الجملة الأطول بسرعة مفرطة أو تُقطع.

أبقِ حركة الكاميرا محدودة. الانجراف الخفيف لليد هو بصمة UGC، أما الحركات السينمائية الثقيلة فتكسر الوهم.

قرب ليدين تفتحان صندوق شحن ورقي بني على أريكة من الكتان

الخطوة 4: المراجعة والنشر

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

نماذج يمكنك استدعاؤها اليوم

نظرة سريعة على نماذج API

وقت كتابة هذا المقال، تتيح واجهة PicassoIA أربعة نماذج. المدخلات الواردة أدناه مأخوذة من وثائق المطورين العامة.

النموذجوظيفته في خط UGCأبرز المدخلات
PicassoIA Imageصورة ثابتة للشخصية والمشهدprompt
PicassoIA Image Editor Proوضع منتجك الحقيقي في مشهدprompt، images (من 1 إلى 4)
PicassoIA Videoمن نص أو صورة إلى فيديوresolution (480p، 720p، 1080p)، duration، seed
Seedance 2.5 Liteمن صورة إلى فيديو مع صوتimage، last_frame_image، duration (5، 10، 15)، resolution (480p، 720p)

تهم تفصيلتان في الإعلانات. في PicassoIA Video، تعتمد أقصى مدة على الدقة: تصل إلى 20 ثانية عند 480p، وإلى 10 ثوانٍ عند 720p، وإلى 5 ثوانٍ عند 1080p. أما في Seedance 2.5 Lite فيتيح الخيار last_frame_image تحديد نقطة انتهاء المقطع، وهذا مفيد عندما يجب أن يظهر المنتج في الإطار الأخير.

💡 نصيحة: aspect_ratio يكون افتراضيًا match_input_image عند تمرير صورة. تحدد صورتك الثابتة ما إذا كان الإعلان عموديًا أم مربعًا، لذلك تحقق من شكل إطار الشخصية قبل أن تنفق مهمة فيديو عليه.

الأصوات ومزامنة الشفاه في التطبيق

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

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

امرأة ترتدي سماعات استوديو وتسجل تعليقًا صوتيًا في ميكروفون مكثف

طلبك الأول بلغة Python

المصادقة والعنوان الأساسي

ترسل كل الطلبات إلى https://api.picassoia.com/v1، ويحمل كل طلب ترويسة Authorization: Bearer pia_sk_…. أنشئ المفتاح السري من صفحة API في حسابك. يمكن أن يحتوي الحساب على مفتاحين في الوقت نفسه، لذلك نفّذ التدوير بإنشاء المفتاح الجديد قبل حذف القديم.

احتفظ بالمفتاح السري في متغير بيئة على الخادم. لا ترسله أبدًا ضمن حزمة متصفح أو تطبيق للجوال.

💡 تحقق من الوصول أولًا: تقول الوثائق إن التنبؤات لا تستهلك نقاطًا حاليًا، لكن إنشاء تنبؤ يعيد 403 plan_required إذا كانت خطتك لا تتضمن وصول API. أرسل طلب اختبار واحدًا قبل أن تصمم أي شيء يعتمد على API.

الإنشاء والاستعلام والجلب

نقطة النهاية لمهمة جديدة هي POST /v1/models/{owner}/{name}/predictions، وتُغلَّف حقولك داخل كائن input. تتضمن الاستجابة id، وstatus (starting، processing، succeeded، failed أو canceled)، وoutput يكون رابطًا واحدًا أو قائمة روابط.

يُستخدم GET /v1/predictions/{id} للاستعلام. يخبرك الحقل eta.next_poll_in_seconds متى يكون الاستعلام التالي مفيدًا، فلا تُثقل على نقطة النهاية.

import os, time, requests

API = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}

def run(model, payload):
    r = requests.post(f"{API}/models/{model}/predictions",
                      json={"input": payload}, headers=HEADERS)
    pred = r.json()
    if not r.ok:
        raise RuntimeError(f"{pred['code']}: {pred['detail']}")
    while pred["status"] not in ("succeeded", "failed", "canceled"):
        time.sleep((pred.get("eta") or {}).get("next_poll_in_seconds", 2))
        pred = requests.get(pred["urls"]["get"], headers=HEADERS).json()
    if pred["status"] != "succeeded":
        raise RuntimeError(pred["error"] or pred["status"])
    return pred["output"]

def first(output):
    return output[0] if isinstance(output, list) else output

def make_ad(brief):
    frame = first(run("picassoia/picassoia-image", {"prompt": brief["persona_prompt"]}))
    return first(run("picassoia/seedance-2.5-lite", {
        "prompt": brief["motion_prompt"],
        "image": frame,
        "duration": 10,
        "resolution": "720p",
    }))

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

التدفق نفسه في Node

نسخة Node هي الحلقة نفسها مع fetch. غلّف حقولك داخل input، واستعلم عن urls.get، واحترم eta.next_poll_in_seconds.

const API = 'https://api.picassoia.com/v1'
const headers = {
  Authorization: `Bearer ${process.env.PICASSOIA_TOKEN}`,
  'Content-Type': 'application/json',
}
const sleep = (s) => new Promise((r) => setTimeout(r, s * 1000))

async function run(model, input) {
  const res = await fetch(`${API}/models/${model}/predictions`, {
    method: 'POST', headers, body: JSON.stringify({ input }),
  })
  let pred = await res.json()
  if (!res.ok) throw new Error(`${pred.code}: ${pred.detail}`)
  while (!['succeeded', 'failed', 'canceled'].includes(pred.status)) {
    await sleep(pred.eta?.next_poll_in_seconds ?? 2)
    pred = await (await fetch(pred.urls.get, { headers })).json()
  }
  if (pred.status !== 'succeeded') throw new Error(pred.error ?? pred.status)
  return pred.output
}

التوسع إلى عدد كبير من الإعلانات يوميًا

فريق تسويق صغير يراجع إطارات فيديو مطبوعة على لوحة فلين

العمل ضمن حد المهام الخمس

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

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

from multiprocessing.pool import ThreadPool

with ThreadPool(4) as pool:
    results = pool.map(make_ad, briefs)

يسهل تقدير الإنتاجية. اقسم عدد ثوانٍ الساعة على زمن إنتاج إعلان واحد، ثم اضرب الناتج في عدد العمال. إذا استغرق إطار واحد مع فيديو واحد نحو أربع دقائق، فإن أربعة عمال ينتجون نحو 60 إعلانًا في الساعة.

خمسة هواتف ذكية متجاورة على مكتب، يعرض كل منها شخصًا مختلفًا مع منتج

هناك حدود أخرى تستحق أن تُدمج في التحقق: أجسام الطلبات حتى 10 ميجابايت، وصور data URL حتى 5 ميجابايت لكل صورة، والأوامر النصية حتى 4,000 حرف، ومهلة ثلاث ساعات لكل تنبؤ. المهمة التي تتجاوز المهلة يجب أن تُعلَّم كمتوقفة وتُعاد محاولتها، لا أن تُنتظر.

قوالب أوامر نصية تتنوع بأمان

التنوع هو الغاية كلها، لكن التنوع العشوائي ينتج مقاطع خارج الهوية. قسّم قالبك إلى محاور تغيرها ومحاور تثبتها.

المحورغيّرهثبّته
الشخصيةالفئة العمرية، الشعر، الملابسواقعية البشرة والقماش
البيئةمطبخ، سيارة، صالة رياضية في كراج، شرفةضوء النافذة الطبيعي أو ضوء النهار
الخطافسؤال، اعتراف، عرض توضيحيادعاء واحد لكل نص
الطول5 أو 10 أو 15 ثانيةالإطار العمودي
المنتجلا يتغير أبدًاصورة المنتج والملصق كما هما

احفظ الأمر النصي النهائي وseed بجوار كل ناتج. عندما يفوز مقطع، يمكنك إعادة إنتاج أشقائه بتغيير حقل واحد، بدلًا من التخمين حول ما جعله ينجح.

رجل في صالة رياضية منزلية بكراج يتحدث إلى هاتفه وهو يمسك زجاجة خلاط

كيفية استخدام Seedance 2.5 Lite

قبل أن تكتب أي كود، شغّل عدة مقاطع يدويًا لترى ما تنتجه أوامرك فعلًا. Seedance 2.5 Lite هو أسرع طريق لذلك.

  1. افتح صفحة النموذج وسجّل الدخول إلى حسابك في PicassoIA.
  2. ارفع إطار الشخصية. صورة ثابتة واضحة ومضاءة جيدًا يظهر فيها المنتج تعطي أفضل إطار أول.
  3. اكتب أمر الحركة. سمِّ الفعل بالترتيب، وضمّن الجملة المنطوقة بين علامتي اقتباس، وأبقِ الكاميرا شبه ثابتة.
  4. اختر الدقة والمدة. ابدأ بدقة 480p لتجرب بسرعة، ثم انتقل إلى 720p للنسخة التي تنوي نشرها.
  5. أبقِ الصوت مفعّلًا. save_audio يكون صحيحًا افتراضيًا، وهذا ما تحتاجه لإعلان يتحدث فيه شخص.
  6. حدد إطارًا أخيرًا اختياريًا. ارفع last_frame_image عندما يجب أن ينتهي المقطع بلقطة نظيفة للمنتج.
  7. ثبّت البذرة عندما تبدو النتيجة صحيحة، ثم غيّر شيئًا واحدًا في كل مرة.
  8. أرسل المهمة وحمّل المقطع، ثم شاهده مع الصوت قبل أن تحكم عليه.

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

مراقبة الجودة والإفصاح

فحوص آلية قبل النشر

أتمت الرفض الروتيني آليًا، حتى لا يراجع الإنسان إلا المقاطع التي اجتازت الفحص:

  • الملف يُحمَّل. اطلب الرابط، وتوقع حالة 200 ونوع محتوى فيديو.
  • المدة تطابق ما طلبته.
  • يوجد صوت عندما كان save_audio مفعّلًا.
  • يُخزَّن الأمر النصي والبذرة مع الناتج لإمكانية إعادة الإنتاج.
  • يعمل فلتر للادعاءات على نص الإعلان، ويمنع أي لغة طبية أو مالية أو ضمانات لا تستطيع إثباتها.
  • يُجري شخص فحوصًا عشوائية للوجوه والأيدي وملصق المنتج في عينة من كل دفعة.

الوسم والموافقة

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

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

ابنِ أول دفعة لك اليوم

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

افتح Seedance 2.5 Lite على Picasso IA، وارفع إطار شخصية واحدًا من PicassoIA Image، واكتب ثلاثة خطافات مختلفة للمنتج نفسه. قارن الافتتاحيات جنبًا إلى جنب. عندما يتقدم أحدها بوضوح، يصبح لديك قالبك، ويحوّله كود Python أعلاه إلى خمسين نسخة إضافية.

شابة تتصفح خلاصة فيديو عمودية على طاولة في مقهى مشمس

ابدأ صغيرًا، واحفظ المقاطع صادقة، ودع البيانات تختار الفائزين. ولّد أول صورة شخصية لك على Picasso IA اليوم، وحرّكها إلى إعلان بأسلوب UGC، وانظر إلى أي مدى يمكن أن يصل قالب جيد واحد. التجربة الوحيدة التي تفشل هي التي لا تجربها أبدًا.

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

اختر لغتك

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