通过 Rube MCP 实现 Todoist 自动化
通过 Composio 的 Todoist 工具包,自动化 Todoist 操作,包括任务创建与管理、项目组织、分区管理、筛选和批量任务工作流。
前置条件
- Rube MCP 已连接(
RUBE_SEARCH_TOOLS可用) - 通过
RUBE_MANAGE_CONNECTIONS的todoist工具包建立活跃的 Todoist 连接 - 始终先调用
RUBE_SEARCH_TOOLS获取当前工具 schema
配置
获取 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:父任务 ID,用于创建子任务priority:1(普通)到 4(紧急)——注意:Todoist 界面显示 p1=紧急,API 中 p4=紧急due_string:自然语言日期,如"tomorrow at 3pm"、"every Friday at 9am"due_date:具体日期,YYYY-MM-DD格式due_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:父项目 ID,用于创建子项目is_favorite/favorite:布尔值,标记为收藏project_id:更新和查询操作时必填
注意事项:
- 名称相似的项目可能导致选错 project_id;务必核实
CREATE_PROJECT使用favorite,而UPDATE_PROJECT使用is_favorite——字段名不同- 后续操作使用 API 返回的项目
id,而非v2_id - 字母数字/URL 格式的项目 ID 在某些工具中可能触发 HTTP 400;优先使用数字 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:调用
TODOIST_GET_ALL_SECTIONS并传入project_id - 任务内容 → 任务 ID:调用
TODOIST_GET_ALL_TASKS并使用filter或search: keyword
分页
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") - 具体日期:使用
due_date,YYYY-MM-DD格式 - 具体日期时间:使用
due_datetime,RFC3339 格式(YYYY-MM-DDTHH:mm:ssZ) - 同时只使用一个 due 字段(
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 界面显示:p1 = 紧急,p4 = 普通
- 两者相反;务必与用户确认其使用的约定
筛选语法
- 筛选条件必须引用用户账户中的真实实体
#NonExistentProject或@NonExistentLabel会导致 HTTP 400- 搜索文本使用
search: keyword,而非裸关键词 - 使用
&(与)、|(或)、!(非)组合条件 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 |
适用场景
本技能适用于执行概述中描述的工作流或操作。
限制
- 仅在任务明确匹配上述范围时使用本技能。
- 不要将输出视为特定环境验证、测试或专家评审的替代品。
- 缺少必要输入、权限、安全边界或成功标准时,应停止并请求澄清。