SuperAPI AI Directory

lark-workflow-meeting-todo

Office & productivity

View repository

Updated 10-15 23:59

About this skill

Automatic Meeting To-Do Tracking Workflow

CRITICAL — Before starting, you MUST first use the Read tool to read ../lark-shared/SKILL.md, which contains authentication and permission handling

Applicable Scenarios

  • "Help me organize the to-dos from recent meetings" / "What needs to be done after the meeting"
  • "Extract the action items from this meeting" / "What did we agree to do in the meeting"
  • "Check the completion status of meeting to-dos" / "Have the meeting commitments been fulfilled"
  • "Sync meeting to-dos to Feishu Tasks"

Prerequisites

Only supports user identity. Before execution, ensure authorization has been granted:

lark-cli auth login --domain vc,task,im
lark-cli auth login --domain vc,drive   # 读取纪要文档正文

Workflow

{时间范围}
  │
  ├── vc +search ──────────────► 会议列表(meeting_ids)
  │
  ├── vc +notes ───────────────► 纪要文档 tokens
  │
  ├── docs +fetch ─────────────► 读取纪要文档内容(提取待办)
  │     或
  ├── minutes minutes get ─────► 读取妙记 AI 产物(待办、总结)
  │
  ▼
AI 分析提取待办列表
  ├── 我方待办(我答应做的)
  └── 对方待办(对方承诺做的)
          │
          ▼
im +messages-send ──► 发送确认请求到用户
          │
          ▼
task +create ──► 确认后创建飞书任务
          │
          ▼
base +record-upsert ──► 记录追踪状态

Mode 1: Batch Extraction (Specified Time Range)

Step 1: Determine the time range

Defaultpast 7 days. Inference rules: "today" → the current day, "this week" → this Monday to now, "yesterday" → all of yesterday.

Date conversion must call system commands (such as date), do not calculate mentally.

Step 2: Query meeting records

lark-cli vc +search --start "<YYYY-MM-DD>" --end "<YYYY-MM-DD>" --format json --page-size 30
  • The maximum search time range is 1 month; if exceeded, split the query
  • When there is page_token , you must continue paging and collect all id fields
  • Record each meeting's meeting_id、subject、start_time

Step 3: Obtain minutes artifacts

# 批量获取会议纪要信息(单次最多 50 个 meeting_id)
lark-cli vc +notes --meeting-ids "id1,id2,...,idN"

The returned result includes:

  • note_doc_token — minutes document token (including AI summary and to-dos)
  • verbatim_doc_token — transcript document token
  • minute_token — Minutes token

For each meeting minutes, extract the to-do content:

Method A: Extract from the minutes document (recommended, richer content)

lark-cli docs +fetch --doc "<note_doc_token>"

Method B: Extract from Minutes AI artifacts (faster)

lark-cli minutes minutes get --params '{"minute_token": "<minute_token>"}'
lark-cli vc +notes --minute-tokens "<minute_token>"

Step 4: AI analyzes and extracts to-dos

After reading the minutes document content, the AI extracts two types of to-dos from it:

Our to-dos (what I promised others to do):

  • Keyword patterns: "I will...", "I am responsible for...", "I will follow up...", "I will send it to you later...", "I will send an email later..."
  • Extract: to-do content, involved parties, deadline hints

Their to-dos (what others promised to do):

  • Keyword patterns: "He said...", "The other party promised...", "XX will provide...", "Will reply next week..."
  • Extract: to-do content, promiser, deadline hints

Output format:

## 会议待办提取结果

### 会议:{会议主题}({日期})

#### 我方待办
| # | 待办内容 | 涉及对象 | 建议截止日 |
|---|---------|---------|-----------|
| 1 | 把报告发给张三 | 张三 | 本周五 |

#### 对方待办
| # | 待办内容 | 承诺人 | 建议截止日 |
|---|---------|--------|-----------|
| 1 | 提供设计稿 | 李四 | 下周三 |

Step 5: Send confirmation request

Send the extracted to-dos to the user via message for confirmation:

lark-cli im +messages-send --chat-id "<chat_id>" --msg-type interactive --content '<飞书卡片JSON>'

The card content includes:

  • A brief description of each to-do
  • "Confirm task creation" / "Skip" buttons
  • "Confirm all" / "Skip all" quick actions

Step 6: Create Feishu tasks

After the user confirms, create a Feishu task for each to-do:

lark-cli task +create --summary "<待办内容>" --due "<截止日>" --description "来源会议:{会议主题}({日期})"

