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

推荐订阅源

Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
L
LangChain Blog
博客园 - 司徒正美
G
Google Developers Blog
博客园 - 【当耐特】
GbyAI
GbyAI
月光博客
月光博客
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
D
Docker
MongoDB | Blog
MongoDB | Blog
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
博客园 - 聂微东

少数派

派早报: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 - 少数派
利用 Obsidian 插件和快捷指令快速添加阅读记录 - 少数派
2024-06-04 · via 少数派

新点子

今年 2 月份的时候在我派发表了第一篇文章重新梳理我的阅读待办清单,到今天忙忙碌碌也读了不少文章,为了方便自己回顾和总结读过的内容,我希望能在每次阅读完成后快速形成阅读记录,主要的需求有三点:

  • 每次添加新记录时自动插入到同一个文档的最上方;
  • 每次添加新记录时自动生成「时间」「文章名称」「文章链接」;
  • 使用不同的 App 阅读时,都能获取信息并添加记录,对我来说主要是 Safari 浏览器、Reeder 和微信读书。

成果展示

经过一个下午的鼓捣,我利用 Obsidian 插件结合 macOS 快捷指令搭建了一套能快速添加阅读记录的流程。

整个添加的过程如下面的动图:

最后形成的记录如下图:

实现过程

整个实现过程可以拆解为两步:

获取文章的名称和 URL

我自己目前阅读文章时使用的 App 主要是 Safari 浏览器、Reeder 和微信读书。
从浏览器获取信息是最简单的,先从 Safari 开始。这里我借助了快捷指令直接获取网页的名称和 URL,以 Markdown 格式拼接后拷贝到剪贴板上,如下图:

Reeder 和微信读书虽然无法直接获取文章名称和 URL,但是可以分享文章的链接。于是利用快捷指令获取分享的链接并在浏览器打开,再重复执行上面的快捷指令即可,如下图:

部分网页打开速度较慢,因此需设置等待 2 秒钟之后再执行接下来的快捷指令

至此,我们已经可以从 Safari、Reeder 和微信读书拿到文章的名称和 URL,拼接成 Markdown 格式,并粘贴到剪贴板。

在 Obsidian 中添加记录

有了文章的名称和 URL 信息后,接下来就需要在文档中添加记录。

首先需要用到 Obsidian 的第一个插件:QuickAdd。这个插件的作用是在指定的文档中插入记录,并添加时间信息。

QuickAdd 插件本身有多种功能,选择「Capture To(捕获)」功能创建新的指令并命名为「Reading」具体的设置项可以参考下图:

创建完成后,每次执行这个指令时,就会在「阅读记录」文档的最上方添加一条新的记录。

第二个要用到的 Obsidian 插件是 Advanced URL。这个插件的作用是为上面添加的指令生成一个全局性的链接,以便在快捷指令中调用,将第一步和第二步串联成完成的流程。

搜索并执行 Advanced URL,就可以获取到「Reading」指令的全局链接:obsidian://advanced-uri?vault=你的仓库名称&commandid=quickadd%253Achoice%链接信息。参考下面的动图:

接下来需要在之前的快捷指令中添加打开全局链接的操作:

在最后添加「运行 Shell 脚本」操作并填入:open "全局链接"。(注意两者间有个空格)

这样就完成了全部流程的设置。

一点补充

可以为快捷指令添加全局快捷键,这样在 Safari 浏览器上阅读文章时,就不用手动点击分享按钮打开快捷指令。我是通过 raycast 来设置了全局快捷键。但是在 Reeder 或者微信读书上阅读时,仍然需要手动点击。

快捷指令中的「运行 Shell 脚本」无法将上一步的结果作为参数传递过去,因此只能先拷贝到剪贴板,再粘贴到 Obsidian 的输入框中。

dataview 的 js 代码如下,凭借我粗浅的理解加上 AI 的协助居然成功了,不得不说 AI 是人类之光:

const page = dv.page("阅读记录. md"); 
const content = await dv.io.load(page.file.path);

// 正则表达式
const regex = new RegExp(`(- (?<date>\\d{4}-\\d{2}-\\d{2}) (?<time>\\d{2}:\\d{2}) \\[(?<name>[^\\]]+)\\]\\((?<link>[^\\)]+)\\) #(?<tag>[^\\s]+))`, 'gm');

// 存储匹配结果的数组
const matchesArray = [];

// 执行匹配并收集结果
let match;
while ((match = regex.exec(content)) !== null) {const { groups: { date, time, name, link, tag} } = match;
    matchesArray.push({date, time, name, link, tag}); // 将匹配信息作为对象推入数组
}

dv.table(["date","time","name","tag","link"],
  matchesArray.sort(b => b.date,"asc")
      .map(b => [b.date, b.time,b.name, b.tag, b.link])
);

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