CRITICAL — Before starting, you MUST first use the Read tool to read lark-shared/SKILL.md, which contains authentication, permission handling, and security rules.
Applicable Scenarios
- "Turn today's meeting minutes into tasks" / "Extract action items from meeting records"
- "Help me track meeting decisions" / "Meeting action item extraction"
- "What to-dos are there from today's meeting" / "Turn meeting conclusions into tasks and assign them"
- "Extract action items from meeting" / "meeting to tasks"
- "What are the action items of the XX meeting" / "Help me turn the things said in the meeting into tasks"
Form a meeting → minutes → action items → tasks → notification → tracking complete closed loop. This is an end-to-end scenario that none of the existing official Skills cover.
会议结束 行动项提取 任务创建 & 通知
───────── ► vc/minutes ► AI 分析提取 ► 用户确认 ► task + im ─────►
│ │ │
▼ ▼ ▼
纪要已存在 展示行动项清单 责任人收到通知
Prerequisites
Only supports user identity. Before execution, ensure authorization has been granted:
lark-cli auth login --domain vc,drive,contact,task,im
Workflow
用户指定会议 ──► vc +search ──► 定位会议 (meeting_id)
│
▼
vc +notes ──► 获取纪要 doc_token
│
▼
┌───────┴───────┐
▼ ▼
docs +fetch minutes 产物
(纪要 Markdown) (AI 待办/总结)
│ │
└───────┬───────┘
▼
AI 提取行动项
{who, what, when}
│
▼
展示给用户确认 ◄── MUST:用户确认后才执行创建
│
▼
┌─────────┴─────────┐
▼ ▼
task(批量创建) im +messages-send
设置截止日期 通知责任人
分配责任人
Step 1: Locate the target meeting
Method A — User specifies keywords to search:
Refer to lark-vc/SKILL.md。
# 搜索今天的会议
lark-cli vc +search --start "<today>" --end "<today>" --format json --page-size 30
If multiple meetings are returned, list them for the user to choose:
找到 3 场今日会议:
1. 09:00 产品需求评审(meeting_id: xxx)
2. 14:00 技术方案讨论(meeting_id: yyy)
3. 16:00 周五复盘(meeting_id: zzz)
请问要从哪场会议提取行动项?(输入序号或"全部")
Method B — User directly provides a meeting ID or link:
Directly use the provided meeting_id to proceed to Step 2.
Step 2: Obtain meeting minutes
# 获取会议关联的纪要信息
lark-cli vc +notes --meeting-ids "<meeting_id>"
Extract from the returned results:
note_doc_token: Minutes document Tokenverbatim_doc_token: Transcript document Token (if any)
Handling when there are no minutes: If the meeting has no minutes (
no notes available), prompt the user:
- "This meeting currently has no minutes. You can dictate the meeting conclusions, and I will organize them into action items."
- Or try to obtain AI artifacts from Minutes (Step 3B)
Supplementary path (v1.0.7+): When vc +notes returns no results, the minutes doc_token can be extracted via the calendar event association API:
# 通过 VC 的日历关联 API 获取 note doc token(v1.0.7+ 增强)
lark-cli vc +notes --meeting-ids "<meeting_id>"
Tip: v1.0.7 enhances the ability to extract the note doc token from the calendar event association API, covering more meeting scenarios.
Step 3A: Read the minutes body
Refer to lark-doc/SKILL.md。
# 先获取纪要文档的访问链接
lark-cli drive metas batch_query --data '{"request_docs": [{"doc_type": "docx", "doc_token": "<note_doc_token>"}], "with_url": true}'
# 读取纪要文档内容(Markdown 格式)
lark-cli docs +fetch --doc "<note_doc_token>" --format markdown
Step 3B: Obtain Minutes AI artifacts (supplementary data source)
Refer to lark-minutes/SKILL.md and lark-vc/SKILL.md。
# 首先获取会议的妙记 Token (需要 v1.0.6+ 支持)
lark-cli vc +recording --meeting-id "<meeting_id>" --format json
# 获取妙记的 AI 产物(总结、待办、章节)
lark-cli minutes +get --minute-token "<minute_token>" --format json
Note: Minutes' to-do extraction (the
todofield) is a very good supplementary data source. The AI should merge and deduplicate the Minutes to-dos with the action items in the minutes body.
Step 4: AI extracts action items
Merge and analyze the minutes body + Minutes to-dos to extract action items.
Extraction rules:
-
Identify keywords:
- Responsible person clues: "responsible for", "follow up", "by XX", "XX will do", "assign to", "@XX"
- Action clues: "need to", "complete", "submit", "confirm", "modify", "prepare", "research", "output"
- Time clues: "this week", "next week", "by the end of the month", "by Friday", "deadline", "due"
-
Structured format:
{ "who": "责任人姓名", "what": "具体行动项描述", "when": "截止时间(如能提取)", "source": "来源(纪要正文 / 妙记待办)", "priority": "优先级推断(高/中/低)" } -
Name resolution:
- Use the extracted person names with
contactsearch verification
lark-cli contact +search --query "<姓名>" --format json- Match successful: record
user_id, used for subsequent task assignment - Match failed: mark as "To be confirmed", do not block the process
- Use the extracted person names with
Step 5: Display action items for user confirmation
⚠️ Safety rule: Before creating tasks, you MUST display the action item list and wait for user confirmation.
Display format:
## 从「{会议名称}」提取的行动项
| # | 责任人 | 行动项 | 截止日期 | 优先级 | 来源 |
|---|--------|--------|---------|--------|------|
| 1 | 张三 ✅ | 完成 API 接口文档 | 下周三 | 高 | 纪要 |
| 2 | 李四 ✅ | 调研竞品方案 | 本周五 | 中 | 妙记 |
| 3 | 王五 ⚠️ | 准备测试环境 | 未指定 | 低 | 纪要 |
✅ = 已匹配到飞书用户 ⚠️ = 未匹配,任务将创建但不指定负责人
确认创建以上任务?(输入"确认"执行,或修改后再确认)
The user can:
- Confirm all creations
- Delete certain action items ("remove item 3")
- Modify the assignee or due date
- Add omitted action items
Step 6: Batch create tasks
Refer to lark-task/SKILL.md。
6a. Deduplication check (recommended, v1.0.11+):
Before creating tasks, search whether similar tasks already exist to avoid duplicate creation:
# 搜索是否已有相似任务
lark-cli task +search --query "<行动项关键词>" --completed=false --format json
Tip: If an existing task highly similar to an action item is found in the search, mark it as "⚡ Possible existing task" in the confirmation interface and let the user decide whether to skip it.
6b. Create tasks:
# 逐个创建任务(串行执行,避免并发冲突)
lark-cli task +create --summary "<行动项描述>" --due "<截止时间 ISO 8601>" --assignee "<user_id>"
6c. Add to task list (optional, v1.0.10+):
If the user specifies a target task list, the newly created tasks can be added in batch:
# 将任务加入指定清单的特定分组(v1.0.10+ 支持 --section-guid)
lark-cli task +tasklist-task-add --tasklist-id "<tasklist_guid>" \
--task-id "<task_guid_1>,<task_guid_2>" \
--section-guid "<section_guid>"
Tip:
--section-guidAction items can be precisely assigned to a specific custom group in the task list (such as the "Meeting Action Items" group), making subsequent tracking easier.
Creation rules:
- Create serially, with an interval of 0.5~1 second between each task
- Use ISO 8601 format for due dates
- If no user_id is matched, create the task but do not specify an assignee
- Record the creation result of each task (task_id + success/failure)
Note:
+createThe parameters of the command are based on the reference document inlark-task/SKILL.md. Before execution, first read the corresponding reference to confirm the parameter names and format.
Step 7: Notify assignees
Refer to lark-im/SKILL.md。
# 向每位责任人发送通知(通过 bot 身份或 user 身份)
lark-cli im +messages-send --receive-id "<user_id>" --receive-id-type "user_id" --msg-type "text" --content '{"text":"你好,来自「<会议名称>」的行动项已创建为任务:\n\n<行动项描述>\n截止日期:<截止时间>\n\n请及时处理 🙏"}'
Note: Sending messages may require bot identity. If the user identity cannot send, prompt the user to use
--as bot。
Step 8: Output execution report
## 执行报告
### 会议信息
- 会议名称:{会议名称}
- 会议时间:{时间}
- 纪要链接:[查看纪要]({链接})
### 任务创建结果
| # | 行动项 | 责任人 | 截止 | 任务状态 |
|---|--------|--------|------|---------|
| 1 | 完成 API 接口文档 | 张三 | 下周三 | ✅ 已创建 |
| 2 | 调研竞品方案 | 李四 | 本周五 | ✅ 已创建 |
| 3 | 准备测试环境 | 王五 | — | ✅ 已创建(未指定负责人)|
### 通知发送结果
- 张三:✅ 已通知
- 李四:✅ 已通知
- 王五:⚠️ 未匹配用户,跳过通知
### 后续建议
- 您可以使用 `lark-cli task +get-my-tasks` 查看任务进度
- 下次会议前可以回顾任务完成情况
Fault tolerance mechanism
| Exception scenario | Handling method |
|---|---|
| Meeting has no minutes | Prompt the user to dictate conclusions and manually extract action items |
| Minutes body is empty | Try to obtain to-dos from the Miaojii AI artifacts |
| Person name matching failed | Mark as "To be confirmed", create the task but do not assign it |
| Task creation failed | Record the error, continue creating the remaining tasks, and report failed items in the final report |
| Message sending failed | Record the error, do not block the process, and recommend that the user notify manually |
| No due time | Create the task but do not set a due date, and note it in the report |
Permission table
| Step | Command | Required scope | Required or not |
|---|---|---|---|
| Search meetings | vc +search |
vc:meeting:readonly |
✅ Required |
| Get minutes | vc +notes |
vc:meeting:readonly |
✅ Required |
| Read minutes body | docs +fetch |
docx:document:readonly |
✅ Required |
| Get Miaojii artifacts | minutes +get |
minutes:minute:readonly |
Optional |
| Document metadata | drive metas batch_query |
drive:drive:readonly |
Optional |
| Search users | contact +search |
contact:user.base:readonly |
Recommended |
| Search tasks (deduplication) | task +search |
task:task:read |
Recommended (v1.0.11+) |
| Create task | task +create |
task:task:write |
✅ Required |
| Add to list | task +tasklist-task-add |
task:tasklist:write |
Optional (v1.0.10+) |
| Send notification | im +messages-send |
im:message:send_as_bot or im:message |
Recommended |
Reference
- lark-shared — Authentication, permissions (required reading)
- lark-vc —
+search、+notesDetailed usage - lark-minutes — Detailed usage of Minutes artifacts
- lark-doc —
+fetchDetailed usage - lark-contact —
+searchDetailed usage - lark-task — Detailed usage of task creation
- lark-im — Detailed usage of message sending