واجهة API لتوليد فيديو UGC بالذكاء الاصطناعي: أنشئ إعلانات UGC تلقائيًا
مخطط عملي لواجهة API لتوليد فيديو UGC بالذكاء الاصطناعي: كيف تحوّل ملخص المنتج إلى عشرات الإعلانات العمودية بأسلوب المبدعين، تشمل النصوص وصور الشخصيات ومقاطع الفيديو مع الصوت الأصلي، وحدود الطابور، وفحوص الجودة، والإفصاح الواضح عن استخدام الذكاء الاصطناعي، مع كود طلبات بلغتي Python وNode.
توقفت العلامات التجارية منذ وقت طويل عن الوثوق بإعلانات الاستوديو المصقولة، وتوقف المشاهدون عن مشاهدتها قبل ذلك بوقت أطول. ما يجعل الإبهام يتوقف عن التمرير هو امرأة في مطبخها تشرح، بكلماتها الخاصة، لماذا نجح المصل معها أخيرًا. هذا هو الإعلان بأسلوب 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 أربعة نماذج. المدخلات الواردة أدناه مأخوذة من وثائق المطورين العامة.
تهم تفصيلتان في الإعلانات. في PicassoIA Video، تعتمد أقصى مدة على الدقة: تصل إلى 20 ثانية عند 480p، وإلى 10 ثوانٍ عند 720p، وإلى 5 ثوانٍ عند 1080p. أما في Seedance 2.5 Lite فيتيح الخيار last_frame_image تحديد نقطة انتهاء المقطع، وهذا مفيد عندما يجب أن يظهر المنتج في الإطار الأخير.
💡 نصيحة:aspect_ratio يكون افتراضيًا match_input_image عند تمرير صورة. تحدد صورتك الثابتة ما إذا كان الإعلان عموديًا أم مربعًا، لذلك تحقق من شكل إطار الشخصية قبل أن تنفق مهمة فيديو عليه.
الأصوات ومزامنة الشفاه في التطبيق
يوجد الكتالوج الأوسع في تطبيق الويب وليس في API. هناك تجد أصواتًا مخصصة وأدوات للمتحدثين أمام الكاميرا، للحالات التي لا يكفي فيها الصوت الأصلي.
Lipsync 2 Pro لمطابقة حركة فم في مقطع موجود مع مسار صوتي جديد.
تقسيم عملي: دع 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 هو أسرع طريق لذلك.
افتح صفحة النموذج وسجّل الدخول إلى حسابك في PicassoIA.
ارفع إطار الشخصية. صورة ثابتة واضحة ومضاءة جيدًا يظهر فيها المنتج تعطي أفضل إطار أول.
اكتب أمر الحركة. سمِّ الفعل بالترتيب، وضمّن الجملة المنطوقة بين علامتي اقتباس، وأبقِ الكاميرا شبه ثابتة.
اختر الدقة والمدة. ابدأ بدقة 480p لتجرب بسرعة، ثم انتقل إلى 720p للنسخة التي تنوي نشرها.
أبقِ الصوت مفعّلًا.save_audio يكون صحيحًا افتراضيًا، وهذا ما تحتاجه لإعلان يتحدث فيه شخص.
حدد إطارًا أخيرًا اختياريًا. ارفع last_frame_image عندما يجب أن ينتهي المقطع بلقطة نظيفة للمنتج.
ثبّت البذرة عندما تبدو النتيجة صحيحة، ثم غيّر شيئًا واحدًا في كل مرة.
أرسل المهمة وحمّل المقطع، ثم شاهده مع الصوت قبل أن تحكم عليه.
💡 نصيحة: احكم على أول ثانيتين فقط. هذا كل ما يمنحه المشاهد المتصفح، لذلك فإن المقطع ذا الافتتاحية الضعيفة مرفوض مهما بدت نهايته جيدة.
مراقبة الجودة والإفصاح
فحوص آلية قبل النشر
أتمت الرفض الروتيني آليًا، حتى لا يراجع الإنسان إلا المقاطع التي اجتازت الفحص:
الملف يُحمَّل. اطلب الرابط، وتوقع حالة 200 ونوع محتوى فيديو.
المدة تطابق ما طلبته.
يوجد صوت عندما كان save_audio مفعّلًا.
يُخزَّن الأمر النصي والبذرة مع الناتج لإمكانية إعادة الإنتاج.
يعمل فلتر للادعاءات على نص الإعلان، ويمنع أي لغة طبية أو مالية أو ضمانات لا تستطيع إثباتها.
يُجري شخص فحوصًا عشوائية للوجوه والأيدي وملصق المنتج في عينة من كل دفعة.
الوسم والموافقة
اعتبر الإفصاح جزءًا من خط الإنتاج، لا فكرة لاحقة. تتوقع منصات الإعلانات والجهات التنظيمية بشكل متزايد أن يُوسَم المحتوى المولد بالذكاء الاصطناعي، وتتغير القواعد كثيرًا، لذلك اقرأ سياسة الإعلانات الحالية لكل منصة قبل إطلاق أي دفعة.
لا تقدّم أبدًا شخصية اصطناعية على أنها عميل حقيقي يروي نتائج حقيقية. لا تُعِد إنشاء وجه شخص حقيقي أو صوته دون موافقة كتابية منه. الشهادة المزيفة هي أسرع طريق لخسارة حساب الإعلانات، وهي تستحق ذلك.
ابنِ أول دفعة لك اليوم
أصبح لديك الحلقة كاملة: ملخص، ونص، وإطار شخصية، ومقطع مع صوت، ومراجعة. أسرع طريقة لتعرف إن كان هذا يناسب منتجك هي تشغيل ثلاث نسخ بعد ظهر اليوم.
افتح Seedance 2.5 Lite على Picasso IA، وارفع إطار شخصية واحدًا من PicassoIA Image، واكتب ثلاثة خطافات مختلفة للمنتج نفسه. قارن الافتتاحيات جنبًا إلى جنب. عندما يتقدم أحدها بوضوح، يصبح لديك قالبك، ويحوّله كود Python أعلاه إلى خمسين نسخة إضافية.
ابدأ صغيرًا، واحفظ المقاطع صادقة، ودع البيانات تختار الفائزين. ولّد أول صورة شخصية لك على Picasso IA اليوم، وحرّكها إلى إعلان بأسلوب UGC، وانظر إلى أي مدى يمكن أن يصل قالب جيد واحد. التجربة الوحيدة التي تفشل هي التي لا تجربها أبدًا.