المدونة

ما الذي يحتاجه الموقع الجاهز للوكلاء الذكيين: ملاحظات من تجربة بناء dardo.studio

جعلنا dardo.studio مقروءًا وقابلًا للاستدعاء من وكلاء الذكاء الاصطناعي، طبقةً بعد طبقة. نشرح هنا ما تفعله كل طبقة، ومن يوثّق قراءتها اليوم، وأيّها سنبنيها مرة أخرى.

بقلم Nicolás Cerón ·

روبوت صغير بعجلات يتبع خطًا إرشاديًا قرمزيًا عبر قاعة في متحف ليلًا نحو منحوتة مضاءة.

الجواب المختصر

يفعل الموقع الجاهز للوكلاء الذكيين ثلاثة أمور: يستطيع وكلاء الذكاء الاصطناعي الوصول إليه، ويقرؤونه دون الخوض في القوائم واللافتات والسكربتات، وعندما يكون ذلك منطقيًا يستطيعون استدعاء أدوات محددة معلنة بدل تخمين الزر الذي يجب الضغط عليه.

نفّذنا الأمور الثلاثة في dardo.studio في أوائل أكتوبر 2026. نعرض هنا ما أطلقناه ومدى توثيق كبرى منصات الذكاء الاصطناعي لاستخدامه، بحسب فحصنا للموقع الفعلي في 8 أكتوبر 2026.

الخلاصة أقل إثارة من معظم قوائم "الجاهزية للذكاء الاصطناعي". فالطبقات الأقدم هي الأكثر وزنًا: السماح للزواحف بالوصول، وHTML نظيف ودلالي. أما نسخ Markdown وملف llms.txt فهي تسهيلات رخيصة. وبروتوكولات MCP وA2A وWebMCP حقيقية ولها عملاء يعملون، لكن لا شيء من وثائق الزواحف التي نستشهد بها من OpenAI وAnthropic وPerplexity وGoogle يذكر أن مساعديها يعثرون من تلقاء أنفسهم على أدوات الموقع.

ابدأ بالوصول: robots.txt وحافة الشبكة

يكرر ملف robots.txt لدينا مجموعة واحدة للوكيل الافتراضي (*) ولكل زاحف بحث بالذكاء الاصطناعي وجالب مستخدم نسميه:

User-agent: OAI-SearchBot
Allow: /
Disallow: /api/
Content-Signal: search=yes, ai-input=yes

تنطبق القواعد نفسها على ChatGPT-User وPerplexityBot وPerplexity-User وClaude-SearchBot وClaude-User وBingbot. المغلق فقط هو /api/.

زواحف البحث وزواحف التدريب منفصلة

توثّق الشركات الكبرى اليوم رموزًا منفصلة للبحث وللتدريب:

  • OpenAI. يُظهر OAI-SearchBot المواقع في بحث ChatGPT. المواقع التي تحظره تُستبعد من إجابات بحث ChatGPT، وإن ظلت قادرة على الظهور كروابط تنقّل عادية. أما GPTBot فيجمع بيانات التدريب. (زواحف OpenAI)
  • Anthropic. يفهرس Claude-SearchBot لأغراض البحث، ويجمع ClaudeBot بيانات التدريب، ويجلب Claude-User الصفحات عندما يسأل شخص Claude عن شيء. (زواحف Anthropic)
  • Perplexity. يُظهر PerplexityBot المواقع ويربط بها في نتائج Perplexity، ولا يُستخدم لتدريب النماذج التأسيسية. (زواحف Perplexity)
  • Google. Google-Extended رمز تحكم في تدريب Gemini والاستناد إلى المصادر في منتجات Google الأخرى. ولا يؤثر في الإدراج أو الترتيب في بحث Google. (زواحف Google الشائعة)

