# @borodin/mdgram 中文文档

规范地址：https://npmcn.com/package/%40borodin/mdgram/

版本：1\.2\.0
npm 元数据更新时间：2026-07-03T16:58:12.113Z
中文译文更新时间：2026-11-08T11:50:56.897Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40borodin/mdgram
原文对照：https://npmcn.com/package/%40borodin/mdgram/?lang=original
项目主页：https://github.com/Borodin/mdgram#readme
源码仓库：https://github.com/Borodin/mdgram

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：69 kB，7 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：1 个
- 首次发布：2026-04-22T18:15:43.249Z
- 最新版本发布：2026-07-03T16:58:11.793Z
- 近 30 天下载量：3608（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

向下流马克到Telegram HTML 转换器

## 安装

```sh
npm install @borodin/mdgram
```

也可以使用：`pnpm add @borodin/mdgram`、`yarn add @borodin/mdgram`、`bun add @borodin/mdgram`

## README

# 页:1

将 Markdown 流到 Telegram HTML 转换器 。 安全地将不完整的Markdown(从LLMs中切入)在每一步都转换成有效的Telegram HTML.

支持两种经典的Telegram HTML(`mdgram`)和 Bot API 10.1 丰富的 HTML 格式(`mdgramRich`) (中文(简体) ).

## 安装

```bash
npm install @borodin/mdgram
```

## 使用量

### 经典电报 HTML

```ts
import { mdgram } from "@borodin/mdgram";

mdgram("Hello **world**");
// "Hello <b>world</b>"

// Handles incomplete markdown (streaming)
mdgram("Hello **wor");
// "Hello <b>wor</b>"
```

### 丰富的 HTML( API 10. 1+)

```ts
import { mdgramRich } from "@borodin/mdgram";

mdgramRich("# Title\n\n- item 1\n- item 2");
// "<h1>Title</h1>\n<ul>\n<li>item 1</li>\n<li>item 2</li>\n</ul>"

// LaTeX
mdgramRich("Euler's formula: $e^{i\\pi} + 1 = 0$");
// "Euler&#39;s formula: <tg-math>e^{i\pi} + 1 = 0</tg-math>"

// Streaming — every prefix is valid Rich HTML
mdgramRich("$e^{i\\pi");
// "<tg-math>e^{i\pi}</tg-math>"
```

使用 `sendRichMessage` 编号 : `sendRichMessageDraft` 发送 Rich HTML 到 Telegram.

#### `paragraphMode: "br"` - 为没有工作的客户工作 `<p>` 边距

某些Telegram 客户端正在提供 `<p>` 没有垂直边距, 因此相邻 段落可视合并。 在客户端解决之前,你可以选择一个 `<br><br>`\- 在所有客户端看起来相同的基于布局 :

```ts
mdgramRich("First.\n\nSecond.", { paragraphMode: "br" });
// "First.<br><br>Second."  (default "p" mode: "<p>First.</p>\n<p>Second.</p>")
```

`<br><br>` 仅在相邻段落之间插入;带块的边界 元素(标题、列表、表格等)保持不变。 默认 `"p"` 模式 遵循 Rich HTML 规格.

## 支持的格式

### `mdgram` – 经典的Telegram HTML

| 标记 | 产出 |
| --- | --- |
| `**bold**` | `<b>bold</b>` |
| `*italic*` | `<i>italic</i>` |
| `` `code` `` | `<code>code</code>` |
| ` ```lang\n...\n``` ` | `<pre><code class="language-lang">...</code></pre>` |
| `[text](url)` | `<a href="url">text</a>` |
| `~~strike~~` | `<s>strike</s>` |
| `||spoiler||` | `<tg-spoiler>spoiler</tg-spoiler>` |
| `> quote` | `<blockquote>quote</blockquote>` |
| `# heading` | `<b>heading</b>` |
| `- item` 编号 : `1. item` | `• item` 编号 : `1. item` |

### `mdgramRich` — 丰富的 HTML( 超集)

一切从 `mdgram`,加上:

| 标记 | 产出 |
| --- | --- |
| `# H1` . `###### H6` | `<h1>` . `<h6>` |
| `- item` 编号 : `1. item` | `<ul><li>` 编号 : `<ol><li>` |
| `- [x] task` | `<li><input type="checkbox" checked>` |
| `| table |` | `<table><tr><th/td>` |
| `==highlight==` | `<mark>highlight</mark>` |
| `$formula$` | `<tg-math>formula</tg-math>` |
| `$$formula$$` | `<tg-math-block>formula</tg-math-block>` |
| ` ```math\nformula\n``` ` | `<tg-math-block>formula</tg-math-block>` |
| `\(formula\)` | `<tg-math>formula</tg-math>` |
| `\[formula\]` | `<tg-math-block>formula</tg-math-block>` |
| `---` | `<hr/>` |
| `![alt](url)` | `<img src="url"/>` |
| `![alt](url "caption")` | `<figure><img src="url"/><figcaption>caption</figcaption></figure>` |
| 原始内容 `<tg-spoiler>`, (中文(简体) ), `<tg-emoji>`, (中文(简体) ), `<tg-thinking>`, (中文(简体) ), `<u>`, (中文(简体) ), `<ins>`, (中文(简体) ), `<sub>`, (中文(简体) ), `<sup>`, (中文(简体) ), `<cite>`, (中文(简体) ), `<details>`, (中文(简体) ), `<aside>`, (中文(简体) ), `<footer>` | 通过逐字记录 |

货币金额 `$100` 从未被误认为"LaTeX".

## 截断

将信件文本限制为 **4096 (英语)** 和标题 **第1024号** UTF-16 代码单元. 丰富的信件支持最多 **32768 (英语)** 字符键.

```ts
import { mdgram, mdgramRich, MESSAGE_LIMIT, CAPTION_LIMIT, RICH_MESSAGE_LIMIT } from "@borodin/mdgram";

mdgram(longMarkdown, { maxLength: MESSAGE_LIMIT });
mdgram(longMarkdown, { maxLength: CAPTION_LIMIT });
mdgramRich(longMarkdown, { maxLength: RICH_MESSAGE_LIMIT });
```

切出时,输出结束为 `…` 并且所有打开的标签都正确关闭.

## LLM 系统提示

对于 `mdgram`数字 :

```
Format responses using Markdown:
- **bold**, *italic*, ~~strikethrough~~
- `inline code` and fenced code blocks (```)
- [links](url), ||spoilers||, > blockquotes
- Lists: - item, 1. item
Do NOT use images, HTML tags, or LaTeX.
```

对于 `mdgramRich`数字 :

```
Format responses using Markdown:
- **bold**, *italic*, ~~strikethrough~~, ==highlight==
- `inline code`, fenced code blocks (```), math blocks (```math)
- $inline LaTeX$, $$block LaTeX$$
- [links](url), ||spoilers||, > blockquotes
- Headings: # H1 through ###### H6
- Lists: - item, 1. item, - [x] task list
- Tables: | col | col |
- Horizontal rule: ---
- Images: ![caption](url) or ![caption](url "caption text")
Do NOT use raw HTML tags.
```

## 如何运作

1.  **[调试](https://npm.im/remend)** 自动关闭不完整的Markdown令牌(粗体、斜体、代码、破坏器、LaTeX等)
2.  **[标记](https://npm.im/marked)** 用自定义的Telegram渲染器解析已完成的Markdown
3.  输出在每个步骤上都是有效的 Telegram HTML —— 可以直接流到 `editMessageText` 或者说 `sendRichMessageDraft`

## 许可证

麻省理工学院

## 常见问题

### @borodin/mdgram 是什么？

向下流马克到Telegram HTML 转换器

### 如何安装 @borodin/mdgram？

在项目目录运行 npm install @borodin/mdgram，或使用 pnpm add / yarn add / bun add。

### @borodin/mdgram 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @borodin/mdgram 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @borodin/mdgram 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @borodin/mdgram 可以商用吗？

@borodin/mdgram 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @borodin/mdgram 的下载量有多少？

根据 npm 官方下载统计，@borodin/mdgram 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,608 次，日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @borodin/mdgram 还在维护吗？

最新版本 1\.2\.0 发布于 2026/07/04（4 个月前）；至今共发布 5 个版本，其中过去 12 个月发布了 5 个；首次发布于 2026/04/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

