الانتقال إلى المحتوى الرئيسي

إنشاء الفيديوهات

يمكن لوكلاء OpenClaw إنشاء مقاطع فيديو من المطالبات النصية أو الصور المرجعية أو مقاطع الفيديو الموجودة. يتم دعم أربع عشرة واجهة مزود، ولكل منها خيارات نماذج وأوضاع إدخال ومجموعات ميزات مختلفة. يختار الوكيل المزود المناسب تلقائيًا استنادًا إلى تكوينك ومفاتيح API المتاحة.
لا تظهر أداة video_generate إلا عند توفر مزود واحد على الأقل لإنشاء الفيديوهات. إذا لم تظهر ضمن أدوات الوكيل لديك، فقم بتعيين مفتاح API للمزود أو كوّن agents.defaults.videoGenerationModel.
يتعامل OpenClaw مع إنشاء الفيديوهات على أنه ثلاثة أوضاع تشغيل:
  • generate لطلبات تحويل النص إلى فيديو بدون وسائط مرجعية
  • imageToVideo عندما يتضمن الطلب صورة مرجعية واحدة أو أكثر
  • videoToVideo عندما يتضمن الطلب مقطع فيديو مرجعيًا واحدًا أو أكثر
يمكن للمزودين دعم أي مجموعة فرعية من هذه الأوضاع. تتحقق الأداة من الوضع النشط قبل الإرسال وتعرض الأوضاع المدعومة في action=list.

البدء السريع

  1. عيّن مفتاح API لأي مزود مدعوم:
export GEMINI_API_KEY="your-key"
  1. اختياريًا، ثبّت نموذجًا افتراضيًا:
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
  1. اطلب من الوكيل:
أنشئ فيديو سينمائيًا مدته 5 ثوانٍ لكركند ودود يتزلج على الأمواج عند غروب الشمس.
سيستدعي الوكيل video_generate تلقائيًا. لا حاجة إلى قائمة سماح للأدوات.

ماذا يحدث عند إنشاء فيديو

إنشاء الفيديو عملية غير متزامنة. عندما يستدعي الوكيل video_generate في جلسة:
  1. يرسل OpenClaw الطلب إلى المزود ويعيد فورًا معرّف مهمة.
  2. يعالج المزود المهمة في الخلفية (عادةً من 30 ثانية إلى 5 دقائق حسب المزود والدقة).
  3. عندما يصبح الفيديو جاهزًا، يوقظ OpenClaw الجلسة نفسها عبر حدث إكمال داخلي.
  4. ينشر الوكيل الفيديو النهائي مرة أخرى في المحادثة الأصلية.
أثناء تنفيذ المهمة، فإن أي استدعاءات مكررة لـ video_generate في الجلسة نفسها تعيد حالة المهمة الحالية بدلًا من بدء إنشاء جديد. استخدم openclaw tasks list أو openclaw tasks show <taskId> للتحقق من التقدم من خلال CLI. خارج عمليات تشغيل الوكيل المدعومة بجلسة (على سبيل المثال، استدعاءات الأدوات المباشرة)، تعود الأداة إلى الإنشاء المضمن وتعيد مسار الوسائط النهائي في نفس الدورة.

دورة حياة المهمة

يمر كل طلب video_generate عبر أربع حالات:
  1. queued — تم إنشاء المهمة وهي بانتظار أن يقبلها المزود.
  2. running — يعالج المزود المهمة (عادةً من 30 ثانية إلى 5 دقائق حسب المزود والدقة).
  3. succeeded — أصبح الفيديو جاهزًا؛ يستيقظ الوكيل وينشره في المحادثة.
  4. failed — خطأ من المزود أو انتهاء مهلة؛ يستيقظ الوكيل مع تفاصيل الخطأ.
تحقق من الحالة من خلال CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
منع التكرار: إذا كانت هناك بالفعل مهمة فيديو بالحالة queued أو running للجلسة الحالية، فستعيد video_generate حالة المهمة الموجودة بدلًا من بدء مهمة جديدة. استخدم action: "status" للتحقق بشكل صريح بدون تشغيل إنشاء جديد.

