AutoPodAutoPod

एआई उद्धरण प्रभाव को मापना: एनालिटिक्स, लॉग्स और पैनल स्क्रैपिंग

•26 मिनट का पाठ
ऑडियो लेख
एआई उद्धरण प्रभाव को मापना: एनालिटिक्स, लॉग्स और पैनल स्क्रैपिंग
0:00—:—
एआई उद्धरण प्रभाव को मापना: एनालिटिक्स, लॉग्स और पैनल स्क्रैपिंग

एआई उद्धरण प्रभाव को मापना: एनालिटिक्स, लॉग्स और पैनल स्क्रैपिंग

परिचय

एआई-संचालित खोज अब कई मापन परतों में विभाजित है। कोई व्यक्ति एआई उत्तर में किसी कंपनी का उल्लेख देख सकता है, बिना किसी उपयोगी रेफ़रर के किसी लिंक पर क्लिक कर सकता है, एक ऐसे ब्राउज़र के माध्यम से विज़िट कर सकता है जो अभियान डेटा को हटा देता है, या बिना क्लिक किए ही एक उत्तर पढ़ सकता है। इस बीच, एक एआई क्रॉलर किसी मानव विज़िटर का प्रतिनिधित्व किए बिना कंपनी के पेज का अनुरोध कर सकता है।

इसलिए, एक उपयोगी मापन प्रणाली को चार प्रश्नों को अलग करना चाहिए:

  1. क्या साइट को क्रॉल किया गया या पुनः प्राप्त किया गया था?
  2. क्या साइट को एआई उत्तर में उद्धृत किया गया था?
  3. क्या किसी व्यक्ति ने उस उत्तर से साइट का दौरा किया?
  4. क्या उस विज़िट से सार्थक सहभागिता या राजस्व प्राप्त हुआ?

22 सितंबर, 2026 तक, फर्स्ट-पार्टी रिपोर्टिंग में सुधार हो रहा है। Google Search Console AI ओवरव्यूज़ और AI मोड के लिए एक जनरेटिव एआई प्रदर्शन रिपोर्ट प्रदान करता है, जिसमें इंप्रेशन, पेज, देश, डिवाइस और तारीखें शामिल हैं। यह रिपोर्ट 31 अगस्त, 2026 को दुनिया भर में उपलब्ध हो गई। Google की जनरेटिव एआई प्रदर्शन रिपोर्ट (support.google.com)

माइक्रोसॉफ्ट बिंग वेबमास्टर टूल्स में एक एआई प्रदर्शन रिपोर्ट भी प्रदान करता है। इसका सार्वजनिक पूर्वावलोकन समर्थित माइक्रोसॉफ्ट एआई अनुभवों में कुल उद्धरणों, उद्धृत पृष्ठों, ग्राउंडिंग प्रश्नों और उद्धरण प्रवृत्तियों की रिपोर्ट करता है। बिंग वेबमास्टर टूल्स एआई प्रदर्शन (blogs.bing.com)

इन उपकरणों को उनकी अपनी सतहों के लिए आधिकारिक माना जाना चाहिए, लेकिन वे एक पूर्ण क्रॉस-असिस्टेंट मापन प्रणाली नहीं बनाते हैं। अनुशंसित दृष्टिकोण फर्स्ट-पार्टी रिपोर्ट, सर्वर लॉग, नियंत्रित ट्रैकिंग लिंक, एनालिटिक्स एक्सपोर्ट और निर्धारित उत्तर-पैनल अवलोकनों को संयोजित करना है।


1. एआई रेफरल मापन क्यों कठिन है

पारंपरिक वेब एनालिटिक्स Referer हेडर और अभियान मापदंडों पर बहुत अधिक निर्भर करता है। दोनों गायब या अधूरे हो सकते हैं।

HTTP Referer हेडर में पिछला पेज, केवल पिछली वेबसाइट मूल, या कोई मान बिल्कुल भी नहीं हो सकता है। ब्राउज़र रेफ़रर नीतियां जानबूझकर उस जानकारी को सीमित या हटा सकती हैं। MDN रेफ़रर-पॉलिसी दस्तावेज़ (developer.mozilla.org)

एआई सिस्टम अतिरिक्त जटिलताएँ उत्पन्न करते हैं:

  • एक सहायक बिना किसी पहचानने योग्य रेफ़रर को भेजे किसी पेज से लिंक कर सकता है।
  • एक सहायक रीडायरेक्टिंग या फिर से लिखे गए यूआरएल का उपयोग कर सकता है।
  • एक सहायक उत्तर दिखाने से पहले सर्वर-साइड सामग्री प्राप्त कर सकता है।
  • एक एआई क्रॉलर बिना किसी मानव के देखे एक पेज पर जा सकता है।
  • उत्तर मूल रूप से प्राप्त यूआरएल के बजाय एक कैनॉनिकल यूआरएल को उद्धृत कर सकता है।
  • उत्तर स्थान, डिवाइस, भाषा, समय या वैयक्तिकरण के आधार पर बदल सकता है।

उदाहरण के लिए, OpenAI खोज खोज के लिए OAI-SearchBot, संभावित प्रशिक्षण उपयोग के लिए GPTBot, और उपयोगकर्ता-आरंभिक कार्यों के लिए ChatGPT-User के बीच अंतर करता है। परप्लेक्सिटी अलग से PerplexityBot और Perplexity-User की पहचान करता है। एन्थ्रोपिक ClaudeBot, Claude-SearchBot, और Claude-User की पहचान करता है। इन अनुरोधों को एक सामान्य "एआई ट्रैफ़िक" संख्या में संयोजित नहीं किया जाना चाहिए। OpenAI क्रॉलर दस्तावेज़ (openai.com) परप्लेक्सिटी क्रॉलर दस्तावेज़ (docs.perplexity.ai) एन्थ्रोपिक क्रॉलर दस्तावेज़ (support.anthropic.com)

केंद्रीय नियम है:

क्रॉलर गतिविधि रेफरल ट्रैफ़िक नहीं है, उद्धरण दृश्यता ट्रैफ़िक नहीं है, और ट्रैफ़िक व्यावसायिक प्रभाव नहीं है।


2. मापन फ्रेमवर्क

पाँच मापन परतों का उपयोग करें।

परतमुख्य प्रश्नअनुशंसित डेटा
एक्सेसक्या किसी एआई सिस्टम ने पेज का अनुरोध किया?वेब सर्वर लॉग, फ़ायरवॉल लॉग
दृश्यताक्या पेज दिखाया गया या उद्धृत किया गया था?Google Search Console, Bing Webmaster Tools, उत्तर-पैनल अवलोकन
अधिग्रहणक्या कोई व्यक्ति एआई सतह से आया?रेफ़रर, अभियान पैरामीटर, शॉर्ट-लिंक क्लिक, एनालिटिक्स
सहभागिताक्या विज़िटर ने सार्थक रूप से बातचीत की?एनालिटिक्स इवेंट, पेज व्यू, सहभागिता समय
मूल्यक्या विज़िट से वांछित परिणाम मिला?साइनअप, लीड, खरीद, सदस्यताएँ

सत्य के स्रोत का अनुशंसित पदानुक्रम

