انشر من شيفرتك. المسار نفسه، برمجيًا.

كل إجراء في لوحة التحكم هو نقطة نهاية REST. النشر، والجدولة، والحسابات، والتحليلات، وwebhooks. حزمة TypeScript SDK رسمية. خادم MCP لـ Claude Desktop وCursor وChatGPT. مفاتيح API محددة النطاق لكل مساحة عمل حتى لا يتسرب شيء.

REST API نظيفة بموارد متوقعة
حزمة TypeScript SDK على npm، ومكتبة PHP مستقلة برخصة MIT
خادم MCP لـ Claude وCursor وChatGPT (14 أداة)
مفاتيح API محددة النطاق لكل مساحة عمل ولكل إجراء
الشكل الفعلي لـ API

ثلاثة أسطر من الكود. ثلاث منصات مجدولة.

الشكل الحقيقي لاستدعاء النشر: اختر مساحة عمل، ومرّر تعليقًا ومنصات، واحصل على معرّف المنشور وحالة التسليم لكل منصة. الاستدعاء نفسه من TypeScript أو PHP أو curl.

POST/v1/posts
TypeScript
PHP
curl
import { FoPost } from '@fopost/sdk';

const client = new FoPost({ apiKey: process.env.FOPOST_API_KEY });

const accounts = await client.accounts.list({ workspaceId });

const post = await client.posts.create({
  workspaceId,
  status:     'scheduled',
  scheduleAt: '2026-09-01T09:00:00Z',
  content:    [{ text: 'Stop launching on Tuesday.', position: 0 }],
  accounts:   accounts.map((a) => ({ id: a.id })),
});
الاستجابة200 OK · 142ms
معرّف المنشورpst_01H7K3MRGB8YZ4QVW
عمليات التسليم (3)
Xمجدول · الاثنين 9:00 ص UTC
LinkedInمجدول · الاثنين 9:00 ص UTC
Blueskyمجدول · الاثنين 9:00 ص UTC
حزمة TypeScript SDK رسمية نتولى صيانتها
نطاقات لكل مفتاح: المنشورات، الحسابات، التحليلات
استدعاءات webhook لكل حدث
تكلفة ربط واجهات API لـ 33 منصة بنفسك

كتبت التكامل مع Twitter. ثم غيّرت LinkedIn كل شيء.

أطلقت النشر على Twitter في عطلة نهاية أسبوع. ثم استغرقت LinkedIn ثلاثة أيام، واستغرق مسار OAuth أسبوعًا، ولدى Instagram أسوأ API في العالم، ولم تبدأ بعد مع TikTok.

كل منصة تتعطل بطريقة مختلفة في اليوم نفسه. يتغير حد المعدل في Bluesky. تضيف Threads قيدًا على نوع الوسائط. يبدّل Hashnode إصدارات GraphQL. تكاملك يحترق وأنت مشغول بإطلاق المنتج.

بنيت OAuth يدويًا لـ 5 منصات. تخزّن رموز التحديث في قاعدة بياناتك. والآن أنت مسؤول عن تحديث الرموز، والتخزين المشفّر، والتعامل مع المفاتيح بمعايير شبيهة بـ SOC 2. ليس هذا العمل الذي أردت أن تكون فيه.

هل هذا مناسب لك؟

هل الـ API مناسبة لك؟

مناسب لك إذا

  • تبني منتجًا يحتاج إلى النشر على وسائل التواصل نيابةً عن مستخدميك
  • تدير مسار عمليات محتوى ينطلق من CI أو نظام CRM أو الخادم الخاص بك
  • تريد ربط FoPost بـ Claude Desktop أو Cursor أو ChatGPT عبر MCP وترك الوكيل ينشر عنك
  • تبني أدوات للوكالات وتريد إتاحة النشر على وسائل التواصل لعملائك دون إدارة تكاملات 33 منصة

غير مناسب لك إذا

  • تنشر يدويًا فقط من لوحة التحكم. الـ API أكثر مما تحتاج، والمحرر هو المكان المناسب.
  • تحتاج إلى استضافة API كاملة بعلامة بيضاء (your-brand.api.com). تحدث إلينا بشأن اتفاقية للمؤسسات.
ما الذي بداخله

API واحدة. 32 منصة. ونحن نتحمل الأعطال.

