सामग्री पर जाएँ
Blume
Esc
↑↓नेविगेट↵खोलें⌘Jप्रीव्यू
इस पेज पर

संरचित डेटा

प्रत्येक पृष्ठ पर मौजूद schema.org JSON-LD — WebSite, पृष्ठ, और breadcrumb नोड्स — साथ ही वैकल्पिक Organization और SoftwareApplication ब्लॉक जो खोज इंजनों और एजेंटों को बताते हैं कि आप कौन हैं।

Blume प्रत्येक पृष्ठ के <head> में schema.org JSON-LD उत्सर्जित करता है ताकि खोज इंजन आपकी सामग्री को समझ सकें। यह डिफ़ॉल्ट रूप से चालू रहता है:

seo: {
  structuredData: true,
}

प्रत्येक पृष्ठ में शामिल होते हैं:

  • साइट की पहचान के लिए एक WebSite नोड,
  • पृष्ठ स्वयं, अपने विवरण, भाषा और प्रकाशन तिथि के साथ: मुखपृष्ठ पर एक WebPage, और अन्य सभी जगह एक article — ब्लॉग पोस्ट के लिए BlogPosting, चेंजलॉग और दस्तावेज़ों के लिए TechArticle,
  • किसी article पर, नेविगेशन ट्रेल से निर्मित एक BreadcrumbList।

मुखपृष्ठ नेविगेशन का मूल होता है, इसलिए प्रत्येक लोकेल का मुखपृष्ठ (/fr) और किसी basePath का मूल भी WebPage होते हैं।

जब deployment.site सेट होता है, तो URL निरपेक्ष होते हैं। इसके बिना वे रूट-सापेक्ष होते हैं, और WebSite नोड, जिसे एक निरपेक्ष पहचानकर्ता की आवश्यकता होती है, छोड़ दिया जाता है। seo.noindex से चिह्नित पृष्ठ छोड़ दिए जाते हैं। जब lastModified चालू होता है, तो प्रत्येक पृष्ठ की तिथि dateModified के रूप में भी उत्सर्जित होती है, और दृश्यमान “अंतिम अपडेट” तिथि को एक <time datetime> के रूप में मार्कअप किया जाता है, ताकि खोज इंजन पृष्ठ पर मौजूद किसी अन्य तिथि के बजाय वही तिथि पढ़ें।

साइट की पहचान

WebSite नोड यह बताता है कि एक साइट मौजूद है; यह नहीं बताता कि वह क्या है या उसे कौन चलाता है — और AI एजेंट आपकी अनुशंसा या उद्धरण देने से पहले JSON-LD को इसी के लिए पढ़ते हैं। दो वैकल्पिक ब्लॉक इस कमी को पूरा करते हैं, और दोनों को deployment.site की आवश्यकता होती है (क्योंकि इन नोड्स में निरपेक्ष पहचानकर्ता होते हैं):

seo: {
  organization: {
    name: "Acme", // defaults to the site title
    email: "hello@acme.com",
    telephone: "+1 555 0100",
    address: { addressLocality: "Sydney", addressCountry: "AU" },
    logo: "/logo.svg",
    sameAs: ["https://github.com/acme", "https://x.com/acme"],
  },
  software: {
    license: "MIT",
    operatingSystem: "Node.js 22+",
    price: 0, // emitted as an Offer; 0 marks it free
    sameAs: ["https://www.npmjs.com/package/acme"],
  },
}

organization प्रत्येक पृष्ठ में एक Organization नोड जोड़ता है — WebSite और पृष्ठ नोड्स इसे publisher के रूप में उद्धृत करते हैं — जिसमें ईमेल और टेलीफ़ोन एक ContactPoint के रूप में (contactType का डिफ़ॉल्ट "customer support" है) और पता एक PostalAddress के रूप में होता है; यही वे दो फ़ील्ड हैं जिन्हें व्यवसाय-सत्यापन जाँचें खोजती हैं। name और url का डिफ़ॉल्ट साइट के मान होते हैं; रूट-सापेक्ष logo को किसी भी पृष्ठ URL की तरह निरपेक्ष बना दिया जाता है।

software मुखपृष्ठ में एक SoftwareApplication नोड जोड़ता है: उत्पाद का नाम और विवरण (डिफ़ॉल्ट रूप से साइट के), applicationCategory (डिफ़ॉल्ट "DeveloperApplication"), ऑपरेटिंग सिस्टम, लाइसेंस, price सेट होने पर एक Offer, और sameAs में रजिस्ट्री या रिपॉज़िटरी URL। सभी डिफ़ॉल्ट अपनाने के लिए software: true पास करें। संगठन, यदि कॉन्फ़िगर किया गया हो, तो उसे इसके publisher के रूप में उद्धृत किया जाता है।

साझा इकाई पहचानकर्ता

