用途:让 Markdown 在 Discord 消息中正确渲染。Discord 只支持少量 Markdown 语法,空行会变成可见的垂直间距,不支持的语法会原样显示字符,因此需要从一开始就按 Discord 渲染器来写。
主要能力:支持标题(仅 #、##、### 三级,从第 1 列开始)、-# 小字灰色副文本、粗体/斜体/下划线/删除线、||剧透||、行内代码与 ```lang 代码块(仅反引号,~~~ 不是围栏)、> 单行引用与 >>> 引用剩余消息、- 或 * 项目符号(+ 不是标记,嵌套用两个前导空格)、1. 编号列表(1) 不是标记)、text 链接,以及用 https://url 抑制嵌入卡片。
编写规则:表格改为列表,单行表格变成 表头:值的平铺列表,多行表格变成嵌套列表(第一列顶层,其余列缩进两个空格);标题最深到 ###;标题、列表项、引用周围不留空行;不使用水平分隔线;LaTeX 改为 Unicode 或 emoji(如 $\rightarrow$ → ➡️、$\alpha$ → α、$\leq$ → ≤);链接只指向 http(s)://,file:// 等写成行内代码;CJK 内容用全角冒号且无空格,拉丁内容用半角冒号加空格;代码围栏与行内代码内内容原样保留。单条消息上限 2,000 字符,机器人与 webhook 消息始终受此限制,人类 Nitro 用户可发 4,000,但默认按 2,000 处理,超长在标题边界拆分并标注各部分。完全不支持 HTML、 图片、任务列表、脚注、嵌套引用、定义列表和 <details>。
使用方式:随附转换器 scripts/converter.js 会机械执行规则 1 至 5 及规则 6 的 file:// 情形,规则 8 是转换器保证。交付前运行检查脚本:node <path-to-this-skill>/scripts/check.js draft.md,或 cat draft.md | node <path-to-this-skill>/scripts/check.js。检查器先运行转换器,再对草稿本身做 lint(跳过围栏块与行内代码),报告行号:转换器非零统计、转换器未处理的构造(图片、引用式链接、任务列表、HTML、~~~ 围栏、引用内表格、+ 与 1) 标记、缩进标题、空链接目标、脚注、嵌套引用、定义列表、Setext 标题、非 http(s):// 链接目标、TeX 数学、CJK 粗体标签后的半角冒号)、转换后长度超过 2,000。检查器退出码为 0(打印 通過)即通过;它无法判断拆分是否落在标题边界,需人工确认。
适用场景:面向 Discord 的频道帖、私信、公告、机器人消息等输出。限制:不支持语法需避免;消息长度受限;检查器不校验拆分位置。