---
title: कॉन्फ़िगरेशन फ़ाइल
description: >-
  blume.config.ts का हर विकल्प — साइट मेटाडेटा और कंटेंट स्रोतों से लेकर उन लिंक्स तक जो हर अलग-अलग फ़ीचर कॉन्फ़िगरेशन गाइड तक ले जाते हैं।
sidebar:
  label: blume.config.ts
---

Blume आपके प्रोजेक्ट रूट से `blume.config.ts` पढ़ता है। ऑटोकम्पलीट और टाइप-चेकिंग के लिए अपने कॉन्फ़िग को `defineConfig` में लपेटें — हर फ़ील्ड वैकल्पिक है, और उसका एक समझदार डिफ़ॉल्ट होता है।

```ts blume.config.ts lineNumbers
import { defineConfig } from "blume";

export default defineConfig({
  title: "My Docs",
  description: "Documentation for my project.",
});
```

## एक सम्पूर्ण उदाहरण [#a-complete-example]

सबसे आम विकल्पों को छूता हुआ एक व्यापक उदाहरण (बाकी के लिए हर फ़ीचर की गाइड देखें):

```ts blume.config.ts lineNumbers
import sitemap from "@astrojs/sitemap";
import { defineConfig } from "blume";

export default defineConfig({
  // Site
  title: "My Docs",
  description: "Documentation for my project.",
  logo: "/logo.svg",

  // Astro integrations — installed and versioned by this site
  integrations: [sitemap()],

  // Content
  content: {
    root: "docs",
  },

  // Theme — see the Theming guide
  theme: {
    accent: "teal",
    radius: "md",
    mode: "system",
  },

  // Search — see the Search guide
  search: {
    provider: "orama",
  },

  // Markdown features
  markdown: {
    imageZoom: true,
    code: {
      icons: true, // language icon in the code-block header
      wrap: false, // wrap long lines instead of scrolling
    },
    codeBlocks: {
      theme: {
        light: "github-light", // bundled name or custom Shiki theme object
        dark: "github-dark",
      },
    },
  },

  // AI — llms.txt, MCP, the AI catalog; see the Discoverability section
  ai: {
    llmsTxt: true,
    // AI Catalog / ARD manifest at /.well-known/ai-catalog.json (needs deployment.site)
    catalog: true,
    // MCP server (needs server output)
    mcp: {
      enabled: false,
      route: "/mcp",
    },
  },

  // SEO — OG images, feeds, sitemap, structured data; see the Discoverability section
  seo: {
    og: { enabled: true },
    rss: { enabled: true, types: ["blog", "changelog"] },
    sitemap: true,
    robots: true,
    structuredData: true,
  },

  // Deployment — see the Deployment guide
  deployment: {
    output: "static",
    site: "https://docs.example.com",
  },
});
```

## साइट [#site]

| विकल्प | डिफ़ॉल्ट | विवरण |
| --- | --- | --- |
| `title` | `"Documentation"` | साइट का नाम — हेडर, पेज शीर्षकों और OG कार्ड्स में दिखता है। |
| `description` | — | डिफ़ॉल्ट मेटा विवरण, जो SEO और OG के लिए उपयोग होता है। |
| `logo` | — | हेडर में दिखने वाला ब्रांड चिह्न और/या वर्डमार्क। |
| `banner` | — | हेडर के ऊपर साइट-व्यापी घोषणा पट्टी। |

### लोगो [#logo]

`logo` को किसी SVG की ओर इंगित करें और Blume उसे इनलाइन कर देता है, जिससे `currentColor` वाला लोगो अपने आप लाइट और डार्क थीम का अनुसरण करता है:

```ts blume.config.ts
logo: "/logo.svg",
```

SVG आपके प्रोजेक्ट रूट में या `public/` में रह सकता है। ब्रांड एक चिह्न (`image`) और एक वर्डमार्क (`text`) से बनता है; ऑब्जेक्ट रूप आपको इन्हें अलग-अलग सेट करने देता है:

```ts blume.config.ts lineNumbers
logo: {
  image: "/logo.svg", // string, or { light, dark, alt } for themed raster art
  text: "Acme",       // wordmark beside the mark
  href: "/",          // overrides the brand link (defaults to "/")
},
```