تكتب وفق مخطط واحد. ونحن نوزعه على 32 منصة، ونحدّث الرموز، ونتعامل مع حدود المعدل، ونسلّم المنشور، ونُظهر الأخطاء. وأنت تطلق الميزة.

REST نظيفة ومتوقعة

موارد متوقعة (المنشورات، الحسابات، مساحات العمل، عمليات التسليم، webhooks). شكل واحد ثابت للطلب والاستجابة في كل نقاط النهاية، بإصدار تحت /v1.

حزمة TypeScript SDK، ومكتبة PHP مستقلة

تغلّف TypeScript (npm install @fopost/sdk) هذه الـ REST API. أما PHP (composer require fopost/social-core، برخصة MIT) فمستقلة: تنشر مباشرة على 11 منصة باستخدام بيانات اعتمادك، دون حساب FoPost.

خادم MCP لمساعدي الذكاء الاصطناعي

يربط npx -y @fopost/mcp مساحة عملك في FoPost بـ Claude Desktop وCursor وChatGPT وأي وكيل متوافق مع MCP. 14 أداة متاحة: النشر، والجدولة، والتحليلات، وإدارة الحسابات. المصادقة عبر مفتاح API.

مفاتيح محددة الصلاحيات لكل مساحة عمل

مفاتيح لكل مساحة عمل مع نطاقات للإجراءات: posts وaccounts وworkspaces وlabels وpublish وdeliveries وwebhooks وanalytics وautomations. JWT للواجهة، ومفاتيح API للشيفرة. لا مفتاح شامل على مستوى الوكالة.

webhooks صادرة لكل حدث

اشترك في publish.success وpublish.failed وaccount.disconnected وaccount.reconnected وautomation.triggered وغيرها. كل حمولة موقّعة لتتحقق من أنها جاءت منا، وتُعاد محاولة عمليات التسليم الفاشلة مع تراجع أُسّي.

حدود معدل مصممة للعمل الحقيقي

يقع الحد أعلى بكثير مما يحتاجه تكامل النشر، ويرتفع السقف تلقائيًا كلما ربطت حسابات أكثر. إذا تجاوزته تحصل على استجابة 429 واضحة مع Retry-After لتتراجع بناءً عليها، لا إسقاطًا صامتًا ولا تعليقًا للمفتاح.

كيف يعمل

أنشئ. ثبّت. انشر.

01

أنشئ مفتاح API

في مساحة العمل التي تريد النشر منها، أنشئ مفتاح API بالنطاقات التي تحتاجها (posts وaccounts تكفي للبدء). انسخه مرة واحدة. وتعامل معه كسرّ.

02

ثبّت حزمة SDK

npm install @fopost/sdk. أو تخطَّ حزمة SDK واستدعِ نقاط نهاية REST مباشرة. أو تخطَّ الاثنين واستخدم خادم MCP من Claude.

03

نفّذ الاستدعاء

ثلاثة أسطر: استيراد، وإنشاء نسخة، وإنشاء منشور. يعيد استدعاء النشر معرّف المنشور وحالة التسليم لكل منصة. يصل المنشور إلى قائمة الانتظار في لوحة التحكم، ويُنشر في الوقت المجدول.

04

اشترك في webhooks (اختياري)

أضف رابط webhook في إعدادات مساحة العمل. اشترك في publish.success وpublish.failed. تتلقى نقطة النهاية لديك طلب POST موقّعًا عند نجاح كل تسليم أو فشله. والآن يبقى نظامك متزامنًا.

مقارنة بالبدائل

لماذا يتفوق هذا على بناء تكاملات 33 منصة يدويًا.

ثلاث طرق يتعامل بها المطورون مع النشر متعدد المنصات اليوم. واحدة فقط منها API حقيقية مع حزم SDK وخادم MCP، ومع جهة أخرى تتحمل الأعطال.

بنفسك: واجهات API لـ 33 منصة

ما يحاوله المؤسسون التقنيون

  • مسار OAuth لكل منصة. تخزين الرموز. تحديث الرموز. التعامل المشفّر مع الأسرار.
  • حد معدل مختلف، وشكل أخطاء مختلف، وقيود وسائط مختلفة لكل منصة.
  • عندما تغيّر LinkedIn الـ API الخاصة بها، تغيّر أنت شيفرتك. والأمر نفسه مع Bluesky وThreads وHashnode.
  • تتوقف عن إضافة المنصات بعد Twitter وLinkedIn. وتبقى الـ 29 الأخرى على قائمة الأمنيات.

