【速报】用 Markdown 也能堆出 Notion了,现在 Stripe 开源了自己的方案
海外的在线支付平台 Stripe,近期宣布开源了他们家的 Markdown 文档框架 MarkDoc。MarkDoc 框架基于 Markdown 语法,并做出了巨大的扩充,允许用户设定自己的标记,渲染自己的格式, 甚至可以嵌入部分「低代码」的文档逻辑。有人称之为 Markdown 界的「乐高积木」。如果有兴趣,用户完全可以堆一个自定义 Markdown 版的 Notion 出来。
关于 MarkDoc
Stripe 做支付平台很多年了,除了作为主业的支付结算功能,他们家让人称赞的一个地方,其实是「说明文档」。从 Stripe 官网进入,我们就能看到无论是产品细节介绍,还是接口文档,都让人赏心悦目。
在这文档的背后, Stripe 有一套自己的框架,也就是 MarkDoc。现在, Stripe开源了这个框架,并公布了接口和文档,让更多人可以做出 和 Stripe 一样的 文档 库 或者 Wiki 系统。甚至,个人写个博客(如果愿意折腾)也是可以套用的。
MarkDoc 比起标准 Markdown 来说,到底扩充了哪些地方?
如果说,Notion 向我们提供了形形色色的「乐高积木块」(block)让我们可以搭配出自己的文档;那么 MarkDoc 则是让我们可以自己制造「积木块」。造出来的「积木块」,理论上可以干任何我们期望的事情,最后我们再通过 Markdown 语法将「积木块」 嵌入文档中,生成一个形式丰富的文档体系。
关于 MaekDoc,我大致总结了一下:
自定义 属性
MarkDoc 允许 Markdown 标记嵌入属性,例如:图片类的 标记 可以嵌入缩放比例或尺寸。当然我们也可以为自定义的「积木」搭配任意属性(其实就是参数),例如:将一个 第三方表格 嵌入到文档里面,只要略微设置几个属性即可。
自定义 逻辑
对于业务用途,一些文档的内部也是有逻辑的,例如,如果A则显示B,否则显示C。不过对于消费级的用途来说,就不是特别有需要了。例如:按日期显示内容,按照输入内容,按照简单的用户交互呈现不同的运算结果 …… 如果愿意,嵌入一个贷款计算器也是分分钟的事情。
自定义 渲染
比起自定义功能,「渲染」(也就是将 Markdown 变成 可预览的网页格式)显得简单多了。很多 Markdown 编辑工具 都开放了 「视觉主题」和「自定义样式」功能,其目的就是让大家在某种程度上可以控制 「渲染」。MarkDoc 则更加底层,不仅可以完全控制样式,甚至能控制表现形式结构。例如:插入一个 显示百分比进度 的模块,你自己就可以来,不用等到某些笔记公司「施舍」给我们。
下面是文档内形成 「链接注释预览」的 效果
自定义 校验
对于业务用途,文档的输入校验,一直是个刚需。例如:输入金额要求小数点两位,又如 输入日期需要校验 等等。普通人可能无感,但是如果将文档用于 一个专业的知识体系, 例如:Stripe 自己的支付平台知识库,总是有一些业务规则需要考虑,这时输入校验就很用。
一点感想
个人觉得,MarkDoc 的意义在于 提供了一个 用户可掌握 的选择。一个团队或个人,如果希望构建自己本地或内部的文档系统时,可以完全不用某些「云端存储」的笔记系统了。Markdown 让信息可以更好的被保存归档和检索, 而开源的渲染架构 和 自定义的积木,让这套系统可以被保留到 the end of world。
虽然,目前 MarkDoc 只是一个框架,我还是很希望看到 基于MarkDoc 的本地Notion出现。
但障碍也是有的,第一个障碍就是对于普通用户来说,框架的门槛较高,这个只是面粉,用户要的是精美面包。第二个就是,这套「标准」是否有人愿意 follow, 如果各类工具都愿意加入 MarkDoc, 并产生 各色的现成「积木块」,形成市场,形成生态的话,我觉得还是大有可为的。往大的里面想,相当于在 Notion 以外 开辟了一个截然不同的战场。但在没有这个有共识出现之前,普通人(不会代码)还是只能老老实实用现成的 ALL-IN-ONE 文档。而且,Notion类的工具,也会变得更加开放,允许用户自定义 widget 或 block (虽然在 底层控制/代码控制/存储控制 上远不及 MarkDoc),但这也会多少形成新的竞争格局出现。
下图为一个国产的 notion 自定义组件库 notion.pet
最后
虽然, MarkDoc 被认为是「低代码」,实际上按我看,再低的代码,也是需要一些基本的逻辑能力,一些自学的能力,还有一些 DIY 精神。也正因如此,在一些封闭且毫无创造力的领域或地方,MarkDoc 显然很难普及,但这并妨碍 MarkDoc 在渴求生产力的领域里面得到充分应用。最终,高效率打败低效率,这只是时间问题。
MarkDoc 官网
https://markdoc.io/