जब दस्तावेज़ किसी अन्य साइट के भीतर होते हैं (example.com/docs), तो इकाइयों को दोबारा परिभाषित करने के बजाय उन्हीं इकाइयों की ओर संकेत करें जिन्हें वह साइट पहले से परिभाषित करती है:

seo: {
  jsonLd: {
    websiteId: "https://example.com/#website",
    organizationId: "https://example.com/#organization",
  },
}

प्रत्येक पृष्ठ websiteId को अपने isPartOf के रूप में नामित करता है, और Blume अपना स्वयं का WebSite नोड उत्सर्जित करना बंद कर देता है, क्योंकि उसका नाम और URL साइट के बजाय दस्तावेज़ों का वर्णन करते। फिर भी उसे उसी id के अंतर्गत उत्सर्जित करने के लिए website: true सेट करें, या कोई id साझा किए बिना दस्तावेज़ों का अपना WebSite नोड छोड़ने के लिए website: false सेट करें। organizationId प्रत्येक पृष्ठ का प्रकाशक बन जाता है। जब seo.organization भी सेट हो, तो Organization नोड उसी id का उपयोग करता है और केवल वही फ़ील्ड रखता है जिन्हें आप कॉन्फ़िगर करते हैं: दस्तावेज़ों का शीर्षक और URL उसके नाम और URL का स्थान नहीं लेते। डिफ़ॉल्ट रूप से, Blume WebSite नोड उत्सर्जित करता है और साइट URL के साथ #website और #organization जोड़कर उनका उपयोग करता है। पहचानकर्ता निरपेक्ष URL होने चाहिए, इसलिए वे साइट URL के बिना भी काम करते हैं।

पृष्ठ लेखक और प्रकाशक

प्रत्येक पृष्ठ पर मौजूदा इकाइयों का संदर्भ दें:

seo: {
  jsonLd: {
    author: { "@id": "https://example.com/#author" },
    publisher: { "@id": "https://example.com/#publisher" },
  },
}

ये संदर्भ WebPage या article नोड पर लागू होते हैं, और publisher उसके प्रकाशक के रूप में संगठन का स्थान ले लेता है। Blume उन इकाइयों को परिभाषित नहीं करता जिनकी ओर ये संकेत करते हैं। किसी पृष्ठ का अपना authors फ्रंटमैटर author पर प्राथमिकता रखता है: प्रत्येक लेखक को एक Person के रूप में श्रेय दिया जाता है।

Git से प्रकाशन तिथि

पृष्ठों की तिथि उस कमिट से निर्धारित करें जिसने उनकी सामग्री फ़ाइल जोड़ी थी:

seo: {
  datePublished: "git",
}

फ्रंटमैटर का date या changelog.date अब भी प्राथमिकता रखता है। शेष पृष्ठों की तिथि Git निर्धारित करता है, उसी git log के माध्यम से जिसका उपयोग lastModified करता है। नाम-परिवर्तनों का अनुसरण केवल तभी किया जाता है जब सामग्री अपरिवर्तित हो, ताकि कोई नया पृष्ठ उसी कमिट में हटाए गए किसी मिलते-जुलते पृष्ठ का इतिहास कभी न अपनाए। गैर-फ़ाइलसिस्टम स्रोतों के पृष्ठों और अनकमिटेड फ़ाइलों को git से कोई तिथि नहीं मिलती। शैलो क्लोन किसी भी पृष्ठ की तिथि निर्धारित नहीं करता और इसके बजाय चेतावनी देता है, क्योंकि उसका सबसे पुराना कमिट वही होता है जहाँ से क्लोन काटा गया था। CI में पूरा इतिहास फ़ेच करें (Vercel पर VERCEL_DEEP_CLONE=true, actions/checkout के लिए fetch-depth: 0)।

निर्धारित Open Graph छवि भी पृष्ठ नोड की image के रूप में शामिल की जाती है, चाहे वह फ्रंटमैटर से आए, साइट डिफ़ॉल्ट से, या किसी जनरेट किए गए कार्ड से।

कस्टम पृष्ठ

PageLayout के माध्यम से रेंडर किया गया कोई कस्टम .astro पृष्ठ वही ग्राफ़ उत्सर्जित करता है, ताकि कोई मार्केटिंग मुखपृष्ठ ऐसा एकमात्र URL न रह जाए जिसमें संरचित डेटा न हो। किसी कस्टम पृष्ठ की कोई सामग्री फ़ाइल नहीं होती जिससे उसकी तिथि निर्धारित की जा सके, इसलिए उसे dateModified देने के लिए lastModified पास करें। इस सेटिंग के साथ समन्वयित रखने के लिए structuredDataEnabled={config.structuredData} पास करें, या केवल उसी पृष्ठ के लिए इसे बंद करने के लिए structuredDataEnabled={false} पास करें।

अंतिम अपडेट

क्या यह पेज सहायक था?