प्रत्येक प्रश्न के लिए सबसे मजबूत उपलब्ध संकेत का उपयोग करें:

  1. इंप्रेशन और उद्धरणों के लिए फर्स्ट-पार्टी प्लेटफ़ॉर्म रिपोर्ट।
  2. प्रॉम्प्ट-स्तर की दृश्यता और प्रतिस्पर्धी तुलना के लिए उत्तर-पैनल अवलोकन।
  3. नियंत्रित लिंक क्लिक के लिए रीडायरेक्ट लॉग।
  4. सत्र, सहभागिता और रूपांतरणों के लिए वेब एनालिटिक्स।
  5. क्रॉलर और फेचर गतिविधि के लिए सर्वर लॉग।
  6. मॉडल किए गए अनुमान केवल तभी जब सीधा प्रमाण अनुपलब्ध हो।

स्रोत और विश्वास स्तर को संरक्षित किए बिना सभी संकेतों को एक ही संख्या में संयोजित न करें।


3. कोर डेटा मॉडल

कच्चे अवलोकनों और व्युत्पन्न मेट्रिक्स के लिए अलग-अलग तालिकाओं के साथ एक डेटा वेयरहाउस बनाएँ।

panel_runs

प्रत्येक प्रॉम्प्ट और सतह जांच के लिए एक पंक्ति।

text run_id observed_at surface topic prompt_id query_text locale country device panel_present panel_type answer_hash raw_html_path screenshot_path collector_version status

panel_citations

उत्तर पैनल में देखे गए प्रत्येक लिंक के लिए एक पंक्ति।

text run_id surface topic prompt_id cited_url cited_domain citation_position link_scope target_domain target_cited

ai_crawler_requests

एकत्रित सर्वर-लॉग डेटा।

text date bot_name bot_role path requests successful_requests error_requests unique_ip_count

shortener_clicks

प्रत्येक नियंत्रित-लिंक अनुरोध के लिए एक पंक्ति।

text click_id occurred_at slug surface topic prompt_id asset_id referrer_host user_agent_family ip_hmac destination_path

ai_sessions

एक सामान्यीकृत एनालिटिक्स तालिका।

text session_id date surface topic prompt_id landing_page attribution_method confidence engaged engagement_time_seconds key_event revenue

confidence फ़ील्ड महत्वपूर्ण है। अनुशंसित मान हैं:

  • A — सीधा: नियंत्रित शॉर्ट-लिंक क्लिक या विश्वसनीय अभियान पैरामीटर।
  • B — मजबूत: ज्ञात सहायक रेफ़रर या सत्यापित उपयोगकर्ता-प्राप्ति अनुरोध।
  • C — संभावित: पूर्ण रेफ़रर के बिना अभियान या लैंडिंग-पेज साक्ष्य।
  • D — मॉडल किया गया: समय, पैनल अवलोकनों, या समग्र परिवर्तनों से अनुमानित।

A और B को C और D से अलग से रिपोर्ट करें।


4. मीट्रिक परिभाषाएँ

विषय द्वारा उद्धरण हिस्सेदारी

विषय द्वारा उद्धरण हिस्सेदारी यह मापती है कि किसी विषय के लिए देखे गए स्रोतों में एक लक्ष्य डोमेन कितनी बार दिखाई देता है।

\[ \text{उद्धरण हिस्सेदारी}_{विषय}

\frac{\text{लक्ष्य-डोमेन उद्धरण घटनाएँ}} {\text{सभी उद्धरण घटनाएँ}} \]

उदाहरण:

  • "परियोजना प्रबंधन सॉफ्टवेयर" के लिए 100 कुल उद्धरण देखे गए
  • 12 उद्धरण आपके डोमेन की ओर इशारा करते हैं
  • विषय द्वारा उद्धरण हिस्सेदारी = 12%

यह मीट्रिक स्रोत हिस्सेदारी को मापता है, न कि यह कि क्या किसी उत्तर में आपकी साइट कम से कम एक बार शामिल थी।

उद्धरण कवरेज

उत्तर-स्तर की उपस्थिति के लिए एक दूसरा मीट्रिक उपयोग करें:

\[ \text{उद्धरण कवरेज}_{विषय}

\frac{\text{लक्ष्य उद्धरण वाले उत्तर रन}} {\text{ऐसे उत्तर रन जहाँ एक पैनल मौजूद था}} \]

उद्धरण कवरेज को अक्सर गैर-तकनीकी दर्शकों के लिए समझना आसान होता है:

“इस विषय के लिए हमारे अवलोकन किए गए एआई उत्तरों के 34% में हमारी साइट दिखाई दी।”

उद्धरण स्थिति

उत्तर के भीतर उद्धरण की स्थिति रिकॉर्ड करें:

  • 1 = पहला देखा गया स्रोत
  • 2 = दूसरा देखा गया स्रोत
  • 3 = तीसरा देखा गया स्रोत

क्योंकि एआई इंटरफेस अक्सर स्रोतों को समूहित या पुनर्व्यवस्थित करते हैं, स्थिति को एक वर्णनात्मक अवलोकन के रूप में मानें, न कि एक सार्वभौमिक रैंकिंग के रूप में।


सहायक रेफरल दर

सहायक रेफरल दर उन मानव साइट सत्रों के अनुपात को मापती है जिन्हें एआई सतह के लिए जिम्मेदार ठहराया जा सकता है।

\[ \text{सहायक रेफरल दर}

\frac{\text{एआई-गुणित मानव सत्र}} {\text{सभी मानव सत्र}} \]

कम से कम दो संस्करणों की रिपोर्ट करें:

text पुष्टिकृत सहायक रेफरल दर = A-विश्वास एआई सत्र / सभी मानव सत्र

विस्तारित सहायक रेफरल दर = A + B + C-विश्वास एआई सत्र / सभी मानव सत्र

पुष्टिकृत संस्करण अधिक रूढ़िवादी है। विस्तारित संस्करण प्रवृत्ति विश्लेषण के लिए उपयोगी है लेकिन इसे पूरी तरह से देखे गए ट्रैफ़िक के रूप में प्रस्तुत नहीं किया जाना चाहिए।

पैनल रन को इंप्रेशन के रूप में उपयोग न करें

यदि आप 500 प्रॉम्प्ट स्क्रैप करते हैं, तो इसका मतलब यह नहीं है कि 500 लोगों ने वे उत्तर देखे। आपका स्क्रैपर उत्तर राज्यों के एक नियंत्रित नमूने को मापता है। जब उपलब्ध हों तो फर्स्ट-पार्टी प्लेटफ़ॉर्म इंप्रेशन रिपोर्ट का उपयोग करें।


पोस्ट-साइटेशन सहभागिता

पोस्ट-साइटेशन सहभागिता यह मापती है कि एआई उद्धरण के माध्यम से आए लोगों ने कोई सार्थक कार्रवाई की या नहीं।

\[ \text{पोस्ट-साइटेशन सहभागिता}

\frac{\text{संलग्न एआई सत्र}} {\text{एआई-गुणित सत्र}} \]

Google Analytics 4 के लिए, एक संलग्न सत्र 10 सेकंड से अधिक चलता है, इसमें एक महत्वपूर्ण इवेंट शामिल होता है, या इसमें कम से कम दो पेज या स्क्रीन व्यू शामिल होते हैं। Google Analytics सहभागिता-दर दस्तावेज़ (support.google.com)

