Astro SEO चरण दर चरण: स्टैटिक या सर्वर रेंडरिंग, head टैग, साइटमैप, hreflang, images, JSON-LD और रीडायरेक्ट, आधिकारिक दस्तावेज़ों से मिलाकर।

इस पेज पर
AI से इस लेख का सार देखें
त्वरित क्विज़
क्या SEO आपके लिए सही है, और शुरुआत कैसे करें?
Sorank आपके जवाबों से मेल खाता है
इसे अपनी साइट पर 3 दिनों के लिए आज़माएं और देखें कि Google, ChatGPT और बाकी AI पर आप कहां खड़े हैं।
3 दिन का मुफ़्त ट्रायल शुरू करें3 दिन मुफ़्त, फिर जब चाहें बंद करें। 90 दिन की नतीजे-या-रिफ़ंड गारंटी।
संक्षेप में: Astro सबसे ज़्यादा search-friendly web फ़्रेमवर्क में से एक है, क्योंकि यह पेजों को साधारण HTML में prerender करता है और जब तक आप न माँगें, client-side JavaScript नहीं भेजता। इससे Google और AI क्रॉलर को पहली request पर पूरा कंटेंट मिलता है। पर Astro आपका SEO अपने-आप नहीं लिखता: titles, meta descriptions, canonicals, hreflang, structured data और रीडायरेक्ट आपके जिम्मे हैं, ज़्यादातर एक साझा head कंपोनेंट और आधिकारिक साइटमैप इंटीग्रेशन के ज़रिए।
Astro SEO उस साफ़ HTML को ऐसे पेजों में बदलने का काम है जो रैंक करें। Google की अपनी JavaScript SEO basics गाइड बताती है कि वह JavaScript साइटों को तीन चरणों में (क्रॉलिंग, रेंडरिंग, इंडेक्सिंग) संभालता है, और कहती है कि “server-side या pre-rendering अब भी एक बढ़िया विचार है” क्योंकि हर bot JavaScript नहीं चला सकता। Astro इसी स्थिति से शुरू होता है। यह गाइड बाकी बातें एक-एक सेटिंग के हिसाब से बताती है, हर व्यवहार को आधिकारिक Astro दस्तावेज़ों से मिलाकर। संदर्भ के लिए: वह sorank.com साइट, जिसे आप पढ़ रहे हैं, Astro पर चलती है।
तकनीकी स्तर पर, हाँ। Astro कंपोनेंट को बिल्ड time पर HTML में रेंडर करता है और वह JavaScript हटा देता है जिसे React या Vue आम तौर पर browser तक भेजते हैं। इससे वे समस्याएँ नहीं आतीं जो हमारी JavaScript SEO गाइड में बताई गई हैं: खाली HTML shells, ऐसा कंटेंट जो रेंडरिंग के बाद ही दिखता है, ऐसे लिंक जो असली anchor टैग नहीं हैं। यह single-page application के routing वाले जालों से भी बचाता है, क्योंकि हर Astro रूट का अपना असली URL और अपनी HTML फ़ाइल होती है।
Astro जो नहीं करता, वह भी उतना ही ज़रूरी है। इसमें कोई built-in SEO प्लगइन नहीं है, कोई अपने-आप meta description नहीं, कोई अपने-आप canonical टैग नहीं और कोई structured data नहीं। नीचे दी तालिका मुफ़्त मिलने वाली चीज़ों को उन चीज़ों से अलग करती है जो आपको बनानी होती हैं।
| SEO तत्व | Astro क्या देता है | आप क्या जोड़ते हैं |
|---|---|---|
| Crawlable HTML | डिफ़ॉल्ट रूप से prerender हुआ HTML | कुछ नहीं, जब तक कंटेंट सिर्फ़ क्लाइंट पर रेंडर न हो |
| Title और meta description | हर लेआउट में आपके नियंत्रण वाला head | हर पेज से भरा जाने वाला एक साझा SEO कंपोनेंट |
| Canonical टैग | Astro.site और Astro.url से absolute URL बनाने की सुविधा | लिंक टैग खुद, एक जैसे trailing slash के साथ |
| XML साइटमैप | आधिकारिक @astrojs/sitemap इंटीग्रेशन | इसे लगाएँ, site विकल्प सेट करें, निजी पेज छानें |
| hreflang | i18n routing और साइटमैप का i18n विकल्प | हर पेज के head में alternate लिंक |
| Images | Image और Picture कंपोनेंट जो फ़ाइलें optimize करते हैं | वर्णनात्मक alt text, समझदार sizes |
| Structured data | कुछ खास नहीं | हर पेज प्रकार के लिए JSON-LD स्क्रिप्ट्स |
| Redirects | Config में रीडायरेक्ट विकल्प | Static बिल्ड के लिए host स्तर पर असली 301 |
On-demand रेंडरिंग पर Astro दस्तावेज़ साफ़ है: डिफ़ॉल्ट रूप से पेज, रूट्स और API एंडपॉइंट्स बिल्ड time पर स्टैटिक पेज के रूप में prerender होते हैं। SEO के लिए, स्टैटिक आउटपुट सबसे सुरक्षित डिफ़ॉल्ट है: हर URL एक तैयार HTML फ़ाइल है जो CDN से परोसी जाती है, तेज़ है, और हर विज़िटर और हर bot के लिए एक जैसी है।
On-demand (सर्वर) रेंडरिंग के लिए आपके host (जैसे Node, Netlify, Vercel या Cloudflare) का एडैप्टर चाहिए। फिर आप एक रूट को export const prerender = false लिखकर prerendering से बाहर कर सकते हैं, या पूरे प्रोजेक्ट को output: 'server' पर सेट करके स्टैटिक पेजों को वापस prerender के लिए चिह्नित कर सकते हैं। दोनों मोड पूरा HTML देते हैं, इसलिए Google को एक ही चीज़ दिखती है। फ़र्क कहीं और है:
व्यावहारिक नियम: marketing पेज, blog posts और documentation को स्टैटिक रखें, और सिर्फ़ उन रूट्स को on demand रेंडर करें जिन्हें live डेटा चाहिए। Astro के दस्तावेज़ भी यही सलाह देते हैं: तब तक डिफ़ॉल्ट स्टैटिक mode रखें जब तक आपके ज़्यादातर पेजों को on-demand रेंडरिंग की ज़रूरत न पड़े।
एक SEO कंपोनेंट बनाएँ (अक्सर उसे BaseHead या Seo कहा जाता है) और उसे हर लेआउट के head में शामिल करें। यह title, description, एक वैकल्पिक image और एक वैकल्पिक noindex flag लेता है, और यह आउटपुट देता है:
पहले astro.config.mjs में site विकल्प सेट करें: canonical, साइटमैप और social टैग, सब इसी पर निर्भर हैं। फिर trailingSlash नीति चुनें ('always' या 'never') और उसी पर टिके रहें, ताकि /blog/post और /blog/post/ एक ही पेज के दो वर्ज़न की तरह न लड़ें। Canonical से query strings हटाएँ, ताकि tracking पैरामीटर डुप्लिकेट न बनाएँ।
सुझाव
अगर आपके लेख कंटेंट कलेक्शन्स में रहते हैं, तो कलेक्शन स्कीमा में title और description को अनिवार्य फ़ील्ड बनाएँ। अगर लेखक meta description भूल जाए, तो बिल्ड विफल हो जाएगा, बजाय इसके कि Google को खाली स्निपेट भेजा जाए।
आधिकारिक इंटीग्रेशन का उपयोग करें, जो @astrojs/sitemap पेज पर दस्तावेज़ित है। npx astro add sitemap चलाने से यह इंस्टॉल होता है और कॉन्फ़िग में जुड़ जाता है। इसके लिए site विकल्प ज़रूरी है, और बिल्ड के समय यह sitemap-index.xml फ़ाइल लिखता है, जो क्रमांकित फ़ाइलों (sitemap-0.xml, और बड़ी साइटों पर और) की ओर इशारा करती है। हर फ़ाइल में डिफ़ॉल्ट रूप से 45,000 entries तक होती हैं, जिसे entryLimit विकल्प तय करता है। अगर यह फ़ॉर्मैट आपके लिए नया है, तो हमारी glossary की XML साइटमैप प्रविष्टि बताती है कि Google इसके साथ क्या करता है।
SEO के लिए तीन सेटिंग्स मायने रखती हैं:
ध्यान दें
दस्तावेज़ कहते हैं कि इंटीग्रेशन SSR mode में dynamic रूट्स के लिए साइटमैप entries नहीं बना सकता। अगर आपके प्रोडक्ट या लेख पेज on demand रेंडर होते हैं, तो वे साइटमैप से गायब रहेंगे, जब तक आप उन्हें prerender न करें या खुद न जोड़ें।
robots.txt के लिए, ज़्यादातर साइटों पर public फ़ोल्डर की एक स्टैटिक फ़ाइल काफ़ी है। अगर staging और production में कंटेंट अलग है, तो उसे किसी एंडपॉइंट (src/pages/robots.txt.ts) से बनाएँ। दोनों ही मामलों में एक Sitemap line जोड़ें जो sitemap-index.xml की ओर इशारा करे, और लॉन्च से पहले उसे robots.txt checker से जाँचें। यही एंडपॉइंट तरीका llms.txt फ़ाइल भी बनाता है; उसकी सामग्री पर हमारी llms.txt फ़ाइल इंस्टॉल करने की गाइड में जानकारी है।
Astro का built-in i18n routing URL वाला हिस्सा संभालता है। Config में आप defaultLocale और locales की सूची घोषित करते हैं, और चुनते हैं कि डिफ़ॉल्ट भाषा को भी prefix मिले या नहीं (prefixDefaultLocale)। getRelativeLocaleUrl जैसे helpers स्थानीय लिंक बनाते हैं, और Astro.currentLocale बताता है कि हर पेज किस भाषा में है।
Routing गाइड head में hreflang टैग को कवर नहीं करती, इसलिए इन्हें SEO कंपोनेंट में खुद लिखने की योजना बनाएँ: हर पेज के लिए हर भाषा वर्ज़न की एक alternate लिंक, साथ में x-default, सब absolute URL के रूप में, और हर वर्ज़न बाकी सभी वर्ज़न को सूचीबद्ध करे (वापसी लिंक)। इन्हें उसी locale सूची से बनाने से सबसे आम गलती टलती है, यानी ऐसा alternate जो किसी मौजूद न पेज की ओर इशारा करे। कुछ URL पर तर्क जाँचने के लिए हमारा hreflang generator किसी पेज के लिए पूरे टैग निकाल देता है। फिर साइटमैप का i18n विकल्प दूसरे संकेत के रूप में चालू करें।
गति में Astro सबसे ज़्यादा बढ़त देता है, और यह Core Web Vitals में दिखता है। Astro images गाइड astro:assets के Image कंपोनेंट का वर्णन करती है: यह स्थानीय images को optimize करता है, उनका फ़ॉर्मैट बदलता है, lazy loading और async decoding देता है, और image के आयाम (dimensions) अनुमानित करता है ताकि Cumulative Layout Shift से बचा जा सके। इस पर alt attribute अनिवार्य है, जो image SEO के एक मूल नियम को लागू करता है। Picture कंपोनेंट एक कदम आगे जाता है और AVIF या WebP को फ़ॉलबैक के साथ देता है।
दो आदतें तस्वीर पूरी करती हैं। जिन images को optimize होना है उन्हें src में रखें (public में रखी फ़ाइलें बिना किसी processing के परोसी जाती हैं)। और पेज के ऊपर वाली मुख्य image को lazy-load न करें: उसे eager loading दें, ताकि वह Largest Contentful Paint में देरी न करे।
Islands architecture JavaScript को नियंत्रित रखती है। कोई कंपोनेंट तब तक स्टैटिक HTML है जब तक आप क्लाइंट directive नहीं जोड़ते: client:load उसे तुरंत hydrate करता है, client:idle तब जब browser खाली हो, client:visible केवल तब जब वह viewport में आए। client:load को सिर्फ़ उन चीज़ों के लिए रखना जो तुरंत प्रतिक्रिया दें (menu, cart), Interaction to Next Paint को बचाने का सबसे सरल तरीका है। Server islands (server:defer) किसी personalized block को cached पेज के बाद लोड होने देते हैं, बिना मुख्य कंटेंट को धीमा किए।
नोट
Island केवल अपनी interactivity छिपाता है, text नहीं, बशर्ते कंपोनेंट पहले सर्वर पर रेंडर हो। Load के बाद browser में लाया गया कंटेंट एक अलग मामला है: बिना JavaScript चलाने वाले क्रॉलर, जिनमें कई AI क्रॉलर शामिल हैं, उसे नहीं देखेंगे।
Astro में कोई स्कीमा फ़ीचर नहीं है, जो आपको पूरा नियंत्रण देता है। हर पेज प्रकार (Article, Product, Organization, BreadcrumbList, FAQPage) के लिए एक JavaScript ऑब्जेक्ट बनाएँ और उसे application/ld+json type वाले स्क्रिप्ट टैग में निकालें, JSON.stringify के साथ set:html directive का उपयोग करके ताकि JSON escape न हो। उसे उसी फ़्रंटमैटर या कलेक्शन डेटा से भरें जिससे दिखने वाला पेज बनता है, ताकि मार्कअप हमेशा वही दिखाए जो उपयोगकर्ता देखते हैं; यह Google के स्कीमा मार्कअप दिशानिर्देशों की शर्त है।
किसी नए पेज प्रकार का JSON बनाने के लिए हमारा मुफ़्त स्कीमा generator एक valid शुरुआती block देता है, जिसे आप टेम्पलेट में बदलते हैं। Template बदलने के बाद बनाए गए पेजों के नमूने Google के Rich Results Test से हर बार जाँचें।
WordPress या Next.js से माइग्रेशन Astro साइट के लिए सबसे जोखिम भरा समय है। हर उस URL को रखें जिस पर traffic या बैकलिंक हैं, और बाकी को एक-एक करके उनके सबसे नज़दीकी समकक्ष से स्थायी रीडायरेक्ट से जोड़ें, जैसा हमारी SEO रीडायरेक्ट गाइड में बताया गया है।
Astro के कॉन्फ़िग में एक रीडायरेक्ट ऑब्जेक्ट होता है जो पुराने paths को नए paths से जोड़ता है। Server एडैप्टर के साथ ये असली HTTP रीडायरेक्ट बन जाते हैं। शुद्ध स्टैटिक बिल्ड पर, Astro इसके बदले meta refresh वाला HTML पेज लिखता है, जिसे Google फ़ॉलो करता है, पर यह server-side 301 से कमज़ोर सिग्नल माना जाता है। Static साइट के लिए रीडायरेक्ट को अपने host के अपने फ़ॉर्मैट में घोषित करें (Netlify या Cloudflare Pages पर _redirects फ़ाइल, Vercel पर vercel.json फ़ाइल), ताकि क्रॉलर को असली 301 मिले।
ChatGPT, Perplexity या Gemini द्वारा cite होना पढ़े जाने योग्य होने से शुरू होता है। कई AI क्रॉलर कच्चा HTML लाते हैं और JavaScript नहीं चलाते, इसलिए जो साइट अपना पूरा text पहली response में भेजती है, जैसा Astro डिफ़ॉल्ट रूप से करता है, वह एक बाधा हटा देती है जो client-rendered साइटों के सामने रहती है। साफ़ headings, सीधे जवाब वाले पैराग्राफ़, structured data और एक llms.txt फ़ाइल फिर हर पेज को उद्धृत करने लायक बनाते हैं।
लॉन्च के बाद अनुमान नहीं, माप करें। Sorank GEO और SEO dashboard आपका Search Console डेटा और AI assistants से आपकी visits एक जगह लाता है, ताकि आप देख सकें कि नई साइट अपनी positions बनाए रखती है या नहीं।