أما الجالبات التي يطلقها المستخدم فمختلفة. تقول OpenAI إن robots.txt قد لا ينطبق على ChatGPT-User، لأن شخصًا هو من يبدأ هذه الطلبات. أما Perplexity-User والجالبات التي يطلقها المستخدم لدى Google فتتجاهله عمومًا. تعمل هذه الجالبات لصالح شخص واحد في الوقت الفعلي، وحيثما ينجح الحظر فهو يمنع في الغالب مساعد ذلك الشخص من قراءة صفحتك.

لا يسمّي ملفنا زواحف التدريب، فتندرج تحت * وهي مسموح لها. وهذا قرار تجاري، وتوثّقه الشركات كوسيلة تحكم منفصلة: حظر GPTBot أو ClaudeBot لا يعني الخروج من فهارس البحث لديهما.

Content Signals: سطر واحد دون التزامات

يأتي السطر Content-Signal من Content Signals Policy الخاصة بـ Cloudflare، التي تسمّي ثلاثة استخدامات: search وai-input (تزويد النموذج بالمحتوى وقت الإجابة) وai-train. أغفلنا ai-train، وهذا بموجب السياسة لا يمنح ذلك الاستخدام ولا يقيّده. تقول Cloudflare إن الإشارات تعبّر عن تفضيلات ولا تحظر شيئًا وقد تُتجاهل. ولا تذكرها أي من صفحات الزواحف التي استشهدنا بها هنا. كلفتها سطر واحد، فلا تتوقع منها شيئًا حتى الآن.

افحص حافة الشبكة، لا الملف وحده

يعلن robots.txt سياسة، لكن شبكة CDN هي التي تقرر ما يحدث فعلًا. عندما اختبرنا في 2 أكتوبر، ردّ Browser Integrity Check من Cloudflare على عميل HTTP الافتراضي في Python (Python-urllib) وعلى libwww-perl بالرمز 403، بينما كان robots.txt يسمح بكل شيء. وكثيرًا ما تستخدم السكربتات التي يكتبها وكلاء البرمجة مكتبة Python القياسية دون تغيير.

أضفنا قاعدة إعدادات في Cloudflare تستثني طلبات GET وHEAD للمحتوى العام، بينما يظل /api/ يردّ بالرمز 403. وكشفت المراجعة نفسها أن ملفات .txt لدينا بلا ترميز، فكانت بعض العملاء تقرأ "Bogotá" على أنها "Bogotá". وكان الحل ترويسة واحدة: charset=utf-8.

اختبر بطلبات حقيقية تحت كل وكيل مستخدم. هذا يثبت أن شيئًا لا يحظر الاسم، لكنه لا يثبت أن الزاحف الحقيقي زار الموقع.

HTML بسيط ودلالي: الطبقة التي يعتمد عليها كل وكيل

يصف دليل تحسين الذكاء الاصطناعي من Google وكلاء المتصفح الذين يحللون لقطات الشاشة ويفحصون DOM ويفسّرون شجرة إمكانية الوصول. ويحيل أصحاب المواقع إلى إرشادات web.dev للمواقع الصديقة للوكلاء، وهي في معظمها عمل على إمكانية الوصول: استخدم <button> و<a> بدل عناصر <div> المنسّقة، واربط كل تسمية بحقلها، وامنع تغيّر التخطيط أثناء التقاط الشاشة.

في dardo.studio تحتوي كل صفحة على عنصر <main> واحد ومعالم <nav> موسومة. أزرار القائمة وتبديل السمة أزرار حقيقية تعلن حالتها عبر aria-expanded وaria-pressed، والقوائم المغلقة inert. وكل حقل في نموذج الاتصال داخل <label> الخاص به، مما يمنحه اسمًا يمكن الوصول إليه. يقترح web.dev استخدام السمة for، ولف الحقل يؤدي الغرض نفسه.

وهذا يفيد مستخدمي قارئات الشاشة اليوم، وهو سبب كافٍ.

نسخة Markdown نظيفة لكل صفحة

يدفع الوكلاء مقابل كل رمز (token) يقرؤونه، والصفحة المعروضة تحمل التنقل ولافتة ملفات تعريف الارتباط والسكربتات والرسوم الزخرفية. قبل هذا العمل، كان طلب صفحاتنا مع Accept: text/markdown يعيد كل ذلك بصيغة HTML.

