llms.txt وrobots.txt وتقديم الصفحات بصيغة Markdown
الوكلاء يقرؤون بطريقة تختلف عن المتصفحات. ما يحصل عليه كل موقع مُنشأ: llms.txt وسياسة صريحة لزواحف الذكاء الاصطناعي وكل صفحة بصيغة markdown.
نسبة متزايدة من الناس الذين سيسمعون عن نشاط تجاري صغير لن يزوروا موقعه أبدًا. سيسألون نموذجًا، وسيجيب النموذج مما استطاع قراءته.
وهذا يجعل سؤال "هل يستطيع وكيل قراءة هذا الموقع؟" سؤال توزيع لا فضولًا تقنيًا. وتتبعه ثلاثة أمور، وكل موقع يُنشأ هنا يحصل عليها جميعًا دون أن يطلبها.
يجب أن يسمّي robots.txt زواحف الذكاء الاصطناعي
إن لم تقل عنها شيئًا فإنها ترجع إلى User-agent: *. وهذه ليست سياسة، بل قيمة افتراضية ورثتها.
لذلك نسمّيها. وكلاء البحث والإجابة الذين يعيدون الاستشهادات - OAI-SearchBot وChatGPT-User وClaude-SearchBot وClaude-User وPerplexityBot - وزواحف التدريب GPTBot وClaudeBot وGoogle-Extended وmeta-externalagent. يرث كلٌّ منها قائمة Disallow نفسها التي يرثها الجميع: لا زاحف يصل إلى واجهة API، ولا زاحف يصل إلى صفحة خاصة بالأعضاء.
تسميتها ليست تساهلًا. بل هي كتابة السياسة في مكان يمكن تغييره فيه عن قصد.
llms.txt فهرس محتويات، لا إعلان
اصطلاح llms.txt بسيط: عنوان، وملخص من فقرة واحدة في اقتباس، ثم أقسام مرتبطة بروابط. ينبغي أن يعرف النموذج الذي يصل إليه ما هذا الموقع وأين صفحاته المهمة، في طلب واحد ودون عرض أي شيء.
ملفنا يُولَّد من تعريف الموقع، وهذا أهم مما يبدو. تُصفّى القائمة بقاعدة عام/خاص نفسها التي تُصفّى بها خريطة الموقع:
# Piekarnia Lune
> A sourdough bakery in Kraków. Bread baked daily, cakes to order,
> open from seven.
## Pages
- [Menu](https://...): What we bake, and what it costs.
- [Order a cake](https://...): Wedding and birthday cakes, two weeks' notice.قائمة واحدة تُقرأ ثلاث مرات - بواسطة خريطة الموقع، وبواسطة llms.txt، وبواسطة وسم robots الوصفي. لا سبيل لأن تختلف الثلاثة، لأنه لا شيء يلزم مزامنته.
كل صفحة، بصيغة markdown
أسرع طريقة لسوء الفهم هي أن تجبر القارئ على تحليل صفحة مليئة بالتنسيق ليجد ثلاث جمل. لذلك تستجيب كل صفحة في كل موقع مُنشأ لـ markdown كما تستجيب لـ HTML:
- أرسل
Accept: text/markdownفتحصل على الصفحة بصيغة markdown على العنوان نفسه. - أو أضف
.mdإلى المسار، للوكلاء الكثيرين الذين لا يجرون التفاوض على المحتوى.
والقواعد التي تُبقي هذا أمينًا تستحق الذكر. إنه إعادة كتابة لا إعادة توجيه. ولا يحدث إلا عند طلب صريح لـ text/markdown، وأبدًا عند */* - فالمتصفح الذي يرسل "أي شيء" يريد الصفحة. وتحمل الاستجابتان Vary: Accept، فلا تستطيع ذاكرة مؤقتة مشتركة أن تقدّم محتوى واحدًا للجميع. ونسخة markdown موسومة noindex، فلا تنافس في البحث الصفحة التي هي نسخة منها.
يمشي المُسلسِل على تعريف الموقع لا على HTML المُصيَّر، ولهذا يخرج نظيفًا: قسم الميزات يصبح قائمة، والأسئلة الشائعة تصبح عناوين وإجابات، وجدول الأسعار يصبح جدولًا. أما الخريطة أو تقويم الحجز فيصبح سطرًا صادقًا واحدًا يقول ما هو موجود، بدل اختلاق ما كان سيعرضه.
وينطبق علينا أيضًا
هذا المقال متاح على العنوان نفسه مع .md في نهايته. وكذلك كل صفحة أخرى في crea.site، ويسردها llms.txt الخاص بنا.
منشئ مواقع لا يستطيع وكيل قراءة صفحاته هو نفسه يحتجّ ضد نفسه.