惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
博客园 - 【当耐特】
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
B
Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
从 0 到 1 写一个 Alfred Workflow - 少数派
2018-10-29 · via 少数派

写作时经常需要给出引用来源,每次都需要徒手去复制网页标题和 URL 然后再拼成 Markdown 格式,实在是太繁琐了,所以我在想是不是可以简化一下?经过一番折腾后,我发现通过 Alfred 的 Workflow 功能可以完美解决这个问题。

你可以通过这个 链接 先下载试用这个 Alfred Workflow。

解决思路

先利用 Alfred 的 Snippet 作为 Triggers(触发器),来调用 AppleScript 获取当前网页标题和 URL,然后以 Markdown 格式粘贴到文本中。

Workflow 雏形

Triggers: Snippet

Snippet 是「快捷短语」,如果将它作为触发器,在打字输入指定短语后会立刻执行后续动作。在这里我将短语设置为 url,用来触发后续的动作 Run Script。

在 Snippet 这个触发器中,默认前缀设置为 \\,那么当你需要触发短语时,就需要在你设置的短语前加上这个前缀,比如在这个 Workflow 中我需要输入 \\url 才会成功触发下一个动作。

至于为什么用 Snippet Trigger 嘛,因为可以省去使用快捷键唤出 Alfred 这一步,这样一来就不会打断写作过程了。

Actions: Run Script

参考 Alfred 官方论坛上的 这篇文章,并稍作修改,可以实现的功能是获取浏览器最近活跃标签页的标题和 URL。将下面的代码填入到 Run Script 的相应区域中,第二步就完成了。

set browser to do shell script "export VERSIONER_PERL_PREFER_32_BIT=yes; perl -MMac::InternetConfig -le 'print +(GetICHelper \"http\")[1]'"

if (browser = "Google Chrome") or (browser = "Google Chrome Canary") or (browser = "Chromium") or (browser = "Opera") or (browser = "Vivaldi") then
    using terms from application "Google Chrome"
        tell application browser to set currentTabTitle to title of active tab of front window
        tell application browser to set currentTabUrl to URL of active tab of front window
    end using terms from
else if (browser = "Safari") or (browser = "Safari Technology Preview") or (browser = "Webkit") then
    using terms from application "Safari"
        tell application browser to set currentTabTitle to name of front document
        tell application browser to set currentTabUrl to URL of front document
    end using terms from
else
    return browser
end if

return "[" & currentTabTitle & "](" & currentTabUrl & ")"

Outputs: Copy to Clipboard

最后一步是 Copy to Clipboard,把结果放到剪贴板里。当你想在编辑器中插入引用来源时,只需按下 ⌘Command-V 粘贴即可。当然,你也可以在 Alfred 里设置「自动粘贴到最前面的应用」,这样连 ⌘Command-V 都省了。

另外,Copy to Clipboard 这个动作还可以将复制的项目标记为「transient」,这样一来它就不会「沾染」剪贴板内容。

如果你希望这个 Workflow 直接将链接粘贴到编辑器中,并且不要影响你的剪贴板,那么两个选框都打勾即可:

Copy to Clipboard 配置项

先在 iA Writer 上测试,通过 🎉。

iA Writer

但在 Ulysses 上测试失败了,因为它不⽀持直接输⼊ Markdown 格式的链接。

Ulysses

升级方案

Ulysses 的兼容性

Ulysses 为兼容 Markdown 提供了 Paste from Markdown 功能,⽽且有快捷键 ⌥Alt-⌘Command-V ,这样就可以⾃动化了。AppleScript 脚本如下:

tell application "System Events" to key code 9 using {option down, command down}

增加流程控制

因为在不同的编辑器中需要执⾏的动作有差异,所以需要在 Workflow 中进行判断。通过查阅 Alfred ⽂档, 我发现 Filter Utility 可以拿来⼀⽤。同样⾮常简单,改进后的流程图如下:

workflow 2.0

橙⾊就是 Ulysses 的专属⽀线了。两个⼩漏⽃(Filter)就相当于 if 语句,橙色 Filter 配置如下:

Filter 配置项

等⼀下,上图中的 {var:editor} 是什么? 

其实它是 Focused App Variable(焦点软件变量),需要在 Triggers: Snippet 中进⾏配置。它的值就是当前具有焦点的 App 的 bundle id。

Snippet 配置项

那 com.soulmen.ulysses-setapp ⼜是什么?

就是 Setapp 中的 Ulysses 的 bundle id 啦。其他版本 Ulysses 的 bundle id 可以通过这个命令得到:

osascript -e 'id of app "Ulysses"'

测试

将 Ulysses 的 Paste from Markdown 脚本添加到 Ulysses 专属⽀线的最后一步后,这个升级版的 Alfred Workflow 就大功告成了。这样一来,你在普通编辑器上直接运行该 Workflow 时,会直接粘贴标准 Markdown 格式下的链接,当你在 Ulysses 上运行该 Workflow 时,会触发 Paste from Markdown 功能,将标准 Markdown 格式下的链接转换为 Ulysses 自己的格式。

Ulysses

PS

看到有不少反馈 Ulysses 兼容性问题,更新了一个版本:下载

这个版本改动较大,支持了 Evernote/Scapple/Notes 这类只允许复文本链接的编辑器。

> 下载少数派 客户端、关注 少数派公众号 ,让你的工作更有效率 ⏱

> 获取特惠、正版、高品质软件,尽在 少数派数字商城·正版软件 🎉