Step 7: Record tracking status

Record the to-do information into the multi-dimensional table (the Base table must be initialized first; see the "Data Initialization" section):

lark-cli base +record-upsert --table-id "<table_id>" --json '{"字段名":"值"}'

Mode 2: Single Meeting Extraction

When the user specifies a meeting:

# 通过会议标题搜索
lark-cli vc +search --keyword "<会议主题>" --start "<date>" --end "<date>"

The subsequent process is the same as Mode 1, but only this one meeting is processed.


Mode 3: Check Completion Status

Step 1: Retrieve tracking records

lark-cli base +record-list --table-id "<table_id>" --filter '...确认状态 = "已确认"'

Step 2: Check task status

lark-cli task +get-my-tasks --query "<待办关键词>"

Step 3: Verify "send email" type commitments

If the to-do content involves "sending an email", check whether the email has been sent:

lark-cli mail +messages-search --query "<邮件关键词>" --from "me"

Fallback note: If the user has not enabled Feishu Mail (themail command returns error code 1230003), the email verification step is skipped, and the tracking status is marked with "Email verification unavailable, manual confirmation required".

Step 4: Update tracking status

lark-cli base +record-upsert --table-id "<table_id>" --json '{"字段名":"值"}'

Mode 4: Automatic Archiving

To-dos that remain incomplete for more than 14 days are automatically marked as "Archived":

lark-cli base +record-list --table-id "<table_id>" --filter '...确认状态 = "已确认" AND 创建时间 < 14天前'

Update each record's status to "Archived" and notify the user via Feishu message.


Data Initialization

On first use, create the Bitable tracking data:

Base Table Structure

Table name: Meeting To-Do Tracking

Field Name Type Description
Meeting Topic Text Title of the source meeting
Meeting Date Date Meeting time
To-Do Content Text Extracted to-do description
To-Do Type Single select Our side's to-do / Other side's to-do
Owner/Committer Text Who will do it
Suggested Due Date Date Inferred from context
Confirmation Status Single select Pending confirmation / Confirmed / Skipped / Completed / Archived
Associated Task ID Text The task_id of the Feishu task
Meeting ID Text vc meeting_id
Creation Time Date Record creation time

Initialization Command

# 1. 创建多维表格
# 注意:+table-create 可能部分成功,需捕获错误后用 +field-create 补字段
# 注意:连续创建字段会触发限流(错误码 800004135),每次调用间隔至少 1 秒
lark-cli base +table-create --name "会议待办追踪" --fields '[
  {"name":"会议主题","type":"text"},
  {"name":"会议日期","type":"datetime"},
  {"name":"待办内容","type":"text"},
  {"name":"待办类型","type":"select","multiple":false,"options":[{"name":"我方待办"},{"name":"对方待办"}]},
  {"name":"负责人/承诺人","type":"text"},
  {"name":"建议截止日","type":"datetime"},
  {"name":"确认状态","type":"select","multiple":false,"options":[{"name":"待确认"},{"name":"已确认"},{"name":"已跳过"},{"name":"已完成"},{"name":"已归档"}]},
  {"name":"关联任务ID","type":"text"},
  {"name":"会议ID","type":"text"},
  {"name":"创建时间","type":"datetime"}
]'

# 2. 记录 base_token 和 table_id 到后续使用

On first use, confirm with the user whether to create a tracking table. If the user already has a Base, an existing Base URL can be specified.

Rate Limit Handling: If +table-create partially fails due to rate limiting, the table will still be created successfully. In this case:

  1. Use base +table-list to get the table_id
  2. Use base +field-create --table-id <id> --json '{"name":"字段名","type":"text"}' to add fields one by one, with an interval of 1-2 seconds between each

Learning Mode

When the user repeatedly rejects a certain type of to-do, record the rejection pattern:

  • Add a "user preference" record in the Bitable
  • On the next extraction, the AI automatically filters out similar types of to-dos
  • Example: "meeting minutes type records" are repeatedly rejected → next time automatically skip "record meeting minutes" type to-dos

Permission Table

Command Required scope
vc +search vc:meeting:read
vc +notes vc:meeting:read
minutes.minutes.get minutes:minutes:readonly
docs +fetch docx:document:read
task +create task:task:write
task +get-my-tasks task:task:read
im +messages-send im:message:send_as_bot
base +record-list bitable:app:read
base +record-upsert bitable:app:write
mail +messages-search mail:mail:read

Reference