إعداد IndexNow: المفتاح، أول إرسال، وقراءة الاستجابة

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

التنفيذ⁨5⁩ دقائق للقراءة2521 مشاهدة
إعداد IndexNow: المفتاح، أول إرسال، وقراءة الاستجابة

IndexNow هو تنبيه من طلب واحد يخبر محركات البحث المشاركة بأن عنوان URL أُضيف أو تغيّر أو حُذف. يحتاج الإعداد إلى ثلاثة أشياء: مفتاح، وهذا المفتاح مستضاف في ملف نصي على نطاقك، وطلب HTTP واحد لكل عملية نشر. الإعداد مجاني، ويستغرق نحو عشرين دقيقة، ويعمل بالطريقة نفسها على موقع ثابت أو على نظام إدارة محتوى.

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

أي المحركات تستمع فعلًا

IndexNow بروتوكول مشترك، لذلك يصل طلب واحد إلى كل المشاركين. القائمة منشورة على indexnow.org وهي قصيرة.

المحركفي القائمة
Microsoft Bingنعم
Yandexنعم
Naverنعم
Seznam.czنعم
Yepنعم
Googleغير مدرج

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

الخطوة 1 — إنشاء مفتاح واستضافته

المفتاح يثبت للمحرك أن الإرسال جاء من شخص يتحكم بالنطاق. وهو نص تصنعه أنت، وقواعده ضيقة: من 8 إلى 128 حرفًا، باستخدام a-z وA-Z و0-9 والشرطات فقط. معرّف UUID من دون أقواس يحقق ذلك كله ويسهل إعادة توليده.

KEY=$(uuidgen | tr 'A-Z' 'a-z' | tr -d '{}')
echo -n "$KEY" > public/$KEY.txt
echo "https://example.com/$KEY.txt"

يجب أن يكون الملف بترميز UTF-8، وأن يحمل اسم المفتاح، وأن يحتوي المفتاح وحده. انشره، ثم افتح عنوان URL في المتصفح. إذا لم يُعِد المفتاح كنص عادي، فتوقف هنا: كل الخطوات التالية ستفشل بالرمز 403 من دون أن تشرح السبب.

يمكنك استضافة الملف خارج الجذر، لكن المفتاح عندئذ يغطي فقط عناوين URL الواقعة تحت ذلك المجلد. مفتاح في /catalog/key.txt يستطيع إرسال /catalog/anything ولا يستطيع إرسال /help/anything. ووضعه في الجذر يزيل السؤال كله.

هناك نقطة يقلبها كثيرون: المفتاح ليس سرًا مثل رمز API. عليك نشره على عنوان URL يستطيع أي شخص قراءته، لأن ذلك الملف العلني هو دليل التحكم. ووضعه في مستودعك ليس مشكلة. المهم أن يبقى الملف والقيمة المرسلة متطابقين.

الخطوة 2 — إرسال عنوان واحد يدويًا

قبل الأتمتة، أثبت التوصيل بطلب GET واحد. هذه هي الصيغة الموثقة لعنوان واحد في كل مرة.

curl -s -o /dev/null -w '%{http_code}\n' \
  "https://api.indexnow.org/indexnow?url=https://example.com/your-page&key=$KEY"

الرمز 200 يعني أن ملف المفتاح وُجد وقُرئ. ولا يعني أن الصفحة ستُفهرس. توثيق البروتوكول يقولها بصراحة: 200 يشير فقط إلى أن المحرك استلم عنوان URL.

الخطوة 3 — الانتقال إلى نقطة الإرسال بالدفعات

عنوان واحد لكل طلب مناسب لاختبار يدوي وغير مناسب لخط نشر. الصيغة بالدفعات تقبل حتى 10,000 عنوان URL في طلب POST واحد، وهو أكثر مما تحتاجه معظم المواقع في دفعة واحدة.

POST /indexnow HTTP/1.1
Host: api.indexnow.org
Content-Type: application/json; charset=utf-8

{
  "host": "example.com",
  "key": "your-key",
  "keyLocation": "https://example.com/your-key.txt",
  "urlList": [
    "https://example.com/page-a",
    "https://example.com/page-b"
  ]
}

يجب أن تطابق قيمة host نطاق كل عنوان في القائمة. وخلط نطاقين في حمولة واحدة هو السبب الأكثر شيوعًا لرد 422 على دفعة تبدو صحيحة.

قراءة رموز الاستجابة

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