الآن تكتب خطوة البناء ملف index.md بجوار كل صفحة قابلة للفهرسة. يبدأ الملف بمعلومات تعريفية في المقدمة (العنوان والوصف والرابط الأساسي واللغة والنسخة بلغة أخرى وتاريخ التحديث)، ثم محتوى <main> في الصفحة بلا سكربتات ولا أزرار ولا صور زخرفية ولا جدول المحتويات داخل الصفحة. وتبقى إجابات الأسئلة الشائعة. أما النماذج فتتحول إلى قائمة بحقولها وخياراتها، ليتمكن الوكيل من إخبار الشخص بما يطلبه نموذج التواصل لدينا دون أن يستخدمه.

هناك ثلاث طرق للحصول على النسخة:

  • أرسل Accept: text/markdown إلى الرابط المعتاد. تحمل هذه الاستجابات Vary: Accept، فتحفظ ذاكرات التخزين المؤقت كل نسخة على حدة.
  • اطلب الملف مباشرة: /en/services/seo/index.md.
  • أضف .md إلى مسار الصفحة (/en/services/seo.md). أما الروابط التي تنتهي بشرطة مائلة، فيستخدم مقترح llms.txt الملف index.md، وهو الصيغة الواردة أعلاه.

كما تشير كل صفحة HTML إلى نسختها عبر <link rel="alternate" type="text/markdown">.

إعادة محركات البحث إلى صفحة HTML

يذكر دليل Google أنه يستطيع الزحف إلى أنواع كثيرة من الملفات غير HTML وفهرستها دون معاملتها معاملة خاصة. وقد تنافس نسخة markdown صفحتها الأصلية، لذا تحدد كل استجابة markdown صفحة HTML بوصفها الرابط الأساسي:

$ curl -sI https://dardo.studio/en/services/seo/index.md
content-type: text/markdown; charset=utf-8
link: <https://dardo.studio/en/services/seo/>; rel="canonical", ...

من يقرأ هذه النسخ؟ أطلقت Cloudflare ميزة Markdown for Agents لتحويل HTML عند الحافة للطلبات التي تفضّل markdown، ما يشير إلى أن الوكلاء يطلبونها. لكنها لا تحدد العملاء الذين يرسلون هذا الترويسة، وليست لدينا قائمة مؤكدة كذلك. وإذا استخدمت ميزة Cloudflare فإنها تضيف Content-Signal: ai-train=yes, search=yes, ai-input=yes ما لم يحدد خادمك الأصلي قيمته الخاصة. نحن ننشئ نسخنا وقت البناء لتطابق الصفحة تمامًا.

llms.txt: فهرس مفيد بلا أثر على البحث

llms.txt هو مقترح من Jeremy Howard نُشر أول مرة في سبتمبر 2024 ولا يزال مفتوحًا لمساهمات المجتمع: ملف markdown في المسار /llms.txt يتضمن اسم الموقع وملخصًا قصيرًا وقوائم روابط قد يحتاجها الوكيل.

ملفنا في /llms.txt و/es/llms.txt يُنشأ من البيانات نفسها التي تُنشأ منها الصفحات، فلا يمكن أن يختلف عنها. وهو يذكر حقائق الاستوديو (بوغوتا، تأسس عام 2026، فريق من ثلاثة أشخاص، كيفية تسعير المشاريع، قنوات التواصل)، ويسرد الخدمات والأعمال، ويشرح كيفية جلب نسخ markdown. أما llms-full.txt فيضم النص الكامل لصفحات الاستوديو والخدمات والأعمال والتواصل.

يسمّي سطر واحد أعمالًا تحمل أسماء مشابهة وليست نحن. وحين راجعنا في 2 أكتوبر، كانت تتصدر نتائج البحث عن "dardo studio". وقد يكون هذا السطر أنفع سطر في الملف.

