كانت تقارير تحسين محركات البحث التقليدية بسيطة في السابق: كنت تقوم بتتبع التصنيفات والتحقق من مرات الظهور والنقرات في وحدة تحكم البحث، ثم تقوم بتعيين هذه الأرقام إلى تأثير الأعمال. لقد أعاد البحث القائم على الذكاء الاصطناعي تشكيل هذا التدفق. لم تعد المنصات مثل Google AI Overviews وAI Mode وPerplexity وBing Copilot مجرد قائمة بالنتائج، بل أصبحت تولد الإجابات وتختار المصادر التي يجب الرجوع إليها. ويعني هذا التحول أن السؤال الرئيسي لم يعد "هل نقوم بالترتيب؟" بل "هل يتم الاستشهاد بنا في الطبقة التوليدية؟
يكمن التحدي في أن طبقة الإجابة هذه لا تتواجد بدقة داخل أدوات التحليلات الحالية، كما أنها ليست مستقرة. فالاستعلام الذي يستشهد بعلامتك التجارية اليوم قد لا يشملك غدًا، حتى لو لم يتغير أي شيء على موقعك الإلكتروني. تتمحور تحليلات GEO حول تسليط الضوء على هذه الطبقة المخفية، وتتبع كيفية تحركها، وربط تلك المظاهر بنتائج قابلة للقياس.
الطرق النشطة مقابل الطرق السلبية لاكتشاف الرؤية
يمزج الإعداد الموثوق به لقياس الموقع الجغرافي الجغرافي بين طريقتين: التحقق النشط من مكان ظهورك ومراقبة كيفية تفاعل أنظمة البحث مع موقعك بشكل سلبي.
الكشف النشط يعني بناء عوامل المراقبة الخاصة بك التي تستعلم عن محركات بحث الذكاء الاصطناعي، وتلتقط الردود، وتتحقق من الإشارات إلى مجالك. يمكن أن يكون هذا خفيفًا مثل برنامج نصي للتشغيل الآلي للمتصفح يقوم بتشغيل مجموعة من الاستعلامات ويحفظ لقطات الشاشة، أو متقدمًا مثل خط أنابيب كامل يخزن بيانات الاقتباس المنظم من مخرجات HTML أو JSON. الجزء المهم هو التكرار - يتم إعادة توليد إجابات الذكاء الاصطناعي في كل مرة، لذلك تحتاج إلى تشغيل هذه العوامل في كثير من الأحيان لالتقاط كيفية تغير النتائج. هذا الاختلاف هو بيانات مفيدة في حد ذاتها، خاصةً عندما تقارنها بالتغييرات في المحتوى الخاص بك أو المجموعة التنافسية الأوسع.
يأتي الاكتشاف السلبي من سجلات الخادم الخاص بك. من خلال تتبع طلبات برامج زحف الذكاء الاصطناعي، يمكنك معرفة متى تجلب هذه الأنظمة صفحاتك. على سبيل المثال، إذا لاحظت أن برنامج PerplexityBot يصل إلى عناوين URL معينة بشكل متكرر أكثر ثم لاحظت ارتفاعًا في الاستشهادات لتلك الصفحات نفسها، فقد كشفت عن وجود صلة واضحة بين الاسترجاع والتعرض. باستخدام تحليل أكثر تقدمًا، يمكنك تجميع زيارات البوتات هذه حسب الصفحة وفهم أجزاء موقعك التي يتم إعطاء الأولوية لها.
تتبع روبوتات البحث الآلي للذكاء الاصطناعي
إحدى الطرق الأكثر مباشرةً لفهم كيفية تغذية المحتوى الخاص بك بالإجابات التوليدية هي مراقبة الروبوتات التي تزحف إلى موقعك عن كثب. يمثل وكلاء المستخدم هؤلاء طبقة الاسترجاع لمنصات مثل ChatGPT وClaude وPerplexity وBing Copilot وغيرها. من خلال مراقبتهم في سجلات الخادم الخاص بك، يمكنك الحصول على إشارة مبكرة حول متى وكيف يتم جمع المحتوى الخاص بك لتضمينه المحتمل في الردود التي يتم إنشاؤها بواسطة الذكاء الاصطناعي.
هذه الرؤية مهمة لأن التغييرات في نشاط الزحف غالبًا ما تتماشى مع التحولات في وجودك عبر ميزات بحث الذكاء الاصطناعي. إذا زادت بعض برامج الزحف الآلي من زياراتها، فقد يشير ذلك إلى فرصة أقوى لاسترجاع صفحاتك والاستشهاد بها. يمنحك إنشاء قائمة محدّثة ببرامج الزحف هذه والحفاظ عليها، ثم مطابقة نشاطها مع ظهورك التوليدي، إحدى الطرق الملموسة القليلة لقياس عملية تعمل في الظلام.
البائع | وكيل المستخدم / الرمز المميز | الغرض | كيفية الإدارة | ملاحظات إضافية |
OpenAI | GPTBot | يجمع المحتوى للتدريب على نموذج OpenAI | حظر أو السماح في robots.txt (وكيل المستخدم: GPTBot) | موثقة على الموقع الرسمي للذكاء الاصطناعي المفتوح (OpenAI) |
OAI-SearchBot | يجلب الصفحات لنتائج بحث ChatGPT، وليس للتدريب | وكيل المستخدم: OAI-SearchBot | تستخدم خصيصاً للاسترجاع | |
أنثروبك | كلود بوت | زاحف واسع النطاق لتدريب نموذج كلود | التحكم باستخدام robots.txt | شرح عام في مستندات المساعدة الخاصة بأنثروبيك |
كلود-المستخدم | يتم تشغيل أداة التثبيت أثناء استعلامات المستخدم المباشرة | وكيل المستخدم: كلود-المستخدم | متميز عن روبوت التدريب | |
الحيرة | روبوت الحيرة | الزاحف الرئيسي الذي يبني فهرس Perplexity | وكيل المستخدم: PerplexityBot | نشر نطاقات IP وتفاصيل الروبوت |
بيربليكسيتي-المستخدم | أداة جلب وقت الطلب عندما يسأل المستخدم سؤالاً | وكيل المستخدم: بيربليكسيتي-المستخدم | لا يستخدم للفهرسة طويلة الأجل | |
جوجل | عائلة غوغل بوت | برامج الزحف القياسية للويب والصور والفيديو وغيرها. | يتم التحكم فيها في robots.txt | يغذي كلاً من ميزات البحث والميزات التوليدية |
Google-Extended | الرمز المميز الذي يحكم استخدام المحتوى الخاص بك في ميزات الذكاء الاصطناعي | أضف في robots.txt كعميل مستخدم: Google-Extended | ليست مجنزرة في حد ذاتها، بل مجرد مفتاح تحكم | |
مايكروسوفت | بينغبوت | الزاحف الأساسي لـ Bing، المستخدم أيضاً في Copilot | وكيل المستخدم: bingbot | يتصرف مثل Googlebot مع تكامل الذكاء الاصطناعي |
تفاحة | أبل بوت | الزاحف لخدمات Siri و Spotlight و Apple | وكيل المستخدم: أبل بوت | مجنزرة Apple القياسية |
Applebot-Extended | الرمز المميز لإلغاء الاشتراك في استخدام Apple للتدريب على الذكاء الاصطناعي | التحكم في robots.txt | يؤثر فقط على تدريب النموذج، وليس الزحف |
تشكيل الرؤية باستخدام NUOPTIMA
في نوبتيما، نرى أن الرؤية أكثر من مجرد تصنيفات البحث. في النتائج التي تعتمد على الذكاء الاصطناعي، فإن السؤال هو ما إذا كانت علامتك التجارية معترف بها ومستشهد بها وموثوق بها في الإجابة نفسها. لهذا السبب نقوم بمواءمة تحسين محركات البحث الكلاسيكية مع تحسين المحرك التوليدي - مما يساعد العلامات التجارية على كسب التواجد حيثما كان ذلك أكثر أهمية.
نحن نجمع بين الاستراتيجية والبيانات والتنفيذ للتأكد من أن المحتوى الخاص بك قابل للاسترجاع بواسطة أنظمة الذكاء الاصطناعي ومؤثر للمستخدمين الحقيقيين. يمتد عملنا ليشمل تحسين محركات البحث التقنية، والتحسين الدولي، والمحتوى المصمم لتحقيق نمو قابل للقياس. والنتيجة هي ظهور أقوى يُترجم مباشرةً إلى نتائج أعمال.
لماذا تختارنا العلامات التجارية:
- نتائج مثبتة مع أكثر من 70 من رواد الصناعة في قطاعات متعددة
- 3 أضعاف متوسط العائد على الإنفاق الإعلاني عبر الحملات الإعلانية العضوية والمدفوعة
- خبرة في توسيع نطاق البرمجيات كخدمة، والتجارة الإلكترونية، والرعاية الصحية، وغير ذلك الكثير
- التوازن بين الرؤى القائمة على الذكاء الاصطناعي والاستراتيجية التي يقودها البشر
لا يتعلق نهجنا بمطاردة مقاييس الغرور. بل يتعلق الأمر ببناء رؤية ثابتة - التواجد في إجابات الذكاء الاصطناعي، والمصداقية لدى المستخدمين، والمكاسب الدائمة في حركة المرور والإيرادات. من خلال التركيز على كيفية استرداد أنظمة الذكاء الاصطناعي للمعلومات والاستشهاد بها، نساعد العلامات التجارية على تأمين مكانة في المحادثات التي تقود القرارات.
نحن ندرك أيضاً أن كل شركة تختلف عن الأخرى. لهذا السبب نقوم بتصميم استراتيجيات تتناسب مع مجال عملك وجمهورك وأهدافك في النمو. وسواء كنت شركة ناشئة تبحث عن قوة جذب أو شركة قائمة تتوسع عالمياً، فإننا نطبق نفس العقلية القائمة على البيانات لتحقيق نتائج يمكنك قياسها.
في نهاية المطاف، مهمتنا بسيطة: التأكد من أن علامتك التجارية لا تظهر في البحث فحسب، بل أن تبرز في مستقبل الاكتشاف المدعوم بالذكاء الاصطناعي.
الكشف عن نظرة عامة على الذكاء الاصطناعي ووضع الذكاء الاصطناعي
تُشغِّل Google كلاً من "نظرة عامة على الذكاء الاصطناعي" و"وضع الذكاء الاصطناعي" على رأس أنظمتها التوليدية، ولكن يتصرف الاثنان بشكل مختلف، مما يعني أنك بحاجة إلى طرق منفصلة لقياسهما.
نظرة عامة على الذكاء الاصطناعي
تظهر الملخصات العامة مباشرةً في صفحة نتائج البحث، عادةً عندما يقرر جوجل أن الملخص السريع والمركب سيحسن التجربة. يتطلب اكتشافها أكثر من مجرد إلقاء نظرة سريعة على التصنيفات. فأنت بحاجة إلى التقاط صفحة نتائج البحث الكاملة، والبحث عن كتلة "نظرة عامة"، والتحقق مما إذا كان موقعك الإلكترونيّ مشارًا إليه في الإجابة أو مرتبطًا كمصدر.
ويكمن التحدي في أن النظرة العامة ليست ثابتة. قد يؤدي الاستعلام إلى نتيجة واحدة في الصباح ومجموعة مختلفة تمامًا في فترة ما بعد الظهر. في بعض الأحيان تختفي الكتلة تمامًا. عدم الاستقرار هذا يجعل التتبع المستمر أمرًا ضروريًا - لقطة شاشة واحدة لا تخبرك بشيء تقريبًا، ولكن عمليات الفحص المتكررة تكشف النمط الحقيقي لوجودك.
وضع الذكاء الاصطناعي
يعمل وضع الذكاء الاصطناعي بشكل مختلف. فهو موجود في علامة التبويب الخاصة به وينتج ردودًا أطول للمحادثة. ولأنه يهدف إلى الحفاظ على الحوار، فإن المصادر التي يستشهد بها غالبًا ما تختلف عن تلك التي تظهر في النظرة العامة. ويعني قياس الرؤية هنا التقاط مخرجات المحادثة كاملة واستخراج كل رابط متضمن.
من خلال المقارنة بين الاثنين: النظرة العامة ووضع الذكاء الاصطناعي - يمكنك أن ترى كيف تفضل جوجل مواقع مختلفة حسب السياق. هذا العرض جنبًا إلى جنب غالبًا ما يكشف عن تحيزات النظام الأساسي ويوضح أين تكون علامتك التجارية قوية في بيئة واحدة ولكنها مفقودة في البيئة الأخرى.
تتبع نظرة عامة على الذكاء الاصطناعي ووضع الذكاء الاصطناعي باستخدام FetchSERP
واحدة من أبسط الطرق لمراقبة ظهورك في أسطح الذكاء الاصطناعي من Google هي من خلال FetchSERP. يوفر النظام الأساسي مجموعة من نقاط نهاية واجهة برمجة التطبيقات التي يمكنها إرجاع كل من بيانات SERP التقليدية والنتائج التوليدية. بالنسبة لتتبع GEO، فإن نقطتي النهاية الأكثر أهمية هما:
- /serp_ai - يجمع بين نظرة عامة على الذكاء الاصطناعي ووضع الذكاء الاصطناعي في حمولة واحدة متى ما توفرت.
- /serp_ai_mode - نقطة نهاية أسرع، خاصة بالولايات المتحدة فقط تركز بشكل خاص على نتائج وضع الذكاء الاصطناعي.
يتطلّب كلاهما رمزًا مميزًا لواجهة برمجة التطبيقات في الرأس، ويحتاج كل طلب إلى استعلام البحث الخاص بك بالإضافة إلى معلمة بلد اختيارية (الافتراضي هو الولايات المتحدة).
كيف يتم تحويلها إلى أوراق
للحفاظ على كل شيء منظم، ستحتاج إلى ربط مكالمات واجهة برمجة التطبيقات هذه بورقة جوجل. إليك الهيكل الذي يعمل بشكل أفضل:
- علامة تبويب الكلمات المفتاحية: قائمة الاستعلامات الخاصة بك (يجب أن يكون العمود (أ) "كلمة رئيسية"، متبوعًا باستعلام واحد لكل صف).
- نتائج AIO_Results: يتم ملؤها تلقائيًا بالعلامات وتفاصيل المصدر كلما عرضت نظرة عامة للذكاء الاصطناعي علامتك التجارية.
- نتائج_طريقة_النتائج: مخرجات مماثلة لاستعلامات وضع الذكاء الاصطناعي.
- GEO_AISummary: ملخص جاري مع رسوم بيانية توضح عدد الاستعلامات التي تم تشغيلها على كل سطح ذكاء اصطناعي.
في كل مرة يتم فيها تشغيل البرنامج النصي، فإنه يلحق صفوفًا جديدة بطابع زمني. هذا يعني أنه يمكنك إنشاء سجل تاريخي لا يُظهر فقط ما إذا كان قد تم الاستشهاد بك، ولكن كيف تتغير هذه الرؤية بمرور الوقت.
ما أهمية ذلك
يساعدك تشغيل البرنامج النصي عدة مرات في اليوم الواحد على التقاط التقلبات قصيرة الأجل، بينما تساعدك عمليات التشغيل اليومية على بناء رؤية موثوقة طويلة الأجل. بمرور الوقت، يمكنك
- تتبع تواتر الاستشهادات واتساقها
- مقارنة ترتيب الاقتباس وموضعه
- الأنماط الفورية في التقلبات مقابل الاستقرار
إعداد البرنامج النصي
في جداول بيانات جوجل، ستضيف البرنامج النصي من خلال الامتدادات → البرنامج النصي للتطبيقات. قبل التشغيل الأول، قم بتعيين مفتاح واجهة برمجة التطبيقات ضمن إعدادات المشروع باسم الخاصية FETCHSERP_API_TOKEN. بمجرد الحفظ، الصق النص البرمجي وأعد تحميل الورقة، وسترى خيار قائمة جديد: GEO (FetchSERP) → إحضار وضع AIO & AI.
/**
* FetchSERP → متتبع جداول بيانات Google لملخصات الذكاء الاصطناعي (AIO) ووضع الذكاء الاصطناعي
* مع إشارات تشبه الرتبة ومحور وجود العلامة التجارية.
*
* علامات التبويب المتوقعة/المستحدثة:
* - الكلمات الرئيسية: العمود أ رأس العمود "كلمة رئيسية"، ثم استعلام واحد لكل صف.
* - العلامات التجارية: العمود أ رأس العمود "المجال" (نطاقات علامتك التجارية، بدون www).
* - AIO_Results: ملحق لكل عملية تشغيل (التواجد + المجالات العليا).
* - AI_Mode_Results: ملحق لكل عملية تشغيل (التواجد + المجالات العليا).
* - AI_Sources: مُلحق لكل عملية تشغيل (صف واحد لكل اقتباس مع الرتبة والبيانات الوصفية).
* - GEO_AISummary: ملخص الأعداد + الرسم البياني (مشغلات وضع AIO مقابل مشغلات وضع AI).
* - GEO_BrandPresence: محور لآخر شوط + مخطط لأسهم الرتبة 1.
*/
const FETCHSERP_BASE = 'https://www.fetchserp.com/api/v1';
const DEFAULT_COUNTRY = 'US';
الدالة onOpen() {
SpreadsheetApp.getUi()
.createMenu('GEO (FetchSERP)')
.addItem('Fetch AIO & AI Mode', 'RunAIOTracking')
.addToTUI();
}
الدالة RunAIOTracking() { {
const ss = SpreadsheetApp.getActiveSpreadsheet();
الرمز المميز = getApiToken_();
الكلمات المفتاحية = getKeywords_(ss);
تأكد من وجود BrandsSheet_(ss)؛ // تأكد من وجود العلامات التجارية (لا بأس أن تكون فارغة)
const aioSheet = ensureSheet_(ss, 'AIO_Results', [
"الطابع الزمني"، "الكلمة الرئيسية"، "البلد",
'has_i_overview', 'source_count', 'top_source_domain', 'all_sources'
]);
const aimodeSheet = ensureSheet_(ss, 'AI_Mode_Results', [
"الطابع الزمني"، "الكلمة الرئيسية"، "البلد",
'has_i_mode', 'source_count', 'source_count', 'top_source_domain', 'all_sources'
]);
const srcSheet = ensureSheet_(ss, 'AI_Sources', [
"الطابع الزمني"، "الكلمة الرئيسية"، "البلد"، "السطح"، // AIO أو AI_MODE
"الرتبة"، "عنوان url"، "المجال"، "العنوان"، "اسم_الموقع
]);
const now = تاريخ جديد();
const aioRows = [];
const aimodeRows = [];
const sourceRows = [];
لـ (const kw من الكلمات الرئيسية) {
const country = DEFAULT_COUNTRY;
// نقطة النهاية المدمجة الأساسية
const aiData = callFetchSerp_('serp_ai'، { الاستعلام: kw، البلد }، الرمز المميز);
// مسرع وضع الذكاء الاصطناعي الاختياري (للولايات المتحدة فقط، مخبأ مؤقتًا)
دع aiModeData = لاغية;
جرب {
aiModeData = callFetchSerp_('serp_ai_mode'، { الاستعلام: kw }، رمز مميز);
} التقاط (ه) {
// لا بأس بالتجاهل؛ ليس ضروريًا دائمًا
}
// - نظرة عامة على الذكاء الاصطناعي
const aioBlock = getBlock_(aiData, 'ai_overview');
const aioSources = normalizeSources_(aioBlock && aioBlock.sources);
const aioTop = aioSources.length ? aioSources[0] : فارغة;
aioRows.push([
الآن، كو، البلد
!!aioBlock
aioSources.length,
aioTop ? domainOnly_(aioTop.url.|| aioTop.site_name || ") : ",
aioSources.map(s => domainOnly_(s.url || s.site_name || ")).join(' | ')
]);
// دفع المصادر التفصيلية مع الرتبة
aioSources.forEach((s، i) => {
sourceRows.push([
الآن، كو، بلد، 'AIO',
i + 1,
s.url || ",
domainOnly_(s.url ||| s.site_name || "),
s.title || ",
s.s.site_name || "
]);
});
// -- وضع ai --
const aiModeBlock = extractAiModeBlock = extractAiModeBode_(aiModeData) || extractAiModeBlock_(aiData);
const aimSources = normalizeSources_(aiModeBlock && aiModeBlock.sources);
const aimTop = aimSources.length ? aimSources[0] : فارغة;
صفوف aimodeRows.push([
الآن، كو، البلد
!!aiModeBlock,
الطول,
aimTop ؟ domainOnly_(aimTop.url.|| aimTop.site.name ||| ") : ",
aimSources.map(s => domainOnly_(s.url || s.site_name || ")).join(' | '' |')
]);
aimSources.forEach((s، i) => {
sourceRows.push([
الآن، kw، البلد، 'AI_MODE',
i + 1,
s.url || ",
domainOnly_(s.url ||| s.site_name || "),
s.title || ",
s.s.site_name || "
]);
});
Utilities.sleep(400)؛ // ملائم للمعدل
}
إذا (طول الصفوف aioRows.length) appendRows_(aioSheet, aioRows);
إذا (طول الصفوف (aimodeRows.length)) appendRows_(aimodeSheet, aimodeRows);
إذا كان (طول الصفوف المصدر) appendRows_(srcSheet, sourceRows);
buildSummaryAndChart_();
buildBrandBrandPresencePresencePivotAndChart_()؛ // جديد
}
/* -------- المساعدين والبنائين -------- */*.
الدالة getApiToken_() {
const props = PropertiesService.getScriptProperties();
يشكل الرمز المميز = props.getProperty('FETCHSERP_API_TOKEN') ||;
إذا (!الرمز المميز) {
طرح خطأ جديد('FETCHSERP_API_TOKEN مفقود في خصائص البرنامج النصي. قم بتعيينه في إعدادات المشروع.');
}
رمز الإرجاع;
}
دالة getKeywords_(ss) {
const sh = ss.getSheetByName('Keywords');
إذا (!sh) قم بإلقاء خطأ جديد('ورقة "كلمات مفتاحية" مفقودة مع رأس "كلمة مفتاحية" في A1.');
القيم الثابتة = sh.getRange(2, 1, Math.max(0, sh.getLastRow() - 1), 1)
.getValues().flat().map(String).map(s => s.trim()).filter(Boolean);
إذا (!values.length) قم بإلقاء خطأ جديد("لا توجد كلمات رئيسية موجودة تحت رأس "كلمة رئيسية" (A2:A).");
قيم الإرجاع;
}
الدالة ensureSheet_(ss، اسم، رؤوس) {
دع sh = ss.getSheetByName(name);
إذا (!sh) sh = ss.insertSheet(name);
إذا (sh.getLastRow() === 0) {
sh.getRange(1, 1, 1, 1, headers.length).setValues([headers]);
sh.setFrozenRows(1);
}
العودة ش;
}
دالة ensureBrandsSheet_(ss) {
دع sh = ss.getSheetByName('Brands');
إذا (!sh) {
sh = ss.insertSheet('Brands');
sh.getRange(1, 1).setValue('domain');
sh.setFrozenRows(1);
}
العودة ش;
}
دالة callFetchSerp_(مسار، بارامز، رمز) {
const url = '${FETCHSERP_BASE}/${path}?'+ Object.keys(params)
.map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])})).join('&');
const res = UrlFetchApp.fetchApp.fetch(url, {
الطريقة: "الحصول على",
الرؤوس: { 'accept': 'application/json'، 'authorization': 'Bearer ${token}'},
كتم صوت الاستثناءات: صحيح
});
const code = res.getResponseCode();
const text = res.getContentText();
إذا (إذا (الرمز = 300) قم بإلقاء خطأ جديد(``FetchSERP ${path} خطأ ${رمز}: ${نص}`);
المحاولة { إرجاع JSON.parse(text)؛ }
الالتقاط (e) { إلقاء خطأ جديد(``FetchSERP ${path} JSON غير صالح: ${text.slice(0, 300)}...})؛}}
}
دالة getBlock_(الحمولة، المفتاح) {
إذا (!الحمولة) تعود فارغة;
const d = payload.data || payload;
إذا (d.results & && d.results[key]) إرجاع d.results[key];
إذا (د[المفتاح]) أرجع د[المفتاح];
إرجاع لا شيء;
}
الدالة extractAiMode_(payload) { // تحمل أشكال مختلفة
إذا (!الحمولة) تعود فارغة;
const d = payload.data || payload;
في حالة (d.results &&d.results.ai_mode) إرجاع d.results.ai_mode;
إذا كان (d.ai_mode) يُرجع d.ai_mode;
إرجاع لا شيء;
}
دالة تطبيع المصادر_(المصادر) {
إذا (!Array.isArray.isArray(sources))) يُرجع [];
مصادر الإرجاع
خريطة(s => s | | مصفوفة)
.map(s => ({
url: s.url || ",
العنوان: s.title || ",
اسم الموقع: s.site_name: s.site_name || "
}))
.filter(s => s.url || s.site_name);
}
دالة المجال فقط_(u) {
جرب {
const host = (عنوان URL جديد (u)).hostname || ";
إرجاع host.replace(/^wwww\././i, ");
} التقاط (ه) {
إرجاع (u | | ").replace(/^www\\./i, ");
}
}
دالة إلحاق الصفوف_(ورقة، صفوف) {
sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, rows[0].length).setValues(rows);
}
/** قم بإنشاء أو تحديث علامة تبويب ملخص تاريخي مع الأعداد وحصة الصوت، بالإضافة إلى مخطط الاتجاهات. */
/** قم بإنشاء علامة تبويب ملخص تاريخي أو تحديثها مع الأعداد، ومعدل SOV، ومتوسطات متجددة لمدة 7 أيام، بالإضافة إلى مخطط الاتجاهات. */
دالة بناء الملخص والمخطط البياني_() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sum = ensureSheet_(ss, 'GEO_AISummary', [
"التاريخ",
"AIO_count"، "AIO_share_of_of_voice",
"AI_Mode_Mode_count"، "AI_Mode_share_of_ofoice",
'كلمات_مفتاحية_متتبعة',
"AIO_count_count_7dma"، "AI_Mode_count_7dma",
"AIO_sov_sov_7dma"، "AI_Mode_sov_7dma
]);
// مسح الصفوف القديمة (الاحتفاظ بالرأس)
إذا (sum.getLastRow() > 1) {
sum.getRange(2, 1, sum.getLastRow() - 1, 11).clearContentent();
}
const aio = ss.getSheetByName('AIO_Results');
const aim = ss.getSheetByName('AI_Mode_Results');
const kwSheet = ss.getSheetByName('Keywords');
إذا (!aio |||!aim |||!kwSheet) يتم الإرجاع;
const const keywordsTracked = Math.max(0, kwSheet.getLastRow() - 1);
// إنشاء خرائط التعداد اليومي
const aioCounts = countByDate_(aio, 1, 4)؛ // الطابع الزمني العمود 1، has_ai_overview العمود 4
const aimCounts = CountByDate_(aim, 1, 4)؛ // الطابع الزمني العمود 1، العمود 4
const allDates = Array.from(مجموعة جديدة([...Object.keys(aioCounts), ...Object.keys(aimCounts)]))
.sort((a, b) => تاريخ جديد (a) - تاريخ جديد (b));
// بناء الصفوف ذات القيم اليومية أولاً
const rows = allDates.map(date => تاريخ => {
const aCount = aioCounts[date] ||0;
const mCount = aimCounts[date] ||0;
const aSOV = الكلمات الرئيسية المتعقبة؟ aCount / الكلمات الرئيسية المتعقبة : 0;
const mSOV = الكلمات الرئيسية المتعقبة؟ mCount / الكلمات الرئيسية المتعقبة : 0;
إرجاع [
التاريخ,
أالعدد، أسيوف,
mCount، mSOV,
الكلمات المفتاحية,
لاغٍ، لاغٍ، // AIO_count_7dma، AI_Mode_count_7dma (تعبئة بعد)
لاغٍ، لاغٍ // AIO_sov_7dma، AI_Mode_sov_7dma (تعبئة بعد)
];
});
// حساب المتوسطات المتجددة لمدة 7 أيام (تتمحور حول آخر 7 أيام تنتهي عند المؤشر i)
const aCountSeries = rows.map(r => r[1]);
const mCountSeries = rows.map(r => r[3]);
const aSovSeries = rows.map(r => r[2]);
const mSovSeries = rows.map(r => r[4]);
const aCount7 = المتوسط المتداول(aCountSeries, 7);
const mCount7 = المتوسط المتداول(mCountSeries, 7);
const aSov7 = المتوسط المتداول(aSovSeries, 7);
const mSov7 = المتوسط المتداول(mSovSeries, 7);
// ملء الأعمدة المتداولة
بالنسبة إلى (دع i = 0؛ i < ط < rows.length; i++) {
الصفوف[i][6] = aCount7[i]؛ // AIO_count_7dma
الصفوف[i][7] = mCount7[i] ؛ // AI_Mode_count_count_7dma
الصفوف[i][8] = aSov7[i]؛ // AIO_sov_7dma
الصفوف[i][9] = mSov7[i]؛ // AI_Mode_sov_sov_7dma
}
إذا (طول الصفوف) {
sum.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
}
// إعادة بناء الرسم البياني: التعدادات اليومية + الأعداد اليومية + الأعداد الموزونة على محورين
المخططات البيانية = sum.getCharts();
المخططات البيانية.forEach(c => sum.removeChart(c));
يشكل dataHeight = rows.length.length + 1؛ // تضمين الرأس
يشكل الرسم البياني = sum.newChart()
.setChartType(Charts.ChartType.LINE)
.addRange(sum.getRange(1, 1, dataHeight, 10)) // يتضمن التعداد، وSOV، وSOV 7d
.setPosition(5, 1, 0, 0, 0)
.setOption('title', 'AIO & AI Mode - التعدادات اليومية ومتوسطات SOV لمدة 7 أيام')
.setOption('hAxis'، { العنوان: 'التاريخ'})
.setOption('vAxes'، {
0: {العنوان: "عدد الكلمات الرئيسية"},
1: { العنوان: "حصة الصوت (متوسط 7 أيام)، التنسيق: 'نسبة مئوية'}
})
// تعيين السلسلة: 0=AIO_count، 1=AIO_SOV، 2=AI_Mode_count، 3=AI_Mode_SOV، 4=Keywords_tracked,
// 5=AIO_count_aIO_count_7dma، 6=AI_Mode_Mode_count_7dma، 7=AIO_sov_7dma، 8=AI_Mode_sov_7dma
// سنعرض التعداد اليومي (0،2) على المحور 0، ونخفي التعداد اليومي الخام (1،3) لتقليل التشويش,
// إظهار SOV السلس (7،8) على المحور 1، وإخفاء الكلمات المفتاحية_المتبعة (4) + العد_7dma (5،6) من العرض.
.setOption('series', {
0: { targetAxisIndex: 0 }, // AIO_count (خط)
1: { targetAxisIndex: 1, visibleInLegend: false, lineWidth: 0, pointsVisible: false }, // خام AIO SOV (مخفي)
2: { targetAxisIndex: 0 }، // AI_Mode_count (خط)
3: { targetAxisIndex: 1, visibleInLegend: false, lineWidth: 0, pointsVisible: false }, // وضع الذكاء الاصطناعي الخام SOV (مخفي)
4: { مرئي في السجل: خطأ، عرض الخط: 0، النقاط المرئية: خطأ }، // الكلمات المفتاحية_المتبعة (مخفية)
5: { مرئي في السجل: خطأ، عرض الخط: 0، النقاط المرئية: خطأ }، // AIO_count_7dma (مخفي لتجنب الفوضى)
6: { مرئي في السجل: خطأ، عرض الخط: 0، النقاط المرئية: خطأ }، // AI_Mode_count_7dma (مخفي)
7: { targetAxisIndex: 1 }، // AIO_sov_7dma (سلس)
8: { targetAxisIndex: 1 } // AI_Mode_sov_sov_7dma (سلس)
})
.setOption("وسيلة الإيضاح"، { الموضع: "سفلي"})
بناء();
sum.insertChart(الرسم البياني);
}
/** المتوسط المتداول الزائد البسيط مع النافذة W؛ تُرجع المصفوفة بمحاذاة طول المدخلات (لا شيء حتى تمتلئ النافذة). */
دالة المتداول المتوسط(arr، W) {
const out = مصفوفة جديدة(arr.length).fill(null);
دع المجموع = 0;
بالنسبة إلى (دع i = 0؛ i < arr.length; i++) {
المجموع += (typeof arr[i] === 'عدد'؟ arr[i] : 0);
إذا (i >= W) المجموع -= (typeof arr[i - W] === 'number' ? arr[i - W] : 0);
إذا (i >= W - 1) خارج[i] = المجموع / W;
}
العودة للخارج;
}
/** المساعد: احسب عدد الصفوف التي تحتوي على TRUE في booleanCol، مجمعة حسب التاريخ من dateCol. */*.
دالة CountByDate_(الورقة، dateCol، booleanCol) {
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
التعداد = المصفوفة;
الصفوف.فور إيتش(الصف => {
const ts = row[dateCol - 1];
const has = صف[booleanCol - 1];
إذا (ts && (لديه === صحيح ||||لديه === 'صحيح')) {
const d = تاريخ جديد(ts);
const dateStr = Utilities.formatDate(d, Session.getScriptTimeZone(), 'yyyyy-MMM-dd');
التهم[dateStr] = (التهم[dateStr] || 0) + 1;
}
});
عدد مرات الإرجاع
}
الدالة CountTrue_(الورقة، العمود) { {
إذا (!الورقة || الورقة.getLastRow() < 2) يتم الإرجاع 0;
const vals = sheet.getRange(2, col, sheet.getLastRow() - 1, 1).getValues().flat();
إرجاع vals.filter(v => v === صحيح || v === 'TRUE').length;
}
/**
* بناء محور لوجود العلامة التجارية (آخر تشغيل فقط).
* بالنسبة لكل سطح (AIO / AI_MODE)، نحسب:
* - الاستعلامات_مع_السطح: عدد الكلمات المفتاحية التي تم فيها تشغيل هذا السطح
* - الاستعلامات_العلامة_المستشهد بها: عدد تلك الكلمات المفتاحية التي يظهر فيها مجال العلامة التجارية في أي استشهاد
* - معدل_التواجد = العلامة التجارية_المستشهد بها / الاستفسارات_مع_السطح
* - queries_brand_rank1: الرقم حيث تكون العلامة التجارية في المرتبة 1 الاقتباس
* - معدل_المرتبة1_معدل_الرتبة1 = العلامة التجارية_المرتبة1 / الاستفسارات_مع_السطح
*/
دالة buildBrandBrandPresencePivotAndChart_() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const العلامات التجارية = readBrands_(ss)؛ // مصفوفة من النطاقات (بدون www)
const aioSheet = ss.getSheetByName('AIO_Results');
const aimSheet = ss.getSheetByName('AI_Mode_Results');
const srcSheet = ss.getSheetByName('AI_Sources');
إذا (!العلامات التجارية.length ||||!srcSheet ||| srcSheet.getLastRow() < 2) {
ensureSheet_(ss, 'GEO_BrandPresence', ['brand_domain', 'surface', 'queries_with_surface', 'queries_brand_cited', 'presence_rate', 'queries_brand_rank1', 'rank1_rate']));
العودة;
}
// تحديد آخر طابع زمني للتشغيل (الحد الأقصى للطابع الزمني عبر النتائج)
const latest = latestTimestamp_([aioSheet, aimSheet, srcSheet].filter(Boolean));
إذا (!الأحدث) إرجاع;
// إنشاء مجموعات لكل سطح من الكلمات الرئيسية التي تم تشغيلها على السطح في آخر تشغيل
const latestAioKeyKeyKwords = مجموعة جديدة (filterKeyKeywordsByTimestampAndBool_(aioSheet, latest, 4))؛ // has_ai_overview
const latestAimKeyKeywords = مجموعة جديدة (filterKeyKeywordsByTimestampAndBool_(aimSheet, latest, 4))؛ // has_ai_mode
// إنشاء خرائط لتواجد العلامة التجارية حسب الكلمة المفتاحية والرتبة1 حسب الكلمة المفتاحية (آخر تشغيل فقط)
const surfaceBrandAny = { AIO: خريطة جديدة()، AI_MODE: خريطة جديدة()}؛ // العلامة التجارية -> مجموعة (الكلمات الرئيسية)
const surfaceBrandRank1 = { AIO: خريطة جديدة()، AI_MODE: خريطة جديدة()}؛ // العلامة التجارية -> مجموعة (الكلمات الرئيسية)
// تكرار صفوف المصدر لآخر طابع زمني فقط
const srcVals = srcSheet.getRange(2, 1, srcSheet.getLastRow() - 1, 9).getValues();
من أجل (صف مكون من srcVals) {
const [ts, kw, kw, country, surface, rank, url, url, domain/*clean*/, title, site_name] = صف;
إذا (!نفس اليوم_(ts, latest)) تابع؛ // التجميع حسب دقة الطابع الزمني لليوم/التشغيل
const dom = String(domain || ").toLowerCase();
إذا (!دوم) تابع;
// بالنسبة لحسابات التواجد، ضع في اعتبارك فقط الكلمات المفتاحية التي أثارت ذلك السطح
إذا (إذا (السطح === 'AIO' & & & !latestAioKeyKeywords.has(kw)) تابع;
إذا (إذا كان (السطح === 'AI_MODE' & !latestAimKeyKeywords.has(kw)) تابع;
// لكل علامة تجارية، تحقق من التطابق
لـ (const b من العلامات التجارية) {
إذا (dom.endsWith(b)) {
// أي مستشهد به
إذا (!surfaceBrandAny[السطح].has(b)) surfaceBrandAny[السطح].set(b، مجموعة جديدة()));
surfaceBrandAny[surface].get(b).add(kw);
// الرتبة 1
إذا (الرتبة === 1) {
إذا (!surfaceBrandRank1[السطح].has(b)) surfaceBrandRank1[السطح].set(b، مجموعة جديدة()));
surfaceBrandRank1[surface].get(b).add(kw);
}
}
}
}
// إعداد صفوف الإخراج
const out = [];
الأسطح = ['AIO'، 'AI_MODE'];
بالنسبة إلى (const s من الأسطح) {
const queriesWithSurface = (s === 'AIO') ? latestAioKeyKeywords.size : latestAimKeyKeywords.size;
لـ (const b من العلامات التجارية) {
const cited = surfaceBrandAny[s].get(b)?.size ||0;
const r1 = surfaceBrandRank1[s].get(b)?.size ||0;
const presenceRate = queriesWithSurface ? (تم الاستشهاد به / الاستعلامات مع السطح) : 0;
const rank1Rate = queriesWithSurface ? (r1 / queriesWithSurface) : 0;
out.push([
ب، س، استعلامات مع السطح، مستشهد بها، معدل التواجد، ص1، معدل الرتبة1
]);
}
}
const pivot = ensureSheet_(ss, 'GEO_BrandPresence', ['brand_domain', 'surface', 'queries_with_surface', 'queries_brand_cited', 'presence_rate', 'queries_brand_rank1', 'rank1_rate']));
// مسح البيانات القديمة
إذا (إذا كان (pivot.getLastRow() > 1) pivot.getRange(2, 1, pivot.getLastRow() - 1, 7).clearContent();
إذا (الطول الخارجي) إذا كان (الطول الخارجي) pivot.getRange(2, 1, out.length, 7).setValues(out);
// إنشاء/تجديد مخطط بياني لحصة الرتبة 1 لكل علامة تجارية لكل سطح
المخططات البيانية = pivot.getCharts();
المخططات البيانية.forEach(c => pivot.removeChart(c));
// طريقة بسيطة: مخطط جميع الصفوف، تحتوي البيانات على كلا السطحين؛ يمكن للمستخدمين التصفية في واجهة مستخدم جداول البيانات.
const chart = pivot.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(pivot.getRange(1, 1, Math.max(2, pivot.getLastRow()), 7))
.setPosition(5, 1, 0, 0, 0)
.setOption('title', 'Brand Rank-1 Share (أحدث تشغيل)')
.setOption('series', {
0: { targetAxisIndex: 0 }، // مقاييس التواجد
1: { targetAxisIndex: 0 },
2: { targetAxisIndex: 1 } // المعدل على المحور الثانوي إذا رغبت في ذلك
})
.setOption('وسيلة الإيضاح'، { الموضع: 'يمين'})
بناء();
pivot.insertChart(الرسم البياني);
}
/* ---- المساعدون المحوريون ---- */*
دالة readBrands_(ss) {
const sh = ss.getSheetByName('Brands');
إذا (!sh || sh.getLastRow() < 2) يُرجع [];
const const vals = sh.getRange(2, 1, sh.getLastRow() - 1, 1).getValues().flat()
.map(String).map(v => v.trim().toLowerCase().replace(/^wwww\./, "))
.فلتر(منطقي);
إرجاع Array.from(مجموعة جديدة(vals));
}
الدالة latestTimestamp_(الأوراق) {
دع الأحدث = لاغية;
ل (const sh من الأوراق) {
إذا (!sh || sh.getLastRow() < 2) تابع;
const tsCol = 1؛ // العمود الأول في مخططاتنا
const vals = sh.getRange(2, tsCol, sh.getLastRow() - 1, 1).getValues().flat();
ل (const v من vals) {
const d = (v instanceof Date) ? v : تاريخ جديد (v);
إذا (!isNaN (+d)) {
إذا (!الأحدث || د > الأحدث) الأحدث = د;
}
}
}
العودة أخيرًا;
}
الدالة نفس اليوم_(أ، ب) {
إذا (! (a instanceof Date))) a = تاريخ جديد (a);
إذا (!(b(b instanceof Date))) b = تاريخ جديد (b);
إرجاع a.getFullYear() === b.getFullYear() &&
a.getMonth() === b.getMonth() &&
a.getDate() === b.getDate();
}
الدالة FilterKeyKeyKwordsByTimestampAndBool_(الورقة، latestTs، boolColIndex) {
إذا (!الورقة || الورقة.getLastRow() < 2) يُرجع [];
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
const out = [];
بالنسبة إلى (const r من الصفوف) {
const ts = r[0];
const kw = r[1];
const val = r[boolColColIndex - 1];
if (sameDay_(ts, latestTs) && (val === true || val === ‘TRUE’)) out.push(kw);
}
العودة للخارج;
}
من هناك، يستعلم كل تشغيل عن قائمة كلماتك الرئيسية، ويستدعي نقاط النهاية، ويطبع المخرجات، ويضيف نتائج مختومة زمنيًا إلى علامات التبويب المناسبة. بمرور الوقت، تصبح هذه مجموعة بيانات كاملة يمكنك تحويرها وتخطيطها وتحليلها - أي لوحة معلومات مرئية يمكنك التحكم فيها.
كيف يتلاءم FetchSERP مع سير العمل
يبدأ النص البرمجي باستدعاء /api/v1/serp_ai، والذي يوفر لقطة مجمعة لنتائج نظرة عامة على الذكاء الاصطناعي ووضع الذكاء الاصطناعي متى كانت موجودة. إذا كنت تقوم بتشغيل استعلامات من الولايات المتحدة، يتحقق البرنامج النصي أيضًا من /api/v1/serp_ai_mode، وهي نقطة نهاية مخزنة مؤقتًا توفر بيانات وضع الذكاء الاصطناعي بشكل أسرع. عندما يتوفر كلاهما، يُفضل وضع الذكاء الاصطناعي المخزن مؤقتًا.
داخل الحمولة، ستجد عادةً ما يلي
- نتائج نظرة عامة على الذكاء الاصطناعي المخزنة تحت data.results.ai_overview
- نتائج وضع الذكاء الاصطناعي تحت data.results.ai_mode
يأتي كل منها مع مجموعة من المصادر، والتي يتم تحليلها بعد ذلك إلى قائمة نظيفة من المجالات. هذه النطاقات هي ما ستستخدمه في النهاية في المخططات المحورية والرؤية.
كتابة النتائج في الأوراق
يتصل برنامج Google Apps Script مباشرةً بجداول البيانات بطريقة مباشرة:
- يتحقق من إعداد علامة التبويب الكلمات الرئيسية بشكل صحيح.
- إذا كان مفقودًا، فإنه ينشئ تلقائيًا علامتي التبويب AIO_Results وAI_Mode_Results.
- لكل استعلام يتم تشغيله، فإنه يلحق صفًا جديدًا يتضمن الطابع الزمني وعلامات التواجد وعدد المصادر والمجال الأعلى المستشهد به وقائمة بجميع المجالات في مجموعة الإجابات تلك.
نظرًا لإضافة صفوف جديدة بدلاً من الكتابة فوقها، يمكنك بناء سجل تاريخي تدريجيًا. بمرور الوقت، يمكنك رسم مقاييس مثل:
- النسبة المئوية للكلمات الرئيسية التي تم تعقبها والتي تؤدي إلى نظرة عامة على الذكاء الاصطناعي
- أكثر المجالات التي يتم الاستشهاد بها في وضع الذكاء الاصطناعي حسب الأسبوع أو الشهر
هذه النظرة التاريخية هي ما يحول عمليات الفحص لمرة واحدة إلى رؤى قابلة للتنفيذ.
أفضل الممارسات لاستخدام FetchSERP
- التخطيط للتقلبات: إجابات الذكاء الاصطناعي ليست ثابتة. تكرار أخذ العينات والطوابع الزمنية هي الطريقة الوحيدة لفهم التغييرات.
- تجنب تجاوز الحدود: إذا كنت تتعقب مجموعات كلمات رئيسية كبيرة، أضف فترات توقف مؤقتة (على سبيل المثال، Utilities.sleep(400)) أو قسّمها إلى مجموعات.
- البقاء خاص بالمنطقة: قم دائمًا بتمرير رمز البلد للاستعلامات، وإلا ستختلط بياناتك بالمواقع.
- التقط المزيد من التفاصيل: إذا كنت تريد تحليلاً أعمق، قم بتوسيع البرنامج النصي لتخزين عناوين URL الكاملة وعناوين الصفحات وأسماء الناشرين.
بينما يمكن أن تمنحك أدوات SaaS للمؤسسات لوحات معلومات مصقولة، فإن إنشاء خط أنابيب خاص بك باستخدام FetchSERP يمنحك المرونة والتحكم. بالنسبة للعديد من الفرق، إنها أسرع طريقة لبدء التعامل مع رؤية الذكاء الاصطناعي كعملية قابلة للقياس والتكرار.
كيفية مراقبة الحيرة والطيار المساعد
الحيرة
تعد الحيرة واحدة من أسهل المنصات التي يمكن قياسها لأنها تعرض اقتباساتها مباشرةً إلى جانب الإجابة. يمكن لأدوات الكشف أن تلتقط تلك الاستشهادات بمجرد عرضها. تكمن المشكلة في أن Perplexity نادرًا ما يلتزم بالاستعلام الذي تكتبه. فهو يعيد صياغة السؤال بهدوء قبل سحب النتائج، مما يعني أن جزءًا من عملية التشخيص هو التقاط تلك الاستعلامات المعاد صياغتها. بدونها، من الصعب معرفة سبب نجاح المحتوى الخاص بك أو عدم نجاحه.
إذا كنت تقوم بكشط Perplexity للتتبع، فهذه المناطق هي الأكثر موثوقية:
- نص الإجابة: عادةً ما يظهر نص الإجابة في الرئيسي [data-testid="إجابة"] أو المقالة الرئيسية أو الرئيسية .prose. كخيار احتياطي، ابحث عن الفئات التي تحتوي على نثر أو تخفيض السعر.
- قائمة الاستشهادات: غالبًا ما توجد في جانب [data-testid="مصدر"] أو nav[aria-label*="Sources"] a[href]. قد تظهر الاقتباسات المضمنة في صورة sup a[href] أو a[data-source-id-id] داخل الإجابة نفسها.
- طريقة إضافية: يقوم بيربليسيتي أحيانًا بتضمين حالة JSON في حالة JSON في النص البرمجي[type="application/json"] أو عبر كائن ترطيب النوافذ. يمكن أن يمنحك تحليل هذا قائمة أكثر ثباتًا بالمصادر - كاملة مع العناوين وعناوين URL والمؤلفين، بدلًا من الاعتماد فقط على DOM المرئي.
بينج كابتن طيار
يقدم Copilot مجموعة أخرى من التحديات. فهو يعتمد بشكل كبير على فهرس Bing، لذا فإن ظهورك الأساسي على Bing يؤثر بقوة على ظهورك في إجاباته التوليدية. على عكس Perplexity، يميل Copilot إلى دسّ الاقتباسات في نهاية إجابته، مما يقلل من ظهورها. يتطلب التتبع التقاط كتلة الذكاء الاصطناعي بأكملها وتحليل كل رابط. من خلال مقارنة استشهادات Copilot مع تصنيفات Bing القياسية لنفس الاستعلام، يمكنك تحديد ما إذا كانت التصنيفات وحدها هي التي تقود التضمين أو ما إذا كانت هناك إشارات مرجعية أخرى تلعب دورًا.
تحويل بيانات البحث بالذكاء الاصطناعي إلى لوحة تحكم
الهدف النهائي لجميع عمليات المراقبة الخاصة بك هو مكان واحد يمكنك من خلاله رؤية أداء علامتك التجارية عبر أسطح الذكاء الاصطناعي. تجمع لوحة المعلومات الجيدة كلاً من الفحوصات النشطة التي تقوم بتشغيلها وبيانات الزحف السلبي من سجلاتك، ثم تحولها إلى عرض واضح لموقفك.
ما الذي يجب أن تظهره لوحة المعلومات
لا يجب أن تخبرك لوحة التحكم الخاصة بك ما إذا كان قد تم الاستشهاد بك فقط - بل يجب أن تشرح لك السياق. لكل كلمة رئيسية تتعقبها، يجب أن تعرف:
- هل تم تشغيل نظرة عامة على الذكاء الاصطناعي أو وضع الذكاء الاصطناعي؟
- هل تمت الإشارة إلى المحتوى الخاص بك، وما مدى بروزه؟
- كم مرة تم الاستشهاد بك في الأسبوع أو الشهر الماضي؟
- هل تتوافق التغييرات في أنماط زحف الروبوتات مع تلك الاستشهادات؟
مع هذا الإعداد، يمكنك التوقف عن التخمين بشأن الرؤية والبدء في اكتشاف الاتجاهات الفعلية.
المقاييس الرئيسية التي يجب تتبعها
تبرز لوحات المعلومات الأكثر فائدة:
- التعدادات اليومية: عدد الكلمات الرئيسية التي أدت إلى تشغيل استعراضات الذكاء الاصطناعي أو وضع الذكاء الاصطناعي.
- حصة الصوت (SOV): النسبة المئوية للكلمات المفتاحية التي تظهر في كل ميزة.
- المتوسطات المتداولة: اتجاهات السبعة أيام التي تخفف من التقلبات اليومية وتظهر المسار الحقيقي.
- حضور العلامة التجارية: مكان ظهور نطاقك، وما إذا كان يتم الاستشهاد بك أولاً أو دفنه في أسفل القائمة.
تحويل البيانات إلى رؤية ثاقبة
من خلال وضع طبقات من بيانات الرؤية مع نشاط سجل الخادم، يمكنك الكشف عن تحديثات المحتوى أو الإصلاحات الفنية أو التحولات التنافسية التي تحرك الإبرة. بمرور الوقت، تساعدك طريقة عرض السبب والنتيجة هذه على معرفة ليس فقط ما إذا كنت موجودًا في إجابات الذكاء الاصطناعي، ولكن لماذا. هذه هي الرؤية التي تحتاجها لتوجيه جولتك التالية من التحسينات.
تفاصيل بيانات GEO_AISummary
العمود | الحقل | ما الذي يظهره |
A | التاريخ | التاريخ التقويمي للتشغيل، مأخوذ من الطابع الزمني |
B | AIO_Count | عدد الكلمات المفتاحية التي تم تعقبها والتي أدت إلى نظرة عامة على الذكاء الاصطناعي في ذلك اليوم |
C | AIO_SOV | الحصة الصوتية لنظرات الذكاء الاصطناعي العامة (AIO_Count ÷ إجمالي الكلمات الرئيسية) |
D | عدد_رمز_الإصدار | عدد الكلمات الرئيسية المتعقبة التي تم تتبعها والتي أدت إلى تشغيل وضع الذكاء الاصطناعي |
E | AIMOD_SOV | الحصة الصوتية لوضع الذكاء الاصطناعي (عدد_وضع_الذكاء_الاصطناعي ÷ إجمالي الكلمات الرئيسية) |
F | الكلمات_الكلمات_الرئيسية | إجمالي عدد الاستعلامات التي تتم مراقبتها في قائمتك |
G | AIO_Count_7DayAvg | المعدل المتجدد لسبعة أيام من تعداد نظرة عامة على الذكاء الاصطناعي |
H | AIMode_Count_7DayAvg | المتوسط المتجدد لسبعة أيام من تعداد وضع الذكاء الاصطناعي |
I | AIO_SOV_SOV_7DayAvg | المتوسط المتجدد لسبعة أيام لحصة الذكاء الاصطناعي من العرض العام للذكاء الاصطناعي في الصوت |
J | AIMode_SOV_7DayAvg | المتوسط المتجدد لسبعة أيام لحصة وضع الذكاء الاصطناعي من الصوت |
إعداد لوحة معلومات جغرافية جغرافية في جداول بيانات جوجل
يُسقط البرنامج النصي مخططًا أساسيًا، ولكن إنشاء لوحة المعلومات الخاصة بك داخل جداول بيانات Google Sheets يمنحك مزيدًا من التحكم في كيفية عرض البيانات. من خلال بعض التعديلات، يمكنك تحويل قائمة الأرقام إلى صورة واضحة لكيفية اتجاه رؤية الذكاء الاصطناعي لديك.
الخطوة 1: تنظيم البيانات
افتح علامة التبويب GEO_AISummary. تأكد من تسمية كل عمود بشكل صحيح، ثم قم بالفرز حسب التاريخ من الأقدم إلى الأحدث. هذا يبقي الجدول الزمني مستقيماً قبل البدء في الرسم البياني.
الخطوة 2: رسم مخطط النشاط اليومي
حدد الأعمدة A و B و D (التاريخ و AIO_Count و AIMode_Count). قم بإدراج مخطط - المخطط الخطي أو العمودي يعمل بشكل أفضل هنا.
- المحور X: التاريخ
- السلسلة 1: AIO_Count
- السلسلة 2: AIMode_Count
أعطه عنوانًا مثل "نظرة عامة على الذكاء الاصطناعي اليومي ونشاط وضع الذكاء الاصطناعي".
الخطوة 3: تصور حصة الصوت
قم بتمييز الأعمدة A و C و E و I و J (التاريخ و AIO_SOV و AIMOD_SOV، بالإضافة إلى متوسطات 7 أيام). أدرج مخطط خطي آخر.
- ارسم النسب المئوية اليومية الخام إذا كنت ترغب في رؤية التقلبات قصيرة الأجل.
- ارسم المتوسطات المتداولة للكشف عن الحركة على المدى الطويل.
قم بتسميته بشيء مثل "حصة الاتجاهات الصوتية".
الخطوة 4: إنشاء طريقة عرض لوحة التحكم
أنشئ ورقة جديدة باسم "لوحة التحكم". أضف كلا المخططين اللذين قمت بإنشائهما للتو، ثم قم بإنشاء قسم ملخص صغير في الجزء العلوي يظهر:
- التعدادات الحالية وحجم المفقودين لهذا اليوم
- مقارنة بالمتوسط المتداول للأسبوع الماضي
الخطوة 5: التتبع بمرور الوقت
قم بتشغيل البرنامج النصي كل يوم (أو أكثر إذا كنت بحاجة إلى دقة أعلى). نظرًا لأن البيانات يتم إلحاقها بدلًا من الكتابة فوقها، ستنشئ تلقائيًا سجلًا قيد التشغيل. على مدار الأسابيع والأشهر، ستظهر أنماط - التقلبات الموسمية، أو تأثير التحولات الخوارزمية، أو نتائج جهود التحسين التي تبذلها.
نصائح عملية لتتبع الموقع الجغرافي العالمي الموثوق به
العمل مع رؤية بحث الذكاء الاصطناعي فوضوي بطبيعته. فالأنظمة احتمالية، والنتائج تتغير باستمرار، ويمكن أن يتصرف نفس الاستعلام بشكل مختلف من عملية تشغيل إلى أخرى. يمكن أن تساعدك هذه الممارسات في الحصول على بيانات أنظف وأكثر فائدة.
توقع التقلبات
لا تفترض الاستقرار. يمكن أن تغيّر النظرة العامة للذكاء الاصطناعي ووضع الذكاء الاصطناعي الاستشهادات من لحظة إلى أخرى. لهذا السبب يعد إجراء عمليات التحقق بانتظام وتسجيل الطوابع الزمنية أمرًا ضروريًا. الضوضاء جزء من الإشارة.
إدارة حجم الاستعلامات
إذا كنت تراقب المئات من الكلمات المفتاحية، فقم بتسريع طلباتك. أضف تأخيرات بين عمليات التشغيل أو قسّم القوائم الكبيرة إلى دفعات أصغر. هذا يمنع الوصول إلى حدود المعدل ويحافظ على اتساق عملية جمع البيانات الخاصة بك.
أن تكون خاصة بالمنطقة
قم دائمًا بتضمين رمز البلد عند تشغيل الاستعلامات. وإلا فإن نتائجك قد تخلط بين المناطق الجغرافية، مما يجعل من الصعب تفسير التغييرات بمرور الوقت.
تتبع أكثر من مجرد نطاقات
تعتبر النطاقات نقطة بداية قوية، لكنك تحتاج أحياناً إلى تفاصيل أعمق. التقط عناوين URL الكاملة وعناوين الصفحات وأسماء الناشرين عندما يكون ذلك مهمًا. يساعدك هذا في معرفة الأصول التي تحظى بالظهور بالضبط.
الاحتفاظ بالبيانات الأولية
تقوم منصات الذكاء الاصطناعي بتعديل مخرجاتها في كثير من الأحيان. يعني الاحتفاظ باستجابات HTML أو JSON الخام أنه يمكنك إعادة معالجة البيانات القديمة إذا تعطلت أدوات التحليل أو إذا احتجت إلى استخراج حقول جديدة لاحقًا.
الخاتمة
لقد أعاد البحث التوليدي كتابة قواعد اللعبة لقياس مدى الظهور. فالترتيب والنقرات وحدها لم تعد تجسد القصة الكاملة - السؤال الحقيقي هو ما إذا كانت علامتك التجارية مذكورة في الإجابات التي يراها المستخدمون بالفعل. من خلال الجمع بين الاكتشاف النشط وتحليل سجل الخادم، ومراقبة برامج الزحف بالذكاء الاصطناعي، وإنشاء لوحة معلومات تتتبع كلاً من الأعداد اليومية والاتجاهات طويلة المدى، يمكنك تحويل نظام مبهم إلى رؤى قابلة للقياس.
لا يتعلق العمل فقط بمشاهدة ارتفاع الأرقام. بل يتعلق بربط تلك الاستشهادات بنتائج الأعمال الحقيقية: التحويلات والإيرادات والنمو. هذا ما يحول الرؤية إلى قيمة. مع وجود إطار عمل متسق للتتبع، لم تعد تخمّن وجودك في بحث الذكاء الاصطناعي. أنت تتخذ قرارات مستنيرة تدفع بعلامتك التجارية إلى المحادثات المهمة.
الأسئلة الشائعة
نظرًا لأن إجابات الذكاء الاصطناعي تتجدد في كل مرة، يمكن أن تتغير النتائج من جولة إلى أخرى. على عكس التصنيفات التقليدية، لا يوجد مركز ثابت يمكن الاعتماد عليه، مما يجعل المراقبة المستمرة ضرورية.
بالنسبة لمجموعة الكلمات المفتاحية الصغيرة، فإن عمليات التشغيل المتعددة في اليوم الواحد تلتقط التقلبات. بالنسبة للقوائم الأكبر، عادةً ما تكون عمليات التشغيل اليومية كافية لبناء خط اتجاه موثوق به.
تكشف سجلات الخادم عندما تزحف روبوتات الذكاء الاصطناعي إلى صفحاتك. يساعدك الربط بين نشاط الزحف وبيانات الاقتباس على فهم كيفية ارتباط الاسترجاع بالرؤية.
نعم، يتصرفان بشكل مختلف، وقد تظهر علامتك التجارية في أحدهما دون الآخر. تعقب كلا السطحين يعطي صورة كاملة عن وجودك في جوجل للذكاء الاصطناعي.
في بعض النواحي، نعم. تُظهر الحيرة الاستشهادات بشفافية، لكنها أيضًا تعيد كتابة الاستعلامات خلف الكواليس، لذا فإن التقاط الأسئلة المعاد صياغتها لا يقل أهمية عن تسجيل المصادر المرئية.