तकनीकी गुणवत्ता तभी फल देती है जब रैंक करने के लिए कंटेंट हो। Sorank का AI blog article generator ऐसे लेख लिखता और प्रकाशित करता है जो Google और AI assistants के लिए optimized हों, और वह webhook के ज़रिए किसी custom साइट से, जैसे Astro प्रोजेक्ट से, जुड़ सकता है।
Astro डिफ़ॉल्ट रूप से crawlable और तेज़ HTML देता है; रैंकिंग फिर भी उन head टैग, साइटमैप, hreflang, structured data और रीडायरेक्ट पर निर्भर है जिन्हें आप ऊपर से जोड़ते हैं। पहले साझा SEO कंपोनेंट और साइटमैप सेट करें, फिर लॉन्च से पहले ऊपर की तालिका के हर बिंदु पर काम करें।
नहीं। Astro का कोई आधिकारिक सब-कुछ-एक-में SEO प्लगइन नहीं है: title, meta description, canonical और social टैग आप एक साझा head कंपोनेंट में लिखते हैं। Sitemap के लिए आधिकारिक @astrojs/sitemap इंटीग्रेशन है। Community packages भी मौजूद हैं, पर अपना छोटा कंपोनेंट आसानी से संभाला जा सकता है और वह पूरी तरह आपके नियंत्रण में रहता है।
दोनों ऐसे पूरी तरह रेंडर हुए HTML दे सकते हैं कि Google दोनों को अच्छी तरह index कर सके। Astro डिफ़ॉल्ट रूप से बहुत कम JavaScript भेजता है, इसलिए कंटेंट साइटें आम तौर पर तेज़ होती हैं और Core Web Vitals बेहतर रहते हैं। Next.js अत्यधिक interactive applications के लिए बेहतर बैठता है; ब्लॉग, marketing साइटों और documentation के लिए SEO में Astro सरल विकल्प है।
हाँ। Server पर रेंडर हुआ पेज भी Googlebot को पूरा HTML लौटाता है, ठीक prerender हुए पेज की तरह। ध्यान देने वाली बातें हैं सर्वर response time, जो लोडिंग गति पर असर डालता है, और साइटमैप इंटीग्रेशन, जो सर्वर mode में रेंडर हुए dynamic रूट्स को अपने-आप सूची में नहीं डालता, जब तक आप उन्हें खुद न जोड़ें।
आपसे पहले लोगों ने Sorank आज़माया है
