---
title: CLI
description: >-
  Blume का हर कमांड और फ़्लैग एक ही जगह समझाया गया, साथ ही हर एक द्वारा स्वीकार किए जाने वाले विकल्प भी।
---

```bash
blume <command> [options]
```

## कमांड [#commands]

| कमांड | विवरण |
| --- | --- |
| `blume init [dir]` | एक प्रोजेक्ट स्कैफ़ोल्ड करें (डिफ़ॉल्ट रूप से इंटरैक्टिव)। |
| `blume dev` | हॉट रीलोड के साथ डेव सर्वर शुरू करें। |
| `blume build` | स्टैटिक (या सर्वर) साइट बनाएँ। |
| `blume preview` | पिछले बिल्ड का पूर्वावलोकन करें। |
| `blume add <item>` | रजिस्ट्री से एक सोर्स कंपोनेंट इंस्टॉल करें। |
| `blume sync` | रिमोट कंटेंट स्रोतों को दोबारा लाएँ और फिर से जनरेट करें। |
| `blume eject` | रनटाइम को एक स्वतंत्र Astro ऐप में बदलें। |
| `blume check` | `astro check` से साइट की टाइप-जाँच करें। |
| `blume doctor` | कॉन्फ़िग और कंटेंट की समस्याओं का निदान करें। |
| `blume validate` | अपने कंटेंट में मौजूद लिंक की जाँच करें। |
| `blume audit` | बनी हुई साइट का SEO और स्वास्थ्य संबंधी समस्याओं के लिए ऑडिट करें। |
| `blume eval` | डॉक्स की जाँच करें: एक एजेंट केवल दस्तावेज़ों का उपयोग करके आपके प्रश्नों के उत्तर देता है। |
| `blume translate` | एक लोकल एजेंट CLI की मदद से डॉक्स को कॉन्फ़िगर किए गए लोकेल में अनूदित करें। |
| `blume version [id]` | मौजूदा डॉक्स को एक [संग्रहित संस्करण](/docs/content/versioning) के रूप में फ़्रीज़ करें (बिना id दिए कॉन्फ़िगर किए गए संस्करणों की सूची मिलती है)। |

## सामान्य फ़्लैग [#common-flags]

