فيديو عمودي واحد وأربعون حسابًا: كيف ينشر الوكيل الريلز وShorts عبر Shager
دليل عملي للوكلاء في توزيع الفيديو القصير: فحص الصيغ، وبيانات الريلز وShorts، ونص لكل حساب، وإرسال متدرّج، واستدعاءات MCP حقيقية.

يستطيع الوكيل توزيع فيديو عمودي قصير واحد على عشرات الحسابات في Instagram وFacebook وYouTube: يرفعه مرة واحدة مع أبعاده ومدته، وينشئ منشورًا واحدًا يحدد الصيغة لكل شبكة، ويكتب نصًا مختلفًا لكل حساب. يتحقق Shager من الملف وفق قواعد كل شبكة قبل إرسال أي شيء، ثم يرسل حسابًا تلو الآخر مع توقف عشوائي بينها. العمل الحقيقي للوكيل هو البيانات الوصفية، لا الرفع.
هذه الجملة الأخيرة هي الدرس كله. نادرًا ما تفشل حملات الفيديو القصير بسبب الفيديو نفسه. إنها تفشل لأن الوكيل لا يعرف أن المقطع مدته 3 دقائق و4 ثوانٍ، أو لأن أربعين حسابًا تتلقى النص نفسه حرفيًا.
ما الذي يحتاج الوكيل إلى معرفته عن الملف قبل الرفع؟
ثلاثة أرقام: العرض والارتفاع والمدة. على أساسها تصنّف الشبكات الفيديو القصير وتقبله، والوكيل الذي يخمّن سينتج منشورات تقع في الصيغة الخطأ أو تُرفض.
قاعدة YouTube هي الأوضح. بحسب صفحة المساعدة الخاصة بـ Google عن Shorts التي تصل مدتها إلى ثلاث دقائق، تُصنَّف الفيديوهات المرفوعة منذ 15 أكتوبر 2024 بنسبة عرض إلى ارتفاع مربعة أو عمودية وبمدة تصل إلى ثلاث دقائق على أنها Shorts. لذلك فإن مقطعًا مدته 3:04 بنسبة 9:16 فيديو عادي وليس Short، أيًّا كان ما قصده الوكيل.
Instagram أكثر مرونة في نسبة العرض إلى الارتفاع، لكن له تفضيلاته. تسرد وثائق نشر المحتوى من Meta لمنصة Instagram الحاويات والترميزات المقبولة للريلز، وتوصي بنسبة 9:16 لتجنب القص أو المساحات الفارغة. ويجب أن يكون الفيديو على رابط يمكن الوصول إليه علنًا وقت النشر، لأن Meta تجلبه منه.
لهذا يقبل upload_media_from_url في Shager الحقول الاختيارية width وheight وduration_ms. مرّرها، فيجري التحقق الخاص بالريلز وShorts والقصص عند الرفع ومرة أخرى قبل الجدولة، بدل أن يظهر الخطأ كمنشور فاشل على الحساب رقم 23.
إن لم تكن الأرقام لدى الوكيل، فعليه أن يحصل عليها قبل الرفع. في Claude Code أو Codex يكفي استدعاء واحد لـ ffprobe:
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height:format=duration \
-of json launch-teaser.mp4

