EMAX Studio Blog
كيفية إعداد Meta Ads CLI: دليل خطوة بخطوة لعام 2026
Manuel Mrosek · 2026-06-16 · — مشاهدات
كيفية إعداد Meta Ads CLI: دليل خطوة بخطوة لعام 2026
لإعداد Meta Ads CLI، تقوم بإنشاء System User في Business Manager، وتوليد رمز لا تنتهي صلاحيته مع صلاحيات ads_management و ads_read و business_management، وربط Ad Account و Page الخاصة بك كأصول، ثم توجيه CLI إلى ذلك الرمز عبر ملف إعدادات. تستغرق العملية كاملة حوالي 45 دقيقة إذا كان لديك صلاحية admin على Business Manager و Facebook Page وطريقة دفع موثقة على Ad Account.
هذا هو الدليل التعمقي المرافق لمقالنا العام حول تشغيل Facebook Ads بوكلاء الذكاء الاصطناعي. يشرح ذلك المقال لماذا يتفوق إعداد مدفوع بـ CLI على نقرات Ads Manager لأي شخص يدير أكثر من حفنة من الحملات. هذا المقال هو الدليل العملي: كل خطوة، كل رسالة خطأ واجهناها عندما بنينا منصتنا الخاصة، وسير عمل حقيقي لأول حملة في النهاية.
ما الذي يفعله Meta Ads CLI فعلياً
"Meta Ads CLI" ليس ملفاً تنفيذياً رسمياً واحداً. إنها طبقة أتمتة رقيقة على جانب الخادم تقع بين سكربتاتك و Meta Marketing API. تكتب كود Python أو Node، يتولى CLI المصادقة وتوقيع الطلبات ورمز System User طويل العمر، وتنطلق حملاتك عبر graph.facebook.com/v23.0/ دون أن ينقر أحد عبر Ads Manager.
الجزء الصعب ليس كود الغلاف — فهو مئة سطر. الجزء الصعب هو طقس الإعداد المؤلف من 7 خطوات داخل Business Manager الذي ينتج رمزاً تقبله Meta فعلاً لحركة الإنتاج. ذلك الطقس يزيل رقصة تحديث OAuth وألم انتهاء صلاحية الرمز الذي يكسر كل أتمتة قائمة على المتصفح في النهاية.
العائد حقيقي. بمجرد تشغيل منصة CLI، يمكنك إطلاق حملة بـ 6 متغيرات إعلانية في أقل من 90 ثانية، وسحب أداء البارحة إلى تقرير يومي عند الساعة 7:00 صباحاً عبر cron، وإيقاف الإعلانات منخفضة الأداء تلقائياً — دون تسجيل الدخول إلى Ads Manager أبداً.
المتطلبات الأساسية
قبل أن تبدأ، تأكد من أن لديك هذه. تخطي أي منها يرسلك إلى نفق أرنب من ساعتين لاحقاً.
أنت تحتاج إلى حساب Meta Business Manager بصلاحيات admin — حسابات Facebook الشخصية لن تعمل لرموز System User. أنت تحتاج إلى Facebook Page حيث تكون مدرجاً كـ admin، وليس مجرد editor. أنت تحتاج إلى Meta Ad Account داخل Business Manager مع طريقة دفع موثقة وبلد واحد على الأقل معتمد للفوترة. أنت تحتاج إلى Pixel (أو "Dataset" في المصطلحات الجديدة) مكوَّن لأي موقع ويب تقود إليه حركة المرور. وأنت تحتاج إلى Python 3.10+ أو Node 18+ مثبَّت محلياً مع القدرة على تثبيت الحزم.
إذا لم يكن لديك Pixel بعد، فأنشئ واحداً قبل المتابعة. حتى إذا كنت تخطط لاستخدام Conversions API (CAPI) فقط — كما نفعل نحن — فأنت لا تزال بحاجة إلى Pixel ID كعنوان توجيه لأحداث جانب الخادم.
الإعداد المؤلف من 7 خطوات
هذه الخطوات تسلسلية. كل واحدة تفتح التالية. التخطي يكسر السلسلة بطرق يصعب تصحيحها لأن رسائل خطأ Meta غالباً ما تكون مضللة.
الخطوة 1: إنشاء System User في Business Manager
اذهب إلى Business Settings → Users → System Users. انقر "Add" وأنشئ System User جديداً. الاسم لا يهم لـ API لكنه يهم لعقلك المستقبلي — سَمِّه شيئاً مثل your-brand-agent كي تتذكر ما يفعله بعد ستة أشهر من الآن. اختر دور "Admin" (وليس "Employee") لأن System Users بدون صلاحيات admin لا يمكنهم إدارة Custom Conversions أو أحداث Pixel.
عندما بنينا منصتنا، أنشأنا emaxstudioagent. يتم تعيين System User ID تلقائياً (رقم من 15 خانة). دوِّنه.
الخطوة 2: إنشاء تطبيق Developer مع حالة استخدام Marketing API
اذهب إلى developers.facebook.com → My Apps → Create App. اختر حالة الاستخدام "Marketing API" إذا رأيتها في القائمة المنسدلة. إذا رأيت فقط "Other"، فلا بأس أيضاً — رموز System User تعمل في كلا الحالتين. واجهة المستخدم الألمانية تسمي هذا "Werbeanzeigen mit Marketing API" بينما تسميها واجهة المستخدم الإنجليزية فقط "Marketing API" أو "Other". كلاهما ينتج رموزاً متطابقة.
اضبط التطبيق على نوع Business، وليس Consumer. أضف منتج Marketing API إلى التطبيق من الشريط الجانبي الأيسر. يبدأ التطبيق في Development Mode. يجب أن تنقله إلى Live Mode (المزيد عن ذلك أدناه) قبل أن يعمل رمز System User للإعلانات الحقيقية.
للانتقال إلى Live Mode، تطلب Meta عنوان URL لسياسة خصوصية عامة وأيقونة تطبيق (1024×1024 PNG). كلاهما غير قابلين للتفاوض. أيقونة التطبيق لا تحتاج إلى أن تكون مصقولة — يعمل placeholder — لكن عنوان URL يحتاج إلى أن يحل فعلاً إلى صفحة سياسة الخصوصية. نستضيف خاصتنا على /legal على نطاقنا الرئيسي.
الخطوة 3: توليد رمز System User لا تنتهي صلاحيته
عُد إلى Business Settings → System Users → [System User الخاص بك] → انقر "Generate New Token". اختر التطبيق الذي أنشأته للتو في الخطوة 2. ثم اختر الصلاحيات:
ads_management— مطلوب لإنشاء وتحرير وإيقاف الحملاتads_read— مطلوب لسحب البيانات التحليلية والتقاريرbusiness_management— مطلوب لإدارة الأصول والـ custom conversions
اضبط الانتهاء على "Never". رموز System User هي الرموز الوحيدة من Meta التي لا تنتهي صلاحيتها فعلاً — رموز User Access Tokens تنتهي عند 60 يوماً، رموز Page Tokens تعتمد على User Token الذي اشتُقت منه. هذا هو الهدف بأكمله من استخدام System User بدلاً من OAuth لأتمتة الخلفية.
انسخ الرمز فوراً. تعرضه Meta مرة واحدة. خزِّنه في مدير أسرار أو ملف .env مع chmod 600. لا ترتكبه في git أبداً.
الخطوة 4: ربط Ad Account و Page كأصول
System User موجود لكنه لا يملك صلاحية الوصول إلى أي شيء بعد. عليك تعيين الأصول صراحةً. في Business Settings → System Users → [System User الخاص بك] → انقر "Add Assets".
عيِّن Ad Account الخاص بك بصلاحية كاملة ("Manage Campaigns" + "Manage Performance"). عيِّن Page الخاصة بك بصلاحية كاملة. عيِّن Pixel/Dataset الخاص بك بصلاحية كاملة. إذا كان لديك عدة Ad Accounts وتريد لـ CLI أن يديرها جميعاً، عيِّن كل واحد.
عندما أعددنا هذا، عيَّنا act_975780295197610 (Ad Account الخاص بنا) و Page 1113585798495892 (صفحة EMAX Studio خاصتنا) بالإضافة إلى Pixel 1464075091373537. بادئة act_ على Ad Account IDs مطلوبة عندما تستدعي API — هي جزء من ID الفعلي، وليست اتفاقية تنسيق.
الخطوة 5: تعيين صلاحية "Page verwalten" / "Manage Page"
هذه هي الخطوة التي توقع تقريباً الجميع في المرة الأولى. الخطوة 4 عيَّنت Page كأصل، لكن مستوى الصلاحية الافتراضي هو "Anzeigen erstellen" / "Create Ads" — وهو ليس كافياً. يحتاج System User إلى "Page verwalten" / "Manage Page" لنشر creatives الإعلانية التي تشير إلى Page.
إذا تخطيت هذا، سيُعيد كل استدعاء API لإنشاء إعلان خطأ عام "permission denied" لا يذكر Page. ستقضي ساعات في فحص نطاقات الرمز وصلاحيات Ad Account بينما المشكلة الفعلية هي نقرة واحدة عميقة في إعدادات أصل Page.
انقر على Page في قائمة الأصول، مرر إلى الصلاحيات، وقم بتشغيل "Manage Page" لـ System User. احفظ.
الخطوة 6: تثبيت CLI وإنشاء ملف إعدادات
لـ Python، ثبِّت SDK الرسمي:
pip install facebook-business
لـ Node، استخدم العميل الذي يصونه المجتمع:
npm install facebook-nodejs-business-sdk
أنشئ ملف إعدادات في ~/.meta-ads/config.json (أو حيث تخزن منصتك الأسرار):
{
"access_token": "EAA...your-system-user-token",
"app_id": "910292175368026",
"app_secret": "your-app-secret",
"ad_account_id": "act_975780295197610",
"page_id": "1113585798495892",
"pixel_id": "1464075091373537",
"api_version": "v23.0"
}
اضبط الصلاحيات: chmod 600 ~/.meta-ads/config.json. حقل app_secret اختياري لرموز System User لكنه يُمكِّن توقيع appsecret_proof، الذي توصي به Meta للإنتاج.
الخطوة 7: تشغيل أول أمر اختبار
تحقق من أن كل شيء يعمل بسرد حملاتك. في Python:
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
import json
cfg = json.load(open("/path/to/config.json"))
FacebookAdsApi.init(access_token=cfg["access_token"])
account = AdAccount(cfg["ad_account_id"])
campaigns = account.get_campaigns(fields=["name", "status", "objective"])
for c in campaigns:
print(c["name"], c["status"], c["objective"])
إذا أعاد هذا قائمة (حتى قائمة فارغة، إذا لم تكن لديك حملات بعد)، فأنت قد انتهيت. إذا أثار OAuthException أو Permission denied، ارجع إلى جدول الأخطاء أدناه.
أخطاء الإعداد الشائعة وكيفية إصلاحها
هذه هي الأخطاء الثمانية التي عضَّتنا أثناء البناء. كل واحدة منها كلَّفت ساعات حقيقية. وفِّر على نفسك الألم.
| الخطأ | ما يعنيه فعلاً | الإصلاح |
|---|---|---|
Cannot use Custom Conversion with 0 events as promoted_object |
Custom Conversion الخاص بك لم يُفعَّل بعد، لذا ترفض Meta التحسين له | حسِّن لـ LANDING_PAGE_VIEWS أولاً؛ بدِّل إلى OFFSITE_CONVERSIONS بعد تفعيل 50+ حدثاً |
App must be Live, not Development |
ولَّدت رمزاً لكنك لم تنقل التطبيق إلى Live Mode أبداً | أضف URL سياسة الخصوصية + أيقونة التطبيق، ثم بدِّل App Review → Live في لوحة تحكم التطبيق |
Use Case must be Marketing API, not Other (UI يتباين) |
تسمية UI الألمانية "Werbeanzeigen mit Marketing API" تترجم إلى الإنجليزية "Marketing API". كلاهما يعمل لرموز System User. | أي حالة استخدام تعمل؛ تجاهل اسم القائمة المنسدلة وتابع |
Instagram requires EU Pay-or-Consent + Page Linkage |
الإعلانات الموضوعة على Instagram تفشل بـ HARD_ERROR على حركة EU إذا لم يكن حساب IG الخاص بك مرتبطاً بـ Page مع Pay-or-Consent مضبوط | اربط حساب Instagram Business الخاص بك بـ Page في Business Settings → Accounts → Instagram |
bid_strategy is required |
إنشاء Ad Set يفتقد حقل bid_strategy |
أضف "bid_strategy": "LOWEST_COST_WITHOUT_CAP" إلى حمولة Ad Set |
targeting_automation.advantage_audience is required |
حقل v23.0 الجديد إلزامي | أضف "targeting_automation": {"advantage_audience": 1} (أو 0) |
video_feeds placement is deprecated |
تمت إزالة هذا الموضع في v23.0 | أزل video_feeds من قائمة المواضع لديك؛ استخدم feed و instagram_reels بدلاً منه |
image_hash is required for video_data |
إبداعات الفيديو تحتاج إلى صورة مصغرة مسجَّلة كـ hash | استخرج إطاراً بـ ffmpeg -i video.mp4 -ss 00:00:01.5 -frames:v 1 thumb.jpg، ارفع عبر /adimages، استخدم الـ hash المُعاد |
خطأ Custom Conversion هو الأكثر شراسة لأن رسالة الخطأ تخبرك فنياً بما هو خطأ لكن الحل غير واضح. Custom Conversion جديد تماماً به صفر أحداث في نظام Meta. ترفض Meta تحسين حملة لشيء لا يوجد لديها بيانات تاريخية عنه. الحيلة هي إطلاق الحملة محسَّنة لـ Landing Page Views أولاً، السماح بـ 50+ تحويلاً بالتفعيل عبر CAPI، ثم تبديل promoted_object لـ Ad Set إلى OFFSITE_CONVERSIONS مع Custom Conversion ID الخاص بك. بعد ذلك، يعمل التحسين فعلاً.
سير عمل حقيقي لأول حملة
هذا ما شغَّلناه كأول اختبار حي لنا. قيم حقيقية، تدفق حقيقي، نتائج حقيقية.
إنشاء الحملة. Objective: OUTCOME_TRAFFIC (انتقلنا لاحقاً إلى OUTCOME_SALES بمجرد أن أصبح لدينا بيانات تحويل). Status: PAUSED في البداية بحيث يمكن إنشاء Ad Set و Ads تحتها قبل قلب كل شيء إلى ACTIVE في خطوة واحدة. الميزانية تعيش على مستوى Ad Set في إعدادنا.
إنشاء Ad Set. الميزانية اليومية: 1000 (سنتات = 10 دولارات/يوم). Optimization: LANDING_PAGE_VIEWS. Bid strategy: LOWEST_COST_WITHOUT_CAP. الاستهداف: بلدان ["US", "GB", "CA"]، العمر 25 إلى 55، اللغة الإنجليزية. المواضع: feed, instagram_reels, stories, marketplace. Targeting automation: {"advantage_audience": 1}.
بناء الإبداعات. ثلاث إبداعات صور وثلاث إبداعات فيديو — ستة إعلانات إجمالاً. للصور، استخدمنا مخرجات EMAX Studio الخاصة بنا (تناول طعام كلبك): ثلاثة hooks، ثلاث خلفيات بألوان البراند، جميعها 1080×1080. للفيديوهات، ثلاثة reels عمودية مدتها 15 ثانية مع ترجمات كلمة بكلمة وصوت AI، مولَّدة عبر منصتنا الخاصة (موضحة في كيفية إنشاء حملة تسويق بالذكاء الاصطناعي خطوة بخطوة). كل إبداع فيديو يحتاج إلى image_hash للصورة المصغرة — استخرج إطاراً عند 1.5 ثانية بـ ffmpeg، ارفعه إلى /adimages، واستخدم الـ hash المُعاد داخل كتلة video_data.
التفعيل. اقلب Campaign، ثم Ad Set، ثم جميع الإعلانات الستة إلى ACTIVE. عادة ما يتم إقرار مراجعة Meta في غضون 15 إلى 30 دقيقة. الإعلانات المرفوضة تظهر لكل إعلان عبر ad.get('effective_status').
التقرير اليومي. سكربت meta_daily_report.py يعمل في الساعة 7:00 صباحاً بتوقيت Berlin عبر cron. يسحب البيانات التحليلية، ينسق spend / CTR / CPM / conversions إلى رسالة Telegram، ويوقف تلقائياً أي إعلان بـ CTR أقل من 0.5% بعد 100+ ظهور. أنتجت أول 48 ساعة 4,200 ظهور، 78 نقرة (CTR 1.86%)، و 12 إكمالاً لـ Quick Scan بسعر 1.67 دولاراً لكل تحويل — إشارة كافية لتبديل التحسين من Landing Page Views إلى OFFSITE_CONVERSIONS ضد Custom Conversion QuickScanComplete في اليوم الثالث.
المزالق التي يجب تجنبها
بعض الأشياء ستحرقك. تعلَّمنا كل واحدة منها بالطريقة الصعبة.
لا تضع رموزاً ثابتة في git. حتى المستودعات الخاصة. الرموز تتسرب عبر سجلات CI، forks العامة بالخطأ، وارتكابات تمت قبل تغيير رؤية المستودع. اقرأ دائماً من متغيرات البيئة أو ملف إعدادات chmod-600 خارج المستودع.
لا تتخطى صلاحية Page Manage من الخطوة 5. الأخطاء التي تحصل عليها تبدو وكأنها متعلقة بـ Ad Account أو الرمز. إنها ليست كذلك. أعد فحص صلاحية أصل Page أولاً عندما ترى "permission denied" غامضاً على إنشاء creative.
لا تنشر مع تطبيق developer لا يزال في Development Mode. يعمل الرمز للمستخدم الذي أنشأه لكنه يفشل صامتاً لأي سياق System User آخر. انتقل إلى Live Mode قبل تشغيل أي شيء على خادم.
لا تنس image_hash لإبداعات الفيديو. بدونه، يفشل إنشاء الإعلان بأكمله مع خطأ مضلل حول video_data.
لا تتخطى CAPI إذا كنت تخطط للتوسع. تخسر pixels المتصفح 30 إلى 50% من الأحداث لـ iOS ATT و ad blockers ومنع التتبع. Server-side Conversions API يستعيد معظمها — عطلة نهاية أسبوع واحدة من العمل تسدد ثمنها في الأسبوع الأول الذي توسع فيه إنفاق الإعلانات.
الأسئلة الشائعة
كم تكلف إعداد Meta Ads CLI؟
الإعداد نفسه مجاني. Marketing API ورموز System User و Business Manager وجميع أدوات developer هي بلا تكلفة — أنت تدفع فقط مقابل الإعلانات التي تشغلها فعلاً. خطط لـ 4 إلى 6 ساعات من وقت الإعداد المرة الأولى و 30 دقيقة في أي مرة بعد ذلك.
هل يمكنني تشغيل حسابات إعلانات متعددة عبر تثبيت CLI واحد؟
نعم، وهذا أحد الأسباب الرئيسية لاستخدام الوكالات لرموز System User. أضف كل Ad Account كأصل في Business Settings، ويمكنك استهداف أي منها بتغيير ad_account_id في إعداداتك أو تمريره كمعامل. يمكن لرمز System User واحد إدارة مئات Ad Accounts عبر عدة Business Managers إذا كانت الصلاحيات في مكانها.
ماذا عن Google Ads CLI — هل الإعداد مماثل؟
المفهوم مماثل لكن إعداد Google أكثر خشونة. تتطلب Google موافقة developer token يمكن أن تستغرق 7 إلى 21 يوماً، رموز تحديث OAuth2 تنتهي صلاحيتها بشكل دوري، وطبقة إضافية من صلاحيات MCC (Manager Account). رمز System User من Meta هو فعلاً الأبسط من النظامين. إذا كنت تشغل كلتا المنصتين، أعد Meta أولاً لتعلم الأنماط.
كيف أدوِّر الرموز بأمان إذا تم اختراق أحدها؟
ولِّد رمز System User جديداً (نفس الصلاحيات، نفس انتهاء "Never")، حدِّث إعداداتك، اختبر أن الرمز الجديد يعمل، ثم اسحب القديم. تتيح لك Meta الاحتفاظ بعدة رموز نشطة لنفس System User في وقت واحد، حتى تتمكن من التدوير دون توقف. إذا تسرب رمز، اسحبه فوراً وراجع إنفاق الإعلانات الأخير عبر API للحملات غير المصرح بها.
كيف يتناسب Conversions API (CAPI) في هذا الإعداد؟
CAPI هو نظام منفصل لكن مكمل. يدير Meta Ads CLI الحملات و ad sets والإعلانات. يرسل CAPI أحداث تحويل من جانب الخادم تحسِّن تلك الإعلانات بناءً عليها. كلاهما يستخدم نفس Pixel ID. تتدفق أحداث CAPI بشكل مستقل عن أي pixel متصفح — هي أساس التتبع النظيف من ناحية GDPR لأن لا cookies تشترك فيها و PII يُجزَّأ قبل النقل. يغطي نظرة عامة على Facebook Ads بوكلاء الذكاء الاصطناعي كيف يتناسب CAPI في منصة الأتمتة الأكبر.
الخلاصة الصادقة
Meta Ads CLI ليس سحراً. إنه طريقة منضبطة لإزالة ثلاثة أشياء من سير عملك: تحديثات رمز OAuth، تسجيلات الدخول اليدوية إلى Ads Manager، وتكلفة الخطأ البشري للنقر عبر 14 إعداداً في كل مرة تطلق فيها إعلاناً. بمجرد تشغيله، تفعل في 90 ثانية ما كان يستغرق 30 دقيقة.
الإعداد مرهق لأن أدوات Meta مرهقة. لكن الخطوات حتمية. اتبع الإعداد المؤلف من 7 خطوات بدقة، انتبه للأخطاء الثمانية في الجدول، وسيكون لديك منصة إعلانات بمستوى الإنتاج بحلول نهاية فترة بعد الظهر. للصورة الأكبر لكيفية ربط CLI بالإبداعات بالذكاء الاصطناعي والتقارير اليومية، راجع نظرتنا العامة حول Facebook Ads بوكلاء الذكاء الاصطناعي و أخبار الذكاء الاصطناعي للأسبوع 18، 2026 لمعرفة ما يتحول في نظام الإعلانات هذا العام.
بمجرد تشغيل CLI، يصبح السؤال أي إبداعات تغذيه. شغِّل صفحتك المقصودة عبر فحص جاهزية AI مجاني لمدة 90 ثانية على emax.studio — تحصل على درجة، قائمة بفجوات التحويل، وموجز حملة جاهز للتشغيل في أقل من دقيقتين.