الرمزالمعنىما يجب إصلاحه
200استُلملا شيء. استُلم، ولم يُفهرس
400طلب غير صالحJSON تالف أو ترميز URL خاطئ
403مفتاح غير صالحالملف مفقود، أو موجود لكن المفتاح داخله مختلف
422غير قابل للمعالجةعنوان لا ينتمي إلى النطاق، أو المفتاح يخالف قواعد الصيغة
429طلبات كثيرةأبطئ الإرسال؛ أنت تُقرأ كرسائل مزعجة

الرمز 403 هو مصير كل محاولة أولى تقريبًا، وله سببان: الملف ليس حيث قلت، أو هو موجود والمفتاح بداخله لا يطابق المرسل. اجلب الملف بـ curl وقارنه بقيمة السكربت قبل تغيير أي شيء آخر. والرمز 422 في دفعة كانت تنجح كعنوان واحد يشير إلى الحقل host، لا إلى المفتاح.

التسليم: إرسال تُدرجه في خط النشر

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

#!/usr/bin/env bash
set -euo pipefail
HOST="example.com"
KEY="your-key"

URLS=$(curl -s "https://$HOST/sitemap.xml" \
  | grep -o '<loc>[^<]*</loc>' \
  | sed 's/<[^>]*>//g' \
  | python3 -c 'import json,sys; print(json.dumps([l.strip() for l in sys.stdin if l.strip()]))')

curl -s -o /dev/null -w 'indexnow: %{http_code}\n' \
  -X POST "https://api.indexnow.org/indexnow" \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d "{\"host\":\"$HOST\",\"key\":\"$KEY\",\"keyLocation\":\"https://$HOST/$KEY.txt\",\"urlList\":$URLS}"

عادتان تحافظان على ذلك مع الوقت. سجّل ما أرسلته ومتى، حتى يُتخطى الإرسال المكرر بدل تكراره. وأرسل عند التغيير لا وفق جدول: إرسال ليلي لخريطة موقع لم تتغير هو ما يجلب الرمز 429.

ثلاث طرق لإفساد الإعداد

الثلاث تعيد رمزًا ظاهرًا، ولهذا فجدول الاستجابات هو أول ما يُفحص.

  1. يُقدَّم ملف المفتاح بنوع محتوى خاطئ أو بسطر جديد زائد. يبدو صحيحًا في المتصفح. اجلبه بـ curl وقارنه بايتًا بايتًا.
  2. يخرج الإرسال قبل انتهاء النشر. يصل المحرك إلى عنوان لم ينشره النطاق بعد، ويُستهلك التنبيه على 404.
  3. كل عملية بناء ترسل خريطة الموقع كاملة. لا ينكسر شيء في البداية، ثم تبدأ الاستجابات بالرمز 429 وتضيع التنبيهات المفيدة في الضجيج.

ما لن يفعله IndexNow

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

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

ما يستحق الفحص إلى جانب IndexNow هو بقية السلسلة. إذا كانت خريطة موقعك تختم كل عنوان بوقت البناء، فإن الإرسال بقوة أكبر لا يصلح الإشارة؛ مسحنا لحقل lastmod في خرائط الموقع وجد 13 موقعًا من 24 في تلك الحالة. ومسار ترويج المنتج مصمم لفحص السلسلة كلها لا نقطة واحدة. وقسم المطورين في API وMCP يوضح كيفية ربط الإرسال بعملية النشر الخاصة بك.

أسئلة شائعة

هل يعمل IndexNow مع Google؟

Google ليس ضمن المشاركين المدرجين على indexnow.org. لم نختبر ما إذا كان Google يقرأ هذه الإرسالات بطريق آخر، لذلك لا نؤكد أيًا من الاحتمالين.

كم مرة يمكنني الإرسال؟

لا ينشر البروتوكول حدًا بعدد المرات في الساعة، لكن الرمز 429 موجود تحديدًا للإفراط في الإرسال. وبالنسبة للمحتوى الذي ينشئه المستخدمون، التوجيه الرسمي هو التقليل التدريجي: كل عنصر حتى 20، ثم واحد من كل خمسة حتى 100، ثم واحد من كل عشرة حتى 1,000.

هل أحتاج إلى Bing Webmaster Tools؟

لا للإرسال. تحتاجه للتحقق: هناك ترى هل استُلمت عناوينك، وهو التأكيد المجاني الوحيد في البروتوكول.

هل يمكن تغيير المفتاح لاحقًا؟

نعم. استضف الملف الجديد، وغيّر القيمة في السكربت، وأبقِ الملف القديم مدة. المحركات تعيد قراءة ملف المفتاح عند كل إرسال، لذا لا توجد خطوة تسجيل تعاد.

جزء من دليل QueryWin · المستوى ⁨2⁩

إعداد IndexNow: المفتاح، أول إرسال، وقراءة الاستجابة