AI क्रॉलर और JavaScript: ChatGPT को आपका पेज खाली क्यों दिख सकता है
संक्षिप्त उत्तर: AI क्रॉलर और JavaScript के मामले में नियम सीधा है: जो बॉट स्क्रिप्ट नहीं चलाता, वह सिर्फ़ वही HTML देखता है जो आपका सर्वर भेजता है। अगर आपका टेक्स्ट ब्राउज़र में बनता है, तो वह HTML एक खाली खोल हो सकता है। Vercel और MERJ की दिसंबर 2024 की एक माप में बड़े AI क्रॉलरों में से किसी ने JavaScript नहीं चलाया, जबकि Google के क्रॉलर और AppleBot ने चलाया। यह 2024 की झलक है, इसलिए अपने पेज खुद जाँचिए और मुख्य सामग्री को HTML में ही रखिए: उसे सर्वर पर रेंडर कीजिए या पहले से बनाकर रखिए।
क्रॉलर आपके पेज तक कैसे पहुँचता है?
हर फ़ेच एक ही तरह शुरू होता है: आपके सर्वर को एक अनुरोध जाता है और जवाब में HTML आता है। उसके बाद क्या होता है, यही तय करता है कि आपके पेज का कितना हिस्सा पहुँचेगा।
ब्राउज़र वे स्क्रिप्ट लोड करता है जिनकी ओर HTML इशारा करता है, उन्हें चलाता है और नतीजा दिखाता है। क्रॉलर पहले HTML पर ही रुक सकता है। या वह रेंडर करता है: स्क्रिप्ट चलाता है, थोड़ा इंतज़ार करता है और उसके बाद ही पढ़ता है।
अगर सर्वर टेक्स्ट खुद भेजता है, तो दोनों रास्ते एक ही सामग्री तक पहुँचते हैं। अगर पेज ब्राउज़र में ही तैयार होता है, तो पहले HTML में लगभग कुछ नहीं होता। Google के दस्तावेज़ इसे "app shell" मॉडल कहते हैं। JavaScript के बिना चलने वाले बॉट को लगभग यह मिलता है:
<body>
<div id="root"></div>
<script src="/app.js"></script>
</body>
शीर्षक, टेक्स्ट, प्रोडक्ट सूची और लिंक तब दिखते हैं जब /app.js चल चुकी हो। हर क्रॉलर उसे नहीं चलाता, और पूरी समस्या यही है।
Google JavaScript के साथ क्या करता है
Google आसान मामला है। उसके JavaScript SEO की बुनियाद वाले दस्तावेज़ में लिखा है:
- Google Search JavaScript को Chromium के एक "evergreen" संस्करण से चलाता है।
- हर पेज तीन चरणों से गुज़रता है: क्रॉलिंग, रेंडरिंग और इंडेक्सिंग।
- स्टेटस 200 वाला पेज रेंडर होने के लिए कतार में डाला जाता है, जिसमें सेकंड या उससे ज़्यादा लग सकते हैं। 404 जैसे गैर-200 स्टेटस वाले पेज के लिए रेंडरिंग छोड़ी जा सकती है।
- Title, meta description और canonical JavaScript से भी सेट किए जा सकते हैं।
उसी दस्तावेज़ में इस लेख की वजह भी मिलती है। Google लिखता है कि सर्वर-साइड रेंडरिंग या प्री-रेंडरिंग अब भी अच्छा विचार है, क्योंकि इससे पेज उपयोगकर्ताओं और क्रॉलरों, दोनों के लिए तेज़ होता है और इसलिए भी कि सारे बॉट JavaScript नहीं चला सकते। इसलिए "Google मेरा पेज इंडेक्स करता है" का मतलब यह नहीं कि हर बॉट उसे पढ़ सकता है।
AI क्रॉलर और JavaScript: असल में क्या पता है
सबसे जानी-मानी माप Vercel और MERJ की है, जो दिसंबर 2024 में The rise of the AI crawler शीर्षक से छपी। उसका निष्कर्ष: बड़े AI क्रॉलरों में से किसी ने JavaScript नहीं चलाया। अध्ययन उनमें GPTBot, OAI-SearchBot, ChatGPT-User और ClaudeBot का नाम लेता है। Googlebot (अध्ययन में Gemini के लिए सूचीबद्ध) और AppleBot ने JavaScript रेंडर किया।
इस नतीजे के साथ दो सावधानियाँ ज़रूरी हैं। पहली, यह 2024 की एक झलक है, और हमारे पास हवाला देने लायक कोई नई माप नहीं है। क्रॉलर बदलते रहते हैं, इसलिए इसे चेतावनी मानिए, कानून नहीं। दूसरी, यह बताती है कि बॉट क्या पढ़ता है, यह नहीं कि किसी जवाब में आपके पेज का नाम लिया जाएगा या नहीं। हवाला दिए जाने का वादा कोई नहीं कर सकता, JavaScript के साथ भी नहीं और उसके बिना भी नहीं।
बॉट के काम अलग-अलग हैं। कंपनियाँ उन्हें इस तरह बताती हैं:
| कंपनी | बॉट | कंपनी के अनुसार मकसद |
|---|---|---|
| OpenAI | GPTBot | जनरेटिव foundation मॉडलों की ट्रेनिंग |
| OpenAI | OAI-SearchBot | ChatGPT में सर्च |
| OpenAI | ChatGPT-User | उपयोगकर्ता के कहने पर फ़ेच, जैसे ChatGPT में पूछा गया कोई सवाल |
| Anthropic | ClaudeBot | ऐसी वेब सामग्री जुटाता है जो ट्रेनिंग में योगदान दे सकती है |
| Anthropic | Claude-SearchBot | सर्च नतीजों की गुणवत्ता सुधारता है |
| Anthropic | Claude-User | जब कोई उपयोगकर्ता Claude से कुछ पूछता है तब फ़ेच करता है |
| Perplexity | PerplexityBot | Perplexity के सर्च नतीजों में वेबसाइटें दिखाता और उनसे लिंक करता है |
स्रोत हैं OpenAI, Anthropic और Perplexity। Perplexity का उपयोगकर्ता के कहने पर फ़ेच करने वाला एक अलग बॉट भी है। अगर AI सर्च जवाबों के पीछे के बॉट सिर्फ़ HTML पढ़ते हैं, तो खाली खोल वाले पेज में उनके लिए उद्धृत करने लायक कुछ नहीं होता। इनमें से कौन स्क्रिप्ट रेंडर करता है, यही 2024 के अध्ययन ने मापा था, और यही आपको अपने पेजों पर जाँचना चाहिए।
किन पर असर पड़ता है?
आप तब प्रभावित होते हैं जब आपके पेजों का टेक्स्ट या लिंक उस HTML में नहीं हैं जो सर्वर भेजता है:
- वे पेज जो पूरी तरह ब्राउज़र में बनते हैं। सर्वर एक खोल और स्क्रिप्ट का बंडल भेजता है, और स्क्रिप्ट शीर्षक, टेक्स्ट और नेविगेशन लिखती है।
- वह सामग्री जो स्क्रिप्ट बाद में लोड करती हैं। प्रोडक्ट सूचियाँ, कीमतें, रिव्यू, टैब या "और लोड करें" वाले हिस्से, जो पेज खुलने के बाद किसी API कॉल से आते हैं।
- वे लिंक जो स्क्रिप्ट चलने के बाद ही बनते हैं। JavaScript के बिना चलने वाला क्रॉलर सिर्फ़ वे लिंक फ़ॉलो कर सकता है जो HTML में हैं। SEOgrinder का अपना साइट-क्रॉल भी इससे टकराता है: वह दर्ज करता है कि जो लिंक सिर्फ़ ब्राउज़र में बनते हैं, उन्हें फ़ॉलो नहीं किया जा सकता।
- स्क्रिप्ट से सेट किए गए title, description, canonical और Open Graph टैग। Google इसे स्वीकार करता है। जो बॉट स्क्रिप्ट छोड़ देता है, वह इन्हें कभी नहीं देखता।
अगर सर्वर टेक्स्ट पहले ही भेज देता है, तो आप प्रभावित नहीं हैं। मेन्यू, चार्ट या कैलकुलेटर जैसे इंटरैक्टिव अतिरिक्त हिस्से ब्राउज़र में बनते रह सकते हैं। SEOgrinder जो पेज सिर्फ़ ब्राउज़र में मौजूद होते हैं, उन्हें "पेज केवल ब्राउज़र में बनता है" के रूप में बताता है, क्योंकि कई AI क्रॉलर वहाँ JavaScript नहीं चलाते और उन्हें लगभग खाली पेज दिखता है।
एक मिनट में तीन टेस्ट
जवाब के लिए किसी औज़ार की ज़रूरत नहीं है। तीनों टेस्ट एक ही सवाल पूछते हैं: क्या मेरा टेक्स्ट उस HTML में है जो सर्वर भेजता है?
- पेज का स्रोत देखिए। अपना पेज खोलिए और "View page source" चुनिए (Ctrl+U, Mac पर Cmd+Option+U)। "Inspect" मत चुनिए: इंस्पेक्टर वह पेज दिखाता है जो स्क्रिप्ट चलने के बाद बना। स्रोत में कोई ऐसा वाक्य खोजिए जिसे आप पेज पर पढ़ सकते हैं।
- curl से पेज मँगवाइए। टर्मिनल में
curl -sL https://example.com/your-page | grep -io "कोई छोटा वाक्यांश"चलाइए, और "कोई छोटा वाक्यांश" की जगह अपने ही पेज का कोई छोटा अंश लिखिए। अगर वह छपता है, तो वह HTML में है, सिवाय उस हालत के जब वह सिर्फ़ किसीscriptएलिमेंट के भीतर मिले; वह नहीं गिना जाता। अगर कुछ नहीं छपता, तो पहले वर्तनी और विशेष अक्षर जाँचिए; वरना वह HTML में नहीं है। - JavaScript बंद कीजिए। डेवलपर टूल खोलिए, कमांड मेन्यू खोलिए (Ctrl+Shift+P, Mac पर Cmd+Shift+P), "Disable JavaScript" टाइप कीजिए, उसे चुनिए और पेज दोबारा लोड कीजिए। अगर मुख्य सामग्री गायब हो जाए, तो JavaScript के बिना चलने वाला बॉट भी यही देखता है।
नतीजा ऐसे पढ़िए:
| आप क्या देखते हैं | इसका मतलब |
|---|---|
| वाक्यांश स्रोत में भी है और curl के आउटपुट में भी | टेक्स्ट भेजे गए HTML में है। यह हिस्सा ठीक है। |
| वाक्यांश स्रोत में नहीं है, पर ब्राउज़र में दिखता है | पेज ब्राउज़र में बनता है। स्क्रिप्ट छोड़ने वाले बॉट को कोई टेक्स्ट नहीं दिखता। |
दो सीमाएँ: curl वह दिखाता है जो आपका सर्वर curl को भेजता है, वह नहीं जो किसी खास बॉट को भेजता है, जैसे तब जब फ़ायरवॉल बॉट के साथ अलग बर्ताव करे। और Google ने क्या रेंडर किया, यह देखने के लिए Google Search Console की URL inspection इस्तेमाल कीजिए।
कैसे ठीक करें: सामग्री को HTML में लाइए
लक्ष्य यह है कि शीर्षक, मुख्य टेक्स्ट और आंतरिक लिंक पेज के स्रोत में दिखें। इसके दो आम रास्ते हैं:
- सर्वर-साइड रेंडरिंग (SSR)। सर्वर हर अनुरोध के लिए तैयार HTML बनाता है।
- प्री-रेंडरिंग, जिसे स्टैटिक जेनरेशन (SSG) भी कहते हैं। पेज पहले से बनाकर रखे जाते हैं, जैसे साइट के बिल्ड के समय, और सर्वर बस वे फ़ाइलें परोसता है।
दोनों सामग्री को पहले जवाब में ले आते हैं। इसके अलावा:
- ज़रूरी पेजों से शुरू कीजिए। पूरी साइट दोबारा लिखना शायद ही कभी ज़रूरी होता है। उन पेजों से शुरू कीजिए जिन्हें रैंक करना है या जिनका हवाला दिया जाना है।
- ज़रूरी चीज़ें पहले HTML में रखिए। यानी title, meta description, canonical, Open Graph टैग, मुख्य टेक्स्ट और असली
<a href>एलिमेंट के रूप में लिखे नेविगेशन लिंक। - क्रॉलर और विज़िटर को एक जैसी सामग्री दीजिए। Google "dynamic rendering" को, जिसमें बॉट को पहले से बना रूप मिलता है, सिर्फ़ एक अस्थायी उपाय की तरह गिनाता है। क्रॉलर को वह दिखाना जो विज़िटर को नहीं दिखता, क्लोकिंग है।
- नतीजा स्रोत में जाँचिए। बदलाव के बाद तीनों टेस्ट दोहराइए।
इनमें से कुछ भी रैंकिंग की गारंटी नहीं है। यह एक तकनीकी रुकावट हटाता है, इससे ज़्यादा कुछ नहीं।
SEOgrinder ब्राउज़र में बनने वाले पेज कैसे पहचानता है
SEOgrinder उस HTML को देखता है जो आपका सर्वर भेजता है, उसे नहीं जो ब्राउज़र उससे बनाता है। पता डालिए, विश्लेषण शुरू कीजिए, और सुधार की सूची कार्य टैब में असर के क्रम में दिखती है। तीन निष्कर्ष इस विषय से जुड़े हैं:
- पेज केवल ब्राउज़र में बनता है। निष्कर्ष बताता है कि भेजे गए HTML में कितने शब्द, शीर्षक और आंतरिक लिंक हैं, और यह भी दर्ज करता है कि Google ऐसे पेज देर से रेंडर करता है और कई AI क्रॉलर को लगभग खाली पेज दिखता है।
- "N पेज केवल ब्राउज़र में बनते हैं"। साइट-क्रॉल बताता है कि जाँचे गए पेजों में से कितने लगभग खाली HTML खोल देते हैं। noindex वाले पेज और लॉगिन या साइन-अप पेज इसमें नहीं गिने जाते।
- लॉगिन/साइन-अप पेज, जो ब्राउज़र में ही बनते हैं। यह आमतौर पर ठीक है, क्योंकि ऐसे पेज सर्वर-साइड रेंडरिंग के बिना भी विज़िटरों के लिए चलते हैं। अगर किसी को रैंक करना है, तो उसे सर्वर पर रेंडर कीजिए।
सुधार के बाद दोबारा जाँचें दबाइए: रिपोर्टें अधिकतम 24 घंटे कैश में रहती हैं, और यह बटन नया रन ज़बरदस्ती चलाता है (घंटे में कुछ ही बार)। AI को सौंपें रिपोर्ट को Claude Code, Cursor या GitHub Copilot जैसे कोडिंग एजेंट के लिए Markdown के कार्य-आदेश में बदल देता है, जिसमें हर निष्कर्ष के लिए जाँची जा सकने वाली एक लक्ष्य-शर्त होती है।
SEOgrinder जो नहीं करता: वह यह नहीं मापता कि ChatGPT, Gemini या Perplexity आपके ब्रांड का नाम सचमुच लेते हैं या नहीं। वह तकनीकी बुनियाद जाँचता है, यानी यह कि सामग्री पढ़ी भी जा सकती है या नहीं।
आम गलतियाँ
- "View page source" की जगह "Inspect" से जाँचना। इंस्पेक्टर वह नतीजा दिखाता है जो स्क्रिप्ट चलने के बाद बना, और JavaScript के बिना चलने वाले बॉट को ठीक वही नहीं मिलता।
- "Google इंडेक्स करता है, तो हर बॉट पढ़ सकता है" मान लेना। Google JavaScript चलाता है, और उसके अपने दस्तावेज़ कहते हैं कि सारे बॉट ऐसा नहीं करते।
- Title और meta टैग सिर्फ़ स्क्रिप्ट से सेट करना। Google इसकी अनुमति देता है, पर जो बॉट स्क्रिप्ट नहीं चलाता, वह इन्हें कभी नहीं देखता। इन्हें पहले HTML में रखिए।
- ऐसे लिंक जो सिर्फ़ क्लिक हैंडलर हैं। असली
<a href>लिंक इस्तेमाल कीजिए, ताकि क्रॉलर स्क्रिप्ट चलाए बिना उन्हें फ़ॉलो कर सके। - dynamic rendering को स्थायी योजना बना देना। Google इसे एक अस्थायी उपाय कहता है।
- हर अनजान पते पर वही खाली खोल और स्टेटस 200 लौटाना। क्लाइंट-साइड रेंडर होने वाले ऐप अक्सर ऐसा करते हैं, और ऐसे पेज Soft 404 गिने जा सकते हैं। इसका सीधा समाधान यह है कि जो पता मौजूद नहीं है, वह स्टेटस 404 लौटाए।
- robots.txt में बॉट को अनुमति देना और फ़ायरवॉल पर उन्हें लौटा देना। टेक्स्ट मौजूद है, पर बॉट को त्रुटि मिलती है। SEOgrinder में इसी हाल का निष्कर्ष है: "AI क्रॉलर अनुमत हैं, पर सर्वर उन्हें लौटा रहा है — जाँचिए"। AI क्रॉलर के लिए robots.txt वाला हमारा लेख भी देखिए।
अक्सर पूछे जाने वाले सवाल
क्या Google मेरा JavaScript वाला पेज देखता है?
आमतौर पर हाँ, पर देर से। Google JavaScript को evergreen Chromium से चलाता है, और स्टेटस 200 वाले पेज रेंडर के लिए कतार में इंतज़ार करते हैं। इंडेक्सिंग की गारंटी कभी नहीं होती। Google Search Console की URL inspection दिखाती है कि Googlebot क्या देखता है।
क्या sitemap काफ़ी है?
नहीं। sitemap क्रॉलर को बताती है कि कौन-से पते मौजूद हैं। वह उन पेजों के HTML में टेक्स्ट नहीं डालती।
क्या ChatGPT और Claude JavaScript चलाते हैं?
Vercel और MERJ की 2024 की माप में OpenAI और Anthropic के जिन क्रॉलरों का नाम था, उन्होंने नहीं चलाया। हमारे पास कोई नई माप नहीं है जिसका हवाला दिया जा सके, इसलिए किसी भी जवाब पर भरोसा करने की जगह अपने पेज खुद जाँचिए।
क्या मुझे पूरी साइट दोबारा बनानी होगी?
ज़रूरी नहीं। जिन पेजों को रैंक करना है या जिनका हवाला दिया जाना है, उनके लिए सर्वर-साइड रेंडरिंग या प्री-रेंडरिंग आम पहला कदम है। इंटरैक्टिव हिस्से ब्राउज़र में रह सकते हैं।
अगर मैं सर्वर पर रेंडर करूँ, तो क्या AI असिस्टेंट मेरा नाम लेंगे?
यह वादा कोई नहीं कर सकता। आप बस यह पक्का करते हैं कि टेक्स्ट पढ़ा जा सके, और बाकी हर चीज़ की यही पहली शर्त है।
आपका अगला कदम
कोई एक ज़रूरी पेज चुनिए और तीनों टेस्ट कीजिए। अगर स्रोत में टेक्स्ट नहीं है, तो SEOgrinder में मुफ़्त स्कैन चलाइए और कार्य टैब खोलिए। सबसे ज़रूरी पेजों को सर्वर पर रेंडर करके या पहले से बनाकर ठीक कीजिए, फिर दोबारा जाँचें दबाइए।