الوضع الحالي بوضوح:

  • تقول Google إنك لا تحتاج إلى llms.txt لتظهر في البحث أو في ميزاته المعتمدة على الذكاء الاصطناعي، وإن البحث يتجاهله، وإن وجوده لا يفيد ولا يضر.
  • لا تذكر OpenAI وAnthropic وPerplexity في وثائق الزواحف لديها أن روبوتاتها تقرأ ملفات llms.txt الخاصة بمواقع أخرى. غير أن مواقع الوثائق الخاصة بكل من OpenAI وAnthropic وPerplexity تنشر ملفًا كهذا، للوكلاء الذين يقرؤون وثائقها.

احتفظ بواحد إذا كان يُنشأ آليًا وكان دقيقًا. فهو يفيد وكلاء البرمجة والأدوات التي تبحث عنه. لكنه ليس وسيلة لزيادة الظهور.

أدوات يمكن للوكلاء استدعاؤها: MCP وA2A وفهرس API

نشرنا أداتين للقراءة فقط:

  • تعيد list_services خدماتنا المنشورة ونطاقها ومخرجاتها وروابط مصادرها بالإنجليزية أو الإسبانية، مع إمكانية التصفية بكلمة مفتاحية اختيارية.
  • تعيد get_project_brief الأسئلة التي ينبغي الإجابة عنها قبل التواصل معنا، ورابط التواصل المحلي الخاص بتلك الخدمة.

تنفيذ واحد يقف خلف عدة نقاط دخول:

نقطة الدخولالعنوان على dardo.studioالمعيار والحالة
خادم MCP/mcp، والبطاقة في /.well-known/mcp/server-card.jsonMCP عبر Streamable HTTP؛ وبطاقة الخادم مقترح مسودة
وكيل A2A/a2a، والبطاقة في /.well-known/agent-card.jsonA2A 1.0، وJSON-RPC
نقطة JSON/agent/services.json، موصوفة بواسطة OpenAPIHTTP عادي
فهرس API/.well-known/api-catalogRFC 9727، مسار المعايير في IETF

ترسل كل استجابة HTML وmarkdown ترويسة Link تشير إلى الفهرس وفهرس مهارات الوكلاء والبطاقتين، فتقود أي صفحة إلى بقية العناصر.

قواعد التصميم التي سنكررها

  • للقراءة فقط وعلنية. تعلن أدوات MCP القيمة readOnlyHint: true وتقرأ من الفهرس المنشور نفسه الذي تقرأ منه صفحات HTML، دون قاعدة بيانات خلفها. ولا تُرسل get_project_brief شيئًا ولا تحجز ولا تسعّر؛ فالشخص هو من يراجع ويرسل.
  • مدخلات محدودة. يُحدد حجم أجسام الطلبات بـ 8 KiB، ويُتحقق من ترويسات Origin الصادرة من المتصفح (وهو ما تشترطه مواصفة MCP)، وللاستدعاءات حد معدل خاص بها.
  • بلا حالة. يجيب وكيل A2A فورًا، ولا يحتفظ بمهام، والبث لديه معطّل، ولا يجلب الملفات أو الروابط المرسلة إليه.
  • شروط واضحة. يوضح /auth.md أنه لا حاجة إلى بيانات اعتماد، وأن قراءة البيانات العامة لا تخوّل إرسال رسالة أو إجراء دفعة.

كما تركنا أشياء جانبًا. تفحص أدوات قياس الجاهزية وجود بروتوكولات التجارة واكتشاف OAuth. نحن لا نبيع شيئًا عبر صفحة دفع ولا نحمي أي موارد، ولذلك فإن نشر تلك العناصر سيصف إمكانات غير موجودة.

من يستخدم هذه الأدوات اليوم: عملاء MCP الذين ربطهم أحدهم بالمسار /mcp، وعملاء A2A الذين حصلوا على بطاقتنا. وبالنسبة إلى استوديو، فالقيمة متواضعة: إجابة دقيقة عن سؤال "ماذا تفعل Dardo، وماذا ينبغي أن أرسل إليهم؟". أما الحالة فأقوى في موقع فيه بيانات حية يسأل عنها الناس، مثل المخزون أو التوفر أو وثائق المنتجات. أما الوكلاء الذين يكتبون البيانات فيحتاجون إلى مصادقة وخطوات مراجعة؛ وهذا من عمل أتمتة الذكاء الاصطناعي.

