名称: clickup
描述: "企业级 ClickUp 项目管理集成,具备高级报告、多工作区支持和客户/项目跟踪功能。核心能力包括:(1) 支持自动切换的多工作区任务管理;(2) 自动包含子任务和分页的高级分析与报告(任务计数、负责人细分、状态/优先级分析、每日站会报告);(3) 客户文件夹组织与项目跟踪;(4) 对空间、文件夹、列表、任务和自定义字段的完整增删改查操作;(5) 支持计费的时间跟踪与计时器管理;(6) 文档创建与页面管理(API v3);(7) 任务依赖、链接与关系映射;(8) 销售管道跟踪与潜在客户/项目状态;(9) 常客与周期性账单管理。专为在复杂工作区层级中管理多个客户的机构打造。"
env:
- name: CLICKUP_API_TOKEN
description: "ClickUp 个人 API 令牌。生成位置:ClickUp 设置 → 应用 → 生成 API 令牌"
required: true
dependencies:
- python3
- pip:requests
面向机构工作流的企业级 ClickUp 集成。 通过高级报告、自动子任务处理和复杂的文件夹组织,管理多个客户、项目和工作区。
| 功能 | 重要性 |
|---|---|
| 🔍 始终包含子任务 | 自动包含子任务,确保不遗漏超过 70% 的实际工作 |
| 📊 高级报告 | 任务计数、工作量分布、状态细分、站会报告 |
| 🏢 多工作区支持 | 在 Elevated、Atrium、Winch Life 等工作区间无缝切换 |
| 👥 客户组织 | 结构化文件夹:📋 客户概览、📁 已完成工作、活跃项目 |
| 📈 销售管道 | 跟踪提案、谈判和项目生命周期 |
| ⏱️ 时间跟踪 | 内置计时器和支持计费的手动录入 |
| 📄 文档管理 | 通过 API v3 创建文档和页面 |
| 🔗 任务关系 | 依赖关系、阻塞/等待关系和任意任务链接 |
设置您的 ClickUp API 令牌:
export CLICKUP_API_TOKEN="pk_your_token_here"
从以下位置获取令牌:ClickUp 设置 → 应用 → 生成 API 令牌
列出所有工作区:
python scripts/clickup_client.py get_teams
创建任务:
python scripts/clickup_client.py create_task list_id="123" name="新任务" status="待办"
更新任务:
python scripts/clickup_client.py update_task task_id="abc" status="进行中"
团队 (工作区)
├── 空间
│ ├── 文件夹
│ │ └── 列表 → 任务
│ └── 列表 (无文件夹) → 任务
└── 文档
所有操作都需要通过 ID 明确指定工作区。
此技能支持跨多个 ClickUp 工作区进行操作:
get_teams 列出可用工作区team_id 引用工作区custom_task_ids=true 和 team_idget_teamsget_spaces team_id="xxx"get_folders space_id="yyy" → get_lists folder_id="zzz"create_task list_id="aaa" name="任务" ...get_space space_id="xxx"update_space space_id="xxx" statuses=[...]状态配置格式请参阅 API 参考。
选项 A - 手动录入:
python scripts/clickup_client.py create_time_entry \
team_id="xxx" \
task_id="yyy" \
duration=3600000 \
description="处理功能"
选项 B - 计时器:
# 启动计时器
python scripts/clickup_client.py start_timer team_id="xxx" task_id="yyy"
# 停止计时器 (停止用户当前运行的计时器)
python scripts/clickup_client.py stop_timer team_id="xxx"
create_doc workspace_id="xxx" name="项目文档"注意:文档使用 ClickUp API v3 (使用 workspace_id 而非 team_id)。
获取任务计数(包含父任务/子任务细分):
python scripts/clickup_client.py task_counts team_id="xxx"
# 返回:{"total": 50, "parents": 20, "subtasks": 30, "unassigned": 5}
按负责人获取工作量:
python scripts/clickup_client.py assignee_breakdown team_id="xxx"
# 返回:{"张三": 15, "李四": 12, "未分配": 8}
按状态获取任务:
python scripts/clickup_client.py status_breakdown team_id="xxx"
# 返回:{"待办": 20, "进行中": 10, "完成": 15}
按优先级获取任务:
python scripts/clickup_client.py priority_breakdown team_id="xxx"
# 返回:{"紧急": 2, "高": 5, "普通": 15, "低": 8, "无": 20}
每日站会报告(按状态分组):
# 所有团队成员
python scripts/clickup_client.py standup_report team_id="xxx"
# 特定人员 (使用用户 ID)
python scripts/clickup_client.py standup_report team_id="xxx" assignee_id="12345"
获取所有任务(自动分页):
python scripts/clickup_client.py get_all_tasks team_id="xxx"
# 始终自动包含子任务 (至关重要!)
按空间或负责人筛选报告:
# 特定空间
python scripts/clickup_client.py task_counts team_id="xxx" space_ids='["90172290075"]'
# 特定负责人
python scripts/clickup_client.py get_all_tasks team_id="xxx" assignees='["12345"]'
# 包含已关闭任务
python scripts/clickup_client.py task_counts team_id="xxx" include_closed="true"
报告关键规则:
1. 始终包含子任务 — 我们的方法通过 subtasks=true 自动实现
2. 自动处理分页 — get_all_tasks 会循环直到获取所有页面
3. 父任务与子任务 — 父任务 parent: null,子任务 parent: "task_id"
4. 速率限制 — 100 次请求/分钟;我们的分页机制会遵守此限制
选项 A - 作为附件添加:
python scripts/clickup_client.py link_doc_to_task \
task_id="xxx" \
doc_id="yyy"
选项 B - 在描述中提及:
python scripts/clickup_client.py mention_doc_in_task \
task_id="xxx" \
doc_id="yyy"
两者都会在任务中创建指向文档的可点击链接。
设置阻塞关系:
# 任务 B 被任务 A 阻塞/等待任务 A
python scripts/clickup_client.py add_dependency \
task_id="TASK_B_ID" \
depends_on="TASK_A_ID"
# 检查依赖关系
python scripts/clickup_client.py get_dependencies \
task_id="TASK_B_ID"
# 移除依赖关系
python scripts/clickup_client.py remove_dependency \
task_id="TASK_B_ID" \
depends_on="TASK_A_ID"
设置反向依赖(任务正在阻塞另一个):
# 任务 A 正在阻塞任务 B
python scripts/clickup_client.py add_dependency \
task_id="TASK_A_ID" \
waiting_on="TASK_B_ID"
对于不相互阻塞的相关任务:
# 将任务 A 链接到任务 B (任意关系)
python scripts/clickup_client.py link_tasks \
task_id="TASK_A_ID" \
links_to="TASK_B_ID"
# 移除链接
python scripts/clickup_client.py unlink_tasks \
task_id="TASK_A_ID" \
links_to="TASK_B_ID"
注意:link_tasks 创建“链接任务”关系(显示在任务的“链接任务”部分),而 add_dependency 创建阻塞/等待关系。
对于批量操作,请循环处理任务:
# 获取任务
TASKS=$(python scripts/clickup_client.py get_tasks list_id="xxx")
# 处理每个任务 (解析 JSON 并循环)
ClickUp 操作的主要 CLI 接口。
用法:
python scripts/clickup_client.py <命令> [键=值 ...]
命令:
get_teams - 列出所有可访问的工作区get_spaces team_id="xxx" - 列出空间create_space team_id="xxx" name="名称" [选项...] - 创建空间update_space space_id="xxx" [选项...] - 更新空间get_folders space_id="xxx" - 列出文件夹create_folder space_id="xxx" name="名称" - 创建文件夹get_lists folder_id="xxx" - 文件夹中的列表get_space_lists space_id="xxx" - 无文件夹的列表create_list folder_id="xxx" name="名称" [选项...] - 在文件夹中创建create_space_list space_id="xxx" name="名称" [选项...] - 创建无文件夹列表get_task task_id="xxx" - 获取任务详情(包含依赖关系、链接任务)get_tasks list_id="xxx" [筛选条件...] - 列出任务create_task list_id="xxx" name="名称" [选项...] - 创建任务update_task task_id="xxx" [选项...] - 更新任务get_time_entries team_id="xxx" [筛选条件...] - 列出时间条目create_time_entry team_id="xxx" task_id="yyy" duration=3600000 [...] - 创建时间条目start_timer team_id="xxx" task_id="yyy" - 启动计时器stop_timer team_id="xxx" - 停止计时器get_docs workspace_id="xxx" - 列出文档create_doc workspace_id="xxx" name="名称" [选项...] - 创建文档get_doc doc_id="xxx" - 获取文档详情关于页面的说明: 文档页面 API 处于测试阶段。页面可能需要通过 ClickUp UI 创建。
link_doc_to_task task_id="xxx" doc_id="yyy" - 将文档 URL 附加到任务mention_doc_in_task task_id="xxx" doc_id="yyy" - 将文档链接添加到任务描述add_dependency task_id="xxx" depends_on="yyy" - 任务被另一个任务阻塞/等待另一个任务add_dependency task_id="xxx" waiting_on="yyy" - 另一个任务被此任务阻塞/等待此任务remove_dependency task_id="xxx" depends_on="yyy" - 移除依赖关系get_dependencies task_id="xxx" - 列出任务的所有依赖关系link_tasks task_id="xxx" links_to="yyy" - 在任务间创建任意链接unlink_tasks task_id="xxx" links_to="yyy" - 移除任务链接get_all_tasks team_id="xxx" [include_closed="true"] [space_ids='["id1"]'] [assignees='["uid1"]'] - 所有任务,自动分页 (始终包含子任务)task_counts team_id="xxx" [筛选条件...] - 计数细分:总计、父任务、子任务、未分配assignee_breakdown team_id="xxx" [筛选条件...] - 按负责人分配的工作量分布status_breakdown team_id="xxx" [筛选条件...] - 按状态分组的任务priority_breakdown team_id="xxx" [筛选条件...] - 按优先级分组的任务standup_report team_id="xxx" [assignee_id="yyy"] - 按状态分组的每日站会报告get_docs team_id="xxx" - 列出文档create_doc team_id="xxx" name="名称" [选项...] - 创建文档要使用自定义字段:
GET /list/{list_id}/field (参见 API 参考)bash
python scripts/clickup_client.py update_task \
task_id="xxx" \
'custom_fields=[{"id":"field_id","value":"value"}]'在创建/更新空间或列表时:
python scripts/clickup_client.py update_space \
space_id="xxx" \
'statuses=[{"status":"待办","type":"open"},{"status":"完成","type":"closed"}]'
1 - 紧急2 - 高3 - 普通4 - 低常见错误及解决方案:
| 错误 | 原因 | 解决方案 |
|---|---|---|
401 未授权 |
API 令牌无效 | 检查 CLICKUP_API_TOKEN |
404 未找到 |
ID 无效 | 验证工作区/空间/文件夹/列表/任务 ID |
429 请求过多 |
超出速率限制 | 等待后重试 (100 次请求/分钟限制) |
400 错误请求 |
参数无效 | 检查参数中的 JSON 格式 |
对于复杂操作,可直接导入客户端:
from scripts.clickup_client import ClickUpClient
client = ClickUpClient()
# 获取所有工作区
teams = client.get_teams()
# 创建任务,完全控制
task = client.create_task(
list_id="123",
name="复杂任务",
description="详细描述",
assignees=[123, 456],
tags=["紧急", "客户"],
priority=2,
due_date=1704067200000,
time_estimate=14400000
)
TOOLS.md 中以供快速参考。custom_task_ids=true 和 team_id。team_id,避免修改错误的工作区。