المزودون المدعومون

المزودالنموذج الافتراضينصصورة مرجعيةفيديو مرجعيمفتاح API
Alibabawan2.6-t2vنعمنعم (URL بعيد)نعم (URL بعيد)MODELSTUDIO_API_KEY
BytePlus (1.0)seedance-1-0-pro-250528نعمحتى صورتين (نماذج I2V فقط؛ الإطار الأول + الأخير)لاBYTEPLUS_API_KEY
BytePlus Seedance 1.5seedance-1-5-pro-251215نعمحتى صورتين (الإطار الأول + الأخير عبر الدور)لاBYTEPLUS_API_KEY
BytePlus Seedance 2.0dreamina-seedance-2-0-260128نعمحتى 9 صور مرجعيةحتى 3 مقاطع فيديوBYTEPLUS_API_KEY
ComfyUIworkflowنعمصورة واحدةلاCOMFY_API_KEY أو COMFY_CLOUD_API_KEY
falfal-ai/minimax/video-01-liveنعمصورة واحدةلاFAL_KEY
Googleveo-3.1-fast-generate-previewنعمصورة واحدةمقطع فيديو واحدGEMINI_API_KEY
MiniMaxMiniMax-Hailuo-2.3نعمصورة واحدةلاMINIMAX_API_KEY
OpenAIsora-2نعمصورة واحدةمقطع فيديو واحدOPENAI_API_KEY
Qwenwan2.6-t2vنعمنعم (URL بعيد)نعم (URL بعيد)QWEN_API_KEY
Runwaygen4.5نعمصورة واحدةمقطع فيديو واحدRUNWAYML_API_SECRET
TogetherWan-AI/Wan2.2-T2V-A14Bنعمصورة واحدةلاTOGETHER_API_KEY
Vydraveo3نعمصورة واحدة (kling)لاVYDRA_API_KEY
xAIgrok-imagine-videoنعمصورة واحدةمقطع فيديو واحدXAI_API_KEY
تقبل بعض المزودات متغيرات بيئة إضافية أو بديلة لمفاتيح API. راجع صفحات المزود الفردية للحصول على التفاصيل. شغّل video_generate action=list لفحص المزودات والنماذج وأوضاع التشغيل المتاحة أثناء وقت التشغيل.

مصفوفة القدرات المعلنة

هذا هو عقد الأوضاع الصريح الذي تستخدمه video_generate واختبارات العقد والفحص الحي المشترك.
المزودgenerateimageToVideovideoToVideoمسارات الفحص الحي المشتركة الحالية
Alibabaنعمنعمنعمgenerate وimageToVideo؛ تم تخطي videoToVideo لأن هذا المزود يتطلب عناوين URL لفيديوهات http(s) بعيدة
BytePlusنعمنعملاgenerate وimageToVideo
ComfyUIنعمنعملاليس ضمن الفحص المشترك؛ التغطية الخاصة بسير العمل موجودة ضمن اختبارات Comfy
falنعمنعملاgenerate وimageToVideo
Googleنعمنعمنعمgenerate وimageToVideo؛ تم تخطي videoToVideo المشترك لأن فحص Gemini/Veo الحالي المعتمد على المخزن المؤقت لا يقبل هذا الإدخال
MiniMaxنعمنعملاgenerate وimageToVideo
OpenAIنعمنعمنعمgenerate وimageToVideo؛ تم تخطي videoToVideo المشترك لأن مسار المؤسسة/الإدخال هذا يحتاج حاليًا إلى وصول inpaint/remix من جهة المزود
Qwenنعمنعمنعمgenerate وimageToVideo؛ تم تخطي videoToVideo لأن هذا المزود يتطلب عناوين URL لفيديوهات http(s) بعيدة
Runwayنعمنعمنعمgenerate وimageToVideo؛ يتم تشغيل videoToVideo فقط عندما يكون النموذج المحدد هو runway/gen4_aleph
Togetherنعمنعملاgenerate وimageToVideo
Vydraنعمنعملاgenerate؛ تم تخطي imageToVideo المشترك لأن veo3 المضمن يدعم النص فقط وkling المضمن يتطلب عنوان URL بعيدًا للصورة
xAIنعمنعمنعمgenerate وimageToVideo؛ تم تخطي videoToVideo لأن هذا المزود يتطلب حاليًا عنوان URL بعيدًا لملف MP4