WebMCP: الأدوات نفسها داخل المتصفح

يتيح WebMCP للصفحة تسجيل أدوات يمكن لوكيل ذكاء اصطناعي في المتصفح استدعاؤها. وهو تقرير مسودة من مجموعة المجتمع W3C Web Machine Learning Community Group، وينص على أنه ليس معيارًا من W3C. ويذكر web.dev أنه قيد التطوير النشط وقد يتغير، ويمكن تجربته في Chrome عبر تجربة المصدر.

تسجّل صفحاتنا الأداتين نفسيهما عبر document.modelContext (أو navigator.modelContext في النسخ التجريبية الأقدم). وفي غياب هذه الواجهة، لا يشغّل المتصفح أي شيء إضافي. ولأن الأداتين كانتا موجودتين أصلًا، استغرق الأمر نحو 40 سطرًا. تعامل معه على أنه تجربة.

كل طبقة، وهل تستحق العناء

الطبقةما هيمن يقرؤها اليومهل تستحق؟
HTML الدلالي والنماذج ذات التسمياتأزرار وروابط ومعالم وتسميات حقيقيةالمتصفحات والتقنيات المساعدة ووكلاء المتصفحنعم. ابدأ بها
ملف robots.txt لوكلاء البحث والمستخدمينقواعد لكل زاحف تفصل بين البحث والتدريبOpenAI وAnthropic وPerplexity وGoogle توثّق رموزهانعم. ثم اختبرها على مستوى CDN
Content Signalsتفضيلات search وai-input وai-train في ملف robots.txtلا توجد شركة ذكاء اصطناعي راجعناها توثّق احترامهاسطر واحد. لا تتوقع شيئًا
نسخ Markdown مع ترويسات canonicalنسخة نصية نظيفة من كل صفحةوكلاء يطلبون Markdown؛ ولا توجد قائمة منشورة بهمنعم، مع ترويسة canonical
llms.txt وllms-full.txtفهرس منتقى ونص كامل للوكلاءبحث Google يتجاهله؛ ولا توثيق لأي زاحف يزعم قراءتهأبقِه إن كان يُنشأ آليًا. ليس رافعة للظهور
خادم MCP (للقراءة فقط)أدوات معلنة يمكن للوكلاء استدعاؤهاعملاء MCP يربطهم شخص مافقط عند وجود بيانات أو إجراءات تستحق الاستدعاء
بطاقة وكيل A2Aوصف مقروء آليًا للوكيلعملاء A2A الموجَّهون إليهامضاربة في معظم المواقع
فهرس واجهات API (RFC 9727)قائمة معروفة واحدة بواجهات API العامة لديكالأدوات التي تبحث عنهزهيد التكلفة إن كانت لديك واجهات API أصلًا
WebMCPأدوات تسجّلها الصفحة في المتصفحChrome، عبر تجربة المصدرتجربة

ما الذي سنبنيه مجددًا

بالترتيب: HTML دلالي، ووصول مختبَر للزواحف، ونسخ Markdown مع ترويسات canonical، وملف llms.txt منشأ آليًا، وأدوات فقط عندما يكون هناك ما يستحق الاستدعاء. ثم قِس النتائج. تُظهر سجلات الخادم أي الوكلاء يجلبون نسخ Markdown أو يستدعون /mcp. الجلب ليس اقتباسًا، ولا شيء من هذا يضمن أن يذكرك نظام ذكاء اصطناعي.

جاهزية الوكلاء جزء من عملنا في تحسين الظهور في البحث بالذكاء الاصطناعي، إلى جانب المحتوى والقياس اللذين يحسمان ما إذا كانت إجابات الذكاء الاصطناعي تقتبس منك. ولإدماجها في موقعك، أخبرنا عن مشروعك.