تسلسل استدعاءات MCP
هذا هو التسلسل الذي ينفّذه الوكيل لعميل لديه 38 حسابًا مربوطًا، عبر خادم MCP الخاص بـ Shager على https://app.shager.ai/api/mcp. أسماء الأدوات حقيقية، والمعرّفات أمثلة فقط.
whoamiللتأكد من المؤسسة التي ينتمي إليها المفتاح وهل يحق له النشر.list_workspacesللعثور على مساحة عمل العميل.list_channelsلتلك المساحة، لمعرفة الشبكات والحالة والصيغ المدعومة.list_groupsللعثور على المجموعة التي تضم حسابات هذه الحملة.upload_media_from_urlمع الأبعاد والمدة.create_postكمسودة، مع نص لكل حساب وصيغة لكل شبكة.request_approvalإن كان العميل يوافق على الفيديوهات، أوschedule_postإن لم يكن.get_postبعد موعد الجدولة، للتحقق من حالة كل حساب.
استدعاء الرفع:
{
"tool": "upload_media_from_url",
"arguments": {
"workspace_id": "ws_example",
"url": "https://cdn.example-agency.com/clients/aurora/launch-teaser.mp4",
"file_name": "launch-teaser.mp4",
"width": 1080,
"height": 1920,
"duration_ms": 42000
}
}
مسودة المنشور. لاحظ أن format محدد لكل قناة، لأن الملف نفسه REEL على Instagram وFacebook وSHORT على YouTube:
{
"tool": "create_post",
"arguments": {
"workspace_id": "ws_example",
"caption": "Aurora opens its new showroom on Thursday. 42 seconds inside.",
"media_ids": ["med_teaser"],
"youtube_title": "Inside the new Aurora showroom",
"youtube_privacy": "public",
"cta_url": "https://aurora-example.com/showroom",
"campaign": "showroom-launch",
"label": "Showroom teaser, week 38",
"per_channel": [
{ "channel_id": "ch_ig_downtown", "format": "REEL",
"caption": "Downtown team here. Thursday we open the doors, and this is what you'll see first." },
{ "channel_id": "ch_fb_northside", "format": "REEL",
"caption": "Northside customers asked for a showroom. Here's a 42 second look before Thursday." },
{ "channel_id": "ch_yt_main", "format": "SHORT",
"caption": "A first look at the new Aurora showroom, opening Thursday." }
],
"stagger_seconds": [45, 120]
}
}
في التشغيل الحقيقي يحتوي per_channel على مدخل لكل حساب، لا ثلاثة فقط. الوكيل هو من يكتبها، لا الإنسان.
لماذا يحتاج كل حساب إلى نص خاص به؟
لأن أربعين صفحة تنشر النص نفسه خلال ساعة هو تحديدًا النمط الذي صُممت أنظمة مكافحة الرسائل المزعجة لرصده، ولأنه يبدو سيئًا لكل من يتابع صفحتين منها. ملف auth.md الخاص بـ Shager يطلب من الوكلاء صراحةً تنويع النصوص لكل حساب عبر per_channel.
التنويع الجيد ليس تبديل مرادفات. على الوكيل أن يربط كل نص بشيء حقيقي عن ذلك الحساب: الموقع، أو الفريق، أو الجمهور. نشرح الطريقة بالتفصيل في تنويع النص لكل حساب بالذكاء الاصطناعي، بما في ذلك كيف تبقى نبرة العلامة التجارية ثابتة بينما تتغير الصياغة.
وفي الفيديو القصير تحديدًا، اجعل النصوص قصيرة. الفيديو يحمل الرسالة، والنص الذي يكرر التعليق الصوتي يهدر المساحة.
أين يوضع الرابط في الفيديو القصير؟
هذا هو الجزء الذي يخطئ فيه الوكلاء أكثر من غيره، لأنهم يطبّقون قاعدة واحدة على كل الشبكات.
على YouTube، تذكر Google في مركز المساعدة أن الروابط في تعليقات Shorts وأوصافها غير قابلة للنقر للحد من الرسائل المزعجة. فرابط العميل المحتمل في التعليق الأول على Short مجرد نص، لا رابط. وعلى Instagram لا تُعرض الروابط في النصوص والتعليقات كروابط أيضًا. أما منشورات صفحات Facebook فهي المكان الذي يتصرف فيه رابط التعليق الأول كما يتوقع الناس.
لذلك، في حملة الفيديو القصير، على الوكيل أن يضبط first_comment لكل قناة فقط حيث يكون مفيدًا، وأن يتركه فارغًا في Shorts. ويبقى Shager يولّد رابطًا قصيرًا مُتتبَّعًا لكل حساب من cta_url، فتبقى بيانات النقرات لكل حساب أينما ظهر الرابط. الدليل الكامل لهذا في روابط العملاء المحتملين في التعليق الأول مع الوكلاء.

