良好的写作工具应该鼓励写作和排版这两个过程完全独立,互不干扰,更不能互相破坏。写作就是写作,你要考虑的是写什么,而不是样式(样式也重要,但那是另一回事)。
此外,或许大多数人早都习惯了用 Markdown 写作(这是一种带格式标记的纯文本,好比轻量级的 HTML 语法)。它只是文本,因此你可以在任何系统上用任何喜欢的编辑器写作。而大多数写作平台也支持 Markdown,文章写好了之后「一键发布」即可。除非有样式需求,否则你几乎意识不到排版的存在。
总之,这个流程的感觉就是简洁、清晰。
然而自从写公众号,排版的问题一直让我头疼。官方编辑器完全不支持 Markdown,也没有 iPad app,只能在后台用网页编辑。而网页很不稳定,我写《圣约》的书评,正文大概一万多字,我粘贴到网页中,浏览器立刻崩溃了。另外操作也很麻烦,以插图为例,本来写文章的时候图片已经加好了,由于不能直接发布,我需要先把文章中的图片全部上传到后台的素材库,然后在正文中一张一张选择,如果文章有很多图,这个过程既繁琐又容易出错。再说,不管做什么,「费二遍事」的感觉太差了。
因为官方的孱弱,第三方编辑器大行其道,然而它们大多数长这样:
3rd-party-tool满屏的分心内容,完全不符合写作规律。也许它能让你制作出吸引眼球的排版,但是对于文字创作,是一种干扰。
工具的区别,反映的是观念的差异,因此我只好放弃此类工具。
Markdown 转换器
当然头铁的人还是有的,就是要用 Markdown 怎么办?我搜索了一下,有不少优秀的在线 Markdown 转换工具,如例11,例22。
它们的基本思路是:
-
先用 Markdown写作,不必操心发布的问题。
-
写完之后,把文章粘贴到在线编辑器,它有一套定义好的 HTML + CSS 样式,可以制作出精美的样式,然后再把 HTML 转换为富文本。
-
一键粘贴到后台,发布。
然而对我来说,这依然有一个问题。那就是这些工具只能处理文字,而我对文字的样式要求不高,你看《纽约书评》这些知识性的杂志,它没什么漂亮的排版,实际上它也不需要。我最大的目的是希望能快速添加图片,而无论什么工具,图片还是需要手动添加到后台或第三方图床。
因此这些工具我也用不到。
没有理想的现成工具,我只好自己研究了。方法依然是依靠我最喜欢的 Shortcuts,经过几天的试验,我发现 Shortcuts 结合公众号 API 可以完美实现我的要求。
本文将结合我使用的工具以及写作习惯,介绍这个方法。
流程
Content Blocks
目前,我写文章主要用 iPad 版本的 iA Writer(我没有电脑,只用 iPad),它 和 Ulysses 应该是目前最好的写作环境。下图是我上一篇文章 iOS Shortcuts 教程之照片批量命名大法 的截图:
iA-Writer.jpeg界面相当的简洁、干净。
iA Writer 有一个很有用的功能,叫做 Content Blocks,可以用来嵌入图片,举例来说,注意上图中有一个路径:/Assets/Kindle.jpeg
Assets 是我在每篇文章底下创建的目录,专门保存图片。当我要加图的时候,我可以把图片放到 Assets 中,改名,再在正文里用如上格式引用。这就是一个 Content Block,它的意思是说,生成最终文章的时候,iA Writer 会从这个目录中找到这张图片,放到文章里。
这是那篇文章的 Assets 目录(左侧):
Assets.jpeg然而,写作的过程凝神静心,怎容半点打扰?更别提什么移动图片、改名这通冗长的操作了。因此,我往往先只写上这么一句话(我有一个专门 Shortcut,自动帮我填上 /Assets/ 以及 .jpeg),根本连图片都不需要,在文字一气呵成之后,再添加图片。而加图的方法又如我那篇文章所述,我也会用专门的 Shortcut 自动完成,速度非常快。
公众号 API
假设现在文字写好了,图片也都放在 Assets 中了。如果在本地预览,那就是一篇图文并茂的文章了。然而,如前所述,你不能把它「一键发布」到公众号。因为需要先把 Markdown 转换为富文本,而且本地图片也不能直接复制粘贴到后台,这是问题的关键。
由此我想到,能不能写一个 Shortcut,让它代替我手动传图,以及往文章里加图呢?
我研究了一下公众号开发的文档,发现了这些 API:
Add-Image-API.jpeg技术性的细节我也不清楚,一般我都是现学现用。简单来说,API 就是服务的接口,通过 API,你可以使用这些服务而不必打开网页操作。打个比方,你要给朋友送个礼物,你可以亲自送到朋友家里,也可以委托快递公司。后者就是一种 API,你只需要和朋友说好这个「接口」,而不必自己跑腿。当然,快递是收费的,而很多网络服务的 API,都是免费的。
具体在本例中,通过「新增永久素材」这个 API,图片会被直接添加到后台的素材库中(一定要用「新增永久素材」,如果「新增临时素材」,不会加到素材库),并返回一个图片的 url。
经过我的测试,除了直接发文章的 API 没有成功(提示我达到了单日 API 请求上限,我懒得再研究了),其余功能都可用。
API-Shortcuts.jpeg一键传图 Shortcut
这样思路就清楚了:
- 图片推送到公众号后台
- 推送成功后,返回图片的 url
- 用这个 url 替换文章中同一张图片的本地路径
- 再把 url 封装为 HTML
- 循环步骤 1-4,上传 Assets 中所有图片,这一点也是得益于 Content Blocks 功能,文本和图片可以分别放在不同位置。
下面是完整的 Shortcut:
Whole.jpeg执行这个 Shortcut 之前,先复制全文到剪贴板(记住,图片只是一句话,不是真的图,因此复制的就是一段纯文本)。
- 预览,检查复制的文本是否正确。
- 公众号 API 要求一个 Access_Token,正如开门要用钥匙,这是一串很长的字符,获得 Access_Token 很简单,官方文档有介绍,这里何必赘述。注意 Access_Token 两小时刷新一次,同时为了实现同一个 Access_Token,各个 Shortcut 共享,我把它保存在 weixin_token.txt 中,就像这里显示的,Shortcut 执行的时候,会读这个文件,获得 Access_Token(严格来说,这一步应该加一个检查机制,即如果获取 Access_Token 失败,Shortcut 报错,但在实际中,因为好几天才会用一次,Access_Token 已经过期,因此我总会先刷新再操作,所以验证部分我就免了)。
- 这一步选择 Assets 中的图片,全选即可。
- 进入循环
- 首先把图片的名字变成 /Assets/图片名字.jpeg,即 Content Blocks 格式,等会用 url 把它替换掉。
- 调用 API 上传图片,返回一个 dictionary(词典),这里的「url」是词典的「key」,它的「value」就是地址,即 http://……
- 把获得的 url 封装为 HTML
- 用 7 替换 5
- 循环结束,新文本复制到剪贴板,此时所有图片 Content Blocks 全部被网址替换。例如,之前例子中的 /Assets/Kindle.jpeg,修改后变成:
<figure><img alt="" src="http://mmbiz.qpic.cn/mmbiz_jpg/2ZPG1IzsVY1Hq4UcS6yZpICWnesTT4k82UpDnWcAHhqvYG86OHe3EULyf1mI8YLOEDw5kYdb6WNic6rxpdV2WLw/0?wx_fmt=jpeg" style=width:100%;"/></figure>
这时候,回到 iA Writer,粘贴覆盖原文就好了。
为了更清楚地说明效果,我录了一段视频。先从 iA Writer 复制,然后用 Shortcut 获得图片网址,最后再粘贴回 iA Writer,整个过程大概一分钟(视频这里显示有问题,请移步公众号文章《Shortcuts 教程:一键搞定公众号图片排版》)。
下一步做什么
这时候,你可以把文章(还是 Markdown,图片是 HTML)导出为 HTML。然后再把 HTML 转换为富文本,直接粘贴在官方编辑器即可。
如果嫌样式不好看,可以自己修改 HTML,然后写一个脚本,以后每篇文章都做同样修改。如果不会写,可以用前面提到的在线转换工具,再去后台粘贴。
前面说过,这些工具无非就是应用一套定义好的 HTML + CSS。因此,更好的 DIY 方式是,自己定义一个公众号专用主题,iA Writer 以及 Ulysses 等编辑器都支持自定义主题模版,再加上本文的 Shortcut,虽说不等于一键发布,但这已经是我能想象到的最效率的方法了。
垃圾中的霍比特人
《魔戒》里有一句话:
Hobbits really are amazing creatures, as I have said before. You can learn all that there is to know about their ways in a month, and yet after a hundred years they can still surprise you at a pinch.(译:霍比特人真的很神奇,你能在一个月之内熟悉他们的所有习性,然而即使过了一百年,他们依然能给你惊喜。)
Shortcus 就是这样的应用,自从它问世就不断让我惊喜,让我体会到它的潜力无限。另外随着 iOS/iPadOS 不断进化,加上 iA Writer 等简洁而又强大的 app(除了 Content Blocks 和支持自定义主题之外,iA Writer 还有很多高级功能。例如,它可以和 GitHub 同步,实现版本控制。在我印象里,iA Writer 曾经是唯一支持这个功能的编辑器),就我个人而言,iPad 已经是生产力最高的平台了。
然而另一方面,很多产品依然相当糟糕,堪称「垃圾中的霍比特人」。你第一眼看到它,觉得很烂,用了很久之后才知道——它其实更烂。
网友评论