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

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

HANG ♥ WRITING

ChatGPT 问世两年,我在 AI 的辅助下成为了一名 iOS 业余开发者 如何使用 Netcat 构建简单的安全聊天系统 QuakeSense 震感,一款简洁原生的 iOS 地震通知 App App Store 中国大陆 ICP 备案最佳实践 几款有意思的 Google Chrome 侧边栏扩展应用 GetVM 让编程学习更快一步 WildCard (野卡) - 国内用户零门槛订阅 ChatGPT、Claude、App Store 万里汇开发者收款使用全指南 | 注册、开户与账户绑定教程 中国大陆居民开通华侨银行(OCBC)海外账户完全指南 实用的 macOS 内置命令,省下买第三方应用的钱 《认知觉醒》之触动学习法 不是程序员也可以搞开发,一小时入门 Retool 低代码 疫情来袭,手把手教你在家制作美味炒鸡 企业微信机器人 Webhook 推送语雀更新消息 基于 Cloudflare Workers 部署的 JSON Database 数据库 印象时间:印象笔记出品的时间管理应用 Pixelmator Photo 2.0: 桌面级功能并适配 iPhone Shortery:Mac 快捷指令自动化 Pixelmator Pro 2.3:AI 背景去除 Quit All:一键退出应用程序 Raycast:推出官方扩展商店和开发者平台 简悦 API 2.0:收藏助手和快照功能 HomePod mini 使用体验 Prizmo 5.5:扫描效果增强并新增批注功能 Notion:近期值得关注的新特性 Google Analytics 替代品,零成本和零门槛搭建 umami.is Infuse 7:一款近乎完美的视频播放器 Gyroscope 4.14:新的产品名称和多项改进 V day:在手机上创作短视频 Things 3.14:备注支持 Markdown,同步速度加快 MoneyWiz 2021:新的通知选项和视觉改善 Doppler:管理和分享你的本地音乐 CARROT Weather:5.3 带了多项新特性 Obsidian:知名知识管理工具推出移动应用 NOMO RAW:专业 ProRAW 相机 Tape:全能且好用的录屏软件 Apple Design Award 2021 Craft 1.6:每日笔记重磅更新 Trakt:官方 iOS 应用全新上线 Notion:支持 API 和自动化集成 Varlens:iOS 专业相机应用 Infuse 7:不只是 M1,支持所有 Mac 简悦:支持 API 和自动化流程 奇妙组件:小而美的自定义 iOS 小组件 Farbox 2:支持自部署和多站点的开源博客系统 图图记账:高颜值记账应用 Coppice:帮助整理你的想法 DarkModeBuddy:基于光线切换深色模式 走进微软成都 Office,聊一聊 Microsoft 365 HapiGo:符合国情的效率启动器 Eagle 2.0:数十项功能更新 + 数倍的性能提升 无需记账,通过更新余额了解自己有「多少资产」 Dato:支持日历和时区的菜单栏时钟 极具潜力的效率启动器 App,Raycast 脚本功能详解 Pixelmator Pro 2.0.2:增加新效果,支持 ProRAW Raycast:面向开发人员的效率启动器 Sorted:全新的 Mac 版本,原生支持 Apple Silicon App Store 和 Google Play 的 2020 年度 App 榜单 VSCO:全新的视频效果和拍摄模式 Pixelmator Pro 2.0:全新设计并支持 M1 芯片 Maipo 4:全功能新浪微博 macOS 客户端 Bartender 4:Mac 菜单栏定制工具 JSBox:适配并支持 iOS 14 小组件 Little Snitch 5:macOS 上出色的流量监控与防火墙应用 Photoshop:更多的 AI 创意工具 Capslox:文本操作快捷键增强效率工具 Airport:TestFlight 测试应用商店 Disk Drill 4:全新设计,支持 macOS 11 Big Sur OneWidget:小组件中的瑞士军刀 Todoist:新增看板视图 IFTTT Pro:合理的定价、全新的特性 PooPoo Privacy Policy QuakeSense Privacy Policy | 震感 App 隐私政策 ThenNow Privacy Policy | 今昔 App 隐私政策 LaunchBar 6.13:支持 macOS Big Sur 24 Hour Wallpaper:近百张 Mac 动态壁纸 简悦 2.0 阅读模式 + 标注系统 + 稍后读 绕过 App Store 付费,Setapp 采用新的 iOS 付费应用解锁策略 Noto 笔记:2.3 版本带来 10 余项功能更新 PliimPRO:让 Mac 一键进入演示模式 Pixelmator Pro 1.7:文字输入、画布旋转和 ML 超分辨率更新 Ulysses 20:新增导航面板和中文拼写检查 Mailbrew:新增 Inbox 集中订阅 Newletter Fluent Reader:免费跨平台 RSS 阅读器 Moment:高颜值 Mac 状态栏倒数日应用 Meeter:集中管理你的远程会议 Adobe Lightroom:新版带来了众多实用特性 WWDC:在 Mac 上观看 WWDC 直播和视频 LongWe:Mac 上的文本长图生成工具 Photoshop Camera:风格独特的艺术效果 Empoche:任务管理和时间追踪二合一 Camera+ 2:Magic ML 带来照片处理新魔法 Tuck:将窗口停靠在屏幕边缘 Wormhole:在电脑上操作 iOS 和 Android 设备 Coherence X:一键将网页转换为桌面应用 Charty:让快捷指令支持图表可视化 Edison Mail:又一款免费邮件客户端 Service Station:定制 Mac 右键菜单 WatchSmith:前所未有地个性化 Apple Watch Data Jar:为捷径设计的数据库
手把手教你制作一个「有爱」的 workflow 动作
huhuhang · 2017-03-25 · via HANG ♥ WRITING

