关于 todoist-automation
todoist-automation 是通过 Composio Todoist 工具包管理任务、项目、分区和筛选器的技能。它借助 Rube MCP 编排操作,并要求先建立有效的 Todoist 连接。
主要功能
- 01创建、更新、完成、重开和删除任务
- 02批量创建任务
- 03整理项目和分区
- 04按条件筛选任务
- 05查看已完成任务记录
适用场景
- 01向项目添加有截止日期或重复任务
- 02一次性为项目创建多项任务
- 03按项目、标签或截止日期查找未完成任务
- 04查看指定日期范围内完成的任务
MCP 相关
通过 Rube MCP 调用 Composio 的 Todoist 工具包。使用前需连接 Rube MCP,并完成 Todoist 授权。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill todoist-automation安装后在 Claude Code 中输入/todoist-automation确认已加载。
详细介绍
通过 Rube MCP 自动化 Todoist
通过 Composio 的 Todoist 工具包自动执行 Todoist 操作,包括创建和管理任务、整理项目、管理分区、筛选以及批量处理任务工作流。
工具包文档:composio.dev/toolkits/todoist
前提条件
- 必须已连接 Rube MCP(可用
RUBE_SEARCH_TOOLS) - 通过
RUBE_MANAGE_CONNECTIONS激活 Todoist 连接,并指定工具包todoist - 始终先调用
RUBE_SEARCH_TOOLS,获取当前工具架构
设置
获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS能够响应,以验证 Rube MCP 已就绪 - 调用
RUBE_MANAGE_CONNECTIONS并指定工具包todoist - 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 Todoist OAuth
- 运行任何工作流前,确认连接状态显示为 ACTIVE
核心工作流
1. 创建和管理任务
适用场景:用户想要创建、更新、完成、重新打开或删除任务
工具调用顺序:
TODOIST_GET_ALL_PROJECTS- 列出项目,以查找目标项目 ID [前置步骤]TODOIST_GET_ALL_SECTIONS- 列出项目中的分区,以便放置任务 [可选]TODOIST_CREATE_TASK- 创建单个任务,并设置内容、截止日期、优先级和标签 [必需]TODOIST_BULK_CREATE_TASKS- 在一个请求中创建多个任务 [替代方案]TODOIST_UPDATE_TASK- 修改任务属性(内容、截止日期、优先级、标签)[可选]TODOIST_CLOSE_TASK- 将任务标记为已完成 [可选]TODOIST_REOPEN_TASK- 恢复先前已完成的任务 [可选]TODOIST_DELETE_TASK- 永久删除任务 [可选]
CREATE_TASK 的关键参数:
content:任务标题(支持 Markdown 和超链接)description:附加备注(不要在此处填写截止日期)project_id:字母数字组成的项目 ID;省略则添加到收件箱section_id:字母数字组成的分区 ID,用于指定任务在项目中的位置parent_id:用于创建子任务的任务 IDpriority:1(普通)至 4(紧急)——注意:Todoist 界面显示 p1=紧急,而 API 中 p4=紧急due_string:自然语言日期,例如"tomorrow at 3pm"、"every Friday at 9am"due_date:具体日期,格式为YYYY-MM-DDdue_datetime:具体日期和时间,采用 RFC3339 格式YYYY-MM-DDTHH:mm:ssZlabels:标签名称字符串数组duration+duration_unit:任务时长(例如,30+"minute")
注意事项:
- 每次只能使用一个
due_*字段(due_lang除外,它可以与任意字段搭配使用) - 不要在
content或description中填写截止日期——请使用due_string字段 - 不要在
due_string中填写类似 "for 30 minutes" 的时长描述——请使用duration+duration_unit - API 中的
priority:1=普通,4=紧急(与 Todoist 界面中 p1=紧急的显示方式相反) - 任务 ID 可以是纯数字或字母数字组合;请使用 API 返回的格式
CLOSE_TASK会将任务标记为已完成;DELETE_TASK会永久删除任务——两者是不同的操作
2. 管理项目
使用时机:用户想要列出、创建、更新或查看项目
工具调用顺序:
TODOIST_GET_ALL_PROJECTS- 列出所有项目及其元数据 [必需]TODOIST_GET_PROJECT- 按 ID 获取特定项目的详细信息 [可选]TODOIST_CREATE_PROJECT- 使用名称、颜色和视图样式创建新项目 [可选]TODOIST_UPDATE_PROJECT- 修改项目属性 [可选]
关键参数:
name:项目名称(创建时必需)color:Todoist 调色板中的颜色(例如,"blue"、"red"、"green"、"charcoal")view_style:"list"或"board"布局parent_id:用于创建子项目的父项目 IDis_favorite/favorite:用于标记为收藏的布尔值project_id:更新和获取操作必需
注意事项:
- 名称相似的项目可能导致选错 project_id;务必先确认
CREATE_PROJECT使用favorite,而UPDATE_PROJECT使用is_favorite—— 字段名称不同- 后续操作请使用 API 返回的项目
id,不要使用v2_id - 字母数字或 URL 样式的项目 ID 可能导致某些工具返回 HTTP 400;如果有数字 ID,请使用数字 ID
3. 管理分区
使用时机:用户想要使用分区整理项目中的任务
工具调用顺序:
TODOIST_GET_ALL_PROJECTS- 查找目标项目 ID [前置条件]TODOIST_GET_ALL_SECTIONS- 列出现有分区以避免重复 [前置条件]TODOIST_CREATE_SECTION- 在项目中创建新分区 [必需]TODOIST_UPDATE_SECTION- 重命名现有分区 [可选]TODOIST_DELETE_SECTION- 永久删除分区 [可选]
关键参数:
project_id:必需 —— 要在其中创建分区的项目name:分区名称(创建时必需)order:分区在项目中的整数位置(数值越小,显示越靠前)section_id:更新和删除操作必需
注意事项:
CREATE_SECTION需要project_id和name—— 未提供 project_id 会导致 400 错误- 如果使用字母数字 ID,可能出现 HTTP 400「project_id is invalid」错误;请优先使用数字 ID
- 删除分区可能会以不直观的方式移动或重新分组其中的任务
- 响应可能同时包含
id和v2_id;请一致地存储并复用正确的标识符 - 创建分区前务必先检查现有分区,避免重复创建
4. 搜索和筛选任务
适用场景:用户想按条件查找任务、查看今天的任务,或查看已完成任务的历史记录
工具调用顺序:
TODOIST_GET_ALL_TASKS- 获取未完成的任务,可选使用筛选查询 [必需]TODOIST_GET_TASK- 按 ID 获取特定任务的完整详情 [可选]TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE- 获取指定日期范围内已完成的任务 [可选]TODOIST_LIST_FILTERS- 列出用户自定义的已保存筛选器 [可选]
GET_ALL_TASKS 的关键参数:
filter:Todoist 筛选语法字符串- 关键字:
today、tomorrow、overdue、no date、recurring、subtask - 优先级:
p1(紧急)、p2、p3、p4(普通) - 项目:
#ProjectName(必须存在于账户中) - 标签:
@LabelName(必须存在于账户中) - 日期范围:
7 days、-7 days、due before: YYYY-MM-DD、due after: YYYY-MM-DD - 搜索:使用
search: keyword按内容文本搜索 - 运算符:
&(与)、|(或)、!(非)
- 关键字:
ids:要获取的特定任务 ID 列表
GET_COMPLETED_TASKS_BY_COMPLETION_DATE 的关键参数:
since:起始日期,采用 RFC3339 格式(例如,2024-01-01T00:00:00Z)until:结束日期,采用 RFC3339 格式project_id、section_id、parent_id:可选筛选条件cursor:上一响应中的分页游标limit:每页最大结果数(默认值为 50)
注意事项:
GET_ALL_TASKS仅返回未完成的任务;已完成的任务请使用GET_COMPLETED_TASKS_BY_COMPLETION_DATE- 筛选条件必须引用实际存在的实体;任意文本会导致 HTTP 400 错误
- 不要在 GET_ALL_TASKS 的筛选条件中使用
completed、!completed或completed after,否则会导致 400 错误 GET_COMPLETED_TASKS_BY_COMPLETION_DATE的日期范围限制为since和until之间约 3 个月- 搜索需在筛选条件中使用
search: keyword语法,而非单独的参数
5. 批量创建任务
适用场景:用户想一次性为项目搭建多个任务
工具调用顺序:
TODOIST_GET_ALL_PROJECTS- 查找目标项目 ID [前置条件]TODOIST_GET_ALL_SECTIONS- 查找用于放置任务的分区 ID [可选]TODOIST_BULK_CREATE_TASKS- 在单个请求中创建多个任务 [必需]
关键参数:
tasks:任务对象数组,每个对象至少需要包含content- 每个任务对象支持:
content、description、project_id、section_id、parent_id、priority、labels、due(包含string、date或datetime的对象)、duration、order
注意事项:
- 数组中的每个任务都必须至少包含
content字段 - 批量创建中的
due字段是包含嵌套字段(string、date、datetime、lang)的对象,结构不同于 CREATE_TASK 的扁平字段 - 同一批次中的任务可以分别指定不同的项目或分区
常见模式
ID 解析
操作前,始终将便于阅读的名称解析为 ID:
- 项目名称 -> 项目 ID:使用
TODOIST_GET_ALL_PROJECTS,按name字段匹配 - 分区名称 -> 分区 ID:使用带有
project_id的TODOIST_GET_ALL_SECTIONS - 任务内容 -> 任务 ID:使用带有
filter或search: keyword的TODOIST_GET_ALL_TASKS
分页
TODOIST_GET_ALL_TASKS:返回所有匹配的未完成任务(无需分页)TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE:使用基于游标的分页;持续使用响应中的cursor,直到没有更多结果TODOIST_GET_ALL_PROJECTS和TODOIST_GET_ALL_SECTIONS:返回所有结果(无需分页)
截止日期处理
- 自然语言:使用
due_string(例如,"tomorrow at 3pm"、"every Monday") - 指定日期:使用
YYYY-MM-DD格式的due_date - 指定日期时间:使用 RFC3339 格式的
due_datetime(YYYY-MM-DDTHH:mm:ssZ) - 每次只使用一个截止日期字段(
due_lang除外,它可以与任一字段搭配使用) - 周期性任务:在
due_string中使用自然语言(例如,"every Friday at 9am")
已知注意事项
ID 格式
- 任务 ID 可以是数字(
"2995104339")或字母数字组合("6X4Vw2Hfmg73Q2XR") - 项目 ID 也可能采用不同格式;优先使用 API 返回的格式
- 某些工具仅接受数字 ID;如果出现 400 错误,请尝试通过 GET_PROJECT 获取数字
id - 响应对象可能同时包含
id和v2_id;API 操作请使用id
优先级反转
- API 优先级:1 = 普通,4 = 紧急
- Todoist UI 显示:p1 = 紧急,p4 = 普通
- 两者正好相反;务必向用户确认他们指的是哪种规则
筛选语法
- 筛选条件必须引用用户账户中实际存在的实体
#NonExistentProject或@NonExistentLabel会导致 HTTP 400 错误- 文本搜索请使用
search: keyword,不要直接使用关键词 - 使用
&(AND)、|(OR)、!(NOT)进行组合 completed筛选条件在 GET_ALL_TASKS 端点上不起作用
速率限制
- Todoist API 存在速率限制;批量操作应尽可能使用
BULK_CREATE_TASKS - 连续快速发送请求时,请适当间隔以避免触发限流
快速参考
| 任务 | 工具标识 | 关键参数 |
|---|---|---|
| 列出所有项目 | TODOIST_GET_ALL_PROJECTS | (无) |
| 获取项目 | TODOIST_GET_PROJECT | project_id |
| 创建项目 | TODOIST_CREATE_PROJECT | name、color、view_style |
| 更新项目 | TODOIST_UPDATE_PROJECT | project_id、name、color |
| 列出区段 | TODOIST_GET_ALL_SECTIONS | project_id |
| 创建区段 | TODOIST_CREATE_SECTION | project_id、name、order |
| 更新区段 | TODOIST_UPDATE_SECTION | section_id、name |
| 删除区段 | TODOIST_DELETE_SECTION | section_id |
| 获取所有任务 | TODOIST_GET_ALL_TASKS | filter、ids |
| 获取任务 | TODOIST_GET_TASK | task_id |
| 创建任务 | TODOIST_CREATE_TASK | content、project_id、due_string、priority |
| 批量创建任务 | TODOIST_BULK_CREATE_TASKS | tasks(数组) |
| 更新任务 | TODOIST_UPDATE_TASK | task_id、content、due_string |
| 完成任务 | TODOIST_CLOSE_TASK | task_id |
| 重新打开任务 | TODOIST_REOPEN_TASK | task_id |
| 删除任务 | TODOIST_DELETE_TASK | task_id |
| 已完成任务 | TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE | since、until |
| 列出筛选器 | TODOIST_LIST_FILTERS | sync_token |
由 Composio 提供支持
评论
支持 Markdown