مطوّرو المنتجات
أضف النشر إلى منتجك.
يضيف تطبيق يوميات خيالي إجراءً يؤكّده المستخدم لجدولة منشورات اجتماعية وعرض النتائج.
منتجك + SOSOAPI
مسار تكامل توضيحي- منتجكالإعداد والتأكيد
- SosoAPIجدولة منشور واحد مؤكّد
- حساب تواصل اجتماعيمتابعة النتيجة
ثلاث خطوات
إعداد المحتوى
جمع النص والصور داخل منتجك.
دع المستخدمين يؤكدون
عرض الحساب والمحتوى والوقت قبل الجدولة.
إعادة النتائج
عرض التقدم والنتيجة النهائية للنشر.
يصبح النشر الاجتماعي جزءاً من منتجك.
عرض الشرح التطبيقي الكامل
السيناريو
أضف إجراء «جدولة هذا التحديث» مقصوداً وقابلاً للمراجعة لمنتج يوميات خيالي. أبقِ مساحة عمل المستخدم وحسابه المتصل المحدد ظاهرين، واعرض الحالة المُعادة دون الإيحاء بالنشر لدى المزوّد.

قبل البدء
- أنشئ حساب SosoAPI وتحقّق منه ثم اختر مساحة العمل المقصودة.
- أنشئ مفتاح API في App Settings → Agents & API Access. خزّنه كـ SOSOAPI_API_KEY في بيئة الخادم؛ تستخدم أمثلة JavaScript هذه Node.js 20+ ولا تتطلب مستودع مصدر SosoAPI.
- اختر Workspace UUID و Threads social-account UUID حقيقيين من النطاق المفوّض الحالي فقط. يجب أن يكون الحساب مؤهلاً لمنشور نصي على Threads.
- يحتاج مالك مفتاح API إلى وصول editor أو owner لمساحة العمل المختارة. أبقِ المفتاح على خادمك، خارج شيفرة المتصفح و JSON الطلب والسجلات.
مدخلات توضيحية
- منتج خيالي
- Harborlight Journal · تصور لتطبيق تدوين يوميات خاص؛ لا يُدّعى وجود تكامل حقيقي.
- قصد المستخدم
- جدولة منشور منتج واحد تمت مراجعته لحساب Threads محدد في وقت محلي مستقبلي.
- نص توضيحي
- «ملاحظة صغيرة لوقت لاحق: يفسح Harborlight Journal المجال لتأمّلات يومية أقصر. احتفظ بفكرة واحدة؛ ودع الباقي للغد.»
- النطاق المطلوب أثناء التشغيل
- <workspace-uuid> و<threads-social-account-uuid> من النطاق الحالي المفوّض من المستخدم؛ لا تستنتج المعرّفات أبداً.
- الجدولة
- <future ISO-8601 instant with offset>، مع ضبط display_timezone على Asia/Hong_Kong.
- هوية إعادة المحاولة
- <unique stable idempotency key for this one user intent>؛ أعِد استخدامه فقط عند إعادة محاولة الطلب نفسه بأمان.
شرح تطبيقي
تصميم تأكيد المنتج قبل استدعاء API
فتح هذا القسم في SosoAPIفي تطبيق SosoAPI، اختر مساحة العمل المقصودة وراجع حسابها المتصل. في نموذج منتجك، اعرض مساحة العمل والحساب اللذين اختارهما المستخدم، ولا تختارهما بصمت.
اعرض النص والحساب والوقت المحلي والمنطقة الزمنية بدقة في خطوة تأكيد. اشترط اختيار الشخص Schedule؛ فتح النموذج يجب ألا يرسل شيئاً.
ما الذي تتوقعه
يستطيع إنسان رؤية الهدف والتوقيت قبل الكتابة. نموذج المنتج الخيالي تمرين تصميم، وليس تكاملاً مثبّتاً لدى عميل.
قراءة Scheduled Posts الحالية من خادمك
استبدل <workspace-uuid> بمعرّف مساحة العمل المحددة ثم شغّل طلب القراءة فقط هذا على خادمك:
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/list", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({"workspace_id":"<workspace-uuid>"}) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.استخدم البيانات المُعادة لتحديث قائمة منتجك. أبقِ تأكيد المستخدم منفصلاً عن هذه القراءة.
ما الذي تتوقعه
تحصل على المنشورات الحالية لمساحة العمل أو خطأ تفويض/تحقّق. طلب القراءة فقط هذا لا ينشئ منشورات.
الإرسال فقط بعد تأكيد المستخدم الصريح
افتح Calendar واختر New Post لمقارنة خطوة المراجعة بالإجراء نفسه داخل التطبيق.
استبدل كل عنصر نائب بمعرّفاتك المفوّضة وطابع ISO زمني مستقبلي مع إزاحة ومفتاح منع تكرار فريد. راجع الحساب والنص والوقت قبل طلب الخادم.
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/create", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({ "workspace_id": "<workspace-uuid>", "social_account_id": "<threads-social-account-uuid>", "caption": "A small note for later: Harborlight Journal is making room for shorter daily reflections. Keep one thought; leave the rest for tomorrow.", "hashtags": [], "media": [], "provider_payload": {"platform": "threads", "publish_options": {"post_type": "TEXT"}}, "scheduled_at": "<future ISO-8601 instant with offset>", "display_timezone": "Asia/Hong_Kong", "idempotency_key": "<unique-stable-key-for-this-intent>" }) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.تشغيل هذا الطلب ينشئ جدولاً حقيقياً. لا ترسل إلا بعد تأكيد المستخدم، ولا تكشف مفتاح API للمتصفح أبداً.
ما الذي تتوقعه
تحدد الاستجابة المقبولة الصالحة Scheduled Post الناتج؛ ولا تثبت نشر المزوّد. رفض إمكانية أونطاق/حساب غير صالح أوحمولة غير مدعومة أوجدول مرفوض يجب إظهاره خطأً، لا نجاحاً.
عرض الحالة المُعادة ومنح المستخدم خطوة متابعة آمنة
فتح هذا القسم في SosoAPIخزّن معرّف Scheduled Post المُعاد واعرض حالته الحالية ووجهته وجدوله في المنتج.
اربط المستخدم بتفاصيل Scheduled Post المطابق. إذا احتاج التسليم إلى شخص، اربط عنصر Needs Attention بدلاً من إعادة الإرسال بصمت.
لا تصف الطلب بأنه نُشر حتى تُسجّل الحالة النهائية التي أكّدها مزوّد الخدمة.
ما الذي تتوقعه
يميّز المنتج إيصال الطلب عن ملاحظات scheduled و publishing و published و failed و unknown. تُسوّى النتائج المجهولة مقابل المنشور الموجود قبل كتابة جديدة.
إيصال طلب. ثم نتيجة نشر.
تعرض الأمثلة أدناه حقول استجابة API مختارة بقيم خيالية. بعد إنشاء جدول، احفظ post.id واستخدمه لفحص نتيجة المنشور نفسه.
1. استجابة الإنشاء
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "scheduled",
"scheduled_at": "2100-01-05T10:00:00+08:00",
"published_at": null,
"permalink": null
},
"deduped": false
}2. قراءة المنشور نفسه
POST /studio-api/scheduled-posts/get
{
"id": "10000000-0000-4000-8000-000000000001"
}بعد تأكيد مزوّد الخدمة، يمكن أن تتضمن استجابة التفاصيل:
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "published",
"published_at": "2100-01-05T02:00:08Z",
"permalink": "https://www.threads.net/@example/post/EXAMPLE"
},
"delivery": {
"stage": "terminal",
"message": "Published on Threads."
}
}post.status- استخدم الحالة الفعلية، مثل scheduled أو publishing أو published أو failed. عند انقطاع الاتصال، اقرأ المنشور نفسه قبل تحديد ما حدث.
post.permalink- رابط منشور مزوّد الخدمة عند توفره؛ وقد يكون null. الرابط أعلاه مثال.
delivery / outcomes- تعرض استجابة التفاصيل تقدم النشر ونتائج المنصة المتاحة للمنشور. إذا فشل، افحص التفاصيل و Needs Attention قبل تحديد الخطوة التالية.
هذه أمثلة للحقول وليست إيصال نشر فعلياً. لا تستدعي هذه الصفحة أي API.
معنى كل حالة
Submittedاستجابة الطلب- تم استلام طلبك. افحص حالة المنشور الحالية قبل اعتباره مجدولاً أو منشوراً.
Scheduledتفاصيل المنشور- قُبل Scheduled Post لوقت مستقبلي. أبقِ وجهته ووقته المجدول ظاهرين أثناء انتظاره.
Publishingتفاصيل المنشور- التسليم جارٍ. انتظر نتيجة نهائية؛ حالة التنفيذ الجاري لا تعني النجاح.
Publishedتفاصيل المنشور- استخدم هذا فقط بعد تسجيل SosoAPI تأكيداً نهائياً من مزوّد الخدمة لـ Scheduled Post.
Failedتفاصيل المنشور- يتطلب الفشل النهائي مراجعة. افحص تفاصيل المنشور والإجراء المتاح قبل تحديد ما ستغيّره أو تعيد محاولته.
Unknownما يعرضه التطبيق- إذا انقطع اتصال وكانت النتيجة غير واضحة، افحص Scheduled Posts و Needs Attention قبل الإرسال مجدداً.
أدلة ذات صلة
يتضمن الشرح أمثلة API على الخادم. اضبط معرّفاتك المفوّضة ومفتاح API قبل تشغيلها؛ الصفحة نفسها لا ترسل طلبات.
جرّب سير عملك الأول.
أنشئ حسابك وابدأ بخطة Free.