先聊点实际的。Memos 这个开源笔记工具,我部署起来之后最大的感受是:网页端写得再好,也挡不住“想记的时候手边没有入口”这个硬伤。碎片化记录这件事,拼的就是你从“想记”到“记下来”之间那几秒。后来我把 iOS 的 Shortcuts(快捷指令)和 Memos 的 API 接起来,才真正体会到什么叫“顺手”——在分享菜单里点一下、对着 Siri 说一句、甚至在主屏幕点个像原生 App 一样的图标,内容就进 Memos 了。这篇文章就把我整理出来的这套玩法完整拆开,从 API 原理到快捷指令的每一步配置、从避坑经验到进阶玩法,全部讲透。
如果你自己搭过 Memos,或者正在用 Flomo、Notion 这类工具但想要一个数据完全自控的碎片记录库,又或者你只是想把 iPhone 的快捷指令用得更聪明一点,这篇文章都值得看完。不需要会写代码,但我会尽量把背后的逻辑讲清楚——这样你以后想改成自己的域名、加自己的参数,不会被卡住。
1. 为什么是 Memos 加快捷指令
1.1 Memos 的定位和移动端痛点
Memos 是一款自托管的碎片化笔记服务,中文圈里常叫它“自建 Flomo”。它主打的是极简记录、时间线浏览、标签聚合,数据全在自己手里,部署方式也简单,一个 Docker 容器就能跑起来。很多人选它就是因为“快”——页面轻、打开就能写,不像完整笔记软件那样要先建文档、再想存到哪个目录。
但问题恰恰出在“快”上。Memos 本质上是个 Web 应用,你在电脑上浏览器里用没问题,可一旦离开电脑,掏出手机打开 Safari、输入域名、等页面加载、找到输入框,这套流程下来,记录冲动已经凉了一半。尤其像我这种拿它当灵感收集箱用的人,走路时、地铁上、刚躺下的时候,想记的东西往往只有一句话,结果被操作路径劝退。
PWA 模式能缓解一部分问题,把网页添加到主屏幕后确实像半个 App。但距离“顺手”还是差一截:你不能从任意 App 的分享菜单直接扔内容进去,不能直接喊一句 Siri 就记录,也不能做定时汇总。而这些,恰好是快捷指令的强项。
1.2 快捷指令能补齐哪些场景
iOS 的 Shortcuts 本质是一个可视化的自动化引擎,它能把“接收输入、调接口、处理文本、发通知”这些动作串成一个流程,而且系统级集成了很多入口:主屏幕图标、分享菜单、Siri 语音、锁屏快捷按钮、自动化触发。
把它和 Memos 的 API 接起来之后,我能做到的事情包括:
- 在 Safari、知乎、微信读书里看到一段好内容,分享菜单里点一下“存入 Memos”,正文和链接自动拼接好送进去。
- 对着手机说“记一笔:明天记得带身份证”,Siri 就会听写并调用快捷指令写入 Memos,返回成功通知。
- 主屏幕放一个图标,点开就能输入一句话,像是给 Memos 装了个原生客户端。
- 配合“个人自动化”,每天早上把昨天的碎片记录汇总成一条短报,推到自己面前。
这些场景没一个需要打开网页,也没有第三方 App 中转,数据直连你自己的服务器。核心逻辑其实就是两件事:把内容准备好,用 HTTP 请求打到 Memos 的 API 上。一旦你把这条链路看懂了,剩下所有玩法都是在这个基础上加料。
2. 前置准备:理解 Memos API 和 Token
2.1 先确认你的 Memos 版本和访问地址
动手之前,有几件事必须先确认,不然后面排查会让你怀疑人生。第一,Memos 服务的版本。不同版本的 API 路径有细微差别,主流版本(0.20 以后)使用的是/api/v1/memo这个路径,更老的版本可能是/api/memo。你可以在 Memos 页面的设置里看到版本号,也可以直接访问你的域名/api/swagger.json,里面写了当前实例支持的完整接口文档,这个是最准的。
第二,访问地址必须是手机能连通的。如果你用的是 NAS 上的内网 IP,那手机在同一 Wi-Fi 下没问题;如果你在外面也想用,最好用带 HTTPS 的域名。这一点很关键,因为 iOS 的快捷指令对自签名证书和纯 HTTP 地址非常不友好,后面我会专门讲这个坑。
第三,确认你登录 Memos 的账号有 API 访问权限。自托管服务默认管理员账号肯定有,普通用户一般来说也有,但如果你改了权限配置,记得先验证一下。
2.2 获取 API Token
Memos 的 API 用的是 Bearer Token 认证,通俗讲就是你拿一个专属令牌去换数据访问权。获取方式很简单:登录 Memos 网页端,进入“设置 → 我的账户”,找到“API Token”区域,点创建或者复制,会得到一串很长的随机字符串。
这里要提醒一句:这串 Token 等同于你账号的钥匙,只要拿到它就能代替你发布内容、读取数据。所以不要把它写进公开的快捷指令分享链接里,也不要在截图里随手发出去。我自己的习惯是单独建一个“API 专用”的共享方式,只在可控设备上使用。
2.3 API 请求的核心结构
要往 Memos 里写一条内容,核心请求长这样:
curl -X POST "https://你的域名/api/v1/memo" \ -H "Authorization: Bearer 你的Token" \ -H "Content-Type: application/json" \ -d '{"content":"你好,Memos","visibility":"PRIVATE"}'解释一下几个要素:
- 请求方法
POST:表示向服务器提交一份新数据,对应“创建一条 Memo”。 Authorization请求头:固定写法是Bearer加空格加你的 Token,服务端靠它识别你是谁。Content-Type:告诉服务器请求体是 JSON 格式。- 请求体里
content是正文内容,visibility是可见性,三个可选值是PRIVATE、PUBLIC、PROTECTED,分别对应“仅自己可见”“所有人可见”“登录用户可见”。
如果你只想发文字,用这几个字段就足够了。也就是说,快捷指令里真正要做的,无非就是把输入的内容放进content字段,再把请求发给服务器。
2.4 先拿电脑验证一遍
我强烈建议你在手机上配置快捷指令之前,先拿电脑跑一次上面的 curl 命令,或者用 Postman、Apifox 这类工具测一遍。因为如果电脑上都请求不通,那问题大概率出在服务器或 Token 上,和快捷指令无关;如果电脑能通但快捷指令不行,那是快捷指令配置的问题。这样排查范围一下就缩小了。
我第一次实践时跳过了这步,直接在快捷指令里反复试,一会儿怀疑是 URL 写错了,一会儿怀疑是 Token 没复制全,折腾了半小时才发现是服务器版本旧、API 路径不同。先用 curl 五分钟能搞清楚的事,别用手机盲试。
3. 手把手配置第一个快捷指令
3.1 新建快捷指令并确定输入来源
打开 iPhone 上的“快捷指令”App,点右上角的+新建。第一个要确定的不是具体动作,而是这个快捷指令从哪里拿内容。最简单的场景是“手动输入一句话”,这时候你不需要额外处理输入源,直接添加文本输入框或者依赖后续的“要求输入”动作就行。
但如果你的目标是“从分享菜单调用”,那就要先设置快捷指令在共享表单中的显示方式。操作路径是:在快捷指令列表页点这个新建指令的...详细信息,打开“在共享表单中显示”,然后在快捷指令编辑器里把第一个动作选为“输入快捷指令的信息”。这样当你在 Safari 里选中一段文字、在相册里选中一张图片、在任意 App 里点分享时,这个快捷指令就会出现在菜单里,并把当前内容自动作为输入传进来。
3.2 配置请求 URL 和请求方法
往下添加“获取URL内容”动作,这是整个链路的核心。在 URL 这一栏填:
https://你的域名/api/v1/memo接着把“方法”从默认的 GET 改成POST。为什么是 POST 而不是 PUT 或 PATCH?因为 RESTful 接口的语义里,POST 对应的是“在集合上新增一条资源”,而 PUT 一般是对已有资源整体覆盖。换句话说,我们每次都是往 Memos 里“追加”一条记录,POST 是语义最正确的选择,Memos 的 API 文档也是这样定义的。
3.3 设置请求头和请求体
在“获取URL内容”动作上展开“请求头”选项,添加一个字段:
- 名称:
Authorization - 文本:
Bearer 你的Token
注意Bearer后面有一个空格,很多 401 错误就是这里少了空格。再添加一个请求头字段:
- 名称:
Content-Type - 文本:
application/json
接下来是最关键的一步——请求体。点击“请求体”选项,选择“JSON”,而不是“表单”或“文件”。选 JSON 之后,快捷指令会给你一个可视化的字段编辑器,在这里添加两个字段:
- 键:
content,类型选择“文本”,值设置为“快捷指令输入”这个魔法变量(如果你第一个动作就是输入快捷指令的信息,这里会直接出现)。 - 键:
visibility,类型选择“文本”,值填PRIVATE。
这里有个我踩过的坑:不要手动用“文本”动作去拼一个 JSON 字符串。因为当内容里包含换行、引号、反斜杠时,你必须搞 JSON 转义,而快捷指令里的字符串拼接很容易坏。用内置的 JSON 编辑器,快捷指令会帮你正确序列化,中英文、换行都能稳定传输。
3.4 添加结果提示和调试输出
请求发出之后,最好加一个“显示通知”或“显示结果”动作,不然你根本不知道成没成功。我习惯在初期调试时用“显示结果”,内容是“获取URL内容”的响应文本。如果返回的 JSON 里有id字段,说明创建成功;如果返回错误信息,直接就能看到原因。
配置完大致是这个流程:
- 文本输入(或输入快捷指令的信息)
- 获取URL内容:POST到Mem API,带请求头和JSON请求体
- 显示结果:查看响应
- 显示通知:成功提示
3.5 添加到主屏幕当 App 用
调通之后,想让这个快捷指令更好用,就在编辑页右上角...里选“添加到主屏幕”。系统会生成一个像原生 App 一样的图标,名字可以起成“记一笔”或者“灵感”,图标颜色自己选。点开之后输入一句话,几秒内回一条通知,这个体验已经非常接近一个真正的记录 App 了。
我在这一步的体会是:快不快,决定了你愿不愿意长期用它。如果每次点开还要等快捷指令动画两三秒,你可能就会放弃。所以我会把不必要的“获取当前时间”这类轻量动作放进去,但不会加选择菜单、多级分支这种拖慢速度的东西。保持简单,才用得久。
4. 进阶玩法:让记录入口无处不在
4.1 分享菜单接手网页正文和链接
只手动输入文字还不够香,真正高频的场景是“看到一篇文章,想把链接和标题存下来”。配置“在共享表单中显示”之后,快捷指令能在 Safari 的分享面板里直接收到网页 URL。但默认情况下,它收到的是一个URL对象,直接塞进 JSON 字段时快捷指令会转成字符串,效果一般是没问题的。
如果你想同时记录网页标题和链接,可以多加一个动作:“获取URL内容”去请求这个链接的元信息?这个有点重。更轻量、更稳的做法是:在分享菜单里用“输入快捷指令的信息”拿到链接,然后用“生成URL”或者“从输入中获取URL”的动作处理,最后用“文本”动作拼出你要的格式——比如【网页标题】链接。快捷指令里有个“获取URL名称”的动作,可以提取网页的标题,配合起来非常实用。
我之前在微信读书里看到一段划线想存档时,分享出来的内容往往是一段纯文本加书名,这种直接走“输入快捷指令的信息”就能原样入库,比想象中省事。
4.2 剪贴板一键入库
有些 App 不支持分享菜单,比如某些阅读器里只能复制。针对这种情况,可以做一个独立的快捷指令:动作就是“获取剪贴板”,然后把你对剪贴板内容做一点清洗(例如去掉多余空白行),再走同样的“获取URL内容”写入流程。
你甚至可以把两个场景整合到一起:快捷指令先判断“是否有输入”,有输入就用输入,没输入就取剪贴板。判断逻辑用快捷指令的“如果”动作实现,编辑界面里也不复杂。这属于“常用入口合并”的典型做法——减少快捷指令的数量,不然你的列表会越攒越乱。
4.3 语音唤起是碎片记录的最快路径
我在实践里最惊喜的场景其实是 Siri。给快捷指令起一个好念的名字,比如“记一笔”“放到备忘录”,然后直接对 Siri 说“记一笔:明早九点开会”,Siri 就会自动调起快捷指令,并通过“听写文本”动作把语音转成文字,再进入“获取URL内容”的写入流程,最后用“显示通知”反馈一句“已记录”。
语音方案的魅力在于:你甚至不需要点亮屏幕。地铁上、走路时、躺床上,喊一句话就完成了记录。快捷键里加听写文本动作的方式很简单,就是在“获取URL内容”之前加一个“听写文本”,语言选中文。
需要注意的一点是:Siri 对快捷指令名称的识别不总是准确,起名时尽量避免生僻词、连读容易错的词。名字越简单越大众,唤醒成功率越高。比如“记一笔”就比“墨墨记”好用得多。
4.4 自动附带时间和来源标签
记录入库只是第一步,后续检索才是大问题。Memos 支持 Markdown 和标签,我在写入 content 时通常会在开头拼上时间和来源,这样时间线上看起来一目了然,搜索也好筛。
具体做法是:在“获取URL内容”之前加“当前日期”动作,把格式设为yyyy-MM-dd HH:mm,然后在“文本”动作里拼接:
【2025-06-01 22:10】来自微信公众号:Memos 是一个极简的笔记工具再把这个“文本”的输出作为 JSON 请求体里content字段的值。快捷指令里这个组装动作很直观,就是“文本”动作里拖入日期变量、来源变量和正文内容,最后输出一个完整字符串。
4.5 在 iPad 和 Mac 上同步使用
快捷指令不只属于 iPhone。同一个 iCloud 账号下,快捷指令会自动同步到 iPad 和 Mac。Memos 网页端在电脑上虽然已经够用,但有时候你不想切到浏览器标签,直接在菜单栏或快捷键里调一个快捷指令也挺香。
macOS 的快捷指令可以在菜单栏里固定,甚至分配键盘快捷键。你可以做一个“随手记”快捷指令,绑定Ctrl+Alt+M之类的快捷键,在任何应用里按一下,弹窗输入一句话就进 Memos。这在写文档、开会记要点时效率很高。
我还发现一个实用技巧:Mac 上如果你正在用 Xcode 或其他全屏应用,切到浏览器成本高,但用快捷键唤起快捷指令输入弹窗,整个过程不超过两秒。“入口够近”才是记录工具的灵魂,平台不是限制。
5. 常见坑与排查实录
5.1 错误码速查表
我把自己用快捷指令接入 Memos 时遇到过的典型问题整理成了表格,你照着排查大概率能定位到问题:
| 现象 | 常见原因 | 解决办法 |
|---|---|---|
返回401 Unauthorized | Token 错误、过期,或 Authorization 头部缺了 Bearer | 重新复制 Token,检查Bearer和 Token 之间有一个空格 |
返回404 Not Found | API 路径不对,版本过旧或新路径迁移 | 访问/api/swagger.json确认实际路径,老版本改用/api/memo |
返回400 Bad Request | JSON 格式错误,或 content 字段值为空 | 用快捷指令内置 JSON 编辑器重建请求体,确认 content 字段引用了正确的变量 |
| 请求一直转圈最后失败 | 服务器地址不通、HTTPS 证书问题、服务器没启动 | 先确认手机 Safari 能正常打开 Memos 页面;如果是自签名证书,换成有效证书 |
| 中文乱码 | 使用了字符串拼接 JSON 的方式,特殊字符未转义 | 改用 JSON 编辑器传字段,不要手写 JSON 字符串 |
| 快捷指令无法在分享菜单里看到 | 未开启“在共享表单中显示” | 在快捷指令详情页打开该开关,并确认第一个动作是“输入快捷指令的信息” |
5.2 自签名证书和 HTTP 地址的坑
这个方法是最容易让人卡住的。我最初在本地 NAS 上用 IP 加端口部署 Memos,快捷指令请求时 IOS 直接抛错,提示“无法连接到服务器”。原因就是 iOS 点名要求 HTTPS,且对自签名证书基本不信任。
解法有两个思路:
- 如果你有域名,用 Nginx 或 Caddy 反代 Memos,加上 Let's Encrypt 免费证书。这是最正规的做法,也方便在外面用。
- 如果你只想局域网内用,可以用 iOS 设置里安装描述文件来信任自签名证书。但快捷指令对描述文件里标记的证书信任度并不完全可控,实测下来体验不稳定,我不推荐选这条路。
如果你的 Memos 跑在国内云服务器上,备案和 HTTP 域名使用限制属于服务器体系的一部分,这会影响你的最终方案。但从 iOS 快捷指令的角度看,结论很简单:给 Memos 套一个有效的 HTTPS 域名,所有网络错误都会少一半。
5.3 图片上传为什么我选择绕过
很多人会问:能不能用快捷指令往 Memos 传图片?理论上可以,Memos 提供了资源上传接口,但快捷指令处理图片上传麻烦得多。它需要你先把图片转成 Base64,塞进 JSON,再组装出正确的资源类型、尺寸、文件名,然后走一个单独的/api/v1/resource请求,最后还要把资源和 Memo 关联起来。这套流程我自己试过,一是 iOS 快捷指令转 Base64 对大图片会卡顿,二是不同 Memos 版本对这个接口的行为有差异,非常不稳定。
我的建议是:文字和链接交给快捷指令,图片走 Memos 的 PWA 添加到主屏幕后的上传按钮,两分钟的事。工具各有各的擅长区,非要用快捷指令搞定一切,反而会把最核心的“快速记录文字”体验拖累。这不是技术上限,而是体验取舍。
5.4 Token 被别人看到怎么办
快捷指令是明文存储 Token 的,如果你把做好的快捷指令分享到社区,相当于把 Token 公开了。虽然别人不知道你的服务器地址,但你如果顺手把 URL 也一起分享了,那就等于把你的 Memos 完全暴露了。
处理方式分几种。如果你共享的快捷指令只是为了展示,把请求改成不支持实际运行的状态,或者用占位符写 Token 位置。如果你确实想让别人也能用,那你的 Memos 服务需要有登录注册开放能力,别人填自己的 Token 才能用——此时你的示例截图里千万不要带自己的真实 Token。
我自己的习惯是给每个快捷指令单独建一个只读或仅新增的 Token,虽然 Memos 的 Token 没有细粒度权限控制,但定期去“设置→我的账户”里轮换 Token,能有效降低泄露影响。这也算给自己上了一份保险。
6. 我的个性化模板和扩展想法
6.1 一个可以直接抄的“顺手记”模板
分享一个我日常用最多的快捷指令配置,你可以根据自己的习惯微调:
- 接收“快捷指令输入”,类型不限。
- “当前日期”,格式设为
yyyy-MM-dd HH:mm。 - “文本”,内容拼接为:
【{日期}】{快捷指令输入}。 - “获取URL内容”——URL 填
https://你的域名/api/v1/memo,方法POST,头部带Authorization: Bearer 你的Token和Content-Type: application/json,请求体 JSON 里content选“文本”的输出,visibility选PRIVATE。 - “显示通知”,标题“已完成”,正文“已存入 Memos”。
这个模板只有五个动作,跑起来很快。你可以在快捷指令 App 的编辑页把它做成模版,下次直接复制修改。
6.2 自动化的想象力:NFC 标签和晨间回看
快捷指令的尽头是自动化。我后续做了两个比较满意的扩展:
第一个是 NFC 标签触发。我在书桌、床头各贴了一个 NFC 贴纸,手机碰一下唤醒“记一笔”输入弹窗。这个动作比亮屏解锁再点 App 快得多,尤其适合睡前突然有想法时,手机锁屏状态碰一下就能进入输入界面,非常自然。
第二个是晨间回看。用快捷指令的“个人自动化”——每天上午 8 点执行一次,调用 Memos 的 GET 接口,把前一天记录的内容拉出来,拼接成一条简单的摘要,通过通知推给自己。GET 接口的做法和写入类似,只是 URL 加上了查询参数,你可以用/api/v1/memo?limit=10拉最近几条,然后在“文本”动作里拼成一句话。当然,这个玩法需要你对 API 返回的 JSON 结构有基本理解,但用“获取URL内容”的响应文本直接显示也能用,不用写代码。
6.3 后续还可以往哪走
如果你对这个链条有兴趣,后面可玩的方向其实很多。比如用快捷指令做一个“一键生成今日工作总结”的流程,把所有标签和时间范围组合起来;或者把 Memos 的公开接口和你的个人网站、博客打通,作为灵感输入源;甚至可以利用快捷指令的“等待”动作做定时提醒式记录。
我自己还没做但很想做的一个方向,是把 Memos 的语音输入接进 CarPlay 的快捷指令,开车时想到什么就直接说一句,让系统记录到 Memos,本质上就是给车加一个“灵感收集器”。
这个项目最让我满意的地方,不是它多酷,而是它让记录行为真正贴合了我的生活节奏。工具链的价值不在于功能多,而在于它能否在你最需要的那个瞬间,以最小摩擦出现在你面前。快捷指令和 Memos 的结合,恰恰满足了这一点。