如果你是以为「异地恋」患者,每天问候一下你的远程伴侣就变成了一件例行公事。比如说我(匿名作者),每天早上喜欢习惯性发一条短信给她。可能是一条很无聊的短信,提醒一下今天的天气和空气情况,送去一份小小的「温暖」。

当然,现在的 app 做的都很棒,你往往只需要通过自带的分享插件就可以将这些信息转发出去。但是,自己动手 DIY 的感觉还是很棒的嘛,所有我决定做一个 workflow,每天早上只需要点一下就可以搞定这件事情。

初步构思

想做一个一键发送问候短信的 workflow,首先得有两个模块,那就是「文本」和「短信发送」。其实,我也从来没有完整地将 workflow 里的每一个动作都浏览一遍。但通过猜想,「文本」动作可能包含 text 关键词,搜索之后果然有。同理搜索 message,也就找到了短信发送的动作。

找到这两个动作之后,首先在文本框填入你想发送的内容。其中,有些内容是固定不变的,有些是可变的。比如我这篇文章中要发送的天气和空气信息,每天都不一样。固定内容可以先直接输入,而变化的内容需要用 workflow 的 Variables 变量来控制。

从本例的实际情况来看,由于我习惯早上发短信,所以直接填入早上好。当然,你也可以通过 workflow 来实现根据当前时间自动填入「早上好」、「中午好」、「晚上好」等内容。我相信看完本文之后,自己就可以实现了。本文的三个变量 Nickname 称谓,比如:今天叫「小可爱」,明天得换一个,每天都一样会被发现的。weather 是天气信息,air 是空气信息。这些都是 workflow 里的Variables 变量。

获取天气信息

接下来是先获取天气信息,当然获取这些信息的操作是要放在上面动作之前的。天气信息从哪里获取呢?最好,最准确的方式是通过一些天气 API。听到 API 就头疼,不用担心,很简单。常见的天气应用都是通过购买 API 来保证服务的稳定性,由于个人的请求量不大,所以上网搜索一些公开的 API 就可以了。比如,我找到了一个 http://i.tianqi.com 提供的 API,它的请求链接是这样的。

