# 会议结束后5分钟,纪要、待办、通知全自动:我用飞书CLI+Claude Code搭的脚本
**作者**: Jason Zhu
**日期**: 2026-04-02T15:13:21.000Z
**来源**: [https://x.com/GoSailGlobal/status/2039722861649437075](https://x.com/GoSailGlobal/status/2039722861649437075)
---

每次开完会,你是不是也有这种感觉,会开完了,活才刚开始

打开妙记,整理纪要,提取待办,一个个去飞书任务里创建,然后再发到群里通知大家。顺利的话 30 分钟,不顺利的话(比如你忘了某个待办),可能第二天才想起来。
我自己一天有时候三四个会,说实话,光整理纪要就够喝一壶了。
所以我就想:能不能让 AI 帮我把这套流程自动跑了?会议一结束,一行命令下去,纪要提取、任务创建、群聊通知全部搞定。
答案是可以的。飞书有一个 CLI 工具叫 lark-cli,配合 Claude Code 这样的 AI Agent,整个流程可以用一个 Shell 脚本串起来
## 我做了什么

最终效果是一个脚本 meeting-automation.sh,跑起来是这样的:
> ╔══════════════════════════════════════╗
> ║ 会议自动化:从纪要到待办 ║
> ╚══════════════════════════════════════╝
> ━━━ Step 1: 搜索会议 ━━━
> ✓ 找到 4 个会议
> ━━━ Step 2: 获取会议纪要 ━━━
> ✓ 找到妙记文档
> ✓ 获取到会议纪要(摘要 + 待办)
> ━━━ Step 3: 创建飞书任务 ━━━
> ✓ 任务已创建 (ID: b5a76ecd-xxxx)
> → https://applink.feishu.cn/client/todo/detail?guid=xxxx
> ━━━ Step 4: 生成会议纪要文档 ━━━
> ✓ 已有妙记文档,直接复用
> ━━━ Step 5: 发送群聊通知 ━━━
> ✓ 通知已发送
5 步,全自动,从会议搜索到群聊通知一条龙
## 完整流程

整个自动化分五步。每一步对应一个 lark-cli 命令。
Step 1:搜索今天的会议
> lark-cli vc +search --start 2026-04-02 --end 2026-04-02 --as user --format json
返回当天所有会议列表,包括会议主题、时间、组织者。多个会议的话脚本会让你选一个。
Step 2:获取会议纪要
这一步其实要跑两个命令。先拿到妙记的文档 Token:
> lark-cli vc +notes --meeting-ids "会议ID" --as user --format json
再用这个 Token 去读纪要内容:
> lark-cli docs +fetch --doc "文档Token" --as user --format json
返回的是完整的 Markdown,包括 AI 生成的摘要和待办事项。
Step 3:创建飞书任务
从纪要里提取 # 待办 下面的内容,逐条创建任务:
> lark-cli task +create --summary "待办内容" --due "+7d" --as user
每个任务会返回一个链接,点击就能在飞书里看到。
Step 4:处理纪要文档
如果会议已经有妙记,直接用妙记的文档链接,不重复创建。如果没有妙记(比如没开录制),脚本会自动创建一份基础纪要文档。
Step 5:发送群聊通知
把摘要、待办列表、纪要链接打包成一条 Markdown 消息发到群里:
> lark-cli im +messages-send --chat-id "群聊ID" --markdown "通知内容" --as bot
## 踩过的坑

这个脚本看着简单,但搭建过程踩了不少坑。我把几个关键的列出来,免得你们走弯路。
坑 1:user 身份 vs bot 身份
lark-cli 有两种身份:user(代表你个人)和 bot(代表应用机器人)。
关键是,不同的 API 支持的身份不一样。
- vc +search(搜索会议):只支持 user
- vc +notes(获取妙记):只支持 user
- task +create(创建任务):user 和 bot 都行
- im +messages-send(发消息):user 和 bot 都行
我一开始全用 --as bot,结果搜会议直接报错。后来改成 --as user,又发现 user 身份需要单独登录授权,不是配置好应用就能用的。
教训:先用 --help 看清楚每个命令支持哪种身份,别想当然。
坑 2:权限审批是异步的
跑 lark-cli auth login --recommend 的时候,你以为在浏览器里点了授权就完事了?不一定。
如果你的飞书组织开启了权限审核,你提交的权限申请需要管理员审批。CLI 会直接告诉你:
> The requested permissions are already under review. Please wait for approval.
这个等待时间不确定,可能几分钟也可能几小时。解决方案:找你的飞书管理员催一下,或者用 --recommend 只申请推荐权限(自动审批的那种)。
坑 3:+notes 不直接返回纪要内容
我一开始以为 vc +notes 会直接返回会议摘要和待办,像这样:
> { "summary": "会议讨论了...", "todos": [...] }
实际上它只返回一个文档 Token:
> { "note_doc_token": "APHydgNOTo1d9kxbwHScklpin5g" }
你还需要再调一次 docs +fetch 才能拿到真正的内容。这意味着获取纪要其实是两步操作,不是一步。
坑 4:CLI 的 stderr 日志会污染 JSON 输出
lark-cli vc +notes 在输出 JSON 之前,会先往 stderr 打一些进度日志:
> [vc +notes] querying 1 meeting_id(s)
> [vc +notes] querying meeting_id=xxx ...
> [vc +notes] done: 1 total, 1 succeeded, 0 failed
如果你用 2>&1 合并了 stdout 和 stderr(Shell 脚本里很常见),这些日志就会混到 JSON 里,导致 jq 解析失败。
解决方案:用 grep -v '^\[vc ' 过滤掉这些日志行。
坑 5:用 bot 创建的任务,user 看不到
这个坑最坑。
我一开始用 --as bot 创建任务,创建成功了,返回了任务 ID。但是去飞书任务里一看,空的,什么都没有
原因是 bot 创建的任务归属在 bot 名下,不会出现在你个人的待办列表里。你用 --as user 创建,任务才会归到你的账户下,你才能在飞书的「待办」Tab 里看到它。
而且两种身份返回的字段还不一样:bot 返回 task.id,user 返回 data.guid。解析的时候要注意。
坑 6:会议搜索的数据结构不是你以为的样子
飞书的 API 文档和实际返回经常有出入。我一开始假设会议列表长这样:
> { "items": [{ "meeting_id": "xxx", "topic": "会议主题" }] }
实际返回是这样的:
> {
> "data": {
> "items": [{
> "id": "xxx",
> "display_info": "mcn发展沟通\n录制:...",
> "meta_data": { "description": "3月23日 17:00 | 组织者:Jason Zhu" }
> }]
> }
> }
会议主题藏在 display_info 的第一行,时间在 meta_data.description 里。字段名是 id 不是 meeting_id。外面还多套了一层 data。
教训:永远先跑一次真实的命令看返回结果,别靠猜。
## 脚本用法

> # 查看帮助
> bash meeting-automation.sh --help
> # 预览模式(不实际执行,看看会做什么)
> bash meeting-automation.sh --dry-run
> # 指定日期
> bash meeting-automation.sh --date 2026-03-23
> # 指定会议 ID + 通知群聊
> bash meeting-automation.sh --meeting-id 7620370091625106363 --chat-id oc_xxx
> # 完整执行:搜索今天的会议 → 创建任务 → 发通知
> bash meeting-automation.sh --chat-id oc_你的群聊ID
## 核心收益

说几个实际的数字:
- 时间:从手动 30 分钟压缩到 1 分钟(主要是等命令跑完)
- 准确性:妙记 AI 提取的待办不会遗漏,比人工整理靠谱
- 一致性:每次生成的纪要格式统一,任务自动带截止日期
- 可追踪:所有待办自动进入飞书任务系统,不会漏掉
## 最后说两句
这个脚本本身不复杂,就是把五六个 lark-cli 命令用 Shell 串起来。但它解决了一个真实的问题:会议之后的重复性劳动。
有意思的是,整个脚本从零到可用,我全程是用 Claude Code 来搭的。我告诉它我想要什么,它帮我查 lark-cli 的命令、写脚本、调试报错、适配数据结构。中间踩的那些坑,也是它帮我一个个排查的。
这就是我第四课讲的那个概念,AI Agent 能干活。你给它一个目标,它自己去拆解、执行、调试
如果你也有类似的重复性工作,试试 AI Agent + CLI 工具的组合。你不用会编程,能描述清楚你想要什么就行。
## 相关链接
- [Jason Zhu](https://x.com/GoSailGlobal)
- [@GoSailGlobal](https://x.com/GoSailGlobal)
- [1.2K](https://x.com/GoSailGlobal/status/2039722861649437075/analytics)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [https://applink.feishu.cn/client/todo/detail?guid=xxxx](https://applink.feishu.cn/client/todo/detail?guid=xxxx)
- [task.id](https://task.id/)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [meeting-automation.sh](https://meeting-automation.sh/)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [11:13 PM · Apr 2, 2026](https://x.com/GoSailGlobal/status/2039722861649437075)
- [1,270 Views](https://x.com/GoSailGlobal/status/2039722861649437075/analytics)
---
*导出时间: 2026/4/3 01:56:05*