API الخاصة بـ Buffer أو Hootsuite

ما تقدمه الأدوات الراسخة

  • توجد API عامة لكنها تبدو كفكرة لاحقة. حزم SDK يصونها المجتمع، أحيانًا.
  • لا خادم MCP. ربطها بـ Claude أو Cursor يتطلب تكاملًا مخصصًا.
  • التسعير لكل مقعد يجعل الـ API مركز تكلفة للوكالات.
FoPost

API وحزم SDK وMCP من FoPost

ما تريده فعلًا

  • مخطط REST واحد يغطي 32 منصة، وإضافة المتصفح تغطي Substack التي لا تملك API للكتابة.
  • حزمة TypeScript SDK نتولى صيانتها، ومكتبة PHP برخصة MIT.
  • خادم MCP متاح اليوم: npx -y @fopost/mcp في Claude Desktop وCursor وChatGPT.
  • مفاتيح محددة النطاق لكل مساحة عمل، وwebhooks موقّعة، وإعادة محاولة مدمجة. ونحن نتحمل الأعطال.

ينشر على كل الشبكات الكبرى

الأسئلة الشائعة

هل API مُضمَّنة؟

نعم، يحصل كل حساب على صلاحية قراءة وكتابة كاملة. نقاط النهاية والنطاقات وحزم SDK متطابقة للجميع. ويرتفع سقف الطلبات تلقائيًا كلما ربطت حسابات أكثر.

أين مرجع الـ API؟

يحتوي fopost.com/docs/api على المرجع الكامل مع أمثلة شيفرة بـ TypeScript وPHP وcurl لكل نقطة نهاية.

هل حزم SDK مدفوعة؟

لا. حزمة TypeScript (@fopost/sdk) مجانية على npm وتتصل بهذه الـ API المضمّنة في كل حساب. ومكتبة PHP (composer require fopost/social-core، برخصة MIT) مجانية ومستقلة: تنشر مباشرة على 11 منصة باستخدام بيانات اعتمادك ولا تحتاج إلى حساب FoPost إطلاقًا. وهي أيضًا أساس حزمة Laravel الخاصة بنا.

ماذا عن MCP لـ Claude وCursor وChatGPT؟

متاح اليوم باسم @fopost/mcp على npm. يمنحك npx -y @fopost/mcp خادم MCP عبر stdio، وجّهه إلى أي عميل متوافق مع MCP (Claude Desktop، Cursor، ChatGPT desktop، Goose، Continue)، وصادق باستخدام FOPOST_API_KEY، فتحصل على 14 أداة: النشر، والجدولة، وعرض المنشورات، والحصول على التحليلات، وإدارة الحسابات، وغيرها.

كيف تعمل نطاقات مفاتيح API؟

كل مفتاح مرتبط بمساحة عمل واحدة، مع قائمة بنطاقات الإجراءات التي تختارها عند الإنشاء: posts وworkspaces وaccounts وlabels وpublish وdeliveries وwebhooks وanalytics وautomations. المفتاح الذي لا يملك نطاق "accounts" لا يستطيع عرض الحسابات أو تعديلها حتى لو أذن المستخدم بتلك الإجراءات. تُفحص النطاقات على الخادم في كل استدعاء.

ما حدود المعدل التي يجب أن أخطط لها؟

حركة النشر العادية لن تقترب من الحد في أي خطة. يعتمد السقف على الخطة المرتبطة بمفتاحك، وتعمل Business على أعلاها لأنها الفئة الأكثر اعتمادًا على الأتمتة عبر الـ API. تعامل مع 429 كما تفعل مع أي API: كل استجابة تحمل X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset، وتضيف 429 الترويسة Retry-After، فتراجع وأعد المحاولة ولن تحتاج إلى التفكير في الأمر مجددًا. لا ننشر العتبة الدقيقة، لأنها ضابط متغير لمنع إساءة الاستخدام وليست وعدًا.

هل توقّعون حمولات webhook؟

نعم. يحمل كل طلب POST من webhook ترويسة توقيع مشتقة من النص وسرّ webhook الخاص بك، لتتحقق من أن الحمولة جاءت منا قبل الوثوق بها. يشرح التوثيق كيفية التحقق. وتُعاد محاولة عمليات التسليم الفاشلة عدة مرات مع تراجع أُسّي قبل أن نتوقف.