معلمات الأداة

مطلوبة

المعلمةالنوعالوصف
promptstringوصف نصي للفيديو المراد إنشاؤه (مطلوب لـ action: "generate")

مدخلات المحتوى

المعلمةالنوعالوصف
imagestringصورة مرجعية واحدة (مسار أو URL)
imagesstring[]صور مرجعية متعددة (حتى 9)
imageRolesstring[]تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة الصور المدمجة. القيم القياسية: first_frame وlast_frame وreference_image
videostringمقطع فيديو مرجعي واحد (مسار أو URL)
videosstring[]مقاطع فيديو مرجعية متعددة (حتى 4)
videoRolesstring[]تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة الفيديوهات المدمجة. القيمة القياسية: reference_video
audioRefstringملف صوت مرجعي واحد (مسار أو URL). يُستخدم مثلًا للموسيقى الخلفية أو مرجع الصوت عندما يدعم المزود مدخلات الصوت
audioRefsstring[]ملفات صوت مرجعية متعددة (حتى 3)
audioRolesstring[]تلميحات أدوار اختيارية لكل موضع بالتوازي مع قائمة المقاطع الصوتية المدمجة. القيمة القياسية: reference_audio
تُمرَّر تلميحات الأدوار إلى المزود كما هي. تأتي القيم القياسية من اتحاد VideoGenerationAssetRole ولكن قد تقبل المزودات سلاسل أدوار إضافية. يجب ألا تحتوي مصفوفات *Roles على عدد إدخالات أكبر من القائمة المرجعية المقابلة؛ وتفشل أخطاء الزيادة أو النقصان بمقدار واحد برسالة خطأ واضحة. استخدم سلسلة فارغة لترك خانة بدون تعيين.

عناصر التحكم في النمط

المعلمةالنوعالوصف
aspectRatiostring1:1 أو 2:3 أو 3:2 أو 3:4 أو 4:3 أو 4:5 أو 5:4 أو 9:16 أو 16:9 أو 21:9 أو adaptive
resolutionstring480P أو 720P أو 768P أو 1080P
durationSecondsnumberالمدة المستهدفة بالثواني (تُقرَّب إلى أقرب قيمة يدعمها المزود)
sizestringتلميح للحجم عندما يدعمه المزود
audiobooleanتمكين الصوت المُنشأ في الناتج عندما يكون مدعومًا. وهو مختلف عن audioRef* (المدخلات)
watermarkbooleanتبديل العلامة المائية الخاصة بالمزود عندما تكون مدعومة
تُعد adaptive قيمة خاصة مرتبطة بالمزود: حيث تُمرَّر كما هي إلى المزودين الذين يعلنون adaptive ضمن قدراتهم (على سبيل المثال، يستخدمها BytePlus Seedance لاكتشاف النسبة تلقائيًا من أبعاد الصورة المدخلة). أما المزودون الذين لا يعلنون عنها فيعرضون هذه القيمة عبر details.ignoredOverrides في نتيجة الأداة بحيث يكون تجاهلها ظاهرًا.

متقدمة

