简化静态博客发图的Alfred工作流

把自己的blog迁到了github上,为了解决图片加载慢的问题又用了qiniudn做图床加速。没想到用力太猛,贴图比之前更麻烦了。。。没办法,用Alfred写了个Workflow,一劳永逸的解决贴图的问题吧……

使用octopress写文章,贴图的常见流程是:

  1. 随便找个工具或者用系统工具截图;
  2. 将截图存储到桌面或者随便什么地方;
  3. 修改截图文件名;
  4. 将截图放到octopress/source/images/....去;
  5. 在文档中写上图片的Markdown标签,指向图片;

在我no zuo no die的用了第三方网站做图床以后,又多了一步:

我擦……这事儿干下来基本上写文的一点儿激情就都烟消云散了……

这个写稿贴图的事儿最好可以简化成这样就爽到了:

  1. 随便找个玩意儿截图到剪贴板;
  2. 按个快捷键把Markdown的Url给粘贴到正在写的文档中;

恩,就这两步,剩下的恶心事儿最好都有人帮着做了就爽了……

网上搜了半天,没找到现成的东西%>_<%,难道大家都这么苦日子过着??

好吧,发扬懒人改变世界的精神,自己动手丰衣足食吧……

先打开自己最爱的Alfred,新建一个Workflow(注意,必须是有Powerpack的版本哦~~):

加个Hotkey的Triggers,写上自己熟悉的热键作为粘贴的热键使用:

由于我直接用QQ截图,QQ热键是Ctrl+Cmd+A,所以就直接设置Ctrl+Cmd+V了……

接下来要加一个Actions,本来打算用NSAppleScript的,但是从AppleScript编辑器里粘过去的代码死活不work,没辙,改用Run Script的Action了。

双击Action,Language选择/usr/bin/osascript,把下面的代码粘贴到Script区域:

property fileTypes : {¬
    {«class PNGf», ".png"}, ¬
    {JPEG picture, ".jpg"}}

on getType() --判断剪贴板中的数据类型,暂时只支持pngjpg,优先用png
    repeat with aType in fileTypes
        repeat with theInfo in (clipboard info)
            if (first item of theInfo) is equal to (first item of aType) then return aType
        end repeat
    end repeat
    return missing value
end getType

set theType to getType()

if theType is not missing value then
    set filePath to "/Users/viecks/Datas/Blog/octopress/source/images/attaches/" --这里换成你自己放置图片的路径
    set fileName to do shell script "date \"+%Y%m%d%H%M%S\" | md5" --用当前时间的md5值做文件名
    if fileName does not end with (second item of theType) then set fileName to (fileName & second item of theType as text)
    set markdownUrl to "![](http://attaches-mirror.qiniudn.com/images/attaches/" & fileName & ")" --这里如果没有用到图床,就把前面前缀去掉,用到的话换成你自己图床的url
    set filePath to filePath & fileName

    try
        set imageFile to (open for access filePath with write permission)
        set eof imageFile to 0
        write (the clipboard as (first item of theType)) to imageFile -- as whatever
        close access imageFile
        set the clipboard to markdownUrl
        try
            tell application "System Events"
                keystroke "v" using command down
            end tell
        end try
    on error
        try
            close access imageFile
        end try
        return ""
    end try
else
    return ""
end if

然后把Triggers和Action之间牵个红线……

然后Ctrl+Cmd+A,Ctrl+Cmd+V,

擦,很神奇的一个markdown的image标签就出现在你的编辑器里面了,文件也直接出现在你的图片目录里了,O(∩_∩)O,直接去deploy吧……

首发于viecks个人博客,转发请联系作者。