Skip to main content

lark-tasklist-export

从飞书任务清单(tasklist)中提取所有未完成任务及其自定义字段,生成结构化的 Markdown 文档。当用户要求导出/提取/读取飞书任务清单、把飞书任务做成文档、导出任务列表为 markdown 时使用。也适用于用户说"帮我看看任务清单里有什么"、"把清单里的任务整理成文档"等场景。即使用户没有明确说"导出"或"markdown",只要涉及从飞书任务清单中批量提取任务信息并生成文档,就应触发此 skill。

Datos de origen

Repositorio
JamesShi96/lark-tasklist-export
Última actividad en el origen
23 de abril de 2026 a las 13:07
Idioma detectado de SKILL.md
chino
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
lark-tasklist-export
description
从飞书任务清单(tasklist)中提取所有未完成任务及其自定义字段,生成结构化的 Markdown 文档。当用户要求导出/提取/读取飞书任务清单、把飞书任务做成文档、导出任务列表为 markdown 时使用。也适用于用户说"帮我看看任务清单里有什么"、"把清单里的任务整理成文档"等场景。即使用户没有明确说"导出"或"markdown",只要涉及从飞书任务清单中批量提取任务信息并生成文档,就应触发此 skill。
# 飞书任务清单导出 Skill 从飞书任务清单中提取完整的未完成任务数据(含自定义字段、子任务、负责人姓名),生成一份结构化的 Markdown 文档,并可选生成一个可视化 Dashboard 网页。 ## 前置条件 - 已完成 `lark-cli config init`(见 `../lark-shared/SKILL.md`) - 以 user 身份执行(`--as user`),因为需要访问用户的任务清单和通讯录 - 需要 scope:`task:task:read`、`task:tasklist:read`、`contact:user.base:readonly` ## 核心工作流 ``` 1. 定位清单 → 2. 拉取任务列表 → 3. 逐条获取自定义字段 → 4. 反推字段选项映射 → 5. 解析人名 → 6. 获取子任务 → 7. 生成 Markdown → 8.(可选)生成 Dashboard ``` 下面逐步说明。 ### Step 1: 定位清单 用户可能给出清单名称或清单链接。 ```bash # 按名称搜索 lark-cli task +tasklist-search --query "清单名称" --as user # 搜索结果中取 guid 字段 ``` 如果用户直接给了 `?guid=xxx` 链接,直接提取 guid。 ### Step 2: 拉取所有未完成任务 这一步只需要拿基础字段(标题、截止时间、成员、子任务数)。自定义字段在 Step 3 单独获取。 ```bash # 首页(不加 page_token) lark-cli task tasklists tasks --as user \ --params '{"tasklist_guid":"<GUID>","page_size":50}' ``` **关键点**: - `tasklists.tasks` 返回的是摘要,不含 `custom_fields`,这是正常的 - `completed_at == "0"` 表示未完成 - 必须串行翻页:检查 `has_more` 和 `page_token`,有则继续 - `page_size` 最大 50 - 此 API 禁止并发 收集所有 `completed_at == "0"` 的任务的 `guid`、`summary`、`due`、`members`、`subtask_count`。 ### Step 3: 逐条获取自定义字段 对 Step 2 收集的每个任务 guid,调用详情 API 获取 `custom_fields`: ```bash lark-cli task tasks get --as user \ --params '{"task_guid":"<GUID>"}' ``` **关键点**: - 响应中的 `custom_fields` 数组包含每个自定义字段的 `name`、`type`、`single_select_value`(或其他类型的值) - `single_select_value` 返回的是 option 的 GUID,不是文本名称 - 必须串行调用,每个请求之间 sleep 0.2 秒,避免触发限流 - 这一步是整个流程中最耗时的(N 个任务 = N 次 API 调用) ### Step 4: 反推自定义字段选项映射 飞书目前没有 API 直接获取自定义字段的选项定义。必须从实际数据中反推,然后让用户确认。 **具体做法**: 1. 按 `custom_fields[].name` 分组——不同清单的自定义字段名称、数量、类型完全不同,不要假设任何固定字段名 2. 对每个字段,列出所有出现过的 `single_select_value` GUID 3. 对每个 GUID,列出使用了该选项的任务标题(帮助推断含义) 4. 根据任务标题中的【标签】、关键词等上下文,为每个 GUID 推断一个名称 5. 将推断结果整理成表格,**呈现给用户确认**,格式如下: ``` 请确认以下自定义字段映射(我根据任务内容推断的): ## {字段名1} | GUID | 推断名称 | 依据任务 | |------|---------|---------| | abc1... | {推断名称} | {使用了此选项的任务标题} | | abc2... | {推断名称} | {使用了此选项的任务标题} | ## {字段名2} | GUID | 推断名称 | 依据任务 | |------|---------|---------| | def1... | {推断名称} | {使用了此选项的任务标题} | | ... | ... | ... | 如有错误请指出,确认无误后我继续生成文档。 ``` 6. 如果用户提供了截图,结合截图中的信息来推断 7. 对于无法推断的 GUID,标记为 `未知选项(GUID前8位)`,让用户提供名称 **重要**:每个清单的自定义字段完全不同,不能跨清单复用映射。每次处理新清单都必须重新推断和确认。 ### Step 5: 解析负责人姓名 从 Step 2 的 `members` 中收集**所有**出现的 `open_id`(包括 `role == "assignee"` 和 `role == "follower"`),然后解析姓名: ```bash # 自己 lark-cli contact +get-user --as user # 其他人 lark-cli contact +get-user --user-id "<open_id>" --as user ``` 提取返回的 `data.user.name` 字段。串行调用,每个间隔 0.2 秒。 注意:只收集 assignee 会导致遗漏(如 follower 人员),务必收集所有成员。 ### Step 6: 获取子任务 对 `subtask_count > 0` 的任务,获取子任务列表: ```bash lark-cli task subtasks list --as user \ --params '{"task_guid":"<PARENT_GUID>"}' ``` 每个子任务提取:`summary`(标题)、`completed_at`(是否完成)、`members`(负责人)。 ### Step 7: 生成 Markdown 输出模板参考 [`references/output-template.md`](references/output-template.md),包含: 1. **文档头部**:清单名称、导出时间、任务总数 2. **统计概览**:按截止时间和第一个自定义字段的简要统计 3. **任务表格**:按截止时间排序(今天 → 明天 → 未来 → 无截止时间),列为: - 序号、任务标题、各自定义字段列、截止时间、子任务数、负责人 - 自定义字段列的名称和数量因清单而异,按实际推断结果动态生成 4. **子任务详情**:对有子任务的任务,在表格后列出子任务清单(含完成状态和负责人) 5. **附录**: - 各自定义字段的选项说明(如用户有提供含义) - 团队成员 open_id ↔ 姓名对照表 将生成的 Markdown 文件保存到用户当前工作目录下,文件名格式:`<清单名称>-未完成任务.md` ### Step 8: 可选生成 Dashboard 网页 Markdown 生成完成后,**询问用户**是否需要生成一个可视化的 Dashboard 网页: > "Markdown 文档已生成。需要我额外生成一个可视化的 Dashboard 网页吗?可以在浏览器里直接打开,支持看板/分组/表格三种视图,还能筛选和搜索。" 如果用户同意,按照 [`references/dashboard-template.md`](references/dashboard-template.md) 生成 HTML 文件。 关键点: - Dashboard 是一个**自包含的 HTML 文件**,所有数据内嵌为 JS 对象,无需服务器 - 任务数据从已提取的数据直接生成(不再调 API) - 文件名格式:`task-dashboard.html`,保存在与 Markdown 相同的目录 - 样式和布局参考模板,但自定义字段名称、选项颜色等根据实际数据动态调整 如果用户拒绝,仅返回 Markdown 文件即可。 ## 注意事项 - 所有 list 类 API(`tasklists.tasks`、`subtasks.list`)必须串行调用 - 批量获取任务详情时,每个请求间隔 0.2-0.3 秒 - 截止时间从毫秒时间戳转为本地时区(UTC+8)可读日期 - 当天显示"今天",次日显示"明天" - 飞书任务清单的自定义字段因清单而异,不同清单的字段和选项完全不同,不能跨清单复用映射 - 如果用户提到业务规则(如"某个字段只适用于特定项目"),在生成的文档中注明 - Dashboard 网页中的颜色方案:按第一个自定义字段分配不同颜色,提供默认配色方案
Ver en GitHub