المعلمةالنوعالوصف
actionstring"generate" (افتراضي) أو "status" أو "list"
modelstringتجاوز المزود/النموذج (مثل runway/gen4.5)
filenamestringتلميح لاسم ملف الإخراج
providerOptionsobjectخيارات خاصة بالمزود على شكل كائن JSON (مثل {"seed": 42, "draft": true}). تتحقق المزودات التي تعلن مخططًا ذا أنواع محددة من المفاتيح وأنواع القيم؛ أما المفاتيح غير المعروفة أو عدم تطابق الأنواع فيؤديان إلى تخطي المرشح أثناء التبديل الاحتياطي. وتتلقى المزودات التي لا تحتوي على مخطط معلن الخيارات كما هي. شغّل video_generate action=list لمعرفة ما يقبله كل مزود
لا تدعم جميع المزودات كل المعلمات. يقوم OpenClaw بالفعل بتطبيع المدة إلى أقرب قيمة يدعمها المزود، كما يعيد أيضًا تعيين تلميحات الهندسة المترجمة مثل تحويل الحجم إلى نسبة أبعاد عندما يكشف مزود احتياطي سطح تحكم مختلفًا. أما التجاوزات غير المدعومة فعلًا فيتم تجاهلها بأفضل جهد ممكن والإبلاغ عنها كتحذيرات في نتيجة الأداة. وتفشل حدود القدرات الصارمة (مثل كثرة عدد المدخلات المرجعية) قبل الإرسال. تعرض نتائج الأداة الإعدادات المطبقة. عندما يعيد OpenClaw تعيين المدة أو الهندسة أثناء التبديل الاحتياطي بين المزودات، فإن القيم المعادة في durationSeconds وsize وaspectRatio وresolution تعكس ما تم إرساله، بينما يلتقط details.normalization التحويل من القيم المطلوبة إلى القيم المطبقة. تحدد المدخلات المرجعية أيضًا وضع التشغيل:
  • بدون وسائط مرجعية: generate
  • أي صورة مرجعية: imageToVideo
  • أي فيديو مرجعي: videoToVideo
  • لا تغيّر المدخلات الصوتية المرجعية الوضع الذي تم تحديده؛ بل تُطبَّق فوق أي وضع تحدده المراجع الصورية/الفيديوية، ولا تعمل إلا مع المزودات التي تعلن maxInputAudios
إن المزج بين مراجع الصور والفيديو ليس سطح قدرات مشتركة مستقرًا. يُفضَّل استخدام نوع مرجعي واحد لكل طلب.

التبديل الاحتياطي والخيارات ذات الأنواع المحددة

تُطبَّق بعض فحوصات القدرات في طبقة التبديل الاحتياطي بدلًا من حدود الأداة حتى يتمكن الطلب الذي يتجاوز حدود المزود الأساسي من العمل على مزود احتياطي قادر:
  • إذا لم يعلن المرشح النشط عن maxInputAudios (أو أعلن عنها على أنها 0)، فسيتم تخطيه عندما يحتوي الطلب على مراجع صوتية، وتتم تجربة المرشح التالي.
  • إذا كانت maxDurationSeconds لدى المرشح النشط أقل من durationSeconds المطلوبة ولم يعلن المرشح عن قائمة supportedDurationSeconds، فسيتم تخطيه.
  • إذا كان الطلب يحتوي على providerOptions وكان المرشح النشط يعلن صراحة عن مخطط providerOptions ذي أنواع محددة، فسيتم تخطي المرشح عندما لا تكون المفاتيح الموردة موجودة في المخطط أو عندما لا تتطابق أنواع القيم. أما المزودات التي لم تعلن عن مخطط بعد فتتلقى الخيارات كما هي (تمرير متوافق مع الإصدارات السابقة). ويمكن للمزود إلغاء قبول جميع خيارات المزود صراحة عبر إعلان مخطط فارغ (capabilities.providerOptions: {})، مما يؤدي إلى نفس التخطي الناتج عن عدم تطابق النوع.
يُسجَّل أول سبب للتخطي في الطلب عند مستوى warn حتى يرى المشغلون متى تم تجاوز مزودهم الأساسي؛ أما أسباب التخطي اللاحقة فتُسجَّل عند debug للحفاظ على هدوء سلاسل التبديل الاحتياطي الطويلة. وإذا تم تخطي كل المرشحين، فسيشمل الخطأ المجمّع سبب التخطي لكل منهم.

الإجراءات

  • generate (افتراضي) — إنشاء فيديو من المطالبة المعطاة والمدخلات المرجعية الاختيارية.
  • status — التحقق من حالة مهمة الفيديو الجارية للجلسة الحالية دون بدء إنشاء آخر.
  • list — عرض المزودات والنماذج المتاحة وقدراتها.

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