इसकी भी रिपोर्ट करें:

text पोस्ट-साइटेशन सहभागिता समय = प्रति एआई सत्र संलग्न सेकंड का माध्यिका

पोस्ट-साइटेशन रूपांतरण दर = प्रमुख इवेंट वाले एआई सत्र / एआई-गुणित सत्र

प्रति सत्र पोस्ट-साइटेशन राजस्व = एआई सत्रों से राजस्व / एआई-गुणित सत्र

माध्यिका सहभागिता समय आमतौर पर औसत सहभागिता समय से अधिक स्थिर होता है क्योंकि बहुत लंबे सत्रों की एक छोटी संख्या औसत को विकृत कर सकती है।


अतिरिक्त उपयोगी मेट्रिक्स

एआई क्रॉलर सफलता दर

\[ \text{क्रॉलर सफलता दर}

\frac{\text{2xx या 3xx लौटाने वाले एआई क्रॉलर अनुरोध}} {\text{एआई क्रॉलर अनुरोध}} \]

इसे बॉट और पाथ द्वारा विभाजित करें। बढ़ती क्रॉलर त्रुटि दर के साथ उच्च उद्धरण गिरावट एक होस्टिंग, फ़ायरवॉल, या रोबोट कॉन्फ़िगरेशन समस्या का संकेत दे सकती है।

उद्धरण-से-क्लिक दर

नियंत्रित उत्तर-पैनल अवलोकनों के लिए:

\[ \text{देखी गई उद्धरण-से-क्लिक दर}

\frac{\text{पुष्टिकृत शॉर्ट-लिंक क्लिक}} {\text{देखे गए लक्ष्य उद्धरण}} \]

यह एक वास्तविक उपयोगकर्ता क्लिक-थ्रू दर नहीं है जब तक कि हर में वास्तविक उपयोगकर्ता इंप्रेशन का प्रतिनिधित्व न हो। इसे एक देखे गए परिचालन मीट्रिक के रूप में स्पष्ट रूप से लेबल करें।

उद्धरण ताज़गी

मापें कि उद्धृत यूआरएल कितनी बार वर्तमान पेज संस्करण को दर्शाता है।

text उद्धरण ताज़गी = वर्तमान सामग्री हैश वाले उद्धृत पेज / उद्धृत पेज

यह दस्तावेज़, मूल्य निर्धारण, उत्पाद और नीति पृष्ठों के लिए उपयोगी है जो अक्सर बदलते रहते हैं।


5. सर्वर लॉग विश्लेषण

संरचित एक्सेस लॉग कॉन्फ़िगर करें

संरचित लॉग पारंपरिक स्पेस-सेपरेटेड लॉग की तुलना में विश्लेषण करने में आसान होते हैं।

उदाहरण Nginx कॉन्फ़िगरेशन:

nginx log_format ai_json escape=json '{' '"ts":"$time_iso8601",' '"remote_addr":"$remote_addr",' '"request":"$request",' '"status":$status,' '"bytes":$body_bytes_sent,' '"referer":"$http_referer",' '"user_agent":"$http_user_agent",' '"host":"$host"' '}';

access_log /var/log/nginx/ai-access.jsonl ai_json;

लॉग फ़ाइलों को एक प्रतिबंधित स्थान पर संग्रहीत करें। कच्चे आईपी पते को एक सामान्य एनालिटिक्स तालिका में न भेजें जब तक कि आपके पास कोई स्पष्ट परिचालन कारण न हो।

एआई अनुरोध प्रकारों की पहचान करें

न्यूनतम, अलग करें:

text OpenAI:

  • OAI-SearchBot
  • ChatGPT-User
  • GPTBot

Anthropic:

  • Claude-SearchBot
  • Claude-User
  • ClaudeBot

Perplexity:

  • PerplexityBot
  • Perplexity-User

Search engines:

  • Googlebot
  • Bingbot

Google की एआई खोज सुविधाएँ आमतौर पर एक अलग सार्वभौमिक "एआई ओवरव्यू बॉट" के बजाय मौजूदा Google खोज क्रॉलिंग नियंत्रणों का उपयोग करती हैं। Google बताता है कि Googlebot, एआई सुविधाओं सहित, खोज के लिए एक्सेस को नियंत्रित करता है। Google एआई सुविधाएँ और वेबसाइटें (developers.google.com)

यूजर-एजेंट स्ट्रिंग्स को गढ़ा जा सकता है। परिचालन निर्णयों के लिए, उपयोगकर्ता-एजेंट मिलान को प्रदाता-प्रकाशित आईपी रेंज या सत्यापित रिवर्स डीएनएस के साथ संयोजित करें जहाँ उपलब्ध हो। OpenAI और परप्लेक्सिटी अपने संबंधित क्रॉलर और फेचर के लिए आईपी जानकारी प्रकाशित करते हैं। (openai.com)

प्रतिलिपि प्रस्तुत करने योग्य लॉग सारांशक

निम्नलिखित को ai_log_summary.py के रूप में सहेजें।

python #!/usr/bin/env python3

import csv import hashlib import hmac import json import os import re import sys from collections import Counter, defaultdict from datetime import datetime from urllib.parse import urlsplit

BOT_PATTERNS = { "OAI-SearchBot": ("openai", re.compile(r"\bOAI-SearchBot\b", re.I)), "ChatGPT-User": ("openai_user", re.compile(r"\bChatGPT-User\b", re.I)), "GPTBot": ("openai_training", re.compile(r"\bGPTBot\b", re.I)), "Claude-SearchBot": ("anthropic", re.compile(r"\bClaude-SearchBot\b", re.I)), "Claude-User": ("anthropic_user", re.compile(r"\bClaude-User\b", re.I)), "ClaudeBot": ("anthropic_training", re.compile(r"\bClaudeBot\b", re.I)), "PerplexityBot": ("perplexity", re.compile(r"\bPerplexityBot\b", re.I)), "Perplexity-User": ("perplexity_user", re.compile(r"\bPerplexity-User\b", re.I)), "Googlebot": ("google_search", re.compile(r"\bGooglebot\b", re.I)), "Bingbot": ("bing_search", re.compile(r"\bbingbot\b", re.I)), }

SECRET = os.environ.get("HMAC_SECRET", "replace-this-in-production").encode()

def hmac_ip(ip): return hmac.new(SECRET, ip.encode(), hashlib.sha256).hexdigest()[:16]

def classify_bot(user_agent): for bot_name, (role, pattern) in BOT_PATTERNS.items(): if pattern.search(user_agent or ""): return bot_name, role return None, None

def parse_path(request_line): try: parts = request_line.split() return urlsplit(parts[1]).path except Exception: return "/"

def main(input_path): totals = defaultdict(lambda: { "requests": 0, "success": 0, "errors": 0, "ips": set(), "paths": Counter(), })

with open(input_path, "r", encoding="utf-8") as source:
    for line in source:
        try:
            record = json.loads(line)
        except json.JSONDecodeError:
            continue

        bot_name, bot_role = classify_bot(record.get("user_agent", ""))
        if not bot_name:
            continue

        timestamp = record.get("ts", "")
        date = datetime.fromisoformat(
            timestamp.replace("Z", "+00:00")
        ).date().isoformat()

        status = int(record.get("status", 0))
        path = parse_path(record.get("request", ""))
        key = (date, bot_name, bot_role)

        totals[key]["requests"] += 1
        totals[key]["ips"].add(hmac_ip(record.get("remote_addr", "")))
        totals[key]["paths"][path] += 1

        if 200 <= status < 400:
            totals[key]["success"] += 1
        else:
            totals[key]["errors"] += 1

