关于 todoist-rs
通过 Todoist REST API 管理 Todoist 的 Rust 客户端技能,支持任务和项目操作、筛选器、提醒、标签及生产力统计,可用于自动化任务工作流。
主要功能
- 01创建、读取、更新和删除任务
- 02管理项目与标签
- 03使用筛选器查询任务
- 04设置截止日期和提醒
- 05获取 Karma 与活动统计
适用场景
- 01根据请求添加任务
- 02按日程查看逾期任务
- 03将 Todoist 项目与其他工具同步
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill todoist-rs安装后在 Claude Code 中输入/todoist-rs确认已加载。
详细介绍
todoist-rs
用途
此技能可通过基于 Rust 的客户端与 Todoist API 交互,以编程方式管理任务、项目、标签、筛选器、提醒和 Karma。将其与 Todoist 的 REST API 集成,可实现生产力工作流自动化。
适用场景
可将此技能用于基于 GTD 的任务管理,例如根据用户查询添加任务、与其他工具同步项目,或通过 API 调用处理提醒。适用于需要自动化的场景,例如每日任务回顾,或为生产力应用设置 IFTTT/Zapier 触发器。
主要功能
- 对任务执行 CRUD 操作:使用 Todoist 的 API 端点创建、读取、更新和删除任务。
- 管理项目和标签:添加、重命名或归档项目;为任务分配标签。
- 处理筛选器和提醒:使用自定义筛选器查询任务;设置到期日期和提醒。
- 访问 Karma 和生产力统计数据:获取用户的 Karma 分数和活动日志。
- API 集成:通过 Webhook 支持 IFTTT/Zapier,并使用 Todoist API 触发事件。
使用模式
使用环境变量中的 API 密钥初始化 Todoist 客户端,然后串联方法调用来执行操作。务必先处理身份验证。使用 CLI 时,可将 Rust 库封装在脚本中;编写代码时,可导入 crate 并使用异步方法。在函数调用中直接传入任务内容或项目 ID 等参数。上线前请先在开发环境中测试,以避免触发速率限制。
常用命令/API
通过 todoist-rs crate 使用 Todoist API 端点。使用 $TODOIST_API_KEY 设置 API 密钥。示例代码片段:
-
添加任务:
use todoist::Todoist; let client = Todoist::new(std::env::var("TODOIST_API_KEY").unwrap()); client.add_task("Buy milk", Some("Shopping")).await; -
使用筛选器获取任务:
let tasks = client.get_tasks(&[("filter", "overdue")]).await.unwrap(); for task in tasks { println!("{}", task.content); } -
更新项目: 使用 PUT /projects/{id} 端点;代码如下:
client.update_project(123, "New Project Name").await; -
常见 CLI 标志(若封装为工具):
--api-key $TODOIST_API_KEY --project-id 123 --task "Do something"。 -
配置格式:将 API 密钥存储在 .env 文件中,格式为
TODOIST_API_KEY=your_token,然后使用std::env::var加载。
集成说明
在 Todoist API 事件(例如创建新任务)上设置 Webhook,以集成 IFTTT/Zapier。使用此技能的 API 调用触发操作:对于 IFTTT,指向 POST /tasks;对于 Zapier,在 Zapier 中使用 Todoist 应用以及此技能的方法。通过 JSON 负载传递任务 ID 等数据。确保在环境变量中安全处理 API 密钥,并使用示例事件测试集成,以验证数据流。
错误处理
请求前请检查 $TODOIST_API_KEY,以避免 401(未授权)等 API 错误。在代码中使用指数退避处理速率限制(例如 429 状态)。使用 Rust 的 Result 类型传播错误:
match client.add_task("Task", None).await {
Ok(_) => println!("Success"),
Err(e) => eprintln!("Error: {}", e),
}
记录详细错误(例如网络故障),并重试暂时性问题。验证项目 ID 等输入,以避免 404 错误。
具体使用示例
- 添加带标签的任务:当用户说“添加一个购物任务”时,使用此技能在“Shopping”项目中创建任务:初始化客户端,调用
client.add_task("Buy groceries", Some("Shopping")).await,然后向用户确认。 - 查询逾期任务:对于每日提醒,获取逾期任务:使用
client.get_tasks(&[("filter", "overdue")]).await,遍历结果,并向用户发送任务详情。
图关系
- 相关领域:生产力(例如 gtd 技能)、任务管理(例如其他待办应用)、API 客户端(例如 REST API 封装)。
- 关联内容:用于自动化的 IFTTT/Zapier 集成,以及用于协作工具的社区集群技能。