عصر البحث بالذكاء الاصطناعي قادم. مع بحث ChatGPT و Perplexity و Google AI Overviews -- تتزايد فرص حصول المستخدمين على المعلومات عبر AI بشكل كبير، مما يزيد أهمية "جعل AI يفهم موقعك بشكل صحيح".

هنا يأتي دور llms.txt. إذا كان robots.txt هو ملف يُخبر زواحف محركات البحث مثل Googlebot بـ "يمكنك/لا يمكنك زحف هذه الصفحة"، فإن llms.txt هو ملف يقدم موقعك لزواحف AI مثل GPTBot و ClaudeBot ويقول لها "هذا هو موقعنا".

في هذا المقال نشرح بالتفصيل صيغة llms.txt والمعلومات الواجب تضمينها ومعايير الاختيار بين الملف الثابت والتوليد الديناميكي وأكواد التنفيذ في أشهر أطر العمل.

1. ما هو llms.txt

llms.txt هو ملف نصي عادي (بتنسيق Markdown) يُوضع في الدليل الجذري لموقع الويب، ويهدف إلى إيصال ملخص الموقع وهيكله وقائمة محتوياته لنماذج اللغة الكبيرة (LLM).

المعلومات الأساسية

العنصرالمحتوى
اسم الملفllms.txt
موقع الوضعجذر النطاق (https://example.com/llms.txt)
التنسيقMarkdown (نص عادي)
ترميز الأحرفUTF-8
المقترحllmstxt.org (Jeremy Howard وآخرون)
حالة التوحيدمعيار فعلي (ليس مواصفة رسمية مثل RFC)
البوتات القارئةGPTBot و ClaudeBot و PerplexityBot و Google-Extended وغيرها

باختصار

robots.txt = "لا تدخل" / llms.txt = "نحن موقع كهذا"

بينما robots.txt هو ملف للتحكم في الوصول (سماح/رفض)، فإن llms.txt هو ملف لوصف محتوى الموقع (تقديم ذاتي). لا يتعارضان -- بل يُستخدمان معاً.

2. لماذا نحتاجه -- الفرق مع robots.txt

قد تعتقد أن "خريطة الموقع وعلامات meta كافية لفهم AI للموقع". هذا صحيح إلى حد ما، لكن llms.txt يوفر مزايا فريدة.

مقارنة أدوار robots.txt و sitemap.xml و llms.txt

الملفالغرضالجمهور المستهدفالمحتوى
robots.txtسماح/رفض الزحفجميع الزواحفقواعد Allow/Disallow
sitemap.xmlتقديم قائمة الصفحاتمحركات البحثعناوين URL وتواريخ التحديث والأولوية
llms.txtوصف محتوى الموقعزواحف LLMملخص وهيكل وملخصات المحتوى

ثلاثة أسباب تجعل llms.txt ضرورياً

السبب 1: نماذج LLM لا تستطيع زحف الموقع بالكامل بكفاءة

بينما يزحف Googlebot مليارات الصفحات ويبني فهارس ضخمة، فإن زواحف LLM لا تقوم بزحف شامل بنفس الدرجة. بوضع llms.txt يمكنك إخبار AI بكفاءة "أهم محتوى في هذا الموقع هو هذا".

السبب 2: يزيد احتمال الاستشهاد في إجابات AI

عندما يولد ChatGPT أو Perplexity إجابات من بحث الويب، فإن توضيح تخصص الموقع ومحتواه عبر llms.txt يُعتقد أنه يسهّل التعرف على الموقع كمصدر موثوق. هذا جزء من LLMO (تحسين نماذج اللغة الكبيرة).

للاطلاع على شرح مفصل لـ LLMO، راجع "ما هو LLMO؟".

السبب 3: يوصل معلومات وصفية غير موجودة في sitemap.xml

sitemap.xml مجرد قائمة عناوين URL. أما llms.txt فيمكنه إيصال المعلومات التالية أيضاً.

  • موضوع الموقع ومجال تخصصه
  • ملخص وتصنيف كل محتوى
  • تكرار التحديث وحجم الموقع
  • هل الموقع متعدد اللغات
  • معلومات الاتصال

3. مواصفات الصيغة -- ماذا نكتب وكيف

هيكل صيغة llms.txt: H1 لاسم الموقع، كتلة اقتباس للملخص، H2 للأقسام وقائمة المحتوى ومعلومات الموقع

يُكتب llms.txt بتنسيق Markdown. الصيغة المستندة إلى مواصفات llmstxt.org هي كالتالي.

الهيكل الأساسي

# اسم الموقع

> وصف ملخص الموقع. جملة إلى 3 جمل توضح موضوع الموقع وجمهوره والقيمة المقدمة بإيجاز.

## اسم القسم 1

- [عنوان الصفحة](URL): وصف ملخص الصفحة

## اسم القسم 2

- [عنوان الصفحة](URL): وصف ملخص الصفحة
- [عنوان الصفحة](URL): وصف ملخص الصفحة

قواعد الصيغة

العنصرصيغة Markdownالدور
عنوان H1# اسم الموقعالاسم الرسمي للموقع. واحد فقط في الملف
كتلة اقتباس> نص الملخصوصف ملخص الموقع. يوضع مباشرة بعد H1
عنوان H2## اسم القسمتجميع المحتوى
روابط القائمة- [العنوان](URL): الوصفمعلومات المحتوى الفردي

مثال عملي

# My Tech Blog

> My Tech Blog is a software engineering blog covering web development, cloud infrastructure, and AI tools. Updated weekly with practical tutorials and comparisons.

## Main Sections

- [Articles](https://example.com/articles): 50+ in-depth technical articles
- [Tutorials](https://example.com/tutorials): Step-by-step coding tutorials

## Popular Articles

- [React vs Vue in 2026](https://example.com/articles/react-vs-vue): A detailed comparison of React and Vue.js for modern web development, covering performance, ecosystem, and learning curve.
- [Docker for Beginners](https://example.com/articles/docker-beginners): Complete guide to Docker containers for developers who have never used containerization.

## Site Information

- URL: https://example.com
- Sitemap: https://example.com/sitemap.xml
- Languages: en, ja
- Contact: admin@example.com

ملاحظات مهمة

  • الكتابة بالإنجليزية بشكل افتراضي. مواصفات llms.txt وأمثلته جميعها بالإنجليزية، مما يجعلها أفضل ممارسة. للمواقع متعددة اللغات، يُنصح بالكتابة بالإنجليزية وتحديد اللغات المدعومة عبر Languages: ja, en, es, .... لكن للمواقع أحادية اللغة (مثل موقع بالكامل بالفرنسية أو الروسية)، فإن الكتابة بلغة الموقع مقبولة تماماً. نماذج LLM الرئيسية (GPT وClaude وGemini وغيرها) تعالج معظم اللغات بدقة عالية، ومستخدمو هذه المواقع سيستفسرون بنفس اللغة، مما يضمن اتساق الإجابات.
  • ترميز الأحرف يجب أن يكون UTF-8. أي ترميز آخر قد يسبب تشوه الأحرف
  • تجنب الأحرف الخاصة مثل شرطة em (--). لأنه يُعرض كنص عادي، قد تتشوه في بعض المتصفحات. استخدم الواصلة (-) أو الواصلة المزدوجة (--)
  • استخدم المسارات المطلقة لـ URL (عنوان URL كامل يبدأ بـ https://)
  • H1 واحد فقط في الملف. استخدم H2 لتقسيم الأقسام

4. المعلومات الواجب تضمينها -- إلزامية ومستحسنة واختيارية

كثيرون يحتارون فيما يكتبون، لذا نرتبها حسب الأولوية.

معلومات إلزامية (بدونها لا فائدة من llms.txt)

المعلومةموقع الكتابةمثال
اسم الموقععنوان H1# AI Arte
ملخص الموقعكتلة اقتباس> AI learning platform...
الأقسام الرئيسيةH2 + قائمة روابط- [Articles](URL): الوصف

معلومات مستحسنة (تزيد من فهم AI للموقع)

المعلومةلماذا مطلوبة
قائمة جميع المحتوياتيستطيع AI فهم نطاق تغطية الموقع بالكامل
ملخص من سطر واحد لكل محتوىيستطيع AI فهم محتوى الصفحة مسبقاً
نظام التصنيفات/الوسوميوضح هيكل المعلومات في الموقع
عنوان URL للموقعتوضيح URL الأساسي
عنوان URL لخريطة الموقعإرشاد لقائمة URL التفصيلية
اللغات المدعومةمهم للمواقع متعددة اللغات
معلومات الاتصالتثبت هوية مشغل الموقع

معلومات اختيارية (مرغوبة لكنها ليست إلزامية)

  • المكدس التقني: ما الذي بُني به الموقع (أطر العمل وغيرها)
  • تكرار التحديث: كم مرة يُضاف محتوى جديد
  • إجمالي المحتويات: عدد المقالات وغيرها
  • سياسة الترخيص/الاستشهاد: هل يسمح لـ AI بالاستشهاد
  • معلومات API: إذا كان الوصول البرمجي متاحاً

معلومات لا يجب كتابتها

  • معلومات سرية: عناوين URL للوحة الإدارة ونقاط نهاية API الداخلية وغيرها
  • معلومات شخصية: معلومات شخصية أكثر من اللازم (العنوان ورقم الهاتف وغيرها)
  • معلومات المصادقة: مفاتيح API وكلمات المرور وغيرها

5. الفرق بين llms.txt و llms-full.txt

تحدد مواصفات llmstxt.org بالإضافة إلى llms.txt ملفاً يسمى llms-full.txt.

الملفالمحتوىالحجم التقريبيالاستخدام
llms.txtملخص الموقع وهيكله وقائمة الروابط1-50 كيلوبايت"جدول محتويات" للموقع بالكامل
llms-full.txtالنص الكامل لجميع المحتويات100 كيلوبايت - عدة ميغابايتتقديم النص الكامل لـ AI

حالات يُحتاج فيها llms-full.txt

  • التوثيق التقني: مراجع API ووثائق المكتبات وغيرها، حيث يزيد فهم AI للنص الكامل من دقة الإجابات
  • قواعد المعرفة: مجموعات الأسئلة الشائعة والمسارد وغيرها من المحتوى الذي يُستشهد به جزئياً كثيراً

حالات لا يُحتاج فيها llms-full.txt

  • المدونات ومواقع الإعلام: عدد المقالات كبير وتجميع النص الكامل في ملف واحد يجعله ضخماً جداً. ملخصات llms.txt كافية
  • مواقع التجارة الإلكترونية: تقديم معلومات المنتجات عبر البيانات المنظمة (JSON-LD وغيرها) أنسب
  • مواقع الشركات: عدد الصفحات قليل ويمكن تغطيتها بـ llms.txt وحده

للمدونات ومواقع الإعلام العادية، llms.txt وحده كافٍ. اعتبر llms-full.txt موجهاً للتوثيق التقني.

6. ملف ثابت أم توليد ديناميكي -- أيهما تختار

مقارنة الملف الثابت والتوليد الديناميكي: الثابت سهل لكنه عرضة للتقادم، الديناميكي دائماً محدث وتكلفة التشغيل منخفضة

هناك طريقتان رئيسيتان لتشغيل llms.txt.

الطريقة 1: ملف ثابت

وضع ملف نصي مباشرة في public/llms.txt (أو مسار مكافئ).

المزايا:

  • أسهل طريقة للتنفيذ (مجرد وضع ملف)
  • لا حمل على الخادم
  • يعمل بدون إطار عمل

العيوب:

  • يجب تحديث الملف يدوياً كلما أُضيف أو عُدل محتوى
  • إذا نسيت التحديث يصل لـ AI معلومات قديمة
  • عدد المحتويات والتصنيفات قد يتباين مع الموقع الفعلي

الطريقة 2: توليد ديناميكي

يستقبل التطبيق طلب /llms.txt ويجلب أحدث المعلومات من قاعدة البيانات ويولد النص ديناميكياً.

المزايا:

  • يعكس دائماً أحدث المعلومات
  • إضافة مقال تنعكس تلقائياً في llms.txt
  • عدد المحتويات وأسماء التصنيفات دائماً دقيقة

العيوب:

  • يتطلب جهداً في التنفيذ (تعريف مسار + وحدة تحكم)
  • وصول لقاعدة البيانات مع كل طلب (يمكن تخفيفه بالتخزين المؤقت)
  • يتطلب إطار عمل

معايير الاختيار

الشرطالتوصية
المحتويات أقل من 10 ونادراً ما تزيدملف ثابت كافٍ
المحتويات أكثر من 10 أو تُحدّث مرة شهرياً أو أكثريُنصح بالتوليد الديناميكي
تستخدم WordPress أو Laravel أو Django وغيرهاالتوليد الديناميكي سهل
موقع ثابت (Hugo أو Jekyll أو Astro وغيرها)التوليد التلقائي عند البناء هو الأمثل
تشغيل فردي وتريد تقليل الصيانةالتوليد الديناميكي (ثبّته مرة وانسَ)

الخلاصة: إذا حرت اختر التوليد الديناميكي. تكلفة التنفيذ الأولي أعلى، لكن يمكنك "تثبيته ونسيانه" مما يقلل تكلفة التشغيل على المدى الطويل. أسوأ سيناريو هو البدء بملف ثابت "ونسيان تحديثه فيصل لـ AI معلومات قديمة".

7. طرق التنفيذ -- أمثلة أكواد لأشهر أطر العمل

فيما يلي طرق التنفيذ للتوليد الديناميكي لـ llms.txt في أشهر أطر العمل.

Laravel (PHP)

تعريف المسار (routes/web.php):

use App\Http\Controllers\LlmsTxtController;

Route::get('/llms.txt', [LlmsTxtController::class, 'index']);

وحدة التحكم (app/Http/Controllers/LlmsTxtController.php):

class LlmsTxtController extends Controller
{
    public function index()
    {
        $articles = Article::published()
            ->with(['translations' => fn($q) => $q->where('locale', 'en')])
            ->orderBy('published_at')
            ->get();

        $lines = [];
        $lines[] = '# My Site Name';
        $lines[] = '';
        $lines[] = '> Site description here.';
        $lines[] = '';
        $lines[] = '## All Articles (' . $articles->count() . ')';
        $lines[] = '';

        foreach ($articles as $article) {
            $t = $article->translations->first();
            if (!$t) continue;
            $url = 'https://example.com/en/articles/' . $article->slug;
            $lines[] = '- [' . $t->title . '](' . $url . '): ' . $t->meta_description;
        }

        $content = implode("\n", $lines);
        return response($content, 200)
            ->header('Content-Type', 'text/plain; charset=utf-8');
    }
}

النقطة المهمة هي تحديد Content-Type: text/plain; charset=utf-8 صراحةً. نسيان ذلك قد يؤدي لتفسيره كـ HTML.

Django (Python)

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('llms.txt', views.llms_txt, name='llms_txt'),
]

# views.py
from django.http import HttpResponse
from .models import Article

def llms_txt(request):
    articles = Article.objects.filter(
        status='published'
    ).order_by('published_at')

    lines = ['# My Site', '', '> Description.', '', '## Articles', '']
    for a in articles:
        lines.append(f'- [{a.title}](https://example.com/articles/{a.slug}): {a.meta_description}')

    content = '\n'.join(lines)
    return HttpResponse(content, content_type='text/plain; charset=utf-8')

Next.js (TypeScript)

// app/llms.txt/route.ts (App Router)
import { NextResponse } from 'next/server'

export async function GET() {
  // جلب البيانات من DB أو CMS
  const posts = await getAllPosts()

  const lines = [
    '# My Site',
    '',
    '> Description.',
    '',
    '## Articles',
    '',
    ...posts.map(p =>
      `- [${p.title}](https://example.com/posts/${p.slug}): ${p.description}`
    ),
  ]

  return new NextResponse(lines.join('\n'), {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  })
}

WordPress (PHP)

يُضاف إلى functions.php أو كإضافة:

// functions.php
add_action('init', function() {
    add_rewrite_rule('^llms\.txt$', 'index.php?llms_txt=1', 'top');
});

add_filter('query_vars', function($vars) {
    $vars[] = 'llms_txt';
    return $vars;
});

add_action('template_redirect', function() {
    if (!get_query_var('llms_txt')) return;

    header('Content-Type: text/plain; charset=utf-8');
    $posts = get_posts(['numberposts' => -1, 'post_status' => 'publish']);

    echo "# " . get_bloginfo('name') . "\n\n";
    echo "> " . get_bloginfo('description') . "\n\n";
    echo "## Articles (" . count($posts) . ")\n\n";

    foreach ($posts as $post) {
        $url = get_permalink($post);
        $desc = get_the_excerpt($post);
        echo "- [{$post->post_title}]({$url}): {$desc}\n";
    }
    exit;
});

في WordPress لا تنسَ إعادة حفظ إعدادات الروابط الدائمة (تحديث قواعد إعادة الكتابة).

مولدات المواقع الثابتة (Hugo / Astro وغيرها)

اكتب سكريبت للتوليد التلقائي عند البناء.

# build-llms-txt.sh (مثال لـ Hugo)
#!/bin/bash
echo "# My Site" > public/llms.txt
echo "" >> public/llms.txt
echo "> Site description." >> public/llms.txt
echo "" >> public/llms.txt
echo "## Articles" >> public/llms.txt
echo "" >> public/llms.txt

for file in content/posts/*.md; do
  title=$(grep '^title:' "$file" | sed 's/title: //')
  slug=$(basename "$file" .md)
  desc=$(grep '^description:' "$file" | sed 's/description: //')
  echo "- [${title}](https://example.com/posts/${slug}): ${desc}" >> public/llms.txt
done

بتنفيذه في خط أنابيب CI (مثل GitHub Actions) قبل البناء، يتم التحديث التلقائي مع كل نشر.

8. التحقق والاختبار بعد التثبيت

بعد تثبيت llms.txt، تحقق من النقاط التالية.

قائمة التحقق الأساسية

عنصر التحققطريقة التحقق
هل يمكن الوصول عبر URLcurl https://yoursite.com/llms.txt
هل Content-Type صحيحتحقق من text/plain; charset=utf-8 بـ curl -I
هل الأحرف تظهر بشكل صحيحافتحه مباشرة في المتصفح وتحقق من عرض النص بشكل صحيح
هل الروابط صحيحةهل يمكن الوصول فعلاً لعناوين URL المذكورة
هل حالة HTTP هي 200curl -o /dev/null -w "%{http_code}"
هل لم يتم حظره في robots.txtتأكد من عدم وجود Disallow: /llms.txt في robots.txt

تحققات إضافية للتوليد الديناميكي

  • بعد إضافة مقال تحقق من llms.txt: هل انعكس المقال الجديد
  • هل عدد المحتويات المعروض صحيح: هل يطابق رقم "All Articles (27)" عدد المقالات المنشورة فعلاً
  • هل لا يتضمن مقالات غير منشورة: تأكد من عدم ظهور المسودات أو المقالات المجدولة

أدوات التحقق

حتى أبريل 2026، لا يوجد أداة تحقق رسمية لـ llms.txt. لكن يمكن التحقق بالطرق التالية.

  • اطلب من ChatGPT أو Claude قراءته: اسأل "اقرأ https://yoursite.com/llms.txt وأخبرني عن هذا الموقع"
  • عارض Markdown: الصق محتوى llms.txt في عارض Markdown وتحقق من عرض الهيكل بشكل صحيح
  • أدوات تدقيق SEO: بعض أدوات تدقيق SEO بدأت تدعم فحص وجود llms.txt

9. أمثلة واقعية لملفات llms.txt

لنلقِ نظرة على اتجاهات المواقع التي تبنت llms.txt.

خصائص المواقع المتقدمة في التبني

نوع الموقعنسبة التبنيالسبب
خدمات وأدوات AIعاليةصناعة AI نفسها واعية بـ LLMO
التوثيق التقنيعاليةحاجة لإيصال المعلومات بدقة لـ AI
المدونات التقنيةمتوسطةحساسية عالية للاتجاهات التقنية
مواقع الشركاتمنخفضةالوعي لا يزال محدوداً
مواقع التجارة الإلكترونيةمنخفضةالأولوية للبيانات المنظمة (JSON-LD)

خصائص llms.txt الجيد

  • ملخص واضح وموجز -- يمكن فهم مجال تخصص الموقع من القراءة الأولى
  • جميع المحتويات مدرجة مع ملخصات -- يستطيع AI فهم الصورة الكاملة
  • نظام التصنيفات واضح -- يوضح هيكل المعلومات
  • توليد ديناميكي -- دائماً في أحدث حالة

خصائص llms.txt السيئ

  • اسم الموقع ومعلومات الاتصال فقط -- كمية المعلومات قليلة جداً ولا تساعد AI على الفهم
  • نسخ ولصق النص الكامل لجميع المحتويات -- llms.txt هو "جدول محتويات" وليس "نص كامل". النص الكامل من مهام llms-full.txt
  • تُرك بمعلومات قديمة -- مكتوب "10 articles" بينما يوجد فعلاً 50 مقالاً، مما يضر بالمصداقية
  • يحتوي معلومات سرية -- حالات يكون فيها عنوان URL للوحة الإدارة أو مفاتيح API مكتوبة

الاسئلة الشائعة

س. هل لن يظهر موقعي في نتائج بحث AI إذا لم أضع llms.txt؟

لا، حتى بدون llms.txt يستطيع AI زحف موقعك وعرضه في نتائج البحث. llms.txt مجرد "ملف مساعد لتحسين فهم AI". لكن تثبيته يمكّن AI من فهم هيكل ومحتوى موقعك بدقة أكبر، مما يُعتقد أنه يزيد احتمال الاستشهاد في بحث AI. إنه مثل sitemap.xml في SEO -- يعمل بدونه، لكن وجوده أفضل.

س. إذا كنت أحظر زواحف AI في robots.txt، هل لـ llms.txt فائدة؟

إذا كنت تحظر User-agent: GPTBot وغيره في robots.txt، فإن ذلك البوت لن يزحف موقعك. لكن llms.txt مستقل عن قواعد robots.txt. قد يصل AI إلى llms.txt عبر مسار آخر (مثل لصق المستخدم للعنوان مباشرة). إذا كنت تحظر زواحف AI عمداً، فعدم تثبيت llms.txt هو النهج المتسق.

س. بأي لغة يجب كتابة llms.txt؟

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

س. هل هناك حد لحجم ملف llms.txt؟

لا يوجد حد صريح في المواصفات. لكن عملياً يُنصح بالبقاء تحت 50 كيلوبايت. حتى لمواقع بمئات المقالات، عنوان + ملخص من سطر واحد لكل مقال يبقى ضمن 50 كيلوبايت. إذا أردت تضمين النص الكامل، أعد ملف llms-full.txt منفصلاً.

س. ما تكرار التحديث المناسب؟

في حالة التوليد الديناميكي لا داعي للقلق لأنه يعيد أحدث المعلومات مع كل طلب. في حالة الملف الثابت، التحديث مع كل إضافة أو تعديل للمحتوى هو المثالي. على الأقل تحقق وحدّث مرة شهرياً. إذا كنت ستترك معلومات قديمة، يُنصح بالتحول للتوليد الديناميكي.

س. هل يؤثر على SEO؟

llms.txt لا يؤثر مباشرة على SEO التقليدي (ترتيب بحث Google). Google يستخدم Googlebot لزحف HTML ولا يعتبر llms.txt عاملاً في الترتيب. لكنه قد يؤثر على احتمال الاستشهاد في بحث AI مثل AI Overviews (إجابات AI في نتائج بحث Google) و ChatGPT و Perplexity. اعتبره إجراءً في طبقة مختلفة عن SEO التقليدي (LLMO).

س. هل توجد إضافات WordPress؟

حتى أبريل 2026، ظهرت عدة إضافات WordPress لتوليد llms.txt تلقائياً. لكن تختلف في الجودة والوظائف، لذا إذا استخدمت إضافة تأكد دائماً من المحتوى المولّد. يمكنك أيضاً إضافة بضعة عشرات من الأسطر البرمجية في functions.php لتحقيق ذلك بدون إضافة.