writer = csv.writer(sys.stdout)
writer.writerow([
    "date",
    "bot_name",
    "bot_role",
    "requests",
    "successful_requests",
    "error_requests",
    "unique_ip_count",
    "top_paths",
])

for (date, bot_name, bot_role), values in sorted(totals.items()):
    top_paths = values["paths"].most_common(10)
    writer.writerow([
        date,
        bot_name,
        bot_role,
        values["requests"],
        values["success"],
        values["errors"],
        len(values["ips"]),
        json.dumps(top_paths),
    ])

if name == "main": if len(sys.argv) != 2: print("Usage: python ai_log_summary.py /path/to/access.jsonl") sys.exit(1)

main(sys.argv[1])

इसे इसके साथ चलाएँ:

bash HMAC_SECRET='a-long-random-secret' \ python ai_log_summary.py /var/log/nginx/ai-access.jsonl \

data/ai_crawler_daily.csv

यह पुनर्प्राप्ति गतिविधि के बारे में परिचालन साक्ष्य उत्पन्न करता है, न कि मानव ट्रैफ़िक के बारे में।


6. एआई-उन्मुख सारांशों के लिए कस्टम लिंक शॉर्टनर

एक फर्स्ट-पार्टी लिंक शॉर्टनर एक नियंत्रित मापन बिंदु प्रदान करता है जब आप सारांश या स्रोत सामग्री प्रकाशित करते हैं जिसे एआई सिस्टम द्वारा संदर्भित किया जा सकता है।

एक ऐसा डोमेन उपयोग करें जिसे आप नियंत्रित करते हैं, जैसे:

text https://go.example.com/ai-docs

गंतव्य में अभियान पैरामीटर शामिल होने चाहिए जैसे:

text utm_source=perplexity utm_medium=ai_answer utm_campaign=product_documentation utm_content=pricing_summary_v3

Google ट्रैफ़िक स्रोतों और अभियानों की पहचान करने के लिए अभियान मापदंडों की सिफारिश करता है। Google Analytics अभियान यूआरएल दस्तावेज़ (support.google.com)

अनुशंसित लिंक फ़ील्ड

text surface topic prompt_id asset_id content_version destination_path

लिंक में व्यक्तिगत जानकारी, ईमेल पते या उपयोगकर्ता खोज क्वेरी न डालें। अभियान पहचानकर्ता प्रकाशित संपत्ति का वर्णन करना चाहिए, किसी व्यक्ति की पहचान नहीं।

महत्वपूर्ण सीमाएँ

एक छोटा लिंक एक कैलिब्रेशन डिवाइस है, न कि एक सार्वभौमिक समाधान:

  • सहायक गंतव्य यूआरएल को फिर से लिख सकता है।
  • सहायक इसके बजाय कैनॉनिकल यूआरएल को उद्धृत कर सकता है।
  • लिंक प्रदर्शित हो सकता है लेकिन कभी क्लिक नहीं किया गया।
  • एक ब्राउज़र या गोपनीयता उपकरण रेफ़रर को हटा सकता है।
  • कुछ सिस्टम गंतव्य को सर्वर-साइड से प्राप्त कर सकते हैं।
  • एक छोटा लिंक उन उपयोगकर्ताओं को नहीं मापता जो ब्रांड को याद रखते हैं और बाद में वापस आते हैं।

गंतव्य को छिपाने, सुरक्षा प्रणालियों को बायपास करने या उद्धरणों में हेरफेर करने के लिए शॉर्टनर का उपयोग न करें। एक प्रासंगिक, कैनॉनिकल पेज पर एक स्पष्ट रीडायरेक्ट का उपयोग करें।

न्यूनतम फर्स्ट-पार्टी शॉर्टनर

निम्नलिखित उदाहरण FastAPI और SQLite का उपयोग करता है। उत्पादन में उपयोग करने से पहले प्रमाणीकरण के साथ लिंक-निर्माण एंडपॉइंट को सुरक्षित करें।

python

shortener.py

import hashlib import hmac import os import secrets import sqlite3 from datetime import datetime, timezone from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit

from fastapi import FastAPI, HTTPException, Request from fastapi.responses import RedirectResponse from pydantic import BaseModel

DB_PATH = os.environ.get("SHORTENER_DB", "shortener.db") HMAC_SECRET = os.environ.get( "HMAC_SECRET", "replace-this-in-production" ).encode()

ALLOWED_HOST = "www.example.com"

app = FastAPI()

def db(): connection = sqlite3.connect(DB_PATH) connection.row_factory = sqlite3.Row return connection

def init_db(): connection = db() connection.execute(""" CREATE TABLE IF NOT EXISTS links ( slug TEXT PRIMARY KEY, destination TEXT NOT NULL, surface TEXT NOT NULL, topic TEXT, prompt_id TEXT, asset_id TEXT, created_at TEXT NOT NULL ) """) connection.execute(""" CREATE TABLE IF NOT EXISTS clicks ( id INTEGER PRIMARY KEY AUTOINCREMENT, occurred_at TEXT NOT NULL, slug TEXT NOT NULL, surface TEXT, topic TEXT, prompt_id TEXT, referrer_host TEXT, user_agent TEXT, ip_hmac TEXT ) """) connection.commit() connection.close()

def append_query(url, params): parsed = urlsplit(url) query = dict(parse_qsl(parsed.query, keep_blank_values=True)) query.update(params) return urlunsplit(( parsed.scheme, parsed.netloc, parsed.path, urlencode(query), parsed.fragment, ))

def hash_ip(ip): return hmac.new( HMAC_SECRET, (ip or "").encode(), hashlib.sha256 ).hexdigest()[:16]

class LinkRequest(BaseModel): destination_path: str surface: str topic: str | None = None prompt_id: str | None = None asset_id: str | None = None

@app.on_event("startup") def startup(): init_db()

@app.post("/links") def create_link(payload: LinkRequest): destination = f"https://{ALLOWED_HOST}{payload.destination_path}"

if not payload.destination_path.startswith("/"):
    raise HTTPException(400, "destination_path must be a site-relative path")

slug = secrets.token_urlsafe(7).replace("_", "-").replace("/", "-")

target = append_query(destination, {
    "utm_source": payload.surface,
    "utm_medium": "ai_answer",
    "utm_campaign": "citation_measurement",
    "utm_content": payload.asset_id or "unspecified",
})

connection = db()
connection.execute("""
    INSERT INTO links
    (slug, destination, surface, topic, prompt_id, asset_id, created_at)
    VALUES (?, ?, ?, ?, ?, ?, ?)
""", (
    slug,
    target,
    payload.surface,
    payload.topic,
    payload.prompt_id,
    payload.asset_id,
    datetime.now(timezone.utc).isoformat(),
))
connection.commit()
connection.close()

return {"slug": slug, "url": f"https://go.example.com/{slug}"}

@app.get("/{slug}") def redirect(slug: str, request: Request): connection = db() row = connection.execute( "SELECT * FROM links WHERE slug = ?", (slug,) ).fetchone()

