在之前的一篇文章中我详细介绍了把 Lucifr 目前在用的 hexo 这个博客程序折腾到 Dropbox 里的过程。放上服务器端的一大好处就是可以在 iOS 设备上进行写作,同步到 Dropbox 中,然后服务器端就会自动生成网页了。
目前 Lucifr 上大部分文章都是 Link post 的形式,这种文章形式被著名博客 Daring Fireball 极大发扬,很适合对网络内容进行快速分享。
今天就介绍下我的一个通过小书签(Bookmarklet)和 Drafts for iOS 将 iOS 上浏览到的新鲜事物进行快速分享的 Workflow。
简单来说就是在 iPad 的 Safari 浏览器1中看到值得分享的网页,我可以选择一段想要引用的文本,点击书签栏上的“Link Post”小书签,它会通过 Drafts 的 x-callback-url 将当前网页的标题,URL,去掉了标点且空格转换为 dash 且为小写形式的标题2,以及所选的文本3传送到 Drafts,并调用 Drafts 的一个 Dropbox Action,在 Dropbox 中 hexo 的 drafts 目录中生成 Link post 格式的 markdown 文件。
首先需要在 Drafts 中建立这样一个 Dropbox Action,Drafts 最近更新之后提供了可选取行信息的模板参数[[line|n]]
在这里起到了主要作用,小书签传送过来的标题、URL、简化后的标题、以及引用的文本等都在不同的行上,通过[[line|n]]
这个模板参数就可以将他们放置到 link post 格式中相应的位置上去。
这个 Dropbox Action 我分享在此,可以从 iOS 设备的浏览器中点击它导入 Drafts:Link Post。
导入后可以修改下 drafts 文件夹的位置。此外要记得打开 Drafts 设置中的“Allow URLs to trigger actions”选项,允许外部调用 Drafts 中的 Action。
然后需要在设置中打开 Safari 的“始终显示书签栏”,这个是只有 iPad 才支持的。在 iPhone 中这个小书签也可以使用,但引文不会起作用,因为在点击书签按钮时会取消选择文本的状态4。
接下来就是要在 Safari 中添加书签了,可以先任意添加一个页面,记住要将书签添加到“书签栏”这个文件夹中,然后再进行编辑,把地址改为如下的 javascript 代码:
javascript:(function()%7Bvar%20w=window,d=document,selectedTxt=w.getSelection?w.getSelection():(d.getSelection)?d.getSelection():(d.selection?d.selection.createRange().text:0),e=encodeURIComponent,t=d.title,r='%5Cn%5Cn',url;url='drafts://x-callback-url/create?text='+e(t+r)+e(location.href+r)+e(t.replace(/%5B%5E%5Ca-zA-Z%5Cu4E00-%5Cu9FA5%5Cs+%5D/g,%20%27%27).replace(/%5Cs+/g,%27-%27).toLowerCase());if(selectedTxt!=%20'')url=url+e(r+selectedTxt);w.location.href=url+'&action;=Link%20Post&x-source;=Safari&x-success;='+e(location.href)%7D)();
我在这个小书签中加入了 x-success,在执行成功后会返回 Safari 刚刚访问的页面,当然也可以改为编辑的应用进行下一步的编辑和发布,我习惯用的是 Byword。
以上,enjoy。
BTW,很期待 Pythonista 作者的新应用 Editorial for iPad,相信会给 iPad 上的博客写作体验带来很大提升。