夜航船夫

Obsidian随机生成读书笔记

Obsdian_Random_Note

现在阅读,以多看和微信读书为主,在阅读过程中会做笔记。已经把这些笔记都变为 Markdown 文件统一用 Obsidian 管理起来,希望可以把其中标记出需要复习的内容,每天随机生成,便于复习巩固。

Roam Research 有一个插件叫 Roam42,可以随机生成指定标签的笔记到新的笔记中,以便于复习。之前在推特上看 @Jiayuan 就是用这种方式管理笔记的,非常羡慕这个功能。

后来经过摸索,发现 Dataview 可以在 Obsidian 中使用 JS 实现所有自己想要的效果,包括随机生成笔记复习这件事。我写了一个代码片段,可以随机生成 3 个带指定标签的读书笔记段落。

具体代码块如下,term 表示标签名 #Quote,ranNum 表示随机数 3,可以根据自己的需要修改。将以下内容粘贴至笔记中,预览。拖动 Banner 可以重新生成随机笔记。

```dataviewjs
// 设定随机笔记标签关键词
const term = "#Quote"; 
const files = app.vault.getMarkdownFiles(); 
// 遍历所有文件,收集带关键词的行 + 文件名 
const results = []; 
// 设定踢除规则1:当前脚本所在文件
const currentFilePath = dv.current().file.path;
// 设定踢除规则2:文件名包含在 excludeText 字段中,全部排除 
const excludeText = ["",""];
const arr = files.map(async (file) => { 
    // 执行踢除规则
    if (file.path === currentFilePath || file.basename.includes(excludeText)) return;
    const content = await app.vault.cachedRead(file); 
    const lines = content.split("\n").filter(line => line.contains(term)); 
    
    lines.forEach(line => { 
        results.push({ 
            text: line.trim(), 
            fileName: file.basename, // 文件名(不带后缀) 
            path: file.path // 文件完整路径 
            }); 
        }); 
    }); 
    Promise.all(arr).then(() => { 
        if (results.length === 0) { 
            dv.paragraph("未找到带 #Quote 的内容"); 
            return; 
        } // 随机抽取 3 条 
    const ranNum = 3; 
    const shuffled = [...results].sort(() => 0.5 - Math.random()); 
    const selected = shuffled.slice(0, ranNum); // 输出:内容 + 双链文件名 
    selected.forEach(item => { 
        dv.paragraph(`${item.text}  ——[[${item.fileName}]]`); 
        }); 
    });

其他更多更详细的功能可以看知乎上的一个全面解读 Dataview 编写的教程 。

Obsidian 系列文章


  • 2026.9.16 update:随机笔记 Dataview 脚本增加笔记文件名显示。

相关文章

国庆出行感受

国庆假期,带家人自驾去了一趟山东烟台、青岛,四大一小,主要是看海景,听演唱会。分享一下感受: 1 、高速:担心路上会堵车,9.30 请假一天,早上 8 点出发,江浙沪一路自驾到山东烟台,1060 公里。除了长江大桥堵了一段,其他路段畅通。过…

读书笔记管理体系

平时主要使用微信读书,看书过程中会进行划线和评论。完成后,习惯性导出笔记整理,不定期重看。否则,过不了多久,看书过程中产生的灵感、看到的金句在脑海里都会丢失,有时候甚至为了找一本书里写过的一句话,费老鼻子劲,有点像找房间里的东西,你知道它在…

Apple Watch Setup

现在有一只 Apple Watch SE 3 (GPS),星光色,配的米兰尼斯表带,44 寸手腕大小刚好,主要用于健康追踪。目前戴了 9 个月,分享一下 Apple Watch 的 Setup 。 #表盘表盘我选用的是模块化表盘,表盘上有更…

评论

评论加载中…