Protocol Launcher 系列:Beorg 高效任务管理的协议支持

在介绍了 Pyto 的协议集成后,今天我们将目光投向任务管理领域。如果你使用 Beorg 来管理日常任务和项目,那么 Protocol Launcher 能让你通过深度链接实现更高效的 workflow 集成。

作为追求效率的开发者或知识工作者,你可能经常遇到这些场景:

  • 在网页上看到有价值的信息,想一键添加到 Beorg 待办清单
  • 从其他应用(如 Shortcuts、Alfred)快速捕获任务到 Beorg
  • 在团队协作文档中嵌入链接,让成员直接打开特定文件或视图
  • 通过自动化流程搜索和过滤 Beorg 中的任务

现在,通过 Protocol Launcher,你可以以类型安全的方式生成 Beorg 深度链接,让任务管理变得更加流畅。


Beorg 与深度链接

Beorg 是一款强大的 iOS/iPadOS 任务管理应用,采用 Org 模式语法的纯文本文件来组织任务。它提供了丰富的 URL Scheme 支持,允许从外部应用触发捕获、搜索、查看议程等操作。

然而,手动拼接这些 beorg:// 协议链接需要记住各种参数格式和编码规则,而且缺乏类型提示,容易出错。


核心能力:全场景任务管理集成

Protocol Launcher 为 Beorg 专门提供了 protocol-launcher/beorg 模块,支持以下核心功能:

  1. 打开应用:快速唤起 Beorg 应用
  2. 捕获任务:添加新项目到 Beorg,支持标题、笔记、计划日期、截止日期等
  3. 搜索项目:在 Beorg 中搜索任务并返回 JSON 结果
  4. 显示议程:直接打开议程视图
  5. 显示任务:打开任务标签页,支持搜索过滤
  6. 查看文件:直接定位到特定的 Org 文件

快速上手

首先,确保你的项目中已安装:

bash 复制代码
npm install protocol-launcher

在代码中你可以根据场景选择两种导入方式:

  • 按需加载(通过子路径导入):支持 Tree Shaking,体积更小
  • 全量导入(从根包导入):写法更简单,但会引入所有应用模块
typescript 复制代码
// ✅ 推荐:按需加载 Beorg 模块
import { open, capture, search, showAgenda, showTasks, viewFile } from 'protocol-launcher/beorg'

// 也可以从根包导入,但会包含所有应用模块
// import { beorg } from 'protocol-launcher'

场景一:打开 Beorg 应用 (open)

最简单的用法,直接唤起 Beorg 应用:

typescript 复制代码
import { open } from 'protocol-launcher/beorg'

const url = open()

场景二:捕获新任务 (capture)

这是最常用的功能。你可以从任何地方快速添加任务到 Beorg:

typescript 复制代码
import { capture } from 'protocol-launcher/beorg'

// 捕获带有标题、笔记和计划日期的任务
const url = capture({
  title: '购物清单',
  notes: '买鸡蛋',
  scheduled: '2017-10-03',
  file: 'shopping',
})

// 捕获带有截止日期、模板和编辑选项的任务
const url = capture({
  title: '新项目',
  notes: '完成项目开发',
  deadline: '2017-10-10',
  template: 'Daily Review',
  edit: true,
})

注意: file 参数是文件名(不含扩展名),任务会被添加到对应的 Org 文件中。

场景三:搜索任务 (search)

在 Beorg 中搜索项目,并可选择回调 URL 来处理搜索结果:

typescript 复制代码
import { search } from 'protocol-launcher/beorg'

// 简单搜索
const url = search({
  search: 't bookmark',
})

// 带回调 URL 的搜索(用于 Shortcuts 自动化)
const url = search({
  search: 't bookmark',
  xSuccess: 'shortcuts://x-callback-url/run-shortcut?name=ProcessResults',
})

提示: 搜索结果会以 JSON 格式返回给 x-success 指定的回调 URL,包含 count(结果数量)和 items(结果列表)。

场景四:显示议程 (showAgenda)

直接打开 Beorg 的议程视图:

typescript 复制代码
import { showAgenda } from 'protocol-launcher/beorg'

const url = showAgenda()

场景五:显示任务列表 (showTasks)

打开任务标签页,可选择带搜索过滤器:

typescript 复制代码
import { showTasks } from 'protocol-launcher/beorg'

// 显示所有任务
const url = showTasks({})

// 显示带搜索过滤器的任务
const url = showTasks({
  search: 't bookmark',
})

场景六:查看特定文件 (viewFile)

直接定位到某个 Org 文件:

typescript 复制代码
import { viewFile } from 'protocol-launcher/beorg'

const url = viewFile({
  file: 'shopping',
})

为什么选择 Protocol Launcher?

  1. 类型安全与参数提示:TypeScript 的智能补全会确保你提供了正确的参数,避免拼接错误。
  2. 自动编码处理:库内部自动处理 URL 参数编码,确保生成的链接 100% 可用。
  3. 模块化设计:支持按需加载,构建工具只会打包你使用的代码,保持应用体积最小。
  4. 统一的 API 风格:与其他应用(VS Code、GitHub Desktop 等)保持一致的使用体验,学习成本低。
  5. 自动化集成友好:完美适配 Shortcuts、Alfred、Raycast 等自动化工具,让 workflow 更加流畅。

实战演示:构建自动化工作流

让我展示一个实际的使用场景:

typescript 复制代码
// 场景:从浏览器扩展捕获任务到 Beorg
import { capture } from 'protocol-launcher/beorg'

function captureFromBrowser(title: string, url: string) {
  const link = capture({
    title: `阅读:${title}`,
    notes: `来源:${url}`,
    template: 'Reading List',
    edit: true,
  })
  
  // 在浏览器中打开链接,唤起 Beorg
  window.location.href = link
}

// 使用示例
captureFromBrowser('Protocol Launcher 文档', 'https://protocol-launcher.huayi-data.com/')

结语

通过 Protocol Launcher,你可以将 Beorg 深度集成到你的日常工作流中。无论是个人任务管理,还是团队知识协作,它都是连接 Web 应用与本地任务管理器的优雅桥梁。


🔗 相关链接

相关推荐
icc_tips11 小时前
Flutter runAppAsync() 详解:干净的异步应用启动
前端·flutter
转转技术团队11 小时前
AI新名词比我头发掉得还快
前端
Lkstar11 小时前
Pinia 进阶:Setup Store、插件系统与状态持久化,一篇全搞懂
前端·vue.js
yzin11 小时前
cjs 和 esm 的差异总结&最佳实践
前端·javascript
Aolith11 小时前
手机端刷新总是 404?你需要知道 SPA Fallback 规则
前端·vue.js
Csvn11 小时前
前端技术 - 低代码平台
前端
2501_9419820511 小时前
通过 API 实时监听企业微信外部群变更事件并同步本地数据库
android·自动化·企业微信·rpa
Maimai1080811 小时前
Zustand 项目落地:从全局状态、Store 拆分到真实业务封装
前端·react.js·前端框架·状态模式
小小前端仔LC11 小时前
Node.js + LangChain +React:搭建个人知识库(四)- 把向量和文件切块存入mysql中
后端·node.js
zyl8372111 小时前
RDKit.js + Vue3快速上手
javascript·vue.js·ecmascript