文章全平台发布

May 12, 2021

这篇文章主要是记录如何构建一个可以把文章发布到各平台的环境。

平台

之所以把文章发布到多平台有如下几点原因:

  • 扩大阅读的受众,让各个平台的用户都能共同学习,变得更好。
  • 防止文章被其它平台的用户复制、盗版。
  • 扩大个人的影响力。

文章发布的平台我选择了如下几个:

写文章

上述平台几乎都支持发布Markdown文件,除了微信公众号除外,后面我会讲到怎么用工具把Markdown直接转换为微信公众号可接受的内容。

1、图片

在写文档的过程中总会有需要用到图片,因此我们需要一个可以方便上传图片的工具,这里我们选用PicGo

PicGo能快速上传图片并获取上传后的url,且兼容多平台。而且图片可以选择上传到多个平台:七牛、腾讯云、又拍云、github、阿里云、gitee等等,并且可以和typora无缝集成,typora是用来写Markdown的工具,稍后再来讲解。

此处我选用Github作为我的图片存储,之所以没有选择gitee,是因为gitee有文件1M的限制,如果文件大于1M就不能创建外链了。

(1)下载PicGo

PicGoGithub地址:https://github.com/Molunerfinn/

(2) 配置

点击PicGo打开详细窗口,进行图床配置,此处配置为Github,需要设置仓库名:lengrongfu/images,分支:master,以及Token三个必要参数。

(3)验证

配置好之后可以上传一张图片进行测试。

2、写文档

写文章我们采用Typora工具,Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS XWindowsLinux 三个平台的版本,并且由于仍在测试中,是完全免费的,好用就对了。

(1)Typora下载安装

Typora的官方地址:Typora

(2)配置PicGo

配置PicGo,这样就可以直接从Typora中触发图片的上传了。设置方式(Typora->偏好设置->图像)

3、任务排期

写文章和做项目一样,要把重要的时间拿来写复杂、重要的内容,因此最好对要写的东西做一个任务排期,什么时候做什么,这样会好很多。

此处推荐使用trello,https://trello.com/

4、代码图片

有些网站不支持代码格式,所以可以把代码转换为图片,可以使用现有的网站实现这个功能:https://carbon.now.sh/

如果代码是在IDEA或者VSCode中也可以直接使用,通过安装carbon的插件即可。

发布

这里主要记录把文章发布到各个平台的方式,此处推荐两种方式:

  • openwrite,一个收费产品,可以做到发布到上诉的所有平台,以及微信公众号。免费每个月可以发布10次,收费是199一年。
  • bloghelper,一个开源产品,好处就是免费,并且可以自己添加公共,目前它只支持发布到上述的博客平台,不能发送到微信公众号。此处我主要是用这个工具来发布,后面我会扩展它使其可以发布到微信公众号。
发布到公众号

由于文章采用 markdown 写作,而微信公众号编辑器不支持渲染 markdown,这就导致我们需要自己排版。可以使用自动排版 markdown 的网站,里面支持样式也是比较简洁好看。

上面这些工具更多的是只能从页面把Markdown转换为微信公众号文章,我们可以通过代码的方式,使其转换、发布做到自动化,并最后集成到bloghelper中去。

  • 转换

此处借用一个开源项目wechat-format-cli,可以做到使用命令行来转换Markdown到公众号的文章去。

# 安装工具
$ npm install wechat-format-cli -g
# 执行转换命令
$ wechat-format-cli [your_md_path.md]
  • 发布

上述的工具把文档转换好之后,我们再使用一款自动预览/发布文章的命令行工具,也是一个开源项目wechat-mp-automation

# 安装
$ npm install wechat-mp-automation -g
$ wechat-mp-automation -h
Usage: wechat-mp-automation [options]

Options:
  -V, --version                 output the version number
  -C, --configPath [xxx]        配置文件的本地路径(支持所有自定义参数)
  -t, --title [xxx]             文章标题
  -a, --author [xxx]            文章作者
  -c, --content [xxx]           文章内容[可选],默认从粘贴板复制
  -u, --username [xxx]          公众号账号
  -p, --password [xxx]          公众号密码
  -o, --original                声明原创[可选]
  --preview                     预览而不发布[可选]
  --preview_username [xxx~yyy]  预览名单[可选],以~间隔多个微信号(自行保证微信号已关注公众号)
  --skip_typing                 跳过文章标题、作者、文章的填写和封面图片选择(声明原创除外)[可选]
  --last_edit                   选中最近编辑的文章[可选],请自行确保当前有“最近编辑”的文章
  -h, --help                    output usage information
  
# 只预览
$ wechat-mp-automation -C YOUR_CONFIG_JSON_FILE_PATH --preview_username XXXXX --preview
# 发布
$ wechat-mp-automation -t [标题] -a [作者] -u [账号] -p [密码] -o
# 配合wechat-format-cli工具可做到自动转换和发布
$ wechat-format-cli test.md && wechat-mp-automation -t [标题] -a [作者] -u [账号] -p [密码] -o

全平台发布流程

下图我定义了全平台发布流程,把图床、发布工具设置好之后,用户只需要在Typora上进行编写Markdown格式的内容即可,编写完之后就可以全平台的发布了。

blog-flow

我的流程

在使用过程中发现一个好的Chrome插件Wechatsync ,可以在发微信文章的时候自动把内容容不到其它平台上去。


LRF 记录学习、生活的点滴