أنت ترى صفحة كاملة. أما الوكيل فيتلقّى ملف HTML خامًا. وإذا كان محتواك يُبنى داخل المتصفح عبر JavaScript، فثمة احتمال حقيقي أن ما وصل الطرف الآخر هيكلٌ فارغ. القياس العلني الوحيد الذي وجدته في هذا الشأن — لـVercel وMERJ من ديسمبر 2024 — خلص إلى أن أيًّا من زواحف الذكاء الاصطناعي الرئيسية لا يشغّل JavaScript؛ فهي تنزّل ملفات الـJS (11.50% من طلبات ChatGPT، و23.84% من طلبات Claude) لكنها لا تنفّذها. وGoogle هي الاستثناء: تشغّل JavaScript في نسخة Chromium محدَّثة، لكنها تتوقف هي الأخرى عند 2 ميغابايت. الفحص نفسه يستغرق دقيقتين وسطر curl واحدًا.
السؤال الوحيد المهم: ماذا يوجد في HTML الأولي
ثمة فرق بين ما يعرضه موقعك وما يرسله. المتصفح يتلقّى مستند HTML، ينزّل ملفات JavaScript، يشغّلها، ينفّذ نداءات API إضافية، ثم يركّب منها الصفحة التي تراها. سلسلة الأحداث هذه كلها تجري عند المستخدم لا على خادمك. والوكيل الذي يجلب العنوان ويتوقف عند هذا الحد لا يتلقّى سوى المرحلة الأولى.
في معظم أنظمة إدارة المحتوى الكلاسيكية ليست هذه مشكلة، لأن HTML يصل جاهزًا من الخادم. تبدأ المشكلة حين يُبنى الموقع كتطبيق من جانب العميل: React أو Vue أو Angular تولّد المحتوى بعد التحميل. في هذه الحالة قد يكون المستند الخارج من الخادم ثلاثة كيلوبايت من وسوم فارغة وفي وسطها <div id=”root”></div>، وكل ما عدا ذلك يُبنى في المتصفح فقط.
وأشدّد على نقطة واحدة: هذه ليست مسألة أذونات. يمكنك أن تسمح لكل الروبوتات بوصول كامل، وأن تعيد 200 على كل طلب، ومع ذلك لا تظهر في أي إجابة — لأنه ببساطة لم يكن هناك محتوى لقراءته. طبقة الأذونات فكّكتها على حدة في خريطة الروبوتات لعام 2026؛ وهنا نتحدث عن الطبقة التالية لها.
ما الذي قيس فعلًا — وما الذي لم يُقس
هنا يلزم الحذر، لأن هذا الموضوع مليء بأرقام تدور بلا مصدر. أما الموجود فعلًا فهو بحث مشترك لـVercel وMERJ نُشر في 17 ديسمبر 2024، حلّل سجلات حقيقية لمواقع كبيرة. نتيجته المركزية أن أيًّا من زواحف الذكاء الاصطناعي الرئيسية — GPTBot وOAI-SearchBot وChatGPT-User وClaudeBot وPerplexityBot وغيرها — لا يشغّل JavaScript. هي تنزّل ملفات الـJS، لكنها لا تنفّذها. والاستثناء في قائمتهم هو AppleBot الذي يعرض عبر متصفح.
وأعطى البحث نفسه أيضًا رتبًا من حيث الحجم: نحو 569 مليون طلب شهري من GPTBot ونحو 370 مليونًا من Claude، أي معًا قرابة خُمس حجم طلبات Googlebot في تلك الفترة.
تحفّظ ملزم بذكره: هذا القياس من ديسمبر 2024، على عيّنة محدودة من المواقع. ليس قياسًا عرضيًا للإنترنت ولا معطى 2026. راجعت التوثيق الرسمي لـOpenAI وAnthropic وPerplexity — ولا واحدة من الثلاث توثّق أصلًا ما إذا كانت روبوتاتها تعرض JavaScript. وهذا الغياب نتيجة بحد ذاته: لا يمكن الاتكاء على وعد لم يُقدَّم، ولذلك الافتراض الآمن الوحيد أن المحتوى يجب أن يكون في HTML.
Google هي الاستثناء، لا القاعدة
يذكر Google Search Central صراحةً، في صفحة حُدِّثت في 4 مارس 2026، أن بحث Google يشغّل JavaScript في نسخة Chromium محدَّثة، وأنه يضع في طابور العرض كل الصفحات التي أعادت الرمز 200. وفي المستند نفسه تضيف Google التحذير الأوثق صلةً بموضوعنا: ليست كل الروبوتات قادرة على تشغيل JavaScript.
وثمة قيدان عمليان لدى Google يجدر معرفتهما. الأول: بحسب توثيق Googlebot، يزحف الروبوت إلى أول 2 ميغابايت من الملف المدعوم ويتوقف هناك. فإن كان HTML لديك أثقل من ذلك، فالجزء الواقع خلف الحد لا يُقرأ ببساطة. والثاني يخصّ الميزات المبنية على الذكاء الاصطناعي — تذكر Google أنه لا توجد متطلبات تقنية إضافية عدا أن تكون الصفحة مفهرسة ومؤهَّلة للظهور مع snippet. أي لا ملف خاص ولا وسم مخصّص؛ ومن يُقرأ جيدًا في البحث يُقرأ جيدًا هناك أيضًا.
ثلاثة أنماط تُفرغ الصفحة
العرض من جانب العميل. النمط الكلاسيكي. المستند القادم من الخادم يحوي هيكلًا، والمحتوى يُحمَّل بعده. سهل التمييز: مصدر الصفحة أقصر بكثير مما تراه العين.
محتوى لا ينفتح إلا بتفاعل. الأكورديونات والتبويبات و«حمّل المزيد» والتمرير اللانهائي. إن كان المحتوى يُحقن في الـDOM بعد النقر فقط، فهو غير موجود في المستند. أما إن كان موجودًا في HTML ومخفيًّا بـCSS فحسب — فهو هناك فعلًا، ولا بأس بذلك إطلاقًا.
طبقات حاجبة أمام المحتوى. شريط كوكيز يطلب الموافقة قبل تحميل المحتوى، أو جدار دفع، أو نافذة تسجيل دخول، أو طبقة إدارة روبوتات تعيد تحديًا. في هذه الحالات يتلقّى الروبوت صفحةً — لكنها ليست صفحتك.
كيف تفحص ذلك في دقيقتين
لا حاجة إلى أداة خارجية. ثلاثة أسطر تكفي لتعرف بالضبط ما الذي يخرج من الخادم:
curl -sA “GPTBot” https://example.com/page/ -o raw.html
wc -c raw.html
# 2. كم كلمة نص مرئي فيه فعليًا
curl -sA “GPTBot” https://example.com/page/ | sed -e ‘s/<script[^<]*<\/script>//g’ -e ‘s/<[^>]*>/ /g’ | tr -s ‘ \n’ ‘ ‘ | wc -w
# 3. هل جملة محورية من الصفحة موجودة فعلًا في المستند
curl -sA “GPTBot” https://example.com/page/ | grep -c “your key sentence”
التفسير بسيط. إن أعاد السطر الثاني رقمًا قريبًا من عدد الكلمات التي تراها في الصفحة — فكل شيء سليم. وإن أعاد 40 كلمة لصفحة من 1,200 كلمة، فالمحتوى يُبنى في المتصفح. وإن أعاد السطر الثالث صفرًا، فجملتك المحورية غير موجودة في أي إجابة ستُولَّد من هذه الصفحة. ويستحق أيضًا تشغيل الفحص نفسه بـuser-agent متصفح عادي والمقارنة: فجوة كبيرة بين الاثنين تدل على خادم يقدّم محتوى مختلفًا للروبوتات.
كيف تتحقق أن الروبوت حقيقي
قبل استخلاص النتائج من السجل، يجدر التأكد أن مَن انتحل GPTBot هو GPTBot فعلًا. جميع المزوّدين الرئيسيين ينشرون قوائم عناوين IP رسمية، وGoogle تنشر أيضًا طريقة تحقّق عبر reverse DNS:
| المزوّد | مصدر التحقّق الرسمي | ملاحظة |
|---|---|---|
| OpenAI | openai.com/gptbot.json openai.com/searchbot.json openai.com/chatgpt-user.json |
ملف منفصل لكل روبوت |
| Anthropic | claude.com/crawling/bots.json | ملف واحد لكل الروبوتات |
| Perplexity | perplexity.com/perplexitybot.json perplexity.com/perplexity-user.json |
ملف منفصل لكل روبوت |
| developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests | نطاقات IP وتحقّق reverse DNS مقابل googlebot.com |
Google هي الوحيدة من الأربع التي تتيح تحقّق reverse DNS. أما عند البقية فالتحقّق الوحيد هو مطابقة عنوان الـIP بالقائمة الرسمية. ويستحق سحب هذه الملفات آليًّا بدل نسخ النطاقات يدويًّا — فهي تتغيّر.
ماذا تفعل حين يكون الجواب «الصفحة فارغة»
الحل يتوقف على البنية، لكن الاتجاه واحد في كل الحالات: نقل بناء المحتوى من المتصفح إلى الخادم.
- العرض من جانب الخادم أو البناء الساكن. في أطر العمل الحديثة هذا إعداد على مستوى الصفحة لا إعادة كتابة. والنتيجة HTML كامل في الاستجابة الأولى، وهو أيضًا يحسّن زمن التحميل للمستخدمين.
- التأكد أن المحتوى المحوري لا يعتمد على تفاعل. الأكورديون الذي يوجد محتواه في HTML ويُخفى بـCSS حلٌّ سليم تمامًا. أما الأكورديون الذي يسحب المحتوى بـfetch عند النقر — فلا.
- فحص ما يحدث قبل الموافقة. إن كان شريط الكوكيز يحجب المحتوى حتى النقر، فلن يرى الروبوت شيئًا. المحتوى يجب أن يكون في المستند حتى دون أي نقرة.
- القياس من جديد، لا الافتراض. بعد كل تغيير — سطر curl نفسه. الفحص يستغرق ثوانٍ، وافتراض أن الأمر نجح هو بالضبط ما أنشأ المشكلة من البداية.
ترتيب أولويات عملي
إن كانت لديك ساعة، فهذا الترتيب الذي أوصي به. أولًا شغّل فحص curl على الصفحات الثلاث الأهم في الموقع — الصفحة الرئيسية، وصفحة الخدمة المحورية، والمقال صاحب أكبر حركة. ثم قارن عدد الكلمات بما يظهر فعليًا. وفقط إن وُجدت فجوة، افتح مسألة البنية. في معظم مواقع ووردبريس والمواقع التعريفية سيكون الجواب أن كل شيء سليم، ولا بأس بذلك إطلاقًا — أن تعرف خير من أن تستثمر شهرًا في حل مشكلة غير قائمة.
أسئلة شائعة
هل تشغّل زواحف الذكاء الاصطناعي JavaScript؟
لا توثّق ذلك رسميًّا أيٌّ من الشركات الرئيسية. والقياس العلني الوحيد القائم، لـVercel وMERJ من ديسمبر 2024، وجد أن أيًّا من زواحف الذكاء الاصطناعي الرئيسية لا يشغّل JavaScript — فهي تنزّل الملفات ولا تنفّذها. وفي غياب التزام رسمي، الافتراض الآمن أن المحتوى يجب أن يكون في HTML الأولي.
هل يعرض Googlebot فعلًا؟
نعم. تذكر Google أن البحث يشغّل JavaScript في نسخة Chromium محدَّثة، وأن كل صفحة تعيد الرمز 200 تدخل طابور العرض. وثمة حد تقني: يزحف Googlebot إلى أول 2 ميغابايت من الملف المدعوم ويتوقف هناك.
كيف أعرف أن محتواي موجود في HTML؟
اجلب الصفحة بـcurl دون متصفح، أزل الوسوم، واحسب الكلمات. إن كان الرقم قريبًا مما تراه في الصفحة — فالمحتوى على الخادم. وإن كان أدنى بفارق كبير — فالمحتوى يُبنى في المتصفح ولا يصل الوكيل.
هل يلزم ملف خاص للظهور في ميزات الذكاء الاصطناعي لدى Google؟
لا. تذكر Google أنه لا توجد متطلبات تقنية إضافية، وأن الشرط هو أن تكون الصفحة مفهرسة ومؤهَّلة للظهور في النتائج مع snippet.
كيف أتحقق أن روبوتًا يظهر في السجل حقيقي؟
تنشر OpenAI وAnthropic وPerplexity وGoogle قوائم IP رسمية في ملفات JSON. وتنشر Google إضافةً إلى ذلك طريقة تحقّق reverse DNS مقابل نطاق googlebot.com. أما عند بقية المزوّدين فالمطابقة مع قائمة الـIP هي التحقّق الوحيد.