Markdown 转 Slack 完整指南:mrkdwn 语法和踩坑实录
Slack 的粗体是单星号不是双星,链接也得换写法。这篇讲清 Markdown 转 Slack mrkdwn 的全部差异,附真实转换例子和机器人通知场景,帮你把消息一次贴对。
Markdown 转 Slack 完整指南:mrkdwn 语法和踩坑实录
你写好了一段干净的 Markdown,从 GitHub 评论、Notion 文档或者大模型回答里拷出来,粘进 Slack 频道,按下回车。结果消息里挂着一排裸井号,粗体没加粗,星号成对地杵在那儿,链接是一堆方括号圆括号。这不是你写错了,是 Slack 根本不读标准 Markdown。
Slack 用的是一套自己的格式语法,名字叫 mrkdwn。它长得像 Markdown,细节却处处不一样。下面把这些差异一条条讲清楚,再给你看真实的转换前后对比。
Slack 的粗体是单个星号
这是最容易翻车的一处。在 Markdown 里,粗体用两个星号包,比如 **已发布**。在 Slack mrkdwn 里,粗体只用一个星号包:*已发布*。
你要是把 Markdown 那版直接粘进去,Slack 会把那对双星号原样显示出来,文字一点都不加粗。很多人以为是自己手滑,其实是语法对不上。记住一句话:Markdown 双星,Slack 单星。
斜体的差异同样隐蔽。Markdown 里斜体用单星号 *斜体*,到了 Slack 这边斜体改用下划线 _斜体_。于是 Slack 把单星号留给了粗体,双星号反而不认。
删除线、链接和标题的写法
删除线在 Markdown 里是两个波浪号 ~~删除~~,Slack 只要一个:~删除~。
链接差得更远。Markdown 写成 [文字](url),Slack 用的是尖括号写法 <url|文字>,url 在前,文字在后,中间一根竖线隔开。所以 [Toolora](https://toolora.com) 在 Slack 里得写成 <https://toolora.com|Toolora>,才会渲染成一个能点的词。
标题最干脆,Slack 消息正文压根没有标题字号。一个 # 标题 没法变成更大的一行。最贴近的退路是把整行加粗,所以 ## 发布说明 应该转成单独一行的 *发布说明*,既保留了小节的视觉层次,又不会在消息里留下多余的井号。
一个真实的转换例子
拿一段常见的更新日志看转换前后。左边是你手头的 Markdown,右边是该贴进 Slack 的 mrkdwn:
输入(标准 Markdown):
## v2.1 发布
- 修复了 **登录超时** 的问题
- 重写了 ~~旧版~~ 缓存层
- 详见 [PR #128](https://github.com/team/repo/pull/128)
输出(Slack mrkdwn):
*v2.1 发布*
• 修复了 *登录超时* 的问题
• 重写了 ~旧版~ 缓存层
• 详见 <https://github.com/team/repo/pull/128|PR #128>
看清楚四处变化:标题的井号没了,整行加粗;粗体从双星变单星;删除线从双波浪变单波浪;链接的方括号换成了尖括号,url 提到了前面。这四处只要漏一个,那条消息在频道里就是半残的。
发 Slack 消息和机器人通知
差异不只在你手动粘贴的时候咬人。如果你写脚本往 Slack 发通知,比如 CI 跑完推一条消息,或者用 Incoming Webhook 发告警,消息体里的 text 字段同样吃 mrkdwn,不吃标准 Markdown。
我自己第一次接 webhook 发部署通知就栽在这上面。我把日志里现成的 Markdown 摘要直接塞进 payload,结果 Slack 频道里满屏双星号,值班的同事还以为脚本坏了。后来才反应过来,得先把 Markdown 转成 mrkdwn 再发。如果你用 Block Kit 的 section block,里面的 mrkdwn 文本块也是同一套规则,单星粗体、尖括号链接,一个都不能少。
所以无论是人工贴消息,还是机器人自动推送,转换这一步都绕不开。手动转太容易漏,用 Markdown 转 Slack 工具 把 Markdown 粘进左边,右边的 mrkdwn 实时跟着变,点一下复制就能直接贴进消息框或者塞进脚本的 payload。整个过程都在浏览器标签页里跑,私密频道的草稿、点名真实客户的告警,都不会离开你的机器。
和标准 Markdown 唯一一致的地方
讲了这么多差异,也有让人松口气的。代码是 Slack 和 Markdown 唯一对得上的地方。行内代码继续用单反引号包着,` npm run build 原样透传。围栏代码块保留三反引号的围栏,只是 Slack 会忽略后面的语言标签, ``js 会变成普通的 ` 围栏裹着同一段代码。代码块里的星号、井号、波浪号都原样留着,永远不会被当成格式去渲染,这点和 Markdown 完全一样。
反过来,如果你拿到的是一段 Slack 消息或者一坨 HTML,想还原成标准 Markdown 再归档,可以走 HTML 转 Markdown 工具 反向处理。两个方向各有对应的工具,按你手头的源格式挑就行。
小结
把 Markdown 搬进 Slack,记住四件事:粗体双星变单星,斜体星号变下划线,删除线双波浪变单波浪,链接 [文字](url) 翻成 <url|文字>,标题没有字号只能整行加粗。代码原样不动。手动盯着这五条容易出错,交给工具一次转对,消息发出去就是干净的样子。
Made by Toolora · Updated 2026-06-13