Webhook الإرسال
عندما يرسل Rankfender مقالًا منشورًا إلى موقعك بطلب POST: الترويسات، وخيارات المصادقة، وحقول البيانات المرسلة، والرد المتوقع، والاختبار.
مع Webhook الإرسال، يرسل Rankfender كل مقال إلى عنوان على موقعك لحظة نشره. تحدد العنوان والمصادقة والترويسات الإضافية على بطاقة «تكامل الويب الحديث»، في تبويب «دفع (Webhook)»: راجع الويب الحديث.
متى يتصل Rankfender بنقطة النهاية لديك
- في كل مرة يُنشر فيها مقال من المشروع: سواء نشرته أنت من «المحتوى»، أو نشره الطيار الآلي عندما يكون النشر التلقائي مفعّلًا.
- فقط عندما يكون «تفعيل Webhook» مفعّلًا ويكون «رابط Webhook» محفوظًا.
- إذا كان WordPress مربوطًا أيضًا بالمشروع، تذهب المقالات إلى WordPress بدلًا من ذلك.
- يوجد حدث واحد فقط: article.published. لا تُرسل التعديلات ولا عمليات الحذف.
الترويسات
| الترويسة | القيمة |
|---|---|
| Content-Type | application/json |
| X-Rankfender-Event | article.published |
| X-Rankfender-Domain | عنوان موقع المشروع |
| X-Rankfender-Test | true، في طلبات الاختبار فقط |
| ترويساتك المخصّصة | كل ترويسة في «ترويسات مخصّصة (اختياري)»، تُرسل كما كتبتها |
خيارات المصادقة
| «طريقة المصادقة» | ما يرسله Rankfender |
|---|---|
| بدون | لا بيانات اعتماد. |
| مفتاح API | x-api-key: <مفتاحك> |
| Bearer Token | Authorization: Bearer <رمزك> |
| Basic Auth | Authorization: Basic <القيمة التي أدخلتها>. أدخل القيمة مرمّزة مسبقًا بـ base64 (user:password). |
| سرّ Webhook | x-webhook-secret: <سرّك> |
الحمولة
متن JSON يحتوي المقال في المستوى الأعلى ومرة أخرى تحت article، إضافةً إلى المشروع تحت domain. الحقل content بصيغة HTML، ويُنظَّف قبل الإرسال؛ والمقال الذي يقل محتواه عن 100 حرف لا يُرسل. وقيمة author هي «Rankfender» ما لم يكن للمقال مؤلف.
{
"event": "article.published",
"title": "…",
"slug": "…",
"content": "<h2>…</h2><p>…</p>",
"excerpt": "…",
"meta_description": "…",
"meta_title": "…",
"keywords": ["…"],
"featured_image": "https://…",
"author": "Rankfender",
"published_at": "2026-10-14T09:12:00.000Z",
"seo_data": { "title_tag": "…", "meta_keywords": "…", "canonical_url": "" },
"custom_data": { "article_id": "…", "generated_by": "Rankfender", "word_count": 1850 },
"article": {
"id": "…", "title": "…", "slug": "…", "content": "…", "excerpt": "…",
"meta_description": "…", "featured_image": "https://…", "cover_image_url": "https://…",
"scheduled_date": null, "published_at": "…", "target_keyword": "…"
},
"domain": { "id": "…", "url": "https://your-site.com", "name": "…" }
}ما يجب أن تردّ به نقطة النهاية لديك
- أي حالة من 200 إلى 299 تُعدّ تسليمًا ناجحًا. وأي حالة أخرى تعلّم النشر كفاشل، مع «Webhook returned <status>» وبداية ردّك.
- اختياري: ردّ بـ JSON يعطي id (أو post_id) وurl (أو permalink أو external_url). يحفظ Rankfender هذا الـ URL عنوانًا منشورًا للمقال. ودونه، يكون العنوان هو URL موقعك متبوعًا بالـ slug.
- احفظ المقال في نظام إدارة المحتوى أو قاعدة البيانات لديك: لا يحتفظ Rankfender بأي شيء على جانبك.
HTTP/1.1 200 OK
Content-Type: application/json
{ "id": "123", "url": "https://your-site.com/blog/your-article" }الاختبار
يرسل «اختبار Webhook» مقالًا نموذجيًا بعنوان «Rankfender Webhook Test» مع X-Rankfender-Test: true وcustom_data.test بقيمة true، لتتمكن نقطة النهاية لديك من تجاهله. عند النجاح تظهر «نجح اختبار Webhook! استجابت نقطة النهاية برمز 2xx.»؛ وبعد عمليات التسليم الفعلية، تعرض «آخر استدعاء ناجح:» التاريخ.
مهم
يُرسل الاختبار من متصفحك، لذا يجب أن تقبل نقطة النهاية لديك الطلبات عبر المصادر (CORS) من app.rankfender.com لينجح الاختبار. أما عمليات التسليم الفعلية فتأتي من خوادم Rankfender ولا تتأثر بذلك.