QuickAdd 个人使用总结

QuickAdd 作为 Obsidian 的一个流行插件,可以将常见操作、脚本、模板打包为一个便捷的命令,功能上限极高,但需要一定的学习成本,不过也有很多简单有效的功能可直接参考他人的示例(比如一键抓取豆瓣图书信息,并根据模板生成笔记)

项目地址
官方文档

QuickAdd 包含三种基本工具,并可以进行任意组合(Multi choices 用于多工具的层级管理):

  • 模板 <strong>Template</strong> :对 Obsidian 已有模板功能的增强;支持文件名格式(自动化)、指定文件夹、链接追加、创建后自动打开等功能
  • 采集 <strong>Capture</strong> :快速采集手动写入的信息并保存。比如每日笔记、工作日志、待读和稍后观看列表等;支持丰富的格式语法,指定文件夹,指定标签,考虑子标题(Consider subsections)
  • 宏脚本 <strong>Macros</strong>:功能强大,支持 Javascript 编程语言和 Obsidian 函数的全部功能,并且可以和以上的所有功能(也包括Obsidian及其插件提供的API)打通

其他官方文档信息:常见案例AI 助手QuickAdd API宏脚本设置

1 示例:解析文本中的GitHub地址

功能:解析文本中的GitHub地址的趋势,并转为markdown格式的图片链接

首先,创建新的宏脚本(Add macro),内容如下:

  • 第一步使用原生命令,将选择的文本进行复制
  • 第二步激活脚本,解析剪切板中内容并将函数处理的结果传入剪切板
  • 第三步等待 100ms(防止异步函数计算时,出现卡顿的情况)
  • 第四步使用原生命令,将剪切板的文本进行粘贴

具体的编程脚本get_github_trending内容如下:

const notice = (msg) => new Notice(msg, 5000);

module.exports = {
    entry: parseGithubInfo,
    settings: {
      name: "GetGithubTending",
      author: "Dapeng.W",
    },
  };

let QuickAdd;

async function parseGithubInfo(params) {
    QuickAdd = params;
    const query = await QuickAdd.quickAddApi.utility.getClipboard();
    // 正则表达式匹配Github项目链接,包括Markdown格式的链接和纯链接
    const githubUrlPattern = /https:\/\/github.com\/([^\/]+)\/([^\/\)]+)/;
    const matchResult = query.match(githubUrlPattern);
    if (matchResult) {
        // 获取用户名和项目名
        const username = matchResult[1];
        const repository = matchResult[2];
        // 创建Star History Chart的API链接
        const starHistoryChartUrl = `https://api.star-history.com/svg?repos=${username}/${repository}&type=Date`;
        await QuickAdd.quickAddApi.utility.setClipboard(query+`

![Star History Chart](${starHistoryChartUrl})`);
}
    // 如果输入的文本中没有Github项目链接,进行提醒(debug时使用)
    // notice(query);
    // throw new Error("未解析到GitHub地址");
}

最后保存刚刚创建的宏脚本,然后在初始设置界面,选择macro类别并点击Add Choice,然后选择刚刚创建的宏脚本,实现快捷命令的注册。

使用步骤:选择文本后激活相关的快捷命令(可配置快捷键,也可以使用ctrl+P检索命令)

最终效果:自动在文本后面添加相关GitHub地址的Trending超链接

2 个人推荐的第三方脚本

2.1 单击重命名小标题防止双链断裂

步骤说明:

  1. 构建新的 Macro,并进行配置,先添加 50ms 的等待(add wait command
  2. 再点击 add Capture Choice 并进行 Capture 的添加和配置
  3. Capture 的配置细节 1:在 File Name 项随便选择一个 MD 文件
  4. Capture 的配置细节 2:激活 Capture format 并填入下方的 js 内容
  5. Capture Manager 中勾选 run on plugin load ,最后激活 Macro
function uniEv(item, type, func) {
    item.ev && item.removeEventListener(type, item.ev)
    item.ev = func; item.addEventListener(type, item.ev)
}
function uniReg(str, func, isVault) { let place = isVault ? app.vault : app.workspace
    place._[str].map(ev=> String(ev.fn) == String(func) && place.offref(ev))
    app.plugins.plugins.quickadd.registerEvent(place.on(str, func))
}; let headRN = ()=> { Array.from(document.querySelectorAll('.cm-header'))
    .filter(p=> !p.classList.contains('cm-formatting'))
    .map(ele=> uniEv(ele, 'click', ()=> app.commands.executeCommandById('editor:rename-heading')))
}; uniReg('file-open', headRN, 0); uniReg('modify', headRN, 1)

参考:单击重命名小标题防止双链断裂

往年同期文章