SuperAPI AI Directory

lark-workflow-action-extractor

Office & productivity

View repository

Updated 10-16 11:17

About this skill

Meeting Task Closed-Loop Workflow

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 Token
  • verbatim_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 (thetodo field) 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:

  1. 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"
  2. Structured format:

    {
      "who": "责任人姓名",
      "what": "具体行动项描述",
      "when": "截止时间(如能提取)",
      "source": "来源(纪要正文 / 妙记待办)",
      "priority": "优先级推断(高/中/低)"
    }
    
  3. Name resolution:

    • Use the extracted person names with contact search 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

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-guid Action 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:

  1. Create serially, with an interval of 0.5~1 second between each task
  2. Use ISO 8601 format for due dates
  3. If no user_id is matched, create the task but do not specify an assignee
  4. Record the creation result of each task (task_id + success/failure)

Note:+create The parameters of the command are based on the reference document in lark-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