عند إنشاء فيديو، يحل OpenClaw النموذج بهذا الترتيب:
  1. معلمة الأداة model — إذا حددها الوكيل في الاستدعاء.
  2. videoGenerationModel.primary — من التكوين.
  3. videoGenerationModel.fallbacks — تُجرَّب بالترتيب.
  4. الاكتشاف التلقائي — يستخدم المزودات التي لديها مصادقة صالحة، بدءًا من المزود الافتراضي الحالي، ثم المزودات المتبقية بترتيب أبجدي.
إذا فشل مزود، فسيتم تجربة المرشح التالي تلقائيًا. وإذا فشل جميع المرشحين، فسيتضمن الخطأ تفاصيل من كل محاولة. عيّن agents.defaults.mediaGenerationAutoProviderFallback: false إذا كنت تريد أن يستخدم إنشاء الفيديو فقط إدخالات model وprimary وfallbacks الصريحة.
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "google/veo-3.1-fast-generate-preview",
        fallbacks: ["runway/gen4.5", "qwen/wan2.6-t2v"],
      },
    },
  },
}

ملاحظات حول المزودين

المزودملاحظات
Alibabaيستخدم نقطة النهاية غير المتزامنة DashScope/Model Studio. يجب أن تكون الصور ومقاطع الفيديو المرجعية عناوين URL بعيدة من نوع http(s).
BytePlus (1.0)معرّف المزود byteplus. النماذج: seedance-1-0-pro-250528 (افتراضي)، وseedance-1-0-pro-t2v-250528، وseedance-1-0-pro-fast-251015، وseedance-1-0-lite-t2v-250428، وseedance-1-0-lite-i2v-250428. لا تقبل نماذج T2V (*-t2v-*) مدخلات الصور؛ بينما تدعم نماذج I2V ونماذج *-pro-* العامة صورة مرجعية واحدة (الإطار الأول). مرّر الصورة موضعيًا أو عيّن role: "first_frame". يتم تبديل معرّفات نماذج T2V تلقائيًا إلى متغير I2V المقابل عند توفير صورة. مفاتيح providerOptions المدعومة: seed (رقم)، وdraft (قيمة منطقية، يفرض دقة 480p)، وcamera_fixed (قيمة منطقية).
BytePlus Seedance 1.5يتطلب إضافة @openclaw/byteplus-modelark. معرّف المزود byteplus-seedance15. النموذج: seedance-1-5-pro-251215. يستخدم واجهة content[] الموحدة. يدعم بحد أقصى صورتين مدخلتين (first_frame + last_frame). يجب أن تكون جميع المدخلات عناوين URL بعيدة من نوع https://. عيّن role: "first_frame" / "last_frame" لكل صورة، أو مرّر الصور موضعيًا. يقوم aspectRatio: "adaptive" باكتشاف النسبة تلقائيًا من صورة الإدخال. يتم تحويل audio: true إلى generate_audio. ويتم تمرير providerOptions.seed (رقم).
BytePlus Seedance 2.0يتطلب إضافة @openclaw/byteplus-modelark. معرّف المزود byteplus-seedance2. النماذج: dreamina-seedance-2-0-260128 وdreamina-seedance-2-0-fast-260128. يستخدم واجهة content[] الموحدة. يدعم حتى 9 صور مرجعية و3 مقاطع فيديو مرجعية و3 ملفات صوت مرجعية. يجب أن تكون جميع المدخلات عناوين URL بعيدة من نوع https://. عيّن role لكل أصل — القيم المدعومة: "first_frame" و"last_frame" و"reference_image" و"reference_video" و"reference_audio". يقوم aspectRatio: "adaptive" باكتشاف النسبة تلقائيًا من صورة الإدخال. يتم تحويل audio: true إلى generate_audio. ويتم تمرير providerOptions.seed (رقم).
ComfyUIتنفيذ محلي أو سحابي قائم على سير العمل. يدعم تحويل النص إلى فيديو وتحويل الصورة إلى فيديو عبر الرسم البياني المكوَّن.
falيستخدم تدفقًا مدعومًا بالطابور للمهام طويلة التشغيل. يدعم صورة مرجعية واحدة فقط.
Googleيستخدم Gemini/Veo. يدعم صورة مرجعية واحدة أو مقطع فيديو مرجعي واحد.
MiniMaxيدعم صورة مرجعية واحدة فقط.
OpenAIيتم تمرير تجاوز size فقط. ويتم تجاهل تجاوزات النمط الأخرى (aspectRatio وresolution وaudio وwatermark) مع تحذير.
Qwenيستخدم الواجهة الخلفية DashScope نفسها الخاصة بـ Alibaba. يجب أن تكون المدخلات المرجعية عناوين URL بعيدة من نوع http(s)؛ ويتم رفض الملفات المحلية مسبقًا.
Runwayيدعم الملفات المحلية عبر معرّفات URI للبيانات. يتطلب تحويل الفيديو إلى فيديو runway/gen4_aleph. تكشف عمليات التشغيل النصية فقط نسب الأبعاد 16:9 و9:16.
Togetherيدعم صورة مرجعية واحدة فقط.
Vydraيستخدم https://www.vydra.ai/api/v1 مباشرة لتجنب عمليات إعادة التوجيه التي تُسقط المصادقة. يأتي veo3 مضمّنًا كنمط تحويل النص إلى فيديو فقط؛ بينما يتطلب kling عنوان URL بعيدًا للصورة.
xAIيدعم تحويل النص إلى فيديو، وتحويل الصورة إلى فيديو، وتدفقات تحرير/تمديد الفيديو البعيدة.