`image` वही मान लेता है जो शॉर्टहैंड लेता है — एक अकेला पाथ, या अलग-अलग लाइट/डार्क आर्टवर्क के लिए `{ light, dark, alt }` (रास्टर इमेज `public/` में ही होनी चाहिए)।

`text` वर्डमार्क को चिह्न से स्वतंत्र रूप से नियंत्रित करता है:

- **`text` को छोड़ दें** और ब्रांड आपकी साइट के `title` का उपयोग करेगा (डिफ़ॉल्ट)।
- **`text: ""` सेट करें** ताकि केवल चिह्न दिखे — तब उपयोगी जब लोगो इमेज में पहले से ही वर्डमार्क शामिल हो।
- **`image` के बिना `text` सेट करें** केवल-टेक्स्ट वाले लोगो के लिए।

### फ़ेविकॉन [#favicon]

कोई फ़ेविकॉन विकल्प नहीं है — Blume उसे फ़ाइलनाम से अपने आप पहचान लेता है, ठीक वैसे ही जैसे Next.js करता है। अपने प्रोजेक्ट रूट या `public/` डायरेक्टरी में एक `icon` या `favicon` फ़ाइल (`.svg`, `.png`, या `.ico`) रखें और वह ब्राउज़र टैब का आइकॉन बन जाती है:

```
my-docs/
├─ blume.config.ts
├─ icon.png          ← picked up automatically
└─ docs/
```

जब कई मौजूद हों, तो SVG की प्राथमिकता PNG से ऊपर और PNG की ICO से ऊपर होती है, और `public/` की फ़ाइल को रूट वाली फ़ाइल पर वरीयता मिलती है। अगर Blume को कोई आइकॉन नहीं मिलता, तो वह अपने ही चिह्न पर लौट आता है।

गहरे रंग का चिह्न डार्क ब्राउज़र क्रोम के सामने ग़ायब हो जाता है, इसलिए आप डार्क मोड के लिए एक दूसरी फ़ाइल भेज सकते हैं। अपनी आइकॉन फ़ाइल का एक `-dark` सहोदर जोड़ें — वही नाम और वही डायरेक्टरी, एक्सटेंशन से पहले `-dark` के साथ (`icon.png` → `icon-dark.png`) — और Blume दोनों आइकॉन एक `prefers-color-scheme` मीडिया क्वेरी के पीछे उत्सर्जित करता है, साथ ही उन ब्राउज़रों और क्रॉलरों के लिए एक सादा लाइट टैग भी जो आइकॉन पर मीडिया क्वेरीज़ को अनदेखा करते हैं:

```
my-docs/
├─ blume.config.ts
├─ icon.png          ← light mode
├─ icon-dark.png     ← dark mode
└─ docs/
```

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

### Apple टच आइकॉन [#apple-touch-icon]

जब कोई आपकी साइट को अपनी होम स्क्रीन पर जोड़ता है तो iOS जिस आइकॉन का उपयोग करता है, उसे भी इसी तरह पहचाना जाता है। अपने प्रोजेक्ट रूट या `public/` डायरेक्टरी में एक `apple-icon` फ़ाइल (`.png`, `.jpg`, या `.jpeg`) — या `apple-touch-icon.png`, वह नाम जो ज़्यादातर फ़ेविकॉन जेनरेटर बनाते हैं — रखें और Blume आपके लिए `<link rel="apple-touch-icon">` जोड़ देता है। कोई डिफ़ॉल्ट नहीं है; अगर कोई फ़ाइल नहीं मिलती, तो कोई टैग नहीं निकाला जाता।

```
my-docs/
├─ blume.config.ts
├─ apple-icon.png     ← picked up automatically
└─ docs/
```

फ़ाइल को प्रोजेक्ट रूट के बजाय `public/` में रखें: रूट-स्तर के आइकॉन के लिए Blume जिस इनलाइन डेटा URI का उपयोग करता है, iOS उसे अनदेखा कर देता है, इसलिए केवल `public/` की फ़ाइल (जो `/apple-icon.png` पर सर्व होती है) ही भरोसेमंद तरीके से होम स्क्रीन तक पहुँचती है। फ़ेविकॉन के विपरीत, यहाँ कोई `-dark` सहोदर नहीं है — iOS होम-स्क्रीन आइकॉन पर मीडिया क्वेरीज़ को अनदेखा करता है, इसलिए कोई डार्क वैरिएंट कभी सर्व किया ही नहीं जा सकता।

