---
read_when:
    - आप आउटबाउंड चैनलों के लिए Markdown स्वरूपण या खंड-विभाजन बदल रहे हैं
    - आप एक नया चैनल फ़ॉर्मैटर या शैली मैपिंग जोड़ रहे हैं
    - आप सभी चैनलों में फ़ॉर्मैटिंग रिग्रेशन डीबग कर रहे हैं
summary: आउटबाउंड चैनलों के लिए Markdown फ़ॉर्मैटिंग पाइपलाइन
title: Markdown फ़ॉर्मेटिंग
x-i18n:
    generated_at: "2026-07-27T17:47:43Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: f9a35fd9a6386068e1e3bec73ec6e692f49239b468f42dd737f919b1c6a88e41
    source_path: concepts/markdown-formatting.md
    workflow: 16
---

OpenClaw आउटबाउंड Markdown को चैनल-विशिष्ट आउटपुट रेंडर करने से पहले एक साझा मध्यवर्ती निरूपण
(IR) में बदलता है। IR सादा टेक्स्ट और
शैली/लिंक स्पैन बनाए रखता है, ताकि एक पार्स चरण हर चैनल को इनपुट दे और चंकिंग कभी भी
स्पैन के बीच में फ़ॉर्मैटिंग को विभाजित न करे।

## पाइपलाइन

1. **Markdown को IR में पार्स करें** (`markdownToIR`) - सादा टेक्स्ट और शैली स्पैन
   (बोल्ड, इटैलिक, स्ट्राइकथ्रू, कोड, कोड ब्लॉक, स्पॉइलर, ब्लॉककोट,
   शीर्षक 1-6) तथा लिंक स्पैन। ऑफ़सेट UTF-16 कोड इकाइयाँ हैं, इसलिए Signal शैली
   रेंज सीधे उसके API के अनुरूप होती हैं। तालिकाएँ केवल तभी पार्स होती हैं, जब चैनल
   किसी तालिका मोड का विकल्प चुनता है।
2. **IR को चंकों में बाँटें** (`chunkMarkdownIR` / `renderMarkdownIRChunksWithinLimit`)
   - विभाजन रेंडरिंग से पहले IR टेक्स्ट पर होता है, इसलिए इनलाइन शैलियों और
     लिंक को सीमा के आर-पार टूटने के बजाय प्रत्येक चंक के अनुसार काटा जाता है।
3. **प्रत्येक चैनल के लिए रेंडर करें** (`renderMarkdownWithMarkers`) - एक शैली-मार्कर मैप
   स्पैन को चैनल के मूल मार्कअप में बदलता है।

| चैनल                                                          | रेंडरर                                                                             | टिप्पणियाँ                                                                                    |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Slack                                                            | mrkdwn टोकन (`*bold*`, `_italic_`, `` `code` ``, कोड फ़ेंस)                      | लिंक `<url\|label>` बन जाते हैं; दोहरी लिंकिंग से बचने के लिए पार्स करते समय ऑटोलिंक अक्षम रहता है      |
| Telegram                                                         | HTML टैग (`<b>`, `<i>`, `<s>`, `<code>`, `<pre><code>`, `<a href>`, `<tg-spoiler>`) | `richMessages` चालू होने पर रिच-मैसेज तालिकाओं और शीर्षकों (`<h1>`-`<h6>`) का भी समर्थन करता है |
| Signal                                                           | सादा टेक्स्ट + `text-style` रेंज                                                     | जब लेबल URL से अलग होता है, तो लिंक `label (url)` के रूप में रेंडर होते हैं                        |
| Discord, WhatsApp, iMessage, Microsoft Teams और अन्य चैनल | सादा टेक्स्ट                                                                           | कोई IR-आधारित शैली नहीं; Markdown तालिका रूपांतरण फिर भी `convertMarkdownTables` के माध्यम से चलता है    |

## IR उदाहरण

इनपुट Markdown:

```markdown
नमस्ते **दुनिया** - [दस्तावेज़](https://docs.openclaw.ai) देखें।
```

IR (रूपरेखात्मक):

```json
{
  "text": "Hello world - see docs.",
  "styles": [{ "start": 6, "end": 11, "style": "bold" }],
  "links": [{ "start": 19, "end": 23, "href": "https://docs.openclaw.ai" }]
}
```

## तालिका प्रबंधन

`markdown.tables` नियंत्रित करता है कि कोई चैनल Markdown तालिकाओं को कैसे रूपांतरित करता है, प्रत्येक
चैनल के लिए और वैकल्पिक रूप से प्रत्येक खाते के लिए:

| मोड      | व्यवहार                                                                             |
| --------- | ------------------------------------------------------------------------------------ |
| `code`    | कोड ब्लॉक के भीतर संरेखित ASCII तालिका के रूप में रेंडर करें (डिफ़ॉल्ट फ़ॉलबैक)              |
| `bullets` | प्रत्येक पंक्ति को `label: value` बुलेट बिंदुओं में बदलें                                   |
| `block`   | जहाँ ट्रांसपोर्ट उनका समर्थन करता है वहाँ मूल तालिकाएँ बनाए रखें; अन्यथा `code` पर फ़ॉलबैक होता है |
| `off`     | तालिका पार्सिंग अक्षम करें; अपरिष्कृत तालिका टेक्स्ट बिना बदलाव के आगे जाता है                       |

