مدخل إلى عالم أتمتة الـ SEO: لماذا الآن؟


ماذا سنبني اليوم؟

اليوم، سنقوم ببناء سكريبت بايثون بسيط لكنه فعال لأتمتة مهمة أساسية في الـ SEO: التحقق من حالة مجموعة من الروابط (URLs) والتأكد من إمكانية الوصول إلى ملف robots.txt الخاص بكل نطاق. هذه العملية اليدوية تستغرق وقتاً طويلاً للمواقع الكبيرة، والأتمتة هنا توفر جهداً هائلاً وتضمن دقة أكبر.

لماذا أتمتة الـ SEO؟

في عالم الـ SEO المتطور باستمرار، لم يعد الاعتماد على الأدوات اليدوية كافياً لمواكبة التغيرات أو لإدارة المواقع الكبيرة بكفاءة. الأتمتة تتيح لنا:

  • توفير الوقت والجهد: تحرير المتخصصين للتركيز على المهام الاستراتيجية بدلاً من المهام المتكررة.
  • زيادة الدقة: تقليل الأخطاء البشرية المحتملة.
  • التوسع السريع: القدرة على معالجة كميات هائلة من البيانات أو عدد كبير من المواقع.
  • المراقبة المستمرة: إعداد تنبيهات تلقائية للتغيرات الحرجة (مثل تعطل موقع، أو تغيير في ملف robots.txt).
ملاحظة تقنية: الأتمتة لا تحل محل الخبرة البشرية، بل تعززها. هي أداة قوية لتنفيذ المهام الروتينية، مما يتيح للمحلل التركيز على التحليل واتخاذ القرارات الاستراتيجية.

الأدوات والمكتبات المستخدمة

  • Python: لغة البرمجة التي سنستخدمها. سهلة التعلم ولديها مجتمع ضخم ومكتبات غنية.
  • requests library: مكتبة بايثون لعمل طلبات HTTP بسهولة.
  • urllib.parse: مكتبة بايثون قياسية لتحليل الروابط.

للتأكد من تثبيت مكتبة requests، يمكنك تشغيل الأمر التالي في سطر الأوامر:

pip install requests

هيكل الكود

سيتألف الكود من الأجزاء الرئيسية التالية:

  1. قائمة بالروابط المستهدفة.
  2. دالة للتحقق من حالة HTTP لعنوان URL معين.
  3. دالة لإنشاء عنوان robots.txt من عنوان URL أساسي.
  4. حلقة تكرارية تمر على كل رابط في القائمة وتقوم بالتحقق منه ومن ملف robots.txt الخاص به.
  5. طباعة النتائج بطريقة منظمة.

الكود العملي

إليك الكود كاملاً. يمكنك نسخه ولصقه مباشرة في ملف بايثون (مثلاً seo_automation.py) وتشغيله.


import requests
from urllib.parse import urlparse, urljoin

def check_url_status(url):
    """
    يتحقق من حالة HTTP لعنوان URL معين.
    """
    try:
        response = requests.head(url, timeout=5) # استخدام HEAD لتقليل استهلاك النطاق الترددي
        return response.status_code
    except requests.exceptions.RequestException as e:
        return f"Error: {e}"

def get_robots_txt_url(base_url):
    """
    ينشئ رابط robots.txt من عنوان URL أساسي.
    """
    parsed_url = urlparse(base_url)
    # بناء رابط robots.txt باستخدام المخطط والنطاق فقط
    robots_txt_url = urljoin(f"{parsed_url.scheme}://{parsed_url.netloc}", "/robots.txt")
    return robots_txt_url

def main():
    urls_to_check = [
        "https://www.google.com",
        "https://www.python.org",
        "https://www.microsoft.com",
        "https://www.nonexistentwebsite12345.com", # مثال على موقع غير موجود
        "https://www.example.com/some/path", # سيتم تحويله إلى https://www.example.com/robots.txt
    ]

    print("--- بدء فحص الروابط وملفات robots.txt ---")
    print("-" * 50)

    for url in urls_to_check:
        print(f"فحص: {url}")

        # فحص حالة الـ URL الأساسي
        url_status = check_url_status(url)
        print(f"  حالة الـ URL الأساسي: {url_status}")

        # فحص robots.txt
        robots_txt_url = get_robots_txt_url(url)
        robots_txt_status = check_url_status(robots_txt_url)
        print(f"  رابط robots.txt: {robots_txt_url}")
        print(f"  حالة robots.txt: {robots_txt_status}")
        print("-" * 50)

    print("--- انتهى فحص الروابط وملفات robots.txt ---")

if __name__ == "__main__":
    main()
ملاحظة أمنية: عند التعامل مع الروابط الخارجية، كن حذراً دائماً. هذا السكريبت يقوم فقط بطلبات HEAD، لكن في تطبيقات أتمتة الـ SEO الأكثر تعقيداً التي قد تجلب محتوى، تأكد من معالجة البيانات بشكل آمن ومن فحص الروابط قبل الزحف إليها.

كيفية تشغيل الكود

  1. احفظ الكود أعلاه في ملف باسم seo_checker.py (أو أي اسم تفضله ينتهي بـ .py).
  2. افتح سطر الأوامر (Terminal أو Command Prompt).
  3. انتقل إلى المجلد الذي حفظت فيه الملف باستخدام الأمر cd /path/to/your/folder.
  4. شغل السكريبت باستخدام الأمر: python seo_checker.py.

النتيجة النهائية المتوقعة

بعد تشغيل السكريبت، ستظهر لك في سطر الأوامر (Terminal/Command Prompt) نتائج مفصلة لكل رابط قمت بتحديده. ستشمل هذه النتائج:

  • عنوان URL الذي يتم فحصه.
  • رمز حالة HTTP الخاص بالـ URL (مثلاً 200 للنجاح، 404 لعدم العثور عليه، 500 لخطأ في الخادم، أو رسالة خطأ في حالة عدم إمكانية الوصول).
  • رابط ملف robots.txt المستنتج من الـ URL الأساسي.
  • رمز حالة HTTP الخاص بملف robots.txt (مما يشير إلى ما إذا كان الملف موجوداً ويمكن الوصول إليه).

مثال على جزء من المخرجات:


--- بدء فحص الروابط وملفات robots.txt ---
--------------------------------------------------
فحص: https://www.google.com
  حالة الـ URL الأساسي: 200
  رابط robots.txt: https://www.google.com/robots.txt
  حالة robots.txt: 200
--------------------------------------------------
فحص: https://www.nonexistentwebsite12345.com
  حالة الـ URL الأساسي: Error: HTTPSConnectionPool(...)
  رابط robots.txt: https://www.nonexistentwebsite12345.com/robots.txt
  حالة robots.txt: Error: HTTPSConnectionPool(...)
--------------------------------------------------
--- انتهى فحص الروابط وملفات robots.txt ---

هذا السكريبت هو نقطة بداية ممتازة لعالم أتمتة الـ SEO. يمكنك توسيعه ليشمل المزيد من الفحوصات مثل تحليل الروابط الداخلية، فحص العلامات الوصفية، أو حتى التكامل مع واجهات برمجة تطبيقات (APIs) لأدوات SEO متقدمة.