if not row:
    connection.close()
    raise HTTPException(404, "Unknown link")

referrer = request.headers.get("referer", "")
referrer_host = urlsplit(referrer).hostname or ""

connection.execute("""
    INSERT INTO clicks
    (occurred_at, slug, surface, topic, prompt_id,
     referrer_host, user_agent, ip_hmac)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)
""", (
    datetime.now(timezone.utc).isoformat(),
    slug,
    row["surface"],
    row["topic"],
    row["prompt_id"],
    referrer_host,
    request.headers.get("user-agent", "")[:300],
    hash_ip(request.client.host if request.client else ""),
))
connection.commit()
connection.close()

return RedirectResponse(row["destination"], status_code=302)

इसे इसके साथ चलाएँ:

bash pip install fastapi uvicorn uvicorn shortener:app --host 0.0.0.0 --port 8080

माप लिंक के लिए 302 रीडायरेक्ट का उपयोग करें ताकि ब्राउज़र और मध्यवर्ती सिस्टम रीडायरेक्ट को स्थायी रूप से कैश करने की संभावना कम हो।


7. एआई उत्तर पैनलों की निर्धारित स्क्रैपिंग

पैनल स्क्रैपिंग उन प्रश्नों का उत्तर देने के लिए उपयोगी है जिन्हें फर्स्ट-पार्टी एनालिटिक्स उजागर नहीं कर सकता है:

  • किन प्रतिस्पर्धी स्रोतों का उल्लेख किया गया है?
  • किसी विशिष्ट प्रॉम्प्ट के लिए कौन सा पेज उद्धृत किया गया है?
  • क्या उत्तर देश या डिवाइस के अनुसार बदलता है?
  • क्या उद्धरण उत्तर में, स्रोत सूची में, या दोनों में दिखाई देता है?
  • समय के साथ उत्तर कितना स्थिर है?
  • क्या सहायक एक छोटे लिंक या कैनॉनिकल यूआरएल को उद्धृत करता है?

हालांकि, स्क्रैपिंग सावधानी से की जानी चाहिए।

जिम्मेदार संग्रह के लिए नियम

  1. एक आधिकारिक एपीआई, लाइसेंस प्राप्त खोज डेटा प्रदाता, या फर्स्ट-पार्टी रिपोर्ट को प्राथमिकता दें।
  2. अनुरोधों को स्वचालित करने से पहले प्रदाता की शर्तों की समीक्षा करें।
  3. जहां लागू हो, रोबोट निर्देशों का सम्मान करें।
  4. CAPTCHA, लॉगिन बाधाओं, दर सीमाओं, या बॉट सुरक्षा को बायपास न करें।
  5. प्रॉम्प्ट का एक छोटा, निश्चित सेट उपयोग करें।
  6. कम आवृत्ति पर चलाएँ।
  7. प्रतिक्रिया और टाइमस्टैम्प सहेजें ताकि परिणामों का ऑडिट किया जा सके।
  8. जब कोई प्रदाता एक चुनौती या एक्सेस-अस्वीकृत प्रतिक्रिया लौटाता है तो रुकें।

रोबोट्स एक्सक्लूजन प्रोटोकॉल एक क्रॉलर वरीयता तंत्र है, सुरक्षा प्रणाली नहीं। यह संरक्षित सामग्री तक पहुंच को अधिकृत नहीं करता है। RFC 9309: रोबोट्स एक्सक्लूजन प्रोटोकॉल (rfc-editor.org)

एक प्रॉम्प्ट मैनिफेस्ट बनाएँ

csv prompt_id,topic,query,locale,surface,target_domain pm_001,project-management,"best project management software for remote teams",en-US,google,example.com pm_001,project-management,"best project management software for remote teams",en-US,bing,example.com pm_002,analytics,"how to measure AI referral traffic",en-US,google,example.com

प्रॉम्प्ट को स्थिर रखें। यदि प्रॉम्प्ट बदलते हैं, तो प्रवृत्ति तुलना कम विश्वसनीय हो जाती है।

इसे भी स्टोर करें:

  • देश
  • भाषा
  • डिवाइस प्रकार
  • ब्राउज़र संस्करण
  • प्रॉम्प्ट संस्करण
  • सामग्री संस्करण
  • UTC में संग्रह का समय

Google बताता है कि एआई ओवरव्यू और एआई मोड प्रतिक्रियाएँ भिन्न हो सकती हैं क्योंकि वे विभिन्न प्रणालियों का उपयोग करती हैं और संबंधित खोजों या "क्वेरी फैन-आउट" का उपयोग कर सकती हैं। Google एआई सुविधाएँ और वेबसाइट दस्तावेज़ (developers.google.com)

प्लेराइट कलेक्शन स्क्रिप्ट

निम्नलिखित स्क्रिप्ट एक सामान्य-उद्देश्य अनुसंधान उपकरण है। यह रेंडर किए गए पेज, स्क्रीनशॉट, पेज लिंक और उत्तर टेक्स्ट को रिकॉर्ड करती है। यह जानबूझकर चुनौतियों को बायपास नहीं करती है या एक्सेस नियंत्रणों को हराने का प्रयास नहीं करती है।

python

scrape_panels.py

import asyncio import csv import hashlib import json import os import re from datetime import datetime, timezone from pathlib import Path from urllib.parse import quote_plus, urljoin, urlsplit

from playwright.async_api import async_playwright

DATA_DIR = Path("data/panels") DATA_DIR.mkdir(parents=True, exist_ok=True)

SURFACE_URLS = { "google": "https://www.google.com/search?q={query}&hl=en&gl=us", "bing": "https://www.bing.com/search?q={query}&setlang=en-us", }

PANEL_MARKERS = { "google": ["AI Overview", "AI Mode"], "bing": ["Copilot", "Generative search"], }

BLOCK_MARKERS = [ "captcha", "unusual traffic", "verify you are human", "access denied", ]

def clean_text(value): return re.sub(r"\s+", " ", value or "").strip()

def host_matches(url, target_domain): host = (urlsplit(url).hostname or "").lower() target = target_domain.lower().lstrip("www.") return host == target or host.endswith("." + target)

def page_hash(text): normalized = clean_text(text).encode("utf-8") return hashlib.sha256(normalized).hexdigest()

async def collect_one(page, row): surface = row["surface"] query = row["query"] target_domain = row["target_domain"]

search_url = SURFACE_URLS[surface].format(
    query=quote_plus(query)
)

await page.goto(
    search_url,
    wait_until="domcontentloaded",
    timeout=45_000,
)
await page.wait_for_timeout(2500)

text = await page.locator("body").inner_text()
lowered = text.lower()

if any(marker in lowered for marker in BLOCK_MARKERS):
    return {
        **row,
        "observed_at": datetime.now(timezone.utc).isoformat(),
        "status": "blocked_or_challenged",
        "panel_present": False,
        "links": [],
    }

links = await page.locator("a").evaluate_all("""
    anchors => anchors.map(a => ({
        href: a.href || "",
        text: (a.innerText || "").trim()
    })).filter(x => x.href)
""")

panel_present = any(
    marker.lower() in lowered
    for marker in PANEL_MARKERS.get(surface, [])
)