प्रति-चैनल Plugin डिफ़ॉल्ट: Signal, WhatsApp और Matrix के लिए डिफ़ॉल्ट
`bullets` है; Mattermost के लिए डिफ़ॉल्ट `off` है; Telegram के लिए डिफ़ॉल्ट `block` है (जो
`code` में बदलता है, जब तक खाते में `richMessages` सक्षम न हो)। स्पष्ट Plugin डिफ़ॉल्ट के बिना कोई भी
चैनल `code` पर फ़ॉलबैक करता है।

```yaml
channels:
  discord:
    markdown:
      tables: code
    accounts:
      work:
        markdown:
          tables: off
```

## चंकिंग नियम

- चंक सीमाएँ चैनल अडैप्टर/कॉन्फ़िगरेशन से आती हैं और IR टेक्स्ट पर लागू होती हैं,
  रेंडर किए गए आउटपुट पर नहीं।
- फ़ेंस किए गए कोड ब्लॉक को अंतिम न्यूलाइन सहित एक ब्लॉक के रूप में रखा जाता है, ताकि
  चैनल समापन फ़ेंस को सही ढंग से रेंडर करें।
- सूची और ब्लॉककोट उपसर्ग IR टेक्स्ट का हिस्सा होते हैं, इसलिए चंकिंग कभी भी
  उपसर्ग के बीच में विभाजन नहीं करती।
- इनलाइन शैलियाँ कभी चंकों के बीच विभाजित नहीं होतीं; रेंडरर अगले चंक के आरंभ में
  खुली शैली को फिर से खोलता है।

सभी चैनलों में चंक-सीमा और
डिलीवरी व्यवहार के लिए [स्ट्रीमिंग और चंकिंग](/concepts/streaming) देखें।

## लिंक नीति

- **Slack:** `[label](url)` -> `<url|label>`; सीधे लिखे URL सीधे ही रहते हैं।
- **Telegram:** `[label](url)` -> `<a href="url">label</a>` (HTML पार्स मोड)।
- **Signal:** `[label](url)` -> `label (url)`, जब तक लेबल पहले से
  URL से मेल न खाता हो।

## स्पॉइलर

स्पॉइलर मार्कर (`||spoiler||`) Signal (जहाँ उन्हें `SPOILER`
शैली रेंज में मैप किया जाता है) और Telegram (जहाँ उन्हें `<tg-spoiler>` में मैप किया जाता है) के लिए पार्स किए जाते हैं। अन्य चैनल
`||...||` को सादा टेक्स्ट मानते हैं।

## चैनल फ़ॉर्मैटर जोड़ना या अपडेट करना

1. चैनल के लिए उपयुक्त विकल्प (`autolink`, `headingStyle`, `blockquotePrefix`, `tableMode`) पास करते हुए
   `markdownToIR(...)` के साथ **एक बार पार्स करें**।
2. शैली-मार्कर मैप (या
   Signal जैसे ट्रांसपोर्ट के लिए कस्टम शैली-रेंज लॉजिक) के साथ `renderMarkdownWithMarkers(...)` का उपयोग करके **रेंडर करें**।
3. प्रत्येक चंक को रेंडर करने से पहले `chunkMarkdownIR(...)` या
   `renderMarkdownIRChunksWithinLimit(...)` के साथ **चंक में बाँटें**।
4. आउटबाउंड प्रेषण पथ से नए चंकर और रेंडरर को कॉल करने के लिए
   **अडैप्टर को जोड़ें**।
5. यदि चैनल चंकिंग करता है, तो फ़ॉर्मैट परीक्षणों और आउटबाउंड डिलीवरी परीक्षण के साथ
   **परीक्षण करें**।

## सामान्य सावधानियाँ

- Slack एंगल-ब्रैकेट टोकन (`<@U123>`, `<#C123>`, `<https://...>`) को
  एस्केपिंग के बाद भी सुरक्षित रहना चाहिए; अपरिष्कृत HTML को फिर भी सुरक्षित रूप से एस्केप करना आवश्यक है।
- Telegram HTML में टूटे हुए मार्कअप से बचने के लिए टैग के बाहर के टेक्स्ट को एस्केप करना आवश्यक है।
- Signal शैली रेंज UTF-16 ऑफ़सेट का उपयोग करती हैं, कोड-पॉइंट ऑफ़सेट का नहीं।
- फ़ेंस किए गए कोड ब्लॉक में अंतिम न्यूलाइन सुरक्षित रखें, ताकि समापन मार्कर
  अपनी अलग पंक्ति पर आए।

## संबंधित

<CardGroup cols={2}>
  <Card title="स्ट्रीमिंग और चंकिंग" href="/hi/concepts/streaming" icon="bars-staggered">
    आउटबाउंड स्ट्रीमिंग व्यवहार, चंक सीमाएँ और चैनल-विशिष्ट डिलीवरी।
  </Card>
  <Card title="सिस्टम प्रॉम्प्ट" href="/hi/concepts/system-prompt" icon="message-lines">
    बातचीत से पहले मॉडल क्या देखता है, जिसमें इंजेक्ट की गई कार्यस्थान फ़ाइलें भी शामिल हैं।
  </Card>
</CardGroup>
