mcpField
T
todoist-automation

todoist-automation

github.com/davepoon生产力3.7k125 次安装1 天前更新
代码仓库

关于 todoist-automation

todoist-automation 是通过 Composio Todoist 工具包管理任务、项目、分区和筛选器的技能。它借助 Rube MCP 编排操作,并要求先建立有效的 Todoist 连接。

主要功能

  1. 01创建、更新、完成、重开和删除任务
  2. 02批量创建任务
  3. 03整理项目和分区
  4. 04按条件筛选任务
  5. 05查看已完成任务记录

适用场景

  1. 01向项目添加有截止日期或重复任务
  2. 02一次性为项目创建多项任务
  3. 03按项目、标签或截止日期查找未完成任务
  4. 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 密钥,只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 已就绪
  2. 调用 RUBE_MANAGE_CONNECTIONS 并指定工具包 todoist
  3. 如果连接状态不是 ACTIVE,请使用返回的授权链接完成 Todoist OAuth
  4. 运行任何工作流前,确认连接状态显示为 ACTIVE

核心工作流

1. 创建和管理任务

适用场景:用户想要创建、更新、完成、重新打开或删除任务

工具调用顺序:

  1. TODOIST_GET_ALL_PROJECTS - 列出项目,以查找目标项目 ID [前置步骤]
  2. TODOIST_GET_ALL_SECTIONS - 列出项目中的分区,以便放置任务 [可选]
  3. TODOIST_CREATE_TASK - 创建单个任务,并设置内容、截止日期、优先级和标签 [必需]
  4. TODOIST_BULK_CREATE_TASKS - 在一个请求中创建多个任务 [替代方案]
  5. TODOIST_UPDATE_TASK - 修改任务属性(内容、截止日期、优先级、标签)[可选]
  6. TODOIST_CLOSE_TASK - 将任务标记为已完成 [可选]
  7. TODOIST_REOPEN_TASK - 恢复先前已完成的任务 [可选]
  8. 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:ssZ
  • labels:标签名称字符串数组
  • 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. 管理项目

使用时机:用户想要列出、创建、更新或查看项目

工具调用顺序:

  1. TODOIST_GET_ALL_PROJECTS - 列出所有项目及其元数据 [必需]
  2. TODOIST_GET_PROJECT - 按 ID 获取特定项目的详细信息 [可选]
  3. TODOIST_CREATE_PROJECT - 使用名称、颜色和视图样式创建新项目 [可选]
  4. 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,请使用数字 ID
3. 管理分区

使用时机:用户想要使用分区整理项目中的任务

工具调用顺序:

  1. TODOIST_GET_ALL_PROJECTS - 查找目标项目 ID [前置条件]
  2. TODOIST_GET_ALL_SECTIONS - 列出现有分区以避免重复 [前置条件]
  3. TODOIST_CREATE_SECTION - 在项目中创建新分区 [必需]
  4. TODOIST_UPDATE_SECTION - 重命名现有分区 [可选]
  5. 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. 搜索和筛选任务

适用场景:用户想按条件查找任务、查看今天的任务,或查看已完成任务的历史记录

工具调用顺序:

  1. TODOIST_GET_ALL_TASKS - 获取未完成的任务,可选使用筛选查询 [必需]
  2. TODOIST_GET_TASK - 按 ID 获取特定任务的完整详情 [可选]
  3. TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE - 获取指定日期范围内已完成的任务 [可选]
  4. 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. 批量创建任务

适用场景:用户想一次性为项目搭建多个任务

工具调用顺序:

  1. TODOIST_GET_ALL_PROJECTS - 查找目标项目 ID [前置条件]
  2. TODOIST_GET_ALL_SECTIONS - 查找用于放置任务的分区 ID [可选]
  3. 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_PROJECTproject_id
创建项目TODOIST_CREATE_PROJECTname、color、view_style
更新项目TODOIST_UPDATE_PROJECTproject_id、name、color
列出区段TODOIST_GET_ALL_SECTIONSproject_id
创建区段TODOIST_CREATE_SECTIONproject_id、name、order
更新区段TODOIST_UPDATE_SECTIONsection_id、name
删除区段TODOIST_DELETE_SECTIONsection_id
获取所有任务TODOIST_GET_ALL_TASKSfilter、ids
获取任务TODOIST_GET_TASKtask_id
创建任务TODOIST_CREATE_TASKcontent、project_id、due_string、priority
批量创建任务TODOIST_BULK_CREATE_TASKStasks(数组)
更新任务TODOIST_UPDATE_TASKtask_id、content、due_string
完成任务TODOIST_CLOSE_TASKtask_id
重新打开任务TODOIST_REOPEN_TASKtask_id
删除任务TODOIST_DELETE_TASKtask_id
已完成任务TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATEsince、until
列出筛选器TODOIST_LIST_FILTERSsync_token

由 Composio 提供支持

评论

支持 Markdown