افحص تفرد الاسم المختصر للرابط وتنسيقه
تحققوا من الاسم المختصر المقترح للرابط قبل وصوله إلى نظام إدارة المحتوى أو مسار النشر أو جدول التوجيه.
شغّل الأداة مجانًا
تفرض الأداة أولا تنسيقا واضحا من حروف صغيرة وأرقام وواصلات مفردة، ثم تقارن المقترح الصحيح بقائمة الأسماء الحالية التي تقدمونها. يؤدي التنسيق غير الصحيح دائما إلى خطأ، حتى إذا كان النص نفسه موجودا في القائمة، فلا يلتبس الاسم المشوه مع تعارض عادي. وتبين النتيجة الصحيحة بوضوح ما إذا كان الاسم فريدا وما إذا وجد تطابق تام.
تحققوا من التنسيق قبل فحص الإتاحة
لا تفيد نتيجة التفرد إلا عندما تكون القيمة المقترحة صالحة لتصبح جزءا آمنا من URL. أدخلوا الاسم المرشح وقدموا الأسماء التي يستخدمها موقعكم أو تطبيقكم أو مستودع المحتوى حاليا. تقبل الأداة الحروف الإنجليزية الصغيرة من a إلى z، والأرقام من 0 إلى 9، والواصلات بين مجموعات غير فارغة. وترفض الحروف الكبيرة والمسافات والشرطة السفلية وعلامات الترقيم والواصلات في البداية أو النهاية أو بصورة متكررة. ترتيب الفحص صارم، إذ يجري التحقق من التنسيق قبل البحث في القائمة. لذلك ينتج المرشح غير الصحيح الموجود أيضا في القائمة خطأ إدخال، لا نتيجة تعارض عادية. ويوفر ذلك قاعدة ثابتة للنماذج وعمليات الاستيراد الجماعي والنشر. التزموا بحد الطول وأرسلوا المجموعة الحالية في مصفوفة من السلاسل؛ فلا تغير الأداة ما أرسلتموه بأي تسوية خفية.
افهموا نتائج التطابق التام بصورة صحيحة
عندما يكون تنسيق المرشح صحيحا، تتضمن الاستجابة الاسم المرسل وتؤكد صحة تنسيقه وتعرض قيمتين متكاملتين للتفرد والتعارض. يوجد تعارض إذا ظهر النص نفسه تماما مرة واحدة على الأقل في القائمة المقدمة. والمقارنة تامة عن قصد؛ فلا تحذف الأداة البادئات، ولا تفك ترميز محارف URL، ولا تقص عناصر القائمة، ولا تعتبر العبارات المتشابهة صفحة واحدة. فمثلا يظل product-guide وproduct-guides مسارين صحيحين مختلفين. يحافظ هذا السلوك على نتيجة حتمية ويترك لتطبيقكم قواعد الأسماء المحجوزة وبادئات اللغات وإعادة التوجيه وقيود قاعدة البيانات. ولا تغير العناصر المكررة داخل القائمة النتيجة. ولأن القائمة تمثل مصدر الحقيقة الحالي للطلب، حدثوها قبل الفحص عندما يستطيع عدة محررين أو مهام نشر المطالبة بالمسارات في الوقت نفسه.
استخدموا الفحص في سير النشر والتوزيع
نفذوا الفحص في أقرب وقت ممكن من لحظة حجز المسار. في محرر المحتوى، يمكنكم التحقق بعد توليد الاسم من العنوان، ثم تكرار العملية عندما يغيره المحرر. وفي بناء المواقع الثابتة، اجمعوا مسارات الإخراج أولا ثم اختبروا كل مقترح مقابل المسارات المقبولة. وفي API أو عمليات الترحيل، تعاملوا مع أخطاء الإدخال بوصفها مشكلات جودة تستلزم التصحيح، ومع التعارض بوصفه قرار تسمية. العملية حتمية ولا تستخدم الشبكة ولا تخزن شيئا، ولذلك تناسب الاختبارات وعمليات البناء القابلة للتكرار. لكنها أداة فحص وليست خدمة حجز؛ فقد تطالب عملية أخرى بالاسم بعد قراءة قائمتكم. وعند وجود عمليات كتابة متزامنة، ينبغي أيضا فرض قيد تفرد في قاعدة البيانات أو إجراء حجز ذري عند الحفظ.
حالات الاستخدام
منع تعارض المسارات في نظام المحتوى
تحققوا من المسار الذي يقترحه المحرر ونبهوا عندما تستخدم مقالة حالية الاسم نفسه تماما.
ضبط بناء المواقع الثابتة
قارنوا الأسماء المولدة بمسارات الإخراج المقبولة قبل كتابة الملفات أو نشرها.
تنظيف مدخلات الترحيل
افصلوا الأسماء القديمة سيئة التنسيق عن الأسماء الصحيحة التي تتعارض فقط أثناء ترحيل المحتوى.
الأسئلة الشائعة
ما تنسيق الاسم المختصر المقبول؟
حرف صغير أو رقم واحد فأكثر، ويمكن الفصل بواصلات مفردة. ولا يجوز أن تأتي الواصلة في البداية أو النهاية أو تتكرر.
ماذا يحدث إذا كان الاسم غير الصحيح موجودا أيضا في القائمة؟
تعيد الأداة خطأ إدخال لأن التحقق من التنسيق يسبق دائما فحص التعارض.
هل تتجاهل المطابقة الفرق بين الحروف الكبيرة والصغيرة؟
لا، فالمقارنة تامة. الحروف الكبيرة غير صالحة أصلا في المقترح، ولا تجري تسوية قيم القائمة.
هل تؤدي نتيجة التفرد إلى حجز الاسم؟
لا، فهي تفحص القائمة المرسلة فقط. استخدموا كتابة ذرية أو قيد تفرد لمنع المطالبات المتزامنة.
ما تكلفة طلب API؟
السعر الأساسي هو $0.002 لكل طلب. ويمكن تشغيل المنطق الحتمي نفسه داخل المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/slug-uniqueness-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}'const res = await fetch("https://api.kit.forhosting.com/web/slug-uniqueness-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/slug-uniqueness-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/slug-uniqueness-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/slug-uniqueness-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.slug_uniqueness_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_existing_slugs | 10000 |
max_slug_length | 200 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |