توليد الفيديو
يمكن لوكلاء OpenClaw إنشاء مقاطع فيديو من مطالبات نصية أو صور مرجعية أو مقاطع فيديو موجودة. يتم دعم 12 واجهة مزوّد، ولكل منها خيارات نماذج مختلفة، وأوضاع إدخال، ومجموعات ميزات. يختار الوكيل المزوّد المناسب تلقائيًا استنادًا إلى إعداداتك ومفاتيح API المتاحة.
لا تظهر أداة video_generate إلا عند توفر مزوّد واحد على الأقل لتوليد الفيديو. إذا لم ترها ضمن أدوات الوكيل لديك، فاضبط مفتاح API لأحد المزوّدين أو هيّئ agents.defaults.videoGenerationModel.
يعامل OpenClaw توليد الفيديو على أنه ثلاثة أوضاع وقت تشغيل:
generate لطلبات النص إلى فيديو من دون وسائط مرجعية
imageToVideo عندما يتضمن الطلب صورة مرجعية واحدة أو أكثر
videoToVideo عندما يتضمن الطلب مقطع فيديو مرجعيًا واحدًا أو أكثر
يمكن للمزوّدين دعم أي مجموعة فرعية من هذه الأوضاع. تتحقق الأداة من صحة
الوضع النشط قبل الإرسال وتعرض الأوضاع المدعومة في action=list.
البدء السريع
- اضبط مفتاح API لأي مزوّد مدعوم:
export GEMINI_API_KEY="your-key"
- اختياريًا، ثبّت نموذجًا افتراضيًا:
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
- اطلب من الوكيل:
أنشئ فيديو سينمائيًا مدته 5 ثوانٍ لسرطان بحر ودود يتزلج على الأمواج وقت الغروب.
يستدعي الوكيل video_generate تلقائيًا. لا حاجة إلى قائمة سماح للأدوات.
ماذا يحدث عندما تنشئ فيديو
توليد الفيديو غير متزامن. عندما يستدعي الوكيل video_generate داخل جلسة:
- يرسل OpenClaw الطلب إلى المزوّد ويعيد فورًا معرّف مهمة.
- يعالج المزوّد المهمة في الخلفية (عادةً من 30 ثانية إلى 5 دقائق حسب المزوّد والدقة).
- عندما يصبح الفيديو جاهزًا، يوقظ OpenClaw الجلسة نفسها بحدث إكمال داخلي.
- ينشر الوكيل الفيديو النهائي مرة أخرى في المحادثة الأصلية.
أثناء وجود مهمة قيد التنفيذ، تؤدي استدعاءات video_generate المكررة في الجلسة نفسها إلى إرجاع حالة المهمة الحالية بدلًا من بدء عملية توليد أخرى. استخدم openclaw tasks list أو openclaw tasks show <taskId> للتحقق من التقدم من CLI.
خارج تشغيلات الوكيل المستندة إلى الجلسات (على سبيل المثال، الاستدعاءات المباشرة للأدوات)، تعود الأداة إلى التوليد المضمّن وتعيد مسار الوسائط النهائي في الدور نفسه.
دورة حياة المهمة
يمر كل طلب video_generate بأربع حالات:
- queued — تم إنشاء المهمة وهي بانتظار أن يقبلها المزوّد.
- running — يعالجها المزوّد (عادةً من 30 ثانية إلى 5 دقائق حسب المزوّد والدقة).
- succeeded — أصبح الفيديو جاهزًا؛ يستيقظ الوكيل وينشره في المحادثة.
- failed — خطأ من المزوّد أو مهلة زمنية؛ يستيقظ الوكيل مع تفاصيل الخطأ.
تحقق من الحالة من CLI:
openclaw tasks list
openclaw tasks show <taskId>
openclaw tasks cancel <taskId>
منع التكرار: إذا كانت هناك بالفعل مهمة فيديو في الحالة queued أو running للجلسة الحالية، فإن video_generate يعيد حالة المهمة الموجودة بدلًا من بدء مهمة جديدة. استخدم action: "status" للتحقق صراحةً من دون تشغيل توليد جديد.
المزوّدون المدعومون
| Provider | النموذج الافتراضي | نص | صورة مرجعية | فيديو مرجعي | مفتاح API |
|---|
| Alibaba | wan2.6-t2v | نعم | نعم (URL بعيد) | نعم (URL بعيد) | MODELSTUDIO_API_KEY |
| BytePlus | seedance-1-0-lite-t2v-250428 | نعم | صورة واحدة | لا | BYTEPLUS_API_KEY |
| ComfyUI | workflow | نعم | صورة واحدة | لا | COMFY_API_KEY أو COMFY_CLOUD_API_KEY |
| fal | fal-ai/minimax/video-01-live | نعم | صورة واحدة | لا | FAL_KEY |
| Google | veo-3.1-fast-generate-preview | نعم | صورة واحدة | فيديو واحد | GEMINI_API_KEY |
| MiniMax | MiniMax-Hailuo-2.3 | نعم | صورة واحدة | لا | MINIMAX_API_KEY |
| OpenAI | sora-2 | نعم | صورة واحدة | فيديو واحد | OPENAI_API_KEY |
| Qwen | wan2.6-t2v | نعم | نعم (URL بعيد) | نعم (URL بعيد) | QWEN_API_KEY |
| Runway | gen4.5 | نعم | صورة واحدة | فيديو واحد | RUNWAYML_API_SECRET |
| Together | Wan-AI/Wan2.2-T2V-A14B | نعم | صورة واحدة | لا | TOGETHER_API_KEY |
| Vydra | veo3 | نعم | صورة واحدة (kling) | لا | VYDRA_API_KEY |
| xAI | grok-imagine-video | نعم | صورة واحدة | فيديو واحد | XAI_API_KEY |
تقبل بعض المزوّدات متغيرات بيئة إضافية أو بديلة لمفاتيح API. راجع صفحات المزوّد الفردية للاطلاع على التفاصيل.
شغّل video_generate action=list لفحص المزوّدين والنماذج وأوضاع وقت
التشغيل المتاحة أثناء التشغيل.
مصفوفة القدرات المعلنة
هذا هو عقد الأوضاع الصريح الذي تستخدمه video_generate واختبارات العقود
والفحص المباشر المشترك.
| Provider | generate | imageToVideo | videoToVideo | مسارات الاختبار المباشر المشتركة حاليًا |
|---|
| 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 |
معاملات الأداة
مطلوبة
| المعامل | النوع | الوصف |
|---|
prompt | string | وصف نصي للفيديو المراد إنشاؤه (مطلوب لـ action: "generate") |
مدخلات المحتوى
| المعامل | النوع | الوصف |
|---|
image | string | صورة مرجعية واحدة (مسار أو URL) |
images | string[] | عدة صور مرجعية (حتى 5) |
video | string | فيديو مرجعي واحد (مسار أو URL) |
videos | string[] | عدة مقاطع فيديو مرجعية (حتى 4) |
عناصر التحكم في النمط
| المعامل | النوع | الوصف |
|---|
aspectRatio | string | 1:1 أو 2:3 أو 3:2 أو 3:4 أو 4:3 أو 4:5 أو 5:4 أو 9:16 أو 16:9 أو 21:9 |
resolution | string | 480P أو 720P أو 768P أو 1080P |
durationSeconds | number | المدة المستهدفة بالثواني (مقربة إلى أقرب قيمة يدعمها المزوّد) |
size | string | تلميح للحجم عندما يدعمه المزوّد |
audio | boolean | تفعيل الصوت المُولَّد عندما يكون مدعومًا |
watermark | boolean | تبديل العلامة المائية الخاصة بالمزوّد عندما تكون مدعومة |
متقدمة
| المعامل | النوع | الوصف |
|---|
action | string | "generate" (الافتراضي) أو "status" أو "list" |
model | string | تجاوز مزوّد/نموذج (مثل runway/gen4.5) |
filename | string | تلميح لاسم ملف الإخراج |
لا يدعم كل المزوّدين جميع المعاملات. يقوم OpenClaw بالفعل بتطبيع المدة إلى أقرب قيمة يدعمها المزوّد، كما يعيد تعيين تلميحات الهندسة المترجمة مثل الحجم إلى نسبة الأبعاد عندما يكشف مزوّد رجوع احتياطي عن سطح تحكم مختلف. يتم تجاهل التجاوزات غير المدعومة حقًا على أساس أفضل جهد ويُبلّغ عنها كتحذيرات في نتيجة الأداة. أما حدود القدرات الصارمة (مثل كثرة المدخلات المرجعية) فتفشل قبل الإرسال.
تبلّغ نتائج الأداة عن الإعدادات المطبقة. عندما يعيد OpenClaw تعيين المدة أو الهندسة أثناء الرجوع الاحتياطي بين المزوّدين، فإن القيم المعادة لـ durationSeconds وsize وaspectRatio وresolution تعكس ما تم إرساله، بينما تسجل details.normalization الترجمة من المطلوب إلى المطبق.
تحدد المدخلات المرجعية أيضًا وضع وقت التشغيل:
- لا توجد وسائط مرجعية:
generate
- أي صورة مرجعية:
imageToVideo
- أي فيديو مرجعي:
videoToVideo
ليست المراجع المختلطة للصور والفيديوهات سطح قدرة مشتركة مستقرة.
ويُفضّل استخدام نوع مرجعي واحد لكل طلب.
الإجراءات
- generate (الافتراضي) — أنشئ فيديو من المطالبة المقدمة والمدخلات المرجعية الاختيارية.
- status — تحقق من حالة مهمة الفيديو قيد التنفيذ للجلسة الحالية من دون بدء عملية توليد أخرى.
- list — اعرض المزوّدين والنماذج وإمكاناتهم المتاحة.
اختيار النموذج
عند إنشاء فيديو، يحل OpenClaw النموذج بهذا الترتيب:
- معامل الأداة
model — إذا حدده الوكيل في الاستدعاء.
videoGenerationModel.primary — من الإعدادات.
videoGenerationModel.fallbacks — تُجرّب بالترتيب.
- الاكتشاف التلقائي — يستخدم المزوّدين ذوي المصادقة الصالحة، بدءًا من المزوّد الافتراضي الحالي، ثم بقية المزوّدين بالترتيب الأبجدي.
إذا فشل مزوّد ما، فسيُجرَّب المرشح التالي تلقائيًا. وإذا فشل كل المرشحين، فسيتضمن الخطأ تفاصيل كل محاولة.
اضبط 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"],
},
},
},
}
ملاحظات حول المزوّدين
| Provider | الملاحظات |
|---|
| Alibaba | يستخدم نقطة نهاية DashScope/Model Studio غير المتزامنة. يجب أن تكون الصور ومقاطع الفيديو المرجعية URLات بعيدة من نوع http(s). |
| BytePlus | صورة مرجعية واحدة فقط. |
| ComfyUI | تنفيذ محلي أو سحابي يعتمد على workflow. يدعم النص إلى فيديو والصورة إلى فيديو عبر الرسم البياني المهيأ. |
| fal | يستخدم تدفقًا مدعومًا بالطوابير للمهام طويلة التشغيل. صورة مرجعية واحدة فقط. |
| Google | يستخدم Gemini/Veo. يدعم صورة واحدة أو فيديو مرجعي واحد. |
| MiniMax | صورة مرجعية واحدة فقط. |
| OpenAI | يتم تمرير تجاوز size فقط. أما تجاوزات النمط الأخرى (aspectRatio وresolution وaudio وwatermark) فيتم تجاهلها مع تحذير. |
| Qwen | يستخدم الواجهة الخلفية DashScope نفسها مثل Alibaba. يجب أن تكون المدخلات المرجعية URLات بعيدة من نوع http(s)؛ وتُرفض الملفات المحلية مسبقًا. |
| Runway | يدعم الملفات المحلية عبر data 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"
ذو صلة