أتمتة فحص الروابط المكسورة بـ lychee و cron
مستوى القارئ: متوسط
هتكسب من المقال ده نظام بسيط يكشف الروابط المكسورة كل يوم قبل ما المستخدم أو محرك البحث يكتشفها. الفكرة: سكربت صغير على VPS يشغل lychee على sitemap، يحفظ تقريرًا، ويرسل تنبيه Slack لو ظهر 404 أو timeout.
المشكلة باختصار
لو عندك موقع محتوى فيه 180 صفحة، وكل صفحة فيها 5 إلى 10 روابط داخلية وخارجية، فأنت بتتعامل مع حوالي 900 إلى 1800 رابط. فحص الرقم ده يدويًا مرة كل أسبوع طريقة بتفشل في نقطتين: بتاخد وقت، وبتكتشف المشكلة بعد ما تكون أثرت على القارئ.
اللي بيحصل فعلاً إن رابط قديم في مقال شغال من سنة يتحول إلى 404، أو وثائق أداة خارجية تغير المسار، أو صفحة تحميل تبقى بطيئة وتعمل timeout. النتيجة مش كارثية في أول يوم، لكنها بتتراكم: تجربة أسوأ، ثقة أقل، وإشارات SEO أضعف لو الأخطاء بقت كثيرة.
ليه lychee مناسب للحالة دي
lychee أداة فحص روابط مفتوحة المصدر تقدر تفحص ملفات Markdown و HTML و URLs مباشرة، وتطلع نتيجة واضحة في الطرفية أو JSON. حسب توثيق المشروع، الأداة تدعم تجاهل روابط معينة، ضبط timeout، وعدد المحاولات. ده مهم لأن بعض المواقع الخارجية بتفشل مؤقتًا، ومش كل فشل معناه إن عندك مشكلة حقيقية.
ركز هنا: أفضل طريقة مش إنك تفشل النشر عند أول رابط خارجي بطيء. الأفضل إنك تعمل فحص يومي منفصل، وتخلي التقرير يقولك الرابط، نوع الخطأ، والصفحة المتأثرة. المكسب إنك تقلل الضوضاء. الـ trade-off هنا إن الخطأ ممكن يفضل ساعات قبل ما يتصلح، بدل ما يوقف الـ deploy فورًا.
الافتراض إن عندك VPS صغير أو سيرفر لينكس شغال بالفعل، وموقعك بيطلع sitemap.xml. لو الموقع صغير جدًا، 20 صفحة مثلًا، نفس الفكرة تشتغل لكن العائد أقل.
الإعداد العملي خطوة بخطوة
- اعمل مجلد للتقارير والسكربت على السيرفر.
- شغل
lycheeمن Docker عشان ما تربطش نفسك بتثبيت محلي. - اقرأ sitemap، واستخرج الروابط، ثم افحصها.
- لو الفحص فشل، ابعت ملخص إلى Slack webhook.
- شغل السكربت يوميًا باستخدام
cron.
sudo mkdir -p /opt/link-check/reports
sudo nano /opt/link-check/run.sh
حط السكربت ده. غيّر SITE_URL و SLACK_WEBHOOK_URL بالقيم المناسبة عندك.