observed_at = datetime.now(timezone.utc)
run_id = hashlib.sha256(
    f"{surface}|{row['prompt_id']}|{observed_at.isoformat()}".encode()
).hexdigest()[:20]

html_path = DATA_DIR / f"{run_id}.html"
screenshot_path = DATA_DIR / f"{run_id}.png"

await page.screenshot(path=str(screenshot_path), full_page=True)
html_path.write_text(await page.content(), encoding="utf-8")

output_links = []
for position, link in enumerate(links, start=1):
    output_links.append({
        "href": urljoin(search_url, link["href"]),
        "text": clean_text(link["text"])[:300],
        "position": position,
        "target_cited": host_matches(
            link["href"],
            target_domain
        ),
    })

return {
    **row,
    "run_id": run_id,
    "observed_at": observed_at.isoformat(),
    "status": "ok",
    "panel_present": panel_present,
    "answer_hash": page_hash(text),
    "answer_text": clean_text(text)[:50_000],
    "html_path": str(html_path),
    "screenshot_path": str(screenshot_path),
    "link_scope": "page_fallback",
    "links": output_links,
}

async def main(manifest_path): rows = [] with open(manifest_path, newline="", encoding="utf-8") as source: rows = list(csv.DictReader(source))

output_path = DATA_DIR / (
    datetime.now(timezone.utc).strftime("%Y-%m-%d") + ".jsonl"
)

