CLI
إدارة المنشورات
أنشئ المنشورات وجدولها واعرضها وعدّلها واحذفها من الطرفية: مسودات وعدة شبكات ووسائط وتجربة بلا نشر وجسم JSON كامل.
ينتمي كل منشور إلى منشأة، لذلك تمرّر معرّفها بالخيار -e. اعثر عليه بـ sofia establishments:list (انظر الحسابات).
إنشاء المنشورات
نشر منشور
بدون تاريخ يُنشر المنشور فورًا.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"الخيارات
| الخيار | الدور |
|---|---|
-e, --establishment | معرّف المنشأة (إلزامي، إلا مع --json). |
-p, --platforms | الشبكات مفصولة بفواصل (instagram,facebook,x,linkedin,tiktok)؛ إلزامي، إلا مع --json. |
-c, --content | نص المنشور. |
-s, --date | تاريخ الجدولة (ISO 8601)؛ من دونه يُنشر المنشور فورًا. |
-m, --media | معرّفات وسائط أو عناوين https مفصولة بفواصل. |
-f, --format | التنسيق: post وreel وstory وcarousel… |
-a, --account | الحساب المتصل الذي يُنشر منه. |
--draft | يحفظ مسودة لا يُرسلها شيء. |
--dry-run | يتحقق من المنشور دون كتابة أي شيء. |
--idempotency-key | يعيد تنفيذ الطلب نفسه كطلب واحد. |
-j, --json | ملف يحمل الجسم الكامل؛ يحل محل خيارات المحتوى. |
جدولة منشور
مرّر تاريخًا بصيغة ISO 8601 عبر -s, --date.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" -s 2026-11-07T09:00:00Zحفظ مسودة
يحفظ --draft المنشور دون نشره أو جدولته.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draftإضافة وسائط
يقبل -m, --media معرّفات وسائط من مكتبتك أو عناوين https مفصولة بفواصل.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
-m $MEDIA_ID,https://images.example.com/tarte-tatin.jpgبالنسبة إلى العنوان يُستنتج النوع من الامتداد: فيديو لـ mp4 وmov وwebm وm4v، وصورة فيما عدا ذلك. للرفع أولًا انظر الوسائط.
عدة شبكات في وقت واحد
اكتب الشبكات مفصولة بفواصل في -p, --platforms. تحصل كل شبكة على النص نفسه.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"تجربة بلا نشر
يتحقق --dry-run من المنشور وفق قواعد كل شبكة دون نشر أي شيء. انظر التجربة بلا نشر.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" --dry-runعدم تكرار التنفيذ
أعد تنفيذ الأمر بأمان عبر --idempotency-key: المفتاح نفسه يعطي المنشور نفسه، لا منشورين. انظر عدم تكرار التنفيذ.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
--idempotency-key brunch-2026-11-07جسم كامل من ملف
لنص مختلف لكل شبكة أو عدة وسائط أو جدولة دفعة واحدة، اكتب الجسم كاملًا في ملف ومرّره بـ -j, --json. يحلّ محل خيارات المحتوى.
sofia posts:create --json post.json{
"establishmentId": "$ESTABLISHMENT_ID",
"targets": [
{
"platform": "instagram",
"text": "Tarte tatin du jour",
"media": [{ "id": "$MEDIA_ID" }],
"format": "post"
},
{
"platform": "tiktok",
"text": "Tarte tatin du jour",
"media": [{ "url": "https://images.example.com/tarte-tatin.mp4", "type": "video" }]
}
],
"scheduledAt": "2026-11-07T09:00:00Z",
"status": "scheduled"
}عرض المنشورات
صفِّ القائمة بهذه الخيارات. الردّ مقسّم إلى صفحات: انظر ترقيم الصفحات.
-e, --establishment: هذه المنشأة فقط.--status: المنشورات بهذه الحالة فقط.--limitو--cursor: حجم الصفحة ونقطة المتابعة.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --limit 20التصفية حسب الفترة
--from و--to: نطاق تاريخ.
sofia posts:list -e $ESTABLISHMENT_ID --from 2026-11-01 --to 2026-11-30التصفية حسب الكاتب
--created-by me|app: ما كتبته بنفسك أو ما أُنشئ عبر الواجهة.
sofia posts:list -e $ESTABLISHMENT_ID --created-by appقراءة منشور وتعديله
يغيّر posts:update التاريخ (-s) أو الحالة (draft أو scheduled) أو الجسم كاملًا بـ -j.
sofia posts:get $POST_ID
sofia posts:update $POST_ID -s 2026-11-08T09:00:00Z
sofia posts:update $POST_ID --json post.jsonتغيير حالة منشور
ينقل posts:update --status المنشور من مسودة إلى مجدول، والعكس.
sofia posts:update $POST_ID --status draft
sofia posts:update $POST_ID --status scheduled -s 2026-11-08T09:00:00Z- يجدول
--status scheduled -s <التاريخ>المسودة في ذلك التاريخ. - يعيد
--status draftالمنشور المجدول إلى مسودة: يحتفظ بمحتواه ويفقد تاريخه ولن يُنشر بعد الآن.
حذف منشور
sofia posts:delete $POST_IDالبرمجة النصية مع jq
بما أن المخرجات JSON، يستخرج jq ما تحتاجه: المعرّفات والحالات ومؤشر الصفحة التالية.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'