使用MD格式发布博客文章_

前言
说起博客文章的类型有HTML格式与markdown格式,对于我来说,markdown格式更加适合我,它格式更加简单,使用符号规范给文字赋予样式,修改起来超级简单,也不用在意格式兼容的问题。不会使用markdown的程序员,不是一个好的程序员。
markdown文章一般在最开始部分添加Front Matter 元信息块,使用“---”包裹起来,填写分类 / 标签等信息,这样在发布工具就能读取标题,标签等信息,这样就不用在后台手动修改。之后就是跟着是正文,正文使用markdown格式,图片等素材就使用链接URL。
目前的方案是摒弃了wordpress的媒体库,图片资源使用自搭建的图床服务,markdown编辑器typora在插入图片时候,会自动上传转换为webp图片到图床服务器返回URL链接给编辑器。图片上传工具为PicGo,图床为开源的lsky兰空图床,插件工具有两个:上传图床的插件为lankong,转为webp格式的插件为compress。
自动发布流程,typora编辑markdown文件,图片资源自动转为URL。编辑完成后使用github pusher插件对把文件推送到git仓库,添加到github后,触发webhook发送post请求,Git it wire收到请求自动发布文章到wordpress。


之前使用过的方案
之前的方案,一直是把图片资源放在网站的服务器的媒体库中,写文章必须先上传图片文件,很麻烦,缺点很多,就不举例了。
push markdown 是一款不错的软件,它可以通过xmlrpc接口连接到wordpress进行文章的发布。缺点是本地md文章发布到wp之后,后台是html格式的,不方便修改。

open live writer 也是不错的客户端,通过xmlrpc接口连接到wp,它可以把你插入的图片上传到wp的媒体库,缺点是它编辑的文章不是md格式的,是而是html格式。

wordpress.com 客户端,其实就是一个把浏览器打包好的一个客户端软件,编写文章还是要使用wp的后台,也是不好用。

我想要的方案
我需要的其实很简单,编写好的md文章最好是单独存储的,不依靠服务器的存储,可以存储在家里的nas上或者git仓库上。文章的单独存储,就可以很好地管理文章,文章的媒体资源必要使用URL链接,我使用之前就已经搭建好服务器的图床服务了。
目前文章存储在github的私有仓库上,使用github的webhook工具,推送文章到仓库的时候会自动调用webhook的配置,在wp端安装了插件一直监听webhook的触发,如果有文章发布,wp的插件就自动获取markdown文章并进行发布文章。
这个方案可以做到,如果我想更换博客平台比如Halo,我的文章根本就不用搬迁,文章的媒体资源也不需要动,非常适合日后的管理文章。
部署方案
编写markdown的客户端

我使用typora,虽然是收费的,但是我觉得超级划算,因为用得顺手用得喜欢,这就是足够了。typora是所看即所得的编写方式,可以让作者专心写作,不用分栏去看预览效果。
配置Typora客户端
我们使用typora的插件库的Git Pusher,帮我们完成git 仓库文章的推送。使用Git Pusher插件的前提先安装插件库的扩展功能,请前往github下载 typora-community-plugin.zip的最新版本。打开管理员身份运行的 PowerShell,cd到执行目录,运行 typora-community-plugin安装脚本文件。

生成github密钥
我们先创建一个用于存储markdown文章的私有仓库,再生成两个密钥tokens。



Typora客户端配置token
我们在github pusher中填写好token与仓库的链接,可以进行文章推送到github仓库


Wordpress的Git It Write配置
配置github的webhook,让webhook在事件触发时候,自动产生一个http的post请求,我们把wordpress的git it write的post请求链接填入 webhook配置中。


我们测试一下,拉取github仓库,webhook显示被触发成功了。


聊一聊markdown的格式
在markdown中我们使用元信息进行文章的标题、分类等同步,在md文件同步后,博客文章不会携带元信息。元信息的字段不是统一的规范,不同工具下其元信息的字段的命名是不一样的。


聊一聊wordpress的markdown的支持
对与wordpress博客框架,markdown不是原生支持,需要安装插件来支持markdown的编辑与渲染,jetpack是官方的插件,可以监控站点的流量与常用基础功能,对markdown也提供了支持。
我们使用插件对仓库的markdown文章进行拉取并发布文章,但是文章依然是html格式的,后台的编辑仍然是html,这给二次编辑带来很多的不便。对于这样的缺点,我使用github仓库进行文章的存储,所以问题不大。
Git it Write 的核心是把 Markdown 转成 HTML 再插入到 WordPress 的文章内容,因为 WordPress 默认编辑器是HTML,不原生支持 Markdown,在工具的配置选项Post content template 里的 %% content%% 就是工具执行md转HTML的内容部分,所以后台文章看到就是 HTML。
对与Git it Write 工具,元信息必须严格匹配,如果格式错误,拉取发布就会失败。比如,说明文档指导里面有 post_date字段,但是添加 post_date: "2026-01-29 22:00:00" 之后解析失败,导致插件拉取发布失败,删除该字段就能成功。




后记
对于github确定是一个好用的工具,这一次我们使用了webhooks的功能进行post请求,但是还有一个Actions的功能,这个功能简直是神一样的好用。它可以在我们推送仓库时候被触发,Actions就会触发执行命令脚本,我们可以把需要的操作命令或者API写到脚本里面去,完成自定义的拉取与文章的发布。
目前我们使用wordpress博客系统,它大而全,但是原生不支持markdown。我们可以尝试使用Halo国产轻量的博客系统,它原生支持markdown。
使用webp格式的好处,高压缩比,可以加快图片加载速度与减少存储体积,兼容性很好,如果博客系统对webp格式不支持,那使用png/jpg也是可以的。
上传到lsky图床的配置需要获得一个token,使用网页版的api调试工具postman(注册麻烦我没有使用)或者app.apifox.com,新建一个https的post请求,请求头填写好用户邮箱与密码,发送后获得token填写到picgo的lsky上传插件中,填写的token使用前缀Bearer拼接。



文章评论