async with async_playwright() as playwright:
    browser = await playwright.chromium.launch(headless=True)
    context = await browser.new_context(
        locale="en-US",
        timezone_id="UTC",
    )
    page = await context.new_page()

    with open(output_path, "w", encoding="utf-8") as output:
        for row in rows:
            try:
                result = await collect_one(page, row)
            except Exception as exc:
                result = {
                    **row,
                    "observed_at": datetime.now(timezone.utc).isoformat(),
                    "status": f"error:{type(exc).__name__}",
                    "panel_present": False,
                    "links": [],
                }

            output.write(json.dumps(result) + "\

") output.flush()

            # Keep request volume low. (अनुरोध की मात्रा कम रखें।)
            await asyncio.sleep(8)

    await browser.close()

if name == "main": asyncio.run(main("prompts.csv"))

स्थापित करें और चलाएँ:

bash pip install playwright playwright install chromium python scrape_panels.py

इसे एक लॉक के साथ शेड्यूल करें ताकि दो रन ओवरलैप न हों:

cron 15 3 * * * flock -n /tmp/ai-panel.lock \ /usr/bin/python3 /opt/ai-measure/scrape_panels.py

सतह एडाप्टर के साथ सटीकता में सुधार करें

फॉलबैक स्क्रिप्ट पेज-स्तर के लिंक रिकॉर्ड करती है। यह खोज के लिए उपयोगी है लेकिन इसमें सामान्य खोज-परिणाम लिंक शामिल हो सकते हैं। उत्पादन उपयोग के लिए:

  • जब उपलब्ध हो तो एक लाइसेंस प्राप्त उत्तर-पैनल एपीआई का उपयोग करें।
  • प्रत्येक सतह के लिए एक अलग सेलेक्टर एडाप्टर बनाएँ।
  • सेलेक्टर संस्करण को स्टोर करें।
  • कच्चा HTML और एक स्क्रीनशॉट स्टोर करें।
  • प्रत्येक रिकॉर्ड को link_scope = "panel_selector" या link_scope = "page_fallback" से चिह्नित करें।

केवल panel_selector डेटा से उद्धरण हिस्सेदारी की गणना करें जब आप पैनल को विश्वसनीय रूप से पहचान सकें। फॉलबैक अवलोकनों को एक अलग खोजी रिपोर्ट में रखें।


8. Google Analytics और BigQuery एकीकरण

Google Analytics 4 कच्चे इवेंट डेटा को BigQuery में निर्यात कर सकता है। दैनिक निर्यात events_YYYYMMDD जैसी स्थिर तालिकाएँ प्रदान करते हैं; स्ट्रीमिंग निर्यात वास्तविक समय के करीब निगरानी के लिए उपयोगी होते हैं लेकिन दैनिक तालिका को अंतिम रूप दिए जाने तक अपूर्ण हो सकते हैं। Google Analytics BigQuery निर्यात (support.google.com)

एक सरलीकृत सत्र क्वेरी इस तरह दिख सकती है:

sql WITH page_events AS ( SELECT event_date, user_pseudo_id,

(
  SELECT value.int_value
  FROM UNNEST(event_params)
  WHERE key = 'ga_session_id'
) AS session_id,

(
  SELECT value.string_value
  FROM UNNEST(event_params)
  WHERE key = 'page_location'
) AS page_location,

(
  SELECT value.string_value
  FROM UNNEST(event_params)
  WHERE key = 'session_engaged'
) AS session_engaged,

event_name

FROM PROJECT.analytics_PROPERTY.events_* WHERE _TABLE_SUFFIX BETWEEN '20260901' AND '20260921' ),

session_rollup AS ( SELECT event_date, user_pseudo_id, session_id,

MAX(
  CASE
    WHEN REGEXP_CONTAINS(
      LOWER(page_location),
      r'[?&]utm_medium=ai_answer'
    )
    THEN 1 ELSE 0
  END
) AS ai_session,

MAX(
  CASE
    WHEN session_engaged = '1'
    THEN 1 ELSE 0
  END
) AS engaged_session,

MAX(
  CASE
    WHEN event_name IN ('purchase', 'generate_lead', 'sign_up')
    THEN 1 ELSE 0
  END
) AS key_event

FROM page_events GROUP BY event_date, user_pseudo_id, session_id )

SELECT event_date, COUNTIF(ai_session = 1) AS ai_sessions, COUNTIF(ai_session = 1 AND engaged_session = 1) AS engaged_ai_sessions, COUNTIF(ai_session = 1 AND key_event = 1) AS ai_key_events, SAFE_DIVIDE( COUNTIF(ai_session = 1 AND engaged_session = 1), COUNTIF(ai_session = 1) ) AS post_citation_engagement_rate FROM session_rollup GROUP BY event_date ORDER BY event_date;

एक परिपक्व कार्यान्वयन के लिए, अभियान संरचना में surface, topic, और prompt_id जोड़ें या उन्हें शॉर्टनर क्लिक तालिका से जोड़ें।

प्रत्येक व्यक्तिगत उपयोगकर्ता या सत्र के लिए उच्च-कार्डिनैलिटी एनालिटिक्स आयाम न बनाएँ। Google चेतावनी देता है कि अत्यधिक उच्च-कार्डिनैलिटी कस्टम आयाम रिपोर्टिंग गुणवत्ता को कम कर सकते हैं। Google Analytics कस्टम आयाम और मेट्रिक्स (support.google.com)


9. डैशबोर्ड डिज़ाइन

एक व्यावहारिक डैशबोर्ड में पाँच दृश्य होने चाहिए।

कार्यकारी सारांश

प्रदर्शित करें:

  • विषय द्वारा उद्धरण हिस्सेदारी
  • विषय द्वारा उद्धरण कवरेज
  • पुष्टिकृत सहायक रेफरल दर
  • विस्तारित सहायक रेफरल दर
  • पोस्ट-साइटेशन सहभागिता
  • एआई क्रॉलर सफलता दर
  • एआई-गुणित महत्वपूर्ण इवेंट या राजस्व

उद्धरण हिस्सेदारी प्रवृत्ति

लाइन चार्ट:

text तारीख × विषय × सतह

दोनों दिखाएँ:

  • लक्ष्य-डोमेन उद्धरण घटनाएँ
  • सभी देखे गए उद्धरण घटनाएँ

सहायक ट्रैफ़िक फ़नल

text देखे गए उद्धरण ↓ नियंत्रित-लिंक क्लिक ↓ एआई-गुणित सत्र ↓ संलग्न एआई सत्र ↓ महत्वपूर्ण इवेंट

हर चरण को अपनी विशेषता विश्वसनीयता प्रदर्शित करनी चाहिए।

क्रॉलर स्वास्थ्य

बॉट द्वारा तालिका:

text bot_name requests successful_requests error_rate unique_ip_count top_paths

तब अलर्ट करें जब:

  • त्रुटि दर 2 प्रतिशत से अधिक हो
  • कोई बॉट अचानक गायब हो जाए
  • पहले से पहुंच योग्य सामग्री अनुभाग 403 या 429 लौटाता है
  • क्रॉलर अनुरोध एक अनपेक्षित निजी पाथ पर केंद्रित होते हैं

सामग्री अवसर तालिका

पेजों और विषयों को इनके अनुसार रैंक करें:

text उच्च उद्धरण हिस्सेदारी + कम रेफरल दर उच्च इंप्रेशन + कम उद्धरण कवरेज उच्च सहभागिता + कम उद्धरण दृश्यता उच्च क्रॉलर त्रुटियाँ + उच्च व्यावसायिक महत्व

ये संयोजन आमतौर पर केवल ट्रैफ़िक मात्रा को देखने की तुलना में बेहतर निर्णय उत्पन्न करते हैं।

न्यूनतम स्ट्रीमलिट डैशबोर्ड

dashboard.py के रूप में सहेजें।

python import glob import json from pathlib import Path

import pandas as pd import streamlit as st

st.set_page_config( page_title="AI Citation Impact", # एआई उद्धरण प्रभाव layout="wide", )

@st.cache_data(ttl=300) def load_panel_rows(): rows = []

for filename in glob.glob("data/panels/*.jsonl"):
    with open(filename, encoding="utf-8") as source:
        for line in source:
            record = json.loads(line)

            run_id = record.get("run_id")
            for link in record.get("links", []):
                hostname = link.get("href", "").split("/")[2]
                rows.append({
                    "run_id": run_id,
                    "observed_at": record.get("observed_at"),
                    "surface": record.get("surface"),
                    "topic": record.get("topic"),
                    "prompt_id": record.get("prompt_id"),
                    "panel_present": record.get("panel_present"),
                    "target_domain": record.get("target_domain"),
                    "cited_domain": hostname,
                    "target_cited": link.get("target_cited", False),
                    "position": link.get("position"),
                    "link_scope": record.get("link_scope"),
                })

return pd.DataFrame(rows)

panels = load_panel_rows()

st.title("AI Citation Impact Dashboard") # एआई उद्धरण प्रभाव डैशबोर्ड

if panels.empty: st.warning("No panel observations found.") # कोई पैनल अवलोकन नहीं मिला। st.stop()

panels["date"] = pd.to_datetime( panels["observed_at"], errors="coerce" ).dt.date

citation_share = ( panels.groupby("topic") .apply( lambda group: group["target_cited"].sum() / max(len(group), 1) ) .reset_index(name="citation_share") )

coverage = ( panels.groupby(["topic", "run_id"], dropna=False) .agg( panel_present=("panel_present", "max"), target_cited=("target_cited", "max"), ) .reset_index() )

coverage = ( coverage[coverage["panel_present"] == True] .groupby("topic") .apply(lambda group: group["target_cited"].mean()) .reset_index(name="citation_coverage") )

col1, col2 = st.columns(2)

with col1: st.subheader("Citation Share by Topic") # विषय द्वारा उद्धरण हिस्सेदारी st.dataframe(citation_share, use_container_width=True) st.bar_chart( citation_share.set_index("topic")["citation_share"] )

with col2: st.subheader("Citation Coverage by Topic") # विषय द्वारा उद्धरण कवरेज st.dataframe(coverage, use_container_width=True) st.bar_chart( coverage.set_index("topic")["citation_coverage"] )

st.subheader("Citation Position") # उद्धरण स्थिति st.dataframe( panels.groupby(["topic", "surface"], dropna=False) .agg( citations=("target_cited", "sum"), median_position=("position", "median"), observations=("run_id", "nunique"), ) .reset_index(), use_container_width=True, )

st.subheader("Daily Observations") # दैनिक अवलोकन daily = ( panels.groupby(["date", "surface"], dropna=False) .agg( citations=("target_cited", "sum"), observed_links=("cited_domain", "count"), ) .reset_index() )

st.line_chart( daily.pivot( index="date", columns="surface", values="citations" ).fillna(0) )

इसे इसके साथ चलाएँ:

bash pip install streamlit pandas streamlit run dashboard.py

उत्पादन के लिए, कच्चे फ़ाइलों को सीधे पढ़ने के बजाय DuckDB, BigQuery, Snowflake, या PostgreSQL में सामान्यीकृत तालिकाओं को लोड करें।


10. गुणवत्ता नियंत्रण

एक मापन प्रणाली सटीक दिखने वाली लेकिन भ्रामक संख्याएँ उत्पन्न कर सकती है। इन नियंत्रणों को जोड़ें।

बॉट को लोगों से अलग करें

OAI-SearchBot, GPTBot, ClaudeBot, या PerplexityBot को कभी भी मानव सत्रों के रूप में न गिनें। ये क्रॉलर या पुनर्प्राप्ति संकेत हैं।

कच्चे साक्ष्य को संरक्षित करें

प्रत्येक पैनल रन के लिए, बनाए रखें:

  • कच्चा HTML
  • स्क्रीनशॉट
  • उत्तर टेक्स्ट
  • टाइमस्टैम्प
  • ब्राउज़र और संग्राहक संस्करण
  • प्रॉम्प्ट और स्थानीय भाषा
  • उत्तर हैश

यह समझाना संभव बनाता है कि एक मीट्रिक क्यों बदला।

पैनल की अनुपस्थिति को ट्रैक करें

एक गायब एआई पैनल आपके उद्धरण के बिना एक उत्तर के समान नहीं है।

उपयोग करें:

text panel_not_present (पैनल उपस्थित नहीं) panel_present_no_target (पैनल उपस्थित, कोई लक्ष्य नहीं) panel_present_target_cited (पैनल उपस्थित, लक्ष्य उद्धृत) blocked_or_challenged (अवरुद्ध या चुनौती दी गई) collection_error (संग्रह त्रुटि)

नमूना पूर्वाग्रह को नियंत्रित करें

एक निर्धारित स्क्रैप से प्रभावित होता है:

  • स्थान
  • डिवाइस
  • भाषा
  • समय
  • वैयक्तिकरण
  • ब्राउज़र स्थिति
  • प्रॉम्प्ट शब्दांकन

प्रॉम्प्ट का एक निश्चित मुख्य सेट और खोजी प्रॉम्प्ट का एक घूर्णन सेट उपयोग करें। रिपोर्ट में दोनों समूहों को अलग रखें।

गलत सटीकता से बचें

छोटे विषय समूहों के लिए विश्वास अंतराल या न्यूनतम नमूना आकार की रिपोर्ट करें। तीन अवलोकनों वाले विषय की सीधे 300 अवलोकनों वाले विषय से तुलना नहीं की जानी चाहिए।

समान की समान से तुलना करें

सतहों की तुलना करते समय, स्थिर रखें:

  • प्रॉम्प्ट
  • स्थानीय भाषा
  • देश
  • डिवाइस
  • संग्रह का घंटा
  • लक्ष्य-डोमेन नियम
  • उद्धरण पार्सर संस्करण

11. अनुशंसित रोलआउट योजना

सप्ताह 1: इंस्ट्रुमेंटेशन

  • संरचित सर्वर लॉग कॉन्फ़िगर करें।
  • बॉट रजिस्ट्री बनाएँ।
  • शॉर्टनर डोमेन बनाएँ।
  • अभियान नामकरण नियम जोड़ें।
  • विषय वर्गीकरण को परिभाषित करें।
  • Google Analytics 4 BigQuery निर्यात सक्षम करें।

सप्ताह 2: नियंत्रित लिंक

  • पाँच से दस ट्रैक किए गए सारांश प्रकाशित करें।
  • विभिन्न विषयों और सामग्री संस्करणों के लिए लिंक बनाएँ।
  • एनालिटिक्स सत्रों के विरुद्ध रीडायरेक्ट लॉग को मान्य करें।
  • पुष्टि करें कि कोई भी व्यक्तिगत जानकारी यूआरएल या एनालिटिक्स मापदंडों में प्रवेश नहीं करती है।

सप्ताह 3: पैनल अवलोकन

  • एक प्रॉम्प्ट मैनिफेस्ट बनाएँ।
  • दो सतहों और 20 से 50 स्थिर प्रॉम्प्ट के साथ शुरू करें।
  • प्रतिदिन एक बार चलाएँ।
  • स्क्रीनशॉट और HTML सहेजें।
  • संग्रह विफलताओं को उद्धरण अनुपस्थिति से अलग से मापें।

सप्ताह 4: डैशबोर्ड और शासन

  • विषय और सतह डैशबोर्ड बनाएँ।
  • क्रॉलर स्वास्थ्य अलर्ट जोड़ें।
  • विश्वास नियम परिभाषित करें।
  • फर्स्ट-पार्टी रिपोर्ट की पैनल अवलोकनों से तुलना करें।
  • दस्तावेज़ प्रतिधारण, पहुंच और विलोपन नीतियों का दस्तावेज़ीकरण करें।

निष्कर्ष

एआई उद्धरण मापन को एक बहु-संकेत एट्रिब्यूशन प्रणाली के रूप में बनाया जाना चाहिए, न कि एक एकल रेफरल रिपोर्ट के रूप में।

सबसे विश्वसनीय फ्रेमवर्क जोड़ता है:

  • Google और बिंग फर्स्ट-पार्टी दृश्यता रिपोर्ट
  • क्रॉलर और फेचर गतिविधि के लिए सर्वर लॉग
  • नियंत्रित क्लिक मापन के लिए फर्स्ट-पार्टी शॉर्ट लिंक
  • निर्धारित, अनुपालन उत्तर-पैनल अवलोकन
  • डाउनस्ट्रीम मूल्य के लिए एनालिटिक्स और रूपांतरण डेटा

तीन सबसे महत्वपूर्ण मेट्रिक्स हैं:

  1. विषय द्वारा उद्धरण हिस्सेदारी — देखे गए स्रोत स्थान का कितना हिस्सा आपके डोमेन का है।
  2. सहायक रेफरल दर — कितना मानव ट्रैफ़िक एआई सतहों के लिए जिम्मेदार ठहराया जा सकता है।
  3. पोस्ट-साइटेशन सहभागिता — क्या एआई-संदर्भित विज़िटर सार्थक कार्रवाई करते हैं।

सिस्टम तब उपयोगी हो जाता है जब हर संख्या में उसकी सतह, समय अवधि, हर, एट्रिब्यूशन विधि और विश्वास स्तर शामिल होता है। यह अनुशासन क्रॉलर हिट्स को उपयोगकर्ताओं के लिए गलत समझे जाने से, स्क्रैप किए गए उत्तरों को इंप्रेशन के लिए गलत समझे जाने से, और उद्धरणों को व्यावसायिक परिणामों के लिए गलत समझे जाने से रोकता है।

संबंधित लेख

परप्लेक्सिटी और अन्य उद्धरण सहायकों के लिए अनुकूलन

परप्लेक्सिटी और अन्य उद्धरण सहायकों के लिए अनुकूलन

परप्लेक्सिटी और अन्य उद्धरण सहायकों के लिए अनुकूलन किरण शर्मा द्वारा, विकास-उन्मुख सामग्री रणनीतिकार अंतिम अपडेट: 14 अक्टूबर, 2026 एआई सहायक केवल लिंक…

लेख पढ़ें
उत्तर कार्ड और TL;DR बॉक्स: क्या सारांश AI चयन को प्रेरित करते हैं?

उत्तर कार्ड और TL;DR बॉक्स: क्या सारांश AI चयन को प्रेरित करते हैं?

उत्तर कार्ड और TL;DR बॉक्स: क्या सारांश AI चयन को प्रेरित करते हैं? एक TL;DR बॉक्स AI-उद्धरण बटन नहीं है। यह एक उपयोगी उत्तर को ढूंढना और उसका पुन: उप…

लेख पढ़ें
उत्तर पैराग्राफ इंजीनियरिंग: निकालने योग्य, सत्यापन योग्य अंशों का निर्माण

उत्तर पैराग्राफ इंजीनियरिंग: निकालने योग्य, सत्यापन योग्य अंशों का निर्माण

उत्तर पैराग्राफ इंजीनियरिंग: निकालने योग्य, सत्यापन योग्य अंशों का निर्माण किरण शर्मा द्वारा, विकास-उन्मुख सामग्री रणनीतिकार अच्छी सामग्री को व्यवसाय…

लेख पढ़ें
कैननिकलइज़ेशन और डी-डुप्लीकेशन: खंडित संकेतों को रोकना

कैननिकलइज़ेशन और डी-डुप्लीकेशन: खंडित संकेतों को रोकना

कैननिकलइज़ेशन और डी-डुप्लीकेशन: खंडित संकेतों को रोकना एक उपयोगी संसाधन कई पतों पर उपलब्ध हो सकता है: मुख्य साइट का एक लेख, एक हेल्प सबडोमेन पर एक प्रत…

लेख पढ़ें

यह कंटेंट पसंद आया?

नवीनतम कंटेंट मार्केटिंग इनसाइट्स और ग्रोथ गाइड्स के लिए हमारे न्यूज़लेटर को सब्सक्राइब करें।

यह लेख केवल सूचनात्मक उद्देश्यों के लिए है। कंटेंट और रणनीतियाँ आपकी विशिष्ट आवश्यकताओं के आधार पर भिन्न हो सकती हैं।
एआई उद्धरण प्रभाव को मापना: एनालिटिक्स, लॉग्स और पैनल स्क्रैपिंग | AutoPod