الإيقاع: ما الذي يفعله stagger_seconds فعلًا
stagger_seconds توقف عشوائي بالثواني بين حسابات الشبكة نفسها. القيمة الافتراضية [30, 90]. ومع 38 حسابًا موزعة على ثلاث شبكات، تعمل قائمة انتظار كل شبكة مستقلة، فتتباعد حسابات Instagram فيما بينها، وقنوات YouTube فيما بينها.
في الفيديو أوسّع هذا النطاق عادةً. تشغيل 38 حسابًا بقيمة [45, 120] يستغرق وقتًا أطول، لكن المنشورات تتوزع على فترة تشبه أشخاصًا ينشرون، لا سكربتًا. وإن كان العميل يهتم بأن يكون كل شيء منشورًا قبل ساعة محددة، فعلى الوكيل أن يجدول أبكر بدل أن يضيّق التدرّج. نتعمق في التوقيت في استراتيجية الجدولة للوكلاء.
التحقق من النتيجة
بعد موعد الجدولة، يستدعي الوكيل get_post. يعيد الاستدعاء الحالة العامة للمنشور وحالة كل حساب: وقت النشر، أو الرابط المباشر، أو الخطأ. ومن حالات المنشور PUBLISHED وPARTIALLY_PUBLISHED وFAILED، إلى جانب حالات أخرى مذكورة في مستند OpenAPI.
النتيجة PARTIALLY_PUBLISHED أمر طبيعي على نطاق واسع: رمز حساب انتهت صلاحيته، أو صفحة فقدت صلاحية ما. مهمة الوكيل أن يبلغ الإنسان بأسماء هذه الحسابات، لا أن يعيد المحاولة عشوائيًا. وكثيرًا ما يكون الحل رابط ربط جديدًا للعميل لذلك الحساب وحده.
نسخة REST للسكربتات
إن كان خط العمل يعمل من سكربت لا من وكيل محادثة، فهاتان الخطوتان نفسهما عبر REST تبدوان هكذا:
curl -s https://app.shager.ai/api/v1/workspaces/ws_example/media \
-H "Authorization: Bearer $SHAGER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://cdn.example-agency.com/clients/aurora/launch-teaser.mp4",
"file_name":"launch-teaser.mp4","width":1080,"height":1920,"duration_ms":42000}'
curl -s https://app.shager.ai/api/v1/workspaces/ws_example/posts \
-H "Authorization: Bearer $SHAGER_API_KEY" \
-H "Content-Type: application/json" \
-d @teaser-post.json
تعود الردود بصيغة { "data": ... }، والأخطاء بصيغة { "error": { "code", "message" } }. والحد هو 120 طلبًا في الدقيقة لكل مفتاح، ولا يقترب منه تشغيل فيديو واحد أبدًا.
الأسئلة الشائعة
هل يستطيع الوكيل نشر فيديو أفقي كـ Short؟
لا. يصنّف YouTube الـ Shorts حسب نسبة العرض إلى الارتفاع والمدة، فيُرفع الفيديو الأفقي كفيديو عادي أيًّا كانت قيمة format التي تطلبها. اطلب من المحرر نسخة عمودية، أو انشر النسخة الأفقية مع ضبط format على VIDEO في YouTube، واحتفظ بالريلز للنسخة العمودية.
هل يجب أن يُنشر الفيديو نفسه على كل الحسابات في اليوم نفسه؟
يمكن ذلك، مع نصوص متنوعة وتدرّج واسع. وفي المجموعات الكبيرة، تقسم وكالات كثيرة التشغيل على يومين أو ثلاثة، كي لا يرى جمهور كل حساب المقطع نفسه تنشره صفحة مجاورة في الساعة نفسها. ويستطيع الوكيل فعل ذلك بإنشاء منشورات منفصلة لكل مجموعة بقيم schedule_at مختلفة.
ماذا يحدث إن رفض حساب واحد الفيديو؟
يتحقق Shager من كل حساب وفق قواعد شبكته قبل الإرسال، فتظهر معظم المشكلات عند الجدولة مع سبب واضح. وإن فشل شيء رغم ذلك وقت النشر، يُظهر get_post أي حساب فشل ولماذا، ولا يتأثر بقية التشغيل.
إلى أين بعد ذلك
إن لم يكن وكيلك مربوطًا بعد، فابدأ من نقطة دخول الوكلاء، التي تغطي خادم MCP وREST API والتسجيل الذاتي. ثم شغّل فيديو قصيرًا واحدًا على مجموعة صغيرة قبل أن توجّهه إلى قائمة العميل كاملة.