http://i.tianqi.com/index.php?c=code&id=8&icon=1&py=city&num=1

你可以把这个链接粘贴到浏览器里看看返回了什么?是北京市当前的天气信息。仔细观察链接你就能看出想要返回自己城市的天气信息该怎么办了,答案是替换 city 的值。把 city 换成你所在的城市试一试,主要要用拼音。例如:

http://i.tianqi.com/index.php?c=code&id=8&icon=1&py=chengdu&num=1

上面的链接就返回了成都市的天气情况。city 支持中国所有的市/区/县,你可以输入所在区的拼音名称,获得更精准的天气。

接下来就是将 API 返回的信息变成你想要的内容。其实,大多数 API 会返回一种叫 JSON 的数据文件,它就是字符,可以直接插入到短信文本中。但是,很遗憾这里并不是。所以我们需要曲线救国。

思路:将返回的页面转换成 HTML 源代码,然后从中匹配关键字,替换为自己想要的文本内容。

这里使用到常用的 Get Contents of URL 获取网页内容,再通过 Make Rich Text from HTML 将源码转换为文本。如果你觉得思路有一些跳,可以单独放一个插件试一试会返回什么内容。

测试一下,通过这个 workflow 返回了如下图所示,我想要的天气文本内容。

这个时候,你可以直接将这段文本内容 Set Variable 插入到短信中。但是,你有没有感觉这段天气信息特别生硬,和 app 分享的内容没有什么区别。

这里我们通过文本替换,将内容变成自己的话叙述出来。用 If 条件来判别,包含「雨」字时,说明要下雨,你可以加一个 emoji 让内容活泼起来。

正常情况下,天气信息包含晴、阴、雨、雪等内容。你可以到网上查到这些信息,然后根据所在地实际情况设置条件即可。例如,海南几乎不存在下雪的可能,所以就无须设置匹配「雪」的条件。这就是文本替换的作用,它很灵活。设置完这一串条件,将最终输出使用 Set Variable 存为一个叫 weather 的变量即可。

获取空气信息

接下来就是获取空气信息。其实和天气信息一样,我们需要先找到一个可用的 API。有很多可用免费申请的服务,例如:aqicn.org 以及 pm25.in。你可以查看相应的说明,填写资料申请一个私有 AppKey。这两个服务都直接能返回 JSON 格式的数据,使用起来非常方便,参考天气信息获取方法就好了。

由于我需要的成都市空气信息在美国领事馆网站上也有提供,所以我准备直接采用了美领馆的数据。目前,美领馆只提供了北京/上海/沈阳/广州/成都五个城市的数据。本来我想通过和获取天气数据同样的方法,但是意外发现美领馆的数据竟然提供了 RSS 链接(成都市数据 示例)。于是,就换一种思路吧。

这里,我们使用到了 Get Items from RSS Feed 这个动作,填入 url 地址,只获取最新的一条数据。

然后查看到美国的空气质量分级表。

接下来,使用上面相似的 If 判断语句完成文本替换。仿照上文设置完这一串条件,将最终输出使用 Set Variable 存为一个叫 air 的变量。

需要的两个变量信息都已经有了,最后测试一下这个 workflow 试试看,大功告成。

小结

最近,随着苹果收购 workflow,让更多的人知道了这个强大而有趣的应用。本文主要是写给一些刚刚用上 workflow 的朋友,提供一个引导示例。当然,少数派已经有 JailbreakHum 写的一系列出色的 教程文章,以及许多 Matrix 作者的 个人分享。俨然已经成为了最大最全的中文 workflow 教程集中地。你现在要做的就是大开脑洞,亲自动手实现自己想要的 workflow 吧。这将会是一个非常有意思的过程。[^1]

[^1]: 本文所使用的 workflow 不提供公开下载,如果你仍然有不明白的地方,可以私信索取。