- `blume init` — टर्मिनल में, यह आपसे कुछ प्रश्न पूछता है (प्रोजेक्ट कहाँ बनाना है, साइट का नाम, टेम्पलेट, कंटेंट स्रोत); नीचे दिया गया हर फ़्लैग अपने प्रश्न का उत्तर पहले से दे देता है।
- `blume init --yes` — प्रॉम्प्ट छोड़ें और डिफ़ॉल्ट के साथ स्कैफ़ोल्ड करें (CI में या जब stdin टर्मिनल न हो, तब भी यही व्यवहार होता है)।
- `blume init --content-dir <dir>` — कंटेंट फ़ोल्डर सेट करें (डिफ़ॉल्ट `docs`)।
- `blume init --template docs|api|sdk|changelog` — किसी स्टार्टर से स्कैफ़ोल्ड करें (सादे docs सीड के बजाय API रेफ़रेंस, SDK, या चेंजलॉग)।
- `blume init --package-manager npm|pnpm|yarn|bun` — प्रिंट किए जाने वाले अगले-चरण आपके पैकेज मैनेजर के अनुसार ढालें।
- `blume init --eject` — स्कैफ़ोल्ड करें, फिर एक स्वतंत्र Astro प्रोजेक्ट में eject करें (जब डिपेंडेंसी अभी इंस्टॉल न हों, तो यह आपको `blume eject` के ज़रिए मार्गदर्शन देने पर लौट आता है)।
- `blume dev --host --port <n> --open`
- `blume dev --content-dir <dir>` — `blume.config.ts` संपादित किए बिना किसी अलग कंटेंट फ़ोल्डर को स्कैन करें।
- `blume dev --debug` — समस्या-निवारण के लिए विस्तृत Astro/Vite लॉगिंग।
- `blume dev --preview` / `blume build --preview` — ड्राफ़्ट और अप्रकाशित CMS कंटेंट शामिल करें।
- `blume build --no-strict` — डायग्नोस्टिक त्रुटियों के बावजूद बिल्ड करें। डिफ़ॉल्ट रूप से `blume build` किसी भी error डायग्नोस्टिक पर विफल हो जाता है (exit 1), क्योंकि जो पेज फ्रंटमैटर वैलिडेशन में विफल होते हैं वे आउटपुट से हटा दिए जाते हैं; `--no-strict` के साथ बिल्ड सफल होता है और बताता है कि कितने पेज गायब हैं। `blume dev --strict` डेव को भी उसी fail-fast व्यवहार में ले आता है।
- `blume build --output static|server --adapter vercel|node|netlify|cloudflare --base /docs` — `blume.config.ts` से डिप्लॉयमेंट आउटपुट, अडैप्टर, और बेस पाथ को ओवरराइड करें।
- `blume build --analyze` — बिल्ड के बाद क्लाइंट JavaScript बंडल के आकार (सबसे बड़े पहले) प्रिंट करें।
- `blume build --budget-js <kb> --budget-css <kb>` — जब कुल क्लाइंट JavaScript/CSS बजट से अधिक हो जाए तो बिल्ड विफल करें, जिससे एक प्रदर्शन लक्ष्य CI गेट बन जाता है।
- `blume build --isolated` — `.blume/` के बजाय एक अस्थायी `.blume-verify/` रनटाइम (और उसका अपना `dist/`) में बिल्ड करें, ताकि चल रहा `blume dev` सर्वर और आपका असली `dist/` अछूते रहें। देखें [डेव सर्वर चलते समय सत्यापन करना](#verifying-while-the-dev-server-runs)।
- `blume preview --host --port <n>` — प्रीव्यू सर्वर को बाइंड करें।
- `blume sync --force` — कैश किए गए स्नैपशॉट को पहले हटाकर रिमोट स्रोतों को दोबारा लाएँ।
- `blume add <item> --force` — पहले से मौजूद फ़ाइलों को अधिलेखित करें।
- `blume check --preview` — जाँच करते समय ड्राफ़्ट और अप्रकाशित CMS कंटेंट शामिल करें।
- `blume check --strict` — टाइप त्रुटियों के साथ-साथ कंटेंट डायग्नोस्टिक्स पर भी विफल हों।
- `blume check --isolated` — एक अस्थायी `.blume-verify/` रनटाइम में टाइप-जाँच करें ताकि चल रहा `blume dev` सर्वर अछूता रहे। देखें [डेव सर्वर चलते समय सत्यापन करना](#verifying-while-the-dev-server-runs)।
- `blume eject --yes` — पुष्टिकरण प्रॉम्प्ट छोड़ें।
- `blume validate --external` — नेटवर्क के ज़रिए बाहरी लिंक की भी जाँच करें।
- `blume validate --strict` — चेतावनियों पर भी नॉन-ज़ीरो कोड के साथ बाहर निकलें।
- `blume validate --json` / `blume doctor --json` — CI और एडिटर इंटीग्रेशन के लिए डायग्नोस्टिक्स को stdout पर JSON के रूप में उत्सर्जित करें (`code`, `severity`, `file`, `line`/`column`, और `docsUrl` के साथ)।
- `blume audit --fail-on error|warning|info` — CI गेट; डिफ़ॉल्ट `error` है। `--strict`, `--fail-on warning` का उपनाम है।
- `blume audit --url <origin>` — स्टेटस कोड, रिस्पॉन्स हेडर, और रीडायरेक्ट चेन के लिए किसी लाइव डिप्लॉयमेंट की भी जाँच करें।
- `blume audit --external` — नेटवर्क के ज़रिए बाहर जाने वाले लिंक की जाँच करें।
- `blume audit --only <check|category>` / `--skip <check|category>` — रिपोर्ट पर काम करते समय उसे सीमित करें (कॉमा से अलग किया हुआ)।
- `blume audit --list-checks` — ऑडिट जो भी जाँच रिपोर्ट कर सकता है, वह सब प्रिंट करें।
- `blume audit --verbose` — हर प्रभावित पेज को प्रत्येक निष्कर्ष के पूरे विवरण के साथ सूचीबद्ध करें, जैसे कि कौन-सा लिंक टारगेट टूटा हुआ है।
- `blume audit --json` — रिपोर्ट को stdout पर JSON के रूप में उत्सर्जित करें।
- `blume audit --claude` / `--codex` — निष्कर्षों को इंटरैक्टिव रूप से ठीक करने के लिए Claude Code या Codex को सौंपें।
- `blume eval` — `evals.yaml` के प्रश्नों को एक ऐसे एजेंट के ज़रिए चलाएँ जो केवल आपके डॉक्स पढ़ता है; देखें [Evals](/docs/reference/eval)।
- `blume eval init` — एजेंट से अपने डॉक्स के आधार पर एक शुरुआती `evals.yaml` तैयार करवाएँ।
- `blume eval --agent claude|codex --threshold <0..1> --timeout <seconds> --json --fix --verbose` — हर फ़्लैग के लिए देखें [Evals](/docs/reference/eval)।
- `blume translate --claude` / `--codex` — गायब और पुराने पड़ चुके पेजों को आपके कॉन्फ़िगर किए गए लोकेल में अनूदित करें; देखें [Translate](/docs/reference/translate)।
- `blume translate --check` — एजेंट चलाए बिना अनुवाद के अंतर की रिपोर्ट दें और नॉन-ज़ीरो कोड के साथ बाहर निकलें (CI गेट)।
- `blume translate --locale <codes> --concurrency <n> --force --timeout <seconds> --json` — हर फ़्लैग के लिए देखें [Translate](/docs/reference/translate)।

## डेव सर्वर चलते समय सत्यापन करना [#verifying-while-the-dev-server-runs]

`blume dev` एक लाइव Astro सर्वर चलाता है जिसकी जड़ जनरेट किया गया `.blume/` रनटाइम होता है, और हर बदलाव पर उसे दोबारा जनरेट करता है। `blume build` और `blume check` _उसी_ `.blume/` को दोबारा जनरेट करते हैं, इसलिए डेव सर्वर के लाइव रहते इनमें से कोई भी चलाने पर वह भ्रष्ट हो जाएगा — दोनों ही एक त्रुटि के साथ मना कर देते हैं और नॉन-ज़ीरो कोड के साथ बाहर निकल जाते हैं:

```
A `blume dev` server is running at http://localhost:3000; building would
corrupt its .blume runtime. Reuse that server, stop it first, or re-run with
--isolated to build/verify against .blume-verify without touching it.
```

`--isolated` फ़्लैग इसका निकास द्वार है। यह पूरे जनरेट किए गए रनटाइम को (और, `build` के लिए, उसके आउटपुट `dist/` को) एक समकक्ष `.blume-verify/` डायरेक्टरी में स्थानांतरित कर देता है, ताकि सत्यापन कभी भी ऐसा कुछ न लिखे जिस पर डेव सर्वर — या आपका असली `dist/` — निर्भर है:

```bash
# In a second terminal, while `blume dev` is running:
blume check --isolated   # fast: type-check the .astro/config changes
blume build --isolated   # thorough: full production render into .blume-verify/dist
```

`check --isolated` तेज़ रास्ता है (Astro टाइप + टेम्पलेट डायग्नोस्टिक्स, कोई `dist/` नहीं); `build --isolated` भारी विकल्प है जो रनटाइम रेंडर त्रुटियों को भी पकड़ता है। आइसोलेटेड बिल्ड डिप्लॉय के बाद वाले चरण छोड़ देते हैं (सर्च इंडेक्स, होस्टेड-प्रोवाइडर सिंक, `llms.txt`, साइटमैप/robots, रीडायरेक्ट) — एक सत्यापन को केवल यह पुष्टि करनी होती है कि साइट कंपाइल और रेंडर होती है, उसे प्रकाशित नहीं करना होता। `--analyze` और `--budget-js`/`--budget-css` गेट फिर भी चलते हैं, और आइसोलेटेड आउटपुट के सापेक्ष मापे जाते हैं। Blume आपकी `.gitignore` में `.blume-verify/` अपने आप जोड़ देता है।

यह खासकर तब उपयोगी है जब किसी कोडिंग एजेंट को बदलाव सत्यापित करने हों और आप डेव सर्वर खुला रखना चाहते हों। सादे `blume build`/`blume check` को बिना फ़्लैग के आइसोलेट कराने के लिए — उदाहरण के लिए किसी एजेंट के शेल में — `BLUME_RUNTIME_DIR` को उस रनटाइम डायरेक्टरी पर सेट करें जिसका उपयोग करना है:

```bash
export BLUME_RUNTIME_DIR=.blume-verify
```

## टाइप-जाँच [#type-checking]

`blume check` आपके प्रोजेक्ट पर [`astro check`](https://docs.astro.build/en/reference/cli-reference/#astro-check) चलाता है। यह `.blume` रनटाइम को दोबारा जनरेट करता है, Astro के कंटेंट टाइप सिंक करता है, फिर किसी भी TypeScript त्रुटि की रिपोर्ट देता है — आपके `blume.config.ts` में, कस्टम `.astro` पेजों में, और उनके द्वारा इम्पोर्ट किए गए कंपोनेंट में। त्रुटियाँ होने पर यह नॉन-ज़ीरो कोड के साथ बाहर निकलता है, इसलिए यह CI में `typecheck` चरण के रूप में काम करता है:

```json title="package.json"
{
  "scripts": {
    "typecheck": "blume check"
  }
}
```

अपने प्रोजेक्ट रूट में Astro के कॉन्फ़िग को एक्सटेंड करने वाली `tsconfig.json` जोड़ें ताकि लिखे गए पेज `blume/*` इम्पोर्ट और `blume:data` जैसे वर्चुअल मॉड्यूल हल कर सकें:

```json title="tsconfig.json"
{
  "extends": "astro/tsconfigs/strict",
  "include": [".blume/.astro/types.d.ts", "**/*"]
}
```

प्रोजेक्ट `tsconfig.json` के बिना, केवल जनरेट किए गए रनटाइम की जाँच होती है।

## लिंक की जाँच [#validating-links]

`blume validate` आपके कंटेंट में मिले हर लिंक की जाँच करता है:

- **आंतरिक पेज लिंक** (`/guides/intro`, `./sibling`) किसी वास्तविक पेज पर हल होने चाहिए — टूटे हुए लिंक त्रुटियों के रूप में रिपोर्ट किए जाते हैं।
- **एंकर लिंक** (`#section`, `/guides/intro#setup`) लक्षित पेज के किसी एंकर से मेल खाने चाहिए — किसी शीर्षक की id (जनरेट की गई या [पिन की गई](/docs/content/syntax#custom-anchors)) या किसी रॉ HTML एलिमेंट का `id` एट्रिब्यूट — और न मिलने पर चेतावनी मिलती है। कोड ब्लॉक, इनलाइन कोड, HTML कमेंट, और `<Prompt>` ब्लॉक के अंदर मौजूद id गिनती में नहीं आतीं।

- **एसेट लिंक** की जाँच वहीं होती है जहाँ फ़ाइल रहती है: एक निरपेक्ष पाथ (`/logo.png`) की जाँच `public/` डायरेक्टरी के सापेक्ष, और एक सापेक्ष इमेज एम्बेड (`![](./diagram.png)`) की जाँच पेज के अपने फ़ोल्डर के सापेक्ष। किसी सापेक्ष पाथ का सादा लिंक फिर भी एक साइट रूट के रूप में हल होता है — केवल इमेज एम्बेड ही इमेज पाइपलाइन से होकर जाते हैं।
- **बाहरी लिंक** की जाँच केवल `--external` के साथ होती है (डिफ़ॉल्ट रूप से बंद, क्योंकि इसके लिए नेटवर्क चाहिए); मृत लिंक (404/410/अनुपलब्ध) त्रुटियाँ हैं, जबकि रेट-लिमिटेड या अस्थायी प्रतिक्रियाएँ (403/429/5xx/टाइमआउट) चेतावनियाँ हैं।

## बनी हुई साइट का ऑडिट [#auditing-the-built-site]

`blume validate` आपका _कंटेंट_ पढ़ता है; `blume audit` _बनी हुई साइट_ पढ़ता है। यह बिल्ड के बाद `dist/` में मौजूद HTML को क्रॉल करता है और SEO तथा साइट-स्वास्थ्य संबंधी समस्याएँ बताता है — टाइटल, मेटा डिस्क्रिप्शन, canonical, Open Graph और X कार्ड, शीर्षक, hreflang, इमेज, साइटमैप, `robots.txt`, और स्ट्रक्चर्ड डेटा।

चूँकि साइट Blume ने बनाई है, हर निष्कर्ष सोर्स फ़ाइल **और उस फ्रंट मैटर लाइन** का नाम बताता है जो इसे ठीक करती है, केवल वह URL नहीं जो किसी क्रॉलर को दिखता:

```
⚠ Meta description too long or too short   5 pages
    /docs/configuration/export    content/docs/configuration/export.mdx:3
    fix: Rewrite `description` in the frontmatter to fit the length range.
```

इसे बिल्ड के बाद चलाएँ:

```bash
blume build
blume audit
```

निष्कर्षों को प्रति पेज सूचीबद्ध करने के बजाय जाँच के अनुसार समूहित किया जाता है, ताकि रिपोर्ट एक to-do सूची की तरह पढ़ी जा सके। हर प्रभावित पेज को उसके पूरे विवरण के साथ विस्तृत करने के लिए `--verbose` का उपयोग करें, और एक बार में एक श्रेणी पर काम करने के लिए `--only`/`--skip` का। `blume audit --list-checks` पूरा कैटलॉग प्रिंट करता है।

### CI विफल करना [#failing-ci]

एग्ज़िट कोड ही अनुबंध है। डिफ़ॉल्ट रूप से `blume audit` केवल त्रुटियों पर विफल होता है — ऐसी चीज़ें जो निश्चित रूप से टूटी हुई हैं, जैसे किसी ऐसे पेज का लिंक जो कभी बना ही नहीं, एक रीडायरेक्ट लूप, या एक अमान्य साइटमैप। सलाहकारी निष्कर्ष (छोटा विवरण, डुप्लिकेट टाइटल) चेतावनियाँ हैं और बिल्ड को विफल नहीं करतीं:

```bash
blume audit                      # fails on errors
blume audit --fail-on warning    # also fails on warnings
```

### लाइव डिप्लॉयमेंट की जाँच [#checking-a-live-deployment]

कुछ बातें केवल असली सर्वर ही बता सकता है: क्या `dist/` में मौजूद कोई पेज किसी ख़राब rewrite के पीछे वास्तव में 404 देता है, क्या प्रतिक्रियाएँ कंप्रेस्ड हैं, और क्या कोई `X-Robots-Tag` हेडर चुपचाप ऐसे पेज को डीइंडेक्स कर रहा है जिसका HTML बिल्कुल ठीक दिखता है। ये जाँचें जोड़ने के लिए ऑडिट को किसी डिप्लॉयमेंट की ओर इंगित करें:

```bash
blume audit --url https://docs.example.com
blume audit --url https://docs.example.com --external   # also probe outbound links
```

बाहर जाने वाले लिंक को सीधे विफल करने के बजाय श्रेणीबद्ध किया जाता है: 404 एक टूटा हुआ लिंक है जिसे आप ठीक कर सकते हैं, जबकि 403 या 5xx आमतौर पर रेट लिमिटिंग या किसी और की सेवा बाधा होती है और उसे चेतावनी के रूप में रिपोर्ट किया जाता है।

### किसी एजेंट के साथ निष्कर्ष ठीक करना [#fixing-the-findings-with-an-agent]

यदि आप [Claude Code](https://claude.com/claude-code) या [Codex](https://developers.openai.com/codex/cli) का उपयोग करते हैं, तो ऑडिट अपने निष्कर्ष सीधे उसे सौंप सकता है:

```bash
blume audit --claude   # or --codex
```

यह पूरी JSON रिपोर्ट — हर प्रभावित पेज, न कि टर्मिनल का तीन-पेज का पूर्वावलोकन — एक फ़ाइल में लिखता है और एजेंट को एक ऐसे प्रॉम्प्ट के साथ इंटरैक्टिव रूप से खोलता है जो उसे निष्कर्षों से होकर ले जाता है: हर निष्कर्ष जिस सोर्स फ़ाइल का नाम बताता है उसे संपादित करें, उसका सुझाया गया सुधार लागू करें, फिर `blume build` और `blume audit` दोबारा चलाएँ जब तक रिपोर्ट साफ़ न हो जाए। सत्र जानबूझकर इंटरैक्टिव है: आप एजेंट के अपने अनुमति प्रवाह के ज़रिए संपादनों की समीक्षा करते हैं, और एजेंट को बताया जाता है कि वह कभी भी कंटेंट हटाकर किसी निष्कर्ष को ठीक न करे।

`--only` और `--skip` इस हस्तांतरण को उसी तरह सीमित करते हैं जैसे वे रिपोर्ट को सीमित करते हैं, इसलिए आप एक बार में एक श्रेणी भेज सकते हैं।

### यह क्या जाँचता है और क्या नहीं [#what-it-does-and-doesnt-check]

जाँचों का सेट जानबूझकर एक सामान्य-उद्देश्य SEO क्रॉलर की तुलना में संकीर्ण है। ऐसा क्रॉलर जो बहुत कुछ रिपोर्ट करता है, वह Blume साइट के साथ हो ही नहीं सकता — यह कभी `rel=nofollow` उत्सर्जित नहीं करता, और Vite के कंटेंट-हैश्ड बंडल कभी गायब या रीडायरेक्ट होते नहीं — और उन्हें स्थायी शून्य के रूप में रिपोर्ट करना आपको बस रिपोर्ट को नज़रअंदाज़ करना सिखाएगा।

दो सीमाएँ स्पष्ट रूप से बताने योग्य हैं:

- **स्ट्रक्चर्ड डेटा** की जाँच सुगठितता के लिए की जाती है (मान्य JSON, एक `@context`, हर नोड पर एक `@type`)। Blume पूरे schema.org शब्दकोश या Google के रिच-रिज़ल्ट्स नियमों के विरुद्ध सत्यापन नहीं करता।
- **Core Web Vitals** की जाँच नहीं होती। उनके लिए एक असली ब्राउज़र चाहिए, और एक ऐसा फ़्लैग जो चुपचाप कुछ भी न मापे, उसके न होने से भी बुरा होगा — इसलिए `blume audit` लेआउट-शिफ़्ट के वही कारण बताता है जो वह ऑफ़लाइन _देख_ सकता है (बिना `width`/`height` वाली इमेज, ज़रूरत से बड़े एसेट) और बाकी को फ़िलहाल छोड़ देता है।

ऑडिट ने जो कुछ नहीं चलाया, उसे चुपचाप पास करने के बजाय छोड़ा गया (skipped) बताया जाता है:

```
⊘ network      skipped — pass --url <origin> (11 checks)
⊘ external     skipped — pass --external (2 checks)
```
