用小书签和 Drafts 的 Dropbox Action 创建 Link Post

在之前的一篇文章中我详细介绍了把 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 文件。

具体效果可见视频(优酷/Youtube):

Workflow 说明

  1. 首先需要在 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。

  2. 然后需要在设置中打开 Safari 的“始终显示书签栏”,这个是只有 iPad 才支持的。在 iPhone 中这个小书签也可以使用,但引文不会起作用,因为在点击书签按钮时会取消选择文本的状态4

  3. 接下来就是要在 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 上的博客写作体验带来很大提升。


  1. 实际上目前只有 iPad 版能够支持一直显示书签栏
  2. 用于生成 markdown 的文件名
  3. 用于引用
  4. 不知怎么吐槽

Lucifr

Read more posts by this author.

Beijing, China http://lucifr.com