本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2020年11月15日 统计字数: 2633字 阅读时间: 6分钟阅读 本文链接: https://soulteary.com/2020/11/15/use-markdown-to-blog-freely.html ----- # 使用 Markdown 自由地写博客 清理收藏夹的时候,看到了[这篇](https://www.zhihu.com/question/26618565)请教如何使用 Markdown 写技术博客的经典问题。 我是从 15 年开始使用 Ghost ,到 17 年开始转向使用 Hugo ,[过程中](https://soulteary.com/about-site/)除了我的博客之外,[美团技术团队](https://tech.meituan.com/)的博客也使用了 Hugo 作为编写发布方式,算下来不知不觉已经使用 Markdown 写了五年博客。 独乐乐不如众乐乐,那么就来聊聊怎么使用 Markdown 写博客。先来聊聊编辑器吧。 ## 写作工具 **使用 Markdown 编写博客是自由的,尤其是体现在工具层面。** 你可以选择在支持 Markdown 渲染的网站、平台上书写你的内容,也可以选择使用笔记本、平板、甚至是手机上支持 Markdown 的客户端。 我个人比较习惯在 Web 版本的 Confluence(Wiki)、印象笔记这类适合采集整理的工具中先进行笔记整理,然后使用笔记本或平板上的 Markdown 客户端进一步组织内容。在五年里使用过不少工具,目前用着比较稳定、可靠的工具有 MWeb 和 Ulysses,工具功能层面差异不大,出于个人习惯目前主要使用后者。 ![日常码字的界面,目前文档库中有几千篇文章和草稿](https://attachment.soulteary.com/2020/11/15/markdown-ulysses.png) 需要说明的一点是,这个工具对于 Markdown 表格支持能力比较差,习惯使用表格而非列表来阐明观点的同学可以选择前者或者其他工具。 Ulysses 的写作体验还是比较棒的,建议开启打字机模式,深度体验一番,相信你也会喜欢上这款工具。 ## 文档储存管理 **使用 Markdown 编写技术内容的自由不光体现在工具上,还有对于内容的整理和储存。** 你可以使用任何你喜欢和习惯的方式来管理内容: - 习惯使用软件自带资料库的同学,直接使用各种软件自带的文件库即可。 - 习惯使用 iCloud 协同的同学,可以使用软件功能原生“支持” iCloud 存储的软件。 - 习惯使用云储存的同学,可以将文档放在云存储服务同步文件夹内保存。 - 习惯使用硬盘、U盘的同学,可以将文档放在这些移动储存介质里。 - 不少习惯使用 Git 的同学甚至可以将内容作为 Git 代码一样进行管理。 - 习惯使用平台的同学可以在各种博客、笔记平台软件中存储你的内容。 我个人使用习惯比较“混合”。 我一般会将写作过程中的文档以文件夹形式放在 iCloud 目录中,先使用 iCloud 服务进行同步,如果软件支持备份,我也会进行设置,比如使用 Ulysses 的定时备份,给内容多一份保险。 ![软件的自动备份](https://attachment.soulteary.com/2020/11/15/markdown-backup.png) 而写作完毕的内容,会存在 Git 中,然后使用 CI 进行一些自动化操作以及内容发布。 ![写完的内容会存储在 Git 中](https://attachment.soulteary.com/2020/11/15/markdown-git.png) ## 文档发布前的处理 **使用 Markdown 记录的文本内容,在输出呈现过程中,也能够有非常大的自由。** 上一小节中,提到了使用 CI 进行自动化文档处理和发布,那么需要处理哪些内容呢?常见的内容包括并不仅限于下面的内容: - 怎么处理代码高亮 - 怎么处理文档中的外链图片 - 怎么处理一些额外的排版 - 怎么处理新增内容的分词和搜索 在几年的使用过程中,我积累了一些小工具来处理这些问题,比如下面这些: ![Markdown 文档 CI 处理流程](https://attachment.soulteary.com/2020/11/15/markdown-hugo-tools.png) 当我将写好的内容添加到 Git 仓库中之后,CI 首先会处理目录、格式、排版等琐事,然后将外链图片上传到一些图床以及 OSS 进行备份,并替换图片地址到接下来将到面世的文档中。同时处理文档中的代码高亮、以及进行一些代码层面上的性能优化,最后提供给我一个“内部阅览地址”,待我确认内容呈现没有大的问题之后,戳一下界面中的“执行”按钮,便可完成整个网站内容的更新。 ![Markdown 文档 CI 处理流程](https://attachment.soulteary.com/2020/11/15/markdown-ci.png) ## 同步至社交媒体 最初我的方案是使用 Node 、浏览器插件、Puppeteer 完成了一套简陋但是够用的小工具,能够自动将我的网站内容同步到各种我常用的社交平台的工具。 但是慢慢的,我放弃了这个方案,因为: 1. 只写原创、实践类文章和个人思考的前提下,我的成文速度挺慢的,一般一天能写完一篇就不错了,偶尔一天发两篇,那是用上了我的“库存”。所以脚本自动发布,提升效率并不是关键点,我需要持续跟着平台这些工具,ROI 太低了。 2. 每个平台的发布看似相似,其实有不少细节差异,手动发布有时候有一些额外的乐趣,比如和你的读者进行一些简单的交互、沟通。全自动化会抹杀这个好玩的事情。 但是如果不使用脚本,是不是一定会出现大量文章编辑工种的排版工作呢?答案显然是否定的。因为在近两年,各大平台都支持了代格式的富文本复制粘贴。使用合适的工具,能极大的分发体验,把排版变为简单的“复制粘贴”操作。 这里推荐一款开源小工具,Markdown Nice。可以让你在网页中预览 Markdown 内容,并得到适合“一键复制粘贴”到各种社交平台的富文本格式。类似的开源工具在 GitHub 中还有很多,如果你愿意的话,完全可以定制一套更适合你自己的专属工具。 ![使用合适的工具,可以简化分发排版](https://attachment.soulteary.com/2020/11/15/markdown-render.png) 我的网站,一般会使用 Hugo 模版生成 HTML 和 Markdown 两个版本的内容,前者是给一般读者使用,后者是给我或者有 Markdown 阅读器的读者准备。将生成好的 Markdown 格式的文档先复制到上面的工具中,然后就是一遍喝饮料,一遍发布内容,看看读者会说些什么了。 ## 最后 先写到这里,后续有更新再继续聊。 我要继续去整理文档啦。 --EOF