أوضاع قدرات المزود

يتيح عقد إنشاء الفيديوهات المشترك الآن للمزودات إعلان قدرات خاصة بكل وضع بدلًا من الاكتفاء بحدود مجمعة مسطحة فقط. ويجب على التنفيذات الجديدة للمزودات تفضيل كتل الأوضاع الصريحة:
capabilities: {
  generate: {
    maxVideos: 1,
    maxDurationSeconds: 10,
    supportsResolution: true,
  },
  imageToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputImages: 1,
    maxDurationSeconds: 5,
  },
  videoToVideo: {
    enabled: true,
    maxVideos: 1,
    maxInputVideos: 1,
    maxDurationSeconds: 5,
  },
}
لا تكفي الحقول المجمعة المسطحة مثل maxInputImages وmaxInputVideos للإعلان عن دعم أوضاع التحويل. يجب على المزودات إعلان generate وimageToVideo وvideoToVideo بشكل صريح حتى تتمكن الاختبارات الحية واختبارات العقد وأداة video_generate المشتركة من التحقق من دعم الأوضاع بشكل حتمي.

الاختبارات الحية

تغطية حية اختيارية للمزودات المضمنة المشتركة:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts
مغلّف المستودع:
pnpm test:live:media video
يقوم هذا الملف الحي بتحميل متغيرات بيئة المزودات الناقصة من ~/.profile، ويعطي الأفضلية افتراضيًا لمفاتيح API الحية/الخاصة بالبيئة على ملفات المصادقة المخزنة، ويشغّل الأوضاع المعلنة التي يمكنه اختبارها بأمان باستخدام وسائط محلية:
  • generate لكل مزود في الفحص
  • imageToVideo عندما تكون capabilities.imageToVideo.enabled
  • videoToVideo عندما تكون capabilities.videoToVideo.enabled ويقبل المزود/النموذج إدخال الفيديو المحلي المعتمد على المخزن المؤقت في الفحص المشترك
يغطي مسار videoToVideo الحي المشترك اليوم:
  • runway فقط عند اختيار runway/gen4_aleph

التكوين

عيّن نموذج إنشاء الفيديو الافتراضي في تكوين OpenClaw الخاص بك:
{
  agents: {
    defaults: {
      videoGenerationModel: {
        primary: "qwen/wan2.6-t2v",
        fallbacks: ["qwen/wan2.6-r2v-flash"],
      },
    },
  },
}
أو عبر CLI:
openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2v"

ذو صلة