احسب الروابط الداخلية والخارجية
قسّم روابط صفحتك إلى داخلية وخارجية: من خمسة روابط، ثلاثة على نطاقك واثنان خارجه تعطي نسبة 0.6 إلى 0.4. تُحسب الروابط النسبية داخلية، ويُحسب النطاق الفرعي خارجيًا، ويظهر حكم كل رابط. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- اسم النطاق
- https://example.com
- اسم النطاق
- example.com
- إجمالي الروابط
- 5
- الروابط الداخلية
- 3
- الروابط الخارجية
- 2
تصنّف هذه الأداة كل رابط مقدَّم وفق اسم مضيف موقعكم إلى رابط داخلي أو خارجي، ثم تعرض الإجماليات والنسب ونتيجة كل عنصر. وتقبل قائمة استخرجتموها مسبقًا من صفحة، بما فيها المراجع النسبية مثل /about و#details وعناوين URL المطلقة. استخدموها لمراجعة بنية روابط الصفحة، أو للتحقق من مسار الاستخراج، أو لتحويل قائمة أولية إلى مقاييس متسقة من دون تنزيل الصفحة أو زحف الموقع.
جهّزوا نطاق الموقع وقائمة روابط الصفحة
ابدؤوا باسم المضيف الذي يعرّف موقعكم وبعناوين URL للروابط المجموعة من صفحة واحدة. ويمكن أن تجمع القائمة بين العناوين المطلقة، والعناوين النسبية إلى البروتوكول، والمسارات النسبية إلى الجذر، والمراجع النسبية إلى المسار، وروابط الاستعلام فقط، وروابط الأجزاء. تُحل المراجع النسبية بالاستناد إلى عنوان الموقع المقدَّم، ولذلك تكون /services وteam و?
يجب أن يكون كل عنصر سلسلة غير فارغة قابلة للتحليل كمرجع URL. لا تنزّل الأداة HTML ولا تكتشف الروابط بنفسها عمدًا، وبذلك تبقى العملية حتمية وتتيح لكم تحليل قوائم صادرة عن زاحف أو تصدير متصفح أو CMS أو حزمة اختبارات أو جدول بيانات. أدرجوا كل ظهور إذا أردتم تمثيل تكرار الروابط في الصفحة.
فإذا ظهر المقصد نفسه ثلاث مرات حُسب ثلاث مرات. وتُرفض القائمة الفارغة بدلًا من عرض نسبة مضللة مقدارها صفر إلى صفر.
افهموا آلية التصنيف وحساب النسب
ولا تتأثر المقارنة بحالة الأحرف لأن تحليل URL يوحّد أسماء المضيفين. كما لا تغيّر المسارات أو سلاسل الاستعلام أو الأجزاء أو بيانات الاعتماد أو المنافذ هذا التصنيف. ويُعد الرابط المؤدي إلى اسم مضيف مختلف خارجيًا، ويشمل ذلك نطاقًا فرعيًا مثل blog.example.com عندما يكون الموقع المضبوط هو example.com.
فمثلًا تنتج ثلاثة روابط داخلية من أصل أربعة نسبة داخلية مقدارها 0.75. وتُقرّب النسب إلى ست منازل عشرية لضمان مخرجات ثابتة قابلة للمعالجة آليًا، ويكون مجموعهما واحدًا. تحتفظ مصفوفة links بترتيب الإدخال وتعرض التصنيف المخصص لكل سلسلة أصلية، مما يسهّل تتبع أي عدد غير متوقع.
استخدموا النتيجة في مراجعة SEO
من الأفضل التعامل مع الأعداد كمؤشر تشخيصي لا كهدف عام للترتيب. تساعد الروابط الداخلية الزوار والزواحف على بلوغ الصفحات ذات الصلة وفهم التسلسل الهرمي ونقل الموثوقية عبر الموقع. أما الروابط الخارجية فيمكن أن تدعم الادعاءات وتوجّه القراء إلى مصادر أولية مفيدة.
تستحق الصفحة ذات التوازن غير المعتاد المراجعة، لكن التوازن الصحيح يتوقف على غرضها؛ فمركز المصطلحات وصفحة المنتج والمقال البحثي تستخدم الروابط بطرق مختلفة بطبيعتها. قارنوا قوالب صفحات متشابهة، وراقبوا التغييرات مع الزمن، وافحصوا تصنيف كل عنصر قبل استخلاص النتائج. شغّلوا العداد في الأتمتة بعد خطوة الاستخراج واحفظوا النتيجة إلى جانب URL الصفحة ووقت الزحف.
ويمكنكم تمييز الصفحات الخالية من الروابط الداخلية، أو اكتشاف قوالب أضافت فجأة وجهات خارجية كثيرة، أو التحقق من بقاء روابط التنقل على اسم المضيف المقصود بعد الترحيل. ولأن هذه الإمكانية لا تطلب الشبكة ولا تستخدم بيانات متغيرة، فإن الإدخال نفسه يعطي المخرج نفسه دائمًا.
حالات الاستخدام
راجعوا صفحة هبوط
قيسوا توازن الروابط الداخلية والخارجية وافحصوا بدقة كيفية تصنيف كل عنوان URL مستخرج.
تحققوا من مخرجات الزاحف
أضيفوا أعدادًا حتمية إلى مسار استخراج الروابط واكتشفوا الوجهات غير المتوقعة خارج النطاق.
افحصوا ترحيل الموقع
اعثروا على قوائم ما زالت روابطها تشير إلى اسم مضيف قديم بعد تغيير النطاقات أو البيئات.
الأسئلة الشائعة
ما تكلفة الاستخدام؟
يمكنكم تشغيل الأداة مجانًا في متصفحكم من هذه الصفحة.
هل الروابط النسبية داخلية؟
نعم. تُحل المراجع النسبية إلى الجذر أو المسار ومراجع الاستعلام فقط والأجزاء فقط وفق الموقع المقدَّم، ولذلك تكون داخلية.
هل تُحسب النطاقات الفرعية كروابط داخلية؟
لا. يتطلب التصنيف تطابق اسم المضيف تمامًا؛ لذا يكون blog.example.com خارجيًا عند ضبط example.com.
هل تنزّل الأداة صفحتي أو تزحف إليها؟
لا. تقتصر على تصنيف سلاسل URL التي تقدمونها ولا تجري أي طلبات عبر الشبكة.
كيف تُحسب الروابط المكررة؟
يُحسب كل عنصر في القائمة. وتبقى عناوين URL المتكررة مكررة لأنها تمثل ظهورات منفصلة للروابط.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/seo/internal-link-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}'const res = await fetch("https://api.kit.forhosting.com/seo/internal-link-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/internal-link-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/internal-link-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/internal-link-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.internal_link_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
جهّزوا نطاق الموقع وقائمة روابط الصفحة
يمكن إدخال النطاق وحده، مثل example.com، أو إدخال عنوان مطلق للموقع يعمل ببروتوكول HTTP أو HTTPS. page=2 و#pricing روابط داخلية.
افهموا آلية التصنيف وحساب النسب
يُعد الرابط داخليًا عندما يُحل إلى عنوان HTTP أو HTTPS يطابق اسم مضيفه اسم مضيف الموقع المقدَّم تمامًا. كذلك تُصنف المخططات غير الويب مثل mailto وtel وftp كروابط خارجية، لأنها لا تعرّف صفحة HTTP أو HTTPS على المضيف المضبوط. تشمل النتيجة total_links وinternal_links وexternal_links، ثم internal_ratio وexternal_ratio بقيم بين صفر وواحد.
استخدموا النتيجة في مراجعة SEO
الاستخدام في المتصفح مجاني، وتكلفة أتمتة API هي $0.002 لكل طلب.
أسئلة تقنية
ماذا يحدث إذا كانت القائمة فارغة؟
يفشل الطلب بخطأ invalid_input لأن احتساب عدد ونسبة مفيدين يتطلب رابطًا واحدًا على الأقل.