那些技术创作者每日所要面对的重复性劳作之中,多平台进行分发绝对是极为耗费时间的环节之一 ,有人做过统计 ,一篇带有代码块以及图片的Markdown文章 ,若手动搬运至知乎 、公众号 、掘金等十个平台 ,平均花费的时间会超过30分钟 ,一年累计下来便是上百小时的那毫无价值的劳动 ,如今这个让人苦恼的问题能够借助一个开源Chrome插件得以解决 ,它能够将粘贴的动作彻底实现自动化 ,从而让创作者能够回归到内容本身。
浏览器粘贴事件被这个插件的核心功能所拦截,当用户于支持的平台编辑器里按下Ctrl+V时,被插件立即读取剪贴板中Markdown源码的情况就会发生,依据当前所在平台,它会调用不同的转换引擎,在知乎会将GitHub Alerts转为普通引用块,于公众号会生成带内联样式的HTML,在支持Markdown的原生平台则会直接保留源码格式。
在转换完成之后,插件把模拟输入动作进行,将最终内容填进编辑器之中。整个过程于100毫秒之内完成,用户完全没法感觉到后台的处理逻辑到底是怎样的,粘贴的手感跟原生操作不存在任何区别。这样的设计把改变用户习惯的学习成本给避免了。
对于那些需要同时发布至多个平台的老文章而言,插件给出了一键分发的功能。先点击插件图标从而打开控制面板,接着在文本框当中粘贴Markdown原文,随后勾选本次打算发布的平台列表。当点击开始分发之后,插件会在新标签页依照顺序打开每个平台的编辑器页面。
在每一个页面加载完毕之后,插件会自行开展格式转换以及内容填充的操作,并且于页面右下角呈现出一个悬浮的进度按钮。用户仅需在每一个页面快速浏览一下最终呈现的效果,核实图片以及代码块展示是否正常,接着手动去点击发布按钮就行。这样的一个流程将长达半小时的重复性劳动压缩至三分钟以内的核对时长。
微信公众号编辑器针对排版格式给出了特殊要求,而插件因这一情况内置了四套预设样式主题。用户能够在选项页面里对字体族进行调整,也能改变字号大小,还可以调整行间距以及主题色等参数。所有样式最终是以联CSS的形式写入HTML标签之中的,靠此避免因平台对样式表进行过滤致使排版失效。
Prism.js的轻量级实现被用于代码高亮部分,它支持超过200种编程语言的语法着色。当Markdown代码块被检测到时,插件会自动生成带语言标签和行号的高亮HTML结构,该结构粘贴到公众号后台能够完整保留代码的视觉层次。
B站以及头条号这类平台,是禁止引用外部图片的,插件当中内置了图片自动下载机制,在解析Markdown的时候,一旦遇到图片链接,就会先借助XMLHttpRequest去下载图片二进制数据,之后在当前页面创建一个File对象,紧接着触发平台的图片上传对话框,把File对象放进原生的文件选择器里。
这个流程要针对每个平台,分别去适配文件上传控件相应的DOM结构,像B站的图片上传按钮处于编辑器的工具栏当中,头条号的插入图片对话框是动态加载形成该 iframe形式,插件得等到iframe完全渲染好之后才能够注入文件对象。
为每个目标平台编写单独适配脚本的插件,被存放在browser - extension/adapters目录下。负责将警告块转为普通引用并过滤掉任务列表复选框符号的是知乎适配器。公众号适配器要处理特殊的图片上传接口,原因在于微信后台的图片服务需先调用素材上传API获取URL。
像SegmentFault以及51CTO这样的技术社区,是直接采用HTML合成模式的,在此模式下,插件会把Markdown转变为带有语义标签的完整HTML片段。而X Articles呢,是混合运用两种策略的,对于普通内容,是直接粘贴HTML,对于图片和代码块,是借助平台的插入对话框逐个进行注入的,以此来保证格式不会被平台编辑器过滤掉。
因开发者账号要付一次性注册费,此项目当前以开源形式于GitHub上发布。用户访问项目主页下载源码后,于Chrome扩展管理页面开启开发者模式,选取加载已解压的扩展程序并指向browser - extension文件夹便可完成安装。
项目运用的是 MIT 许可证,任何一位开发者都能够自由地进行修改以及分发。代码仓库当中包含着完整的适配器开发文档,技术方面的用户能够为自身常用的平台去编写全新的适配器,然后提交 Pull Request。已经有开发者依据它对 CSDN 和简书的适配逻辑加以扩展,从而形成了由社区进行维护的适配器集合。
当你在多个不同平台发布文章之际,所遭遇的最为棘手的那种格式方面的问题究竟是什么,欢迎于评论区域分享你的相关经历。要是你感觉这个工具具备实用性的话,能够给该项目点个Star予以支持一下!
相关标签: # Markdown # 自动化 # 插件 # 发布工具 # 跨平台