### बैनर [#banner]

हेडर के ऊपर साइट-व्यापी घोषणा पट्टी दिखाएँ। एक स्ट्रिंग पास करें, या एक लिंक और डिसमिस बटन वाला ऑब्जेक्ट:

```ts blume.config.ts
banner: "Docs are in beta — expect changes.",
```

```ts blume.config.ts lineNumbers
banner: {
  content: "Blume v1 is here!",
  link: { text: "Read more", href: "/blog/v1" },
  dismissible: true,
  id: "v1",
},
```

जब `dismissible` चालू होता है, तो पट्टी एक क्लोज़ बटन दिखाती है और उसके बाद उस विज़िटर के लिए छिपी रहती है। डिसमिस की कुंजी डिफ़ॉल्ट रूप से कंटेंट टेक्स्ट होती है, इसलिए संदेश संपादित करने पर बैनर वापस आ जाता है; संपादनों के बाद भी उसे डिसमिस बनाए रखने के लिए एक स्थिर `id` सेट करें।

## कंटेंट [#content]

आपका कंटेंट कहाँ रहता है और Blume उसे कैसे खोजता है। फ़ाइलें रूट्स कैसे बनती हैं, इसके लिए [पेज](/docs/content) देखें।

```ts blume.config.ts lineNumbers
content: {
  root: "docs",
}
```

| विकल्प | डिफ़ॉल्ट | विवरण |
| --- | --- | --- |
| `root` | `"docs"` | वह फ़ोल्डर जिसे Blume कंटेंट के लिए स्कैन करता है। |
| `include` | `["**/*.{md,mdx}"]` | वे ग्लोब्स जो कंटेंट फ़ाइलों से मेल खाते हैं। |
| `exclude` | `["**/_*", "**/.*"]` | नज़रअंदाज़ करने के लिए ग्लोब्स (अंडरस्कोर- और डॉट-फ़ाइलें)। |
| `pages` | `"pages"` | कस्टम `.astro` पेजों के लिए फ़ोल्डर। |
| `defaultType` | `"doc"` | जब फ़्रंटमैटर में `type` न हो तो उपयोग किया जाने वाला पेज `type`। |
| `types` | `{}` | प्रति-प्रकार कंटेंट परिभाषाएँ — कस्टम फ़्रंटमैटर कुंजियाँ जो एक ही `type` वाले पेजों तक सीमित होती हैं। [फ़्रंटमैटर](#frontmatter) देखें। |

स्टैटिक एसेट्स `public/` में रहती हैं — `public/logo.png` पर मौजूद फ़ाइल `/logo.png` पर सर्व होती है, इसलिए `![](/images/create.png)` जैसा संदर्भ `public/images/create.png` के सापेक्ष हल होता है। **सापेक्ष पाथ** से संदर्भित इमेज (`![](./diagram.png)`) इसके बजाय आपके कंटेंट के बगल में रहती हैं, और [बिल्ड समय पर ऑप्टिमाइज़](/docs/content/syntax#links-and-images) की जाती हैं।

## इमेज [#images]

सापेक्ष पाथ से संदर्भित लोकल इमेज बिल्ड समय पर अपने आप ऑप्टिमाइज़ हो जाती हैं — कंप्रेस की जाती हैं, WebP में बदली जाती हैं, और उन्हें अंतर्निहित `width`/`height` एट्रिब्यूट्स दिए जाते हैं ताकि लोड होते समय लेआउट न खिसके। कॉन्फ़िगर करने को कुछ नहीं है; लेखन संबंधी मार्गदर्शन के लिए [लिंक और इमेज](/docs/content/syntax#links-and-images) देखें।

रिमोट इमेज डिफ़ॉल्ट रूप से बिना छेड़े सर्व की जाती हैं। Blume उन्हें भी बिल्ड समय पर डाउनलोड और ऑप्टिमाइज़ करे, इसके लिए उनके होस्ट्स को अधिकृत करें:

```ts blume.config.ts lineNumbers
image: {
  domains: ["cdn.example.com"],
  remotePatterns: [{ protocol: "https", hostname: "**.example.com" }],
}
```

| विकल्प | डिफ़ॉल्ट | विवरण |
| --- | --- | --- |
| `domains` | `[]` | वे होस्टनेम जिनकी रिमोट इमेज ऑप्टिमाइज़ की जा सकती हैं। |
| `remotePatterns` | `[]` | पैटर्न-आधारित प्राधिकरण (`protocol`, `hostname`, `port`, `pathname`); होस्टनेम `*.` (एक स्तर) और `**.` (किसी भी गहराई) वाइल्डकार्ड स्वीकार करते हैं। |

## फ़्रंटमैटर [#frontmatter]

पेज फ़्रंटमैटर की सख़्ती से जाँच होती है — कोई अनजान कुंजी बिल्ड को विफल कर देती है, इसलिए टाइपो जल्दी पकड़ में आ जाते हैं। प्रोजेक्ट-विशिष्ट मेटाडेटा (एक ओनर, एक समीक्षा तिथि) रखने के लिए, अतिरिक्त कुंजियों को `frontmatter.extend` के अंतर्गत घोषित करें, हर एक को आपके द्वारा दिए गए स्कीमा से मैप करके:

```ts blume.config.ts lineNumbers
import { defineConfig } from "blume";
import { z } from "zod";

export default defineConfig({
  frontmatter: {
    extend: {
      owner: z.string(),
      reviewedAt: z.coerce.date().optional(),
    },
  },
});
```

कोई भी [Standard Schema](https://standardschema.dev) लाइब्रेरी काम करती है — Zod (आपका प्रोजेक्ट जो भी संस्करण इंस्टॉल करे), Valibot, ArkType। एक्सटेंशन से बाहर की कुंजियाँ सख़्ती से जाँची जाती रहती हैं, इसलिए टाइपो पकड़ने में कोई बदलाव नहीं आता। जाँच के अर्थ-नियमों के लिए [कस्टम कुंजियाँ](/docs/reference/frontmatter#custom-keys) देखें।

`extend` के अंतर्गत दी गई कुंजियाँ साइट-व्यापी लागू होती हैं। कुंजियों को केवल एक कंटेंट प्रकार के पेजों पर आवश्यक बनाने के लिए — किसी RFC का `status`, किसी रनबुक का `service` — उन्हें इसके बजाय `content.types` के अंतर्गत प्रति-प्रकार घोषित करें:

```ts blume.config.ts lineNumbers
import { defineConfig } from "blume";
import { z } from "zod";

export default defineConfig({
  content: {
    types: {
      rfc: {
        facets: ["domain", "status"],
        frontmatter: {
          domain: z.string(),
          status: z.enum(["draft", "review", "enforced"]),
        },
      },
    },
  },
});
```

कोई कुंजी या तो साइट-व्यापी घोषित की जा सकती है या प्रति-प्रकार, दोनों नहीं। स्कोपिंग कैसे हल होती है, इसके लिए [प्रति-प्रकार कुंजियाँ](/docs/reference/frontmatter#per-type-keys) देखें।

`facets` उन कस्टम कुंजियों के नाम देता है जिनके मान फ़िल्टर करने योग्य मेटाडेटा बन जाते हैं: वे खोज दस्तावेज़ों (`blume-search.json` और MCP इंडेक्स) के साथ चलती हैं, और [MCP टूल्स](/docs/discoverability/mcp) एक `filters` इनपुट स्वीकार करते हैं जो उनसे मेल खाता है, ताकि कोई एजेंट, मान लीजिए, `architecture` डोमेन में केवल `enforced` RFC ही प्राप्त कर सके। हर फ़ैसेट एक घोषित कस्टम कुंजी होनी चाहिए — प्रति-प्रकार या साइट-व्यापी — और केवल स्ट्रिंग (या स्ट्रिंग में बदले गए संख्या/बूलियन) मान ही फ़ैसेट बनते हैं।

## GitHub

`github` के ज़रिए Blume को अपनी रिपॉज़िटरी की ओर इंगित करें। यह हेडर के [रिपॉज़िटरी लिंक](/docs/content/navigation#repository-link) और **Edit on GitHub** तथा **Give feedback** [पेज एक्शन](/docs/content/navigation#page-actions) को संचालित करता है:

```ts blume.config.ts lineNumbers
github: {
  owner: "acme",
  repo: "docs",
}
```

| विकल्प | डिफ़ॉल्ट | विवरण |
| --- | --- | --- |
| `owner` | — | वह GitHub अकाउंट या संगठन जिसके पास रिपॉज़िटरी है। |
| `repo` | — | रिपॉज़िटरी का नाम। |
| `branch` | `"main"` | वह ब्रांच जिस पर एडिट लिंक इंगित करते हैं। |
| `dir` | — | रिपो रूट से प्रोजेक्ट रूट तक का पाथ (मोनोरिपो के लिए)। |
| `host` | `"https://github.com"` | Enterprise इंस्टॉलेशनों के लिए, GitHub इंस्टेंस का ऑरिजिन। HTTP(S) होना चाहिए; उसके ऑरिजिन में सामान्यीकृत किया जाता है। |
| `api` | `host` से व्युत्पन्न | REST API बेस, किसी Enterprise इंस्टेंस के विरुद्ध `<GithubInfo>` के लिए। HTTP(S) होना चाहिए; एक ऑरिजिन और पाथ में सामान्यीकृत किया जाता है। |

### GitHub Enterprise

जिन दस्तावेज़ों की रिपॉज़िटरी किसी GitHub Enterprise इंस्टेंस पर रहती है, वे `host` सेट करते हैं, और रिपो से निकला हर लिंक — हेडर का चिह्न, एडिट लिंक, एजेंट मैनिफ़ेस्ट — सार्वजनिक साइट के बजाय उसी इंस्टेंस की ओर इंगित करता है:

```ts blume.config.ts lineNumbers
github: {
  host: "https://github.acme.com",
  owner: "acme",
  repo: "docs",
}
```

[`<GithubInfo>`](/docs/content/components) जिस REST API बेस से क्वेरी करता है, वह `host` से व्युत्पन्न होता है: डेटा रेज़िडेंसी वाला Enterprise Cloud टेनेंट (`acme.ghe.com`) अपने `api.` सबडोमेन से सर्व होता है, और किसी भी अन्य होस्ट को Enterprise Server (`/api/v3`) माना जाता है। जब आपका इंस्टेंस कहीं और स्थित हो, तो `api` को स्पष्ट रूप से सेट करें।

:::warning
जो इंस्टेंस केवल सादे HTTP पर पहुँच योग्य है, वह अपनी गिनतियाँ फिर भी रेंडर करता है, लेकिन `GITHUB_TOKEN` को अनुरोध में सादे पाठ में भेजने के बजाय रोक लिया जाता है — इसलिए किसी निजी रिपो का कार्ड उनके बिना ही लौटता है।
:::

:::note
`host` उन लिंक्स को कवर करता है जिन्हें Blume `github` से व्युत्पन्न करता है। केवल हेडर के चिह्न को कहीं और इंगित करने के लिए — मान लीजिए किसी संगठन की ओर, जब दस्तावेज़ों की रिपो स्वयं निजी हो — एक निरपेक्ष URL के साथ [`navigation.repo`](/docs/content/navigation#repository-link) का उपयोग करें।
:::

## अंतिम बार संशोधित [#last-modified]

हर पेज के नीचे "Last updated on …" पंक्ति दिखाएँ। डिफ़ॉल्ट रूप से बंद; हर पेज की तिथि उसके git इतिहास से निकालने के लिए `lastModified` को `true` सेट करें:

```ts blume.config.ts
lastModified: true,
```

| मान | विवरण |
| --- | --- |
| `false` | अक्षम (डिफ़ॉल्ट)। |
| `true` | तिथि git इतिहास (कमिट तिथियों) से पढ़ें। |
| `{ type: "git" }` | `true` जैसा ही, स्पष्ट रूप से लिखा हुआ। |
| `{ type: "frontmatter" }` | git कभी न चलाएँ — केवल `lastModified` फ़्रंटमैटर फ़ील्ड का उपयोग करें। |

git स्रोत हर फ़ाइल को छूने वाला सबसे हालिया कमिट पढ़ता है, इसलिए यह किसी भी git रिपॉज़िटरी में काम करता है — मोनोरिपो सहित — और बिल्ड समय पर रिपो का इतिहास चाहिए। CI प्लेटफ़ॉर्म आम तौर पर उथला (shallow) क्लोन चेकआउट करते हैं, जो चुपचाप ज़्यादातर तिथियाँ गिरा देता है (ऐसा होने पर बिल्ड `BLUME_SHALLOW_GIT_HISTORY` के साथ चेतावनी देता है): Vercel पर `VERCEL_DEEP_CLONE=true` एनवायरनमेंट वेरिएबल सेट करें; `actions/checkout` के साथ `fetch-depth: 0` सेट करें। पेज का अपना `lastModified` फ़्रंटमैटर हमेशा जीतता है, जो किसी तिथि को पिन करने या अभी तक कमिट न हुई फ़ाइलों के लिए उपयोगी है:

```mdx page.mdx
---
title: My page
lastModified: 2026-06-20
---
```

सक्षम होने पर, तिथि पेज के स्ट्रक्चर्ड डेटा में schema.org `dateModified` के रूप में भी उत्सर्जित होती है।

## तिथि प्रारूप [#date-format]

"Last updated" स्टैम्प और [चेंजलॉग](/docs/advanced/changelog) टाइमलाइन दोनों अपनी तिथियाँ एक ही `dateFormat` के ज़रिए रेंडर करते हैं, ताकि वे एक जैसी पढ़ी जाएँ। तिथियाँ हमेशा साइट की लोकेल में रेंडर होती हैं; `dateFormat` उनका _स्वरूप_ नियंत्रित करता है। यह डिफ़ॉल्ट रूप से लंबे रूप में होता है (`July 21, 2026`, `2026年7月21日`):

```ts blume.config.ts
dateFormat: { dateStyle: "long" },
```

`dateFormat` [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) विकल्पों के लिए एक पास-थ्रू है। किसी लंबाई के लिए `dateStyle` प्रीसेट का उपयोग करें:

```ts blume.config.ts
dateFormat: { dateStyle: "medium" },
```

या `2026/07/21` जैसी संख्यात्मक शैली के लिए अलग-अलग घटक फ़ील्ड्स:

```ts blume.config.ts
dateFormat: { year: "numeric", month: "2-digit", day: "2-digit" },
```

| विकल्प | विवरण |
| --- | --- |
| `dateStyle` | प्रीसेट लंबाई: `"full"`, `"long"`, `"medium"`, या `"short"`। घटक फ़ील्ड्स के साथ नहीं जोड़ा जा सकता। |
| `weekday`, `era`, `year`, `month`, `day` | अलग-अलग घटक, जैसे `year: "numeric"`, `month: "2-digit"`। |
| `timeZone` | IANA टाइम ज़ोन। डिफ़ॉल्ट `UTC` है, ताकि साइट कहीं भी बिल्ड हो, तिथि एक जैसी पढ़ी जाए। |
| `calendar`, `numberingSystem` | कैलेंडर प्रणाली (जैसे `"japanese"`) और अंक प्रणाली (जैसे `"arab"`)। |

## SEO और AI [#seo-and-ai]

मेटाडेटा, Open Graph इमेज, RSS फ़ीड्स, JSON-LD, साइटमैप, और `robots.txt` `seo` के अंतर्गत रहते हैं; `llms.txt`, कच्चा Markdown, JSON API, और MCP सर्वर `ai` के अंतर्गत रहते हैं। दोनों को [खोज-योग्यता](/docs/discoverability) सेक्शन में पेज-दर-पेज कवर किया गया है, जो सर्च इंजनों और AI एजेंट्स को एक ही मशीन-पठनीय परत के दो दर्शक वर्गों की तरह देखता है।

```ts blume.config.ts lineNumbers
seo: {
  og: { enabled: true },
  rss: { enabled: true, types: ["blog", "changelog"] },
  sitemap: true,
  robots: true,
  structuredData: true,
}
```

| विकल्प | डिफ़ॉल्ट | विवरण |
| --- | --- | --- |
| `og.enabled` | ऑटो | प्रति-पेज Open Graph इमेज — साइट URL सेट होने पर चालू। |
| `rss.enabled` | `true` | ब्लॉग और चेंजलॉग कंटेंट के लिए फ़ीड्स बनाएँ। |
| `rss.types` | `["blog", "changelog"]` | वे कंटेंट प्रकार जिन्हें अपनी-अपनी फ़ीड मिलती है। |
| `rss.limit` | `50` | प्रति फ़ीड अधिकतम आइटम। |
| `sitemap` | `true` | sitemap.xml बनाएँ (deployment.site चाहिए)। |
| `robots` | `true` | Sitemap लिंक के साथ robots.txt बनाएँ। |
| `structuredData` | `true` | हर पेज के हेड में schema.org JSON-LD उत्सर्जित करें। |

ये पूर्ण URL के लिए एक निरपेक्ष [`deployment.site`](/docs/deployment) के साथ सबसे अच्छा काम करते हैं।

## विषय-सूची [#table-of-contents]

इस-पेज-पर वाली रूपरेखा डिफ़ॉल्ट रूप से चालू रहती है और `H2`–`H3` शीर्षकों को सूचीबद्ध करती है। `toc` के साथ इसे बंद करें, या शीर्षक-सीमा बदलें:

```ts blume.config.ts
export default defineConfig({
  toc: false, // hide it everywhere
});
```

या इसके बजाय शीर्षक-सीमा को संकीर्ण करें:

```ts blume.config.ts
export default defineConfig({
  toc: { minHeadingLevel: 2, maxHeadingLevel: 4 },
});
```

## फ़ीचर विकल्प [#feature-options]

इनमें से हर एक की अपनी गाइड है। कॉन्फ़िग फ़ील्ड प्रवेश-बिंदु है:

| फ़ील्ड | यह क्या कॉन्फ़िगर करता है | गाइड |
| --- | --- | --- |
| `theme` | एक्सेंट रंग, कोने की त्रिज्या, फ़ॉन्ट्स, लाइट/डार्क मोड | [थीमिंग](/docs/configuration/theming) |
| `navigation` | स्पष्ट साइडबार और हेडर टैब्स | [नेविगेशन](/docs/content/navigation) |
| `search` | प्रोवाइडर (Orama, Pagefind, Algolia, और अन्य) और इंडेक्सिंग | [खोज](/docs/configuration/search) |
| `markdown` | मार्कडाउन रेंडरिंग विकल्प — कोड ब्लॉक्स, हेडिंग एंकर, इमेज ज़ूम | [सिंटैक्स](/docs/content/syntax) |
| `ai` | `llms.txt`, Markdown मिरर, JSON API, और कोडिंग एजेंट्स के लिए होस्टेड MCP सर्वर | [SEO और AEO](/docs/discoverability) |
| `ai.ask` | पेज के भीतर मौजूद Ask AI सहायक | [Ask AI](/docs/configuration/ask-ai) |
| `analytics` | Vercel, PostHog, और कस्टम स्क्रिप्ट्स | [एनालिटिक्स](/docs/configuration/analytics) |
| `seo` | मेटाडेटा, OG इमेज, फ़ीड्स, स्ट्रक्चर्ड डेटा, साइटमैप, robots | [SEO और AEO](/docs/discoverability) |
| `deployment` | आउटपुट मोड, अडैप्टर, और साइट URL | [डिप्लॉयमेंट](/docs/deployment) |
| `redirects` | स्थायी और अस्थायी रीडायरेक्ट्स | [डिप्लॉयमेंट](/docs/deployment#redirects) |
| `integrations` | Blume के अंतर्निर्मित इंटीग्रेशन के बाद जोड़े गए Astro इंटीग्रेशन | [कस्टमाइज़ेशन](/docs/configuration/customization#astro-integrations) |

## प्राथमिकता [#precedence]

सेटिंग्स सबसे कम से सबसे अधिक प्राथमिकता के क्रम में हल होती हैं, इसलिए आपको केवल वही ओवरराइड करना पड़ता है जिसकी ज़रूरत हो:

1. **Blume डिफ़ॉल्ट्स**

    हर फ़ील्ड के लिए एक समझदार डिफ़ॉल्ट।

2. **blume.config.ts**

    आपका प्रोजेक्ट-व्यापी कॉन्फ़िगरेशन।

3. **फ़ोल्डर मेटा**

    किसी सेक्शन के शीर्षक और क्रम के लिए [`meta.ts`](/docs/content/meta)।

4. **पेज फ़्रंटमैटर**

    प्रति-पेज ओवरराइड्स जीतते हैं।
