skills/feishu-cli-vc/SKILL.md
飞书视频会议与妙记操作。多维搜索历史会议、获取会议纪要/AI 产物/逐字稿、 查询会议录制、下载妙记媒体文件、会议机器人入会/离会/会议事件。支持 meeting-ids / minute-tokens / calendar-event-ids 三路径入口。当用户请求"搜索会议"、"会议记录"、 "会议纪要"、"逐字稿"、"妙记"、"meeting"、"vc search"、"vc recording"、"minutes"、 "下载妙记"、"妙记视频"、"会议录制"、"会议机器人"、"机器人入会"、"vc bot"、 "从日程找会议"时使用。
npx skillsauth add riba2534/feishu-cli feishu-cli-vcInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
搜索历史会议、获取纪要/AI 产物/逐字稿、查询会议录制、下载妙记媒体。
feishu-cli:如尚未安装,请前往 riba2534/feishu-cli 获取安装方式。
vc search/notes/recording、vc bot meeting-events)与 minutes 全部命令需要 User Access Token(推荐先 auth check --scope "...",再执行 feishu-cli auth login --scope "..." 或 --domain vc --domain minutes --recommend);例外:vc bot meeting-join / vc bot meeting-leave 默认走 Bot/Tenant 身份,仅靠 App ID + App Secret 即可,无需登录(详见第 6 节与「注意事项」的身份说明)FEISHU_APP_ID + FEISHU_APP_SECRET 或 ~/.feishu-cli/config.yaml)feishu-cli auth status 查看登录状态;feishu-cli auth check --scope "vc:meeting.search:read" 预检 scopefeishu-cli vc search [过滤条件]
底层走 POST /open-apis/vc/v1/meetings/search。至少指定一个过滤条件。
| 参数 | 类型 | 说明 |
|------|------|------|
| --query | string | 关键词(1-50 字符) |
| --start | string | 起始时间(YYYY-MM-DD 或 RFC3339) |
| --end | string | 结束时间(YYYY-MM-DD 或 RFC3339,纯日期自动对齐 23:59:59) |
| --organizer-ids | string | 主持人 open_id 列表,逗号分隔 |
| --participant-ids | string | 参会者 open_id 列表,逗号分隔 |
| --room-ids | string | 会议室 ID 列表,逗号分隔 |
| --page-size | int | 每页数量(1-30,默认 15) |
| --page-token | string | 分页标记 |
| -o, --output | string | json 格式化输出 |
feishu-cli vc notes (--meeting-ids | --minute-tokens | --calendar-event-ids) [选项]
三入口互斥,均支持逗号分隔批量(最多 50 条)。
| 参数 | 类型 | 说明 |
|------|------|------|
| --meeting-ids | CSV | 会议 ID 列表 |
| --minute-tokens | CSV | 妙记 token 列表 |
| --calendar-event-ids | CSV | 日历事件实例 ID 列表(自动反查 meeting_ids + meeting_notes) |
| --with-artifacts | bool | 额外获取 AI 产物(summary / todos / chapters) |
| --download-transcript | bool | 下载逐字稿到 {output-dir}/artifact-{sanitized_title}-{token}/transcript.txt(已存在时需加 --overwrite) |
| --output-dir | string | 逐字稿落盘目录(默认当前目录) |
| --overwrite | bool | 覆盖已存在的逐字稿文件 |
| -o, --output | string | json 格式化输出 |
JSON 输出结构:顶层为 {items, summary};每个 items[] 为 {id, ok, data, error}。成功项的会议字段位于 items[].data,包括 source / meeting_id / minute_token / title / minute_url / create_time / note_doc / verbatim_doc / shared_docs / artifacts / transcript_path。
feishu-cli vc recording (--meeting-ids | --calendar-event-ids)
从会议录制 URL 中提取 minute_token,用于后续下载媒体或获取妙记。互斥入口,批量最多 50 条。输出字段为 meeting_id / minute_token / recording_url / duration,没有 status 字段。
| 参数 | 类型 | 说明 |
|------|------|------|
| --meeting-ids | CSV | 会议 ID 列表 |
| --calendar-event-ids | CSV | 日历事件实例 ID 列表 |
| -o, --output | string | json 格式化输出 |
feishu-cli minutes get <minute_token> [--with-artifacts] [-o json]
| 参数 | 说明 |
|------|------|
| <minute_token> | 位置参数,必填 |
| --with-artifacts | 额外调用 artifacts API 合并输出(summary / todos / chapters) |
| -o, --output json | JSON 格式输出 |
feishu-cli minutes download --minute-tokens <t1,t2,...> [--output <path>] [--overwrite] [--url-only]
先调 GET /open-apis/minutes/v1/minutes/{token}/media 拿预签名 URL,再走 HTTP 流式下载。内置 SSRF 防护(拒绝 localhost/回环/内网段)、重定向校验(最多 5 次、禁止 HTTPS→HTTP 降级)、文件名解析(Content-Disposition / RFC 5987 filename* / Content-Type 推导扩展名)、批量文件名冲突去重(加 {token}- 前缀)、5 req/s 速率限制(time.Ticker)。
| 参数 | 类型 | 说明 |
|------|------|------|
| --minute-tokens | CSV | 必填,最多 50 条 |
| --output | string | 输出路径:单 token 为文件或目录;批量必须是目录;默认当前目录 |
| --overwrite | bool | 覆盖已存在文件 |
| --url-only | bool | 只打印下载 URL,不实际下载 |
feishu-cli vc bot meeting-join --meeting-number 123456789 [--password 1234] [--dry-run]
feishu-cli vc bot meeting-leave --meeting-id 6911188411932033028 [--dry-run]
feishu-cli vc bot meeting-events --meeting-id 6911188411932033028 --start 2026-03-01 --end 2026-03-31
让会议机器人按会议号加入会议、离开会议,以及查询机器人侧的会议事件。
| 子命令 | 端点 | 身份 | 关键参数 |
|------|------|------|---------|
| meeting-join | POST /open-apis/vc/v1/bots/join | 默认 Bot/Tenant | --meeting-number(必填)、--password(可选)、--dry-run、-o json |
| meeting-leave | POST /open-apis/vc/v1/bots/leave | 默认 Bot/Tenant | --meeting-id(必填)、--dry-run、-o json |
| meeting-events | GET /open-apis/vc/v1/bots/events | 必须 User Token | --meeting-id(必填)、--start、--end、--page-size(20-100,默认 20)、--page-token、--dry-run、-o json |
三个子命令均支持
--dry-run(只打印将要发送的请求参数/请求体,不实际调用)与-o json(输出原始响应)。meeting-join/meeting-leave默认用 Bot/Tenant 身份,无需登录;只有显式传--user-access-tokenflag 才切到 User 身份(这两个命令用resolveFlagUserToken,不读FEISHU_USER_ACCESS_TOKEN环境变量)。meeting-events端点不接受 Tenant Token:已登录会自动用 User Token,未登录会被99991663拒绝 → 需先feishu-cli auth login。meeting-events的--page-size取值范围是 20-100(与vc search的 1-30 不同);传 0 或不传走默认 20,传 1-19 会被拒。
# 关键词 + 时间范围搜索
feishu-cli vc search --query "周会" --start 2026-03-20 --end 2026-04-11
# 按主持人过滤 + JSON 输出
feishu-cli vc search --organizer-ids ou_xxx,ou_yyy -o json
# 通过会议 ID 批量查纪要
feishu-cli vc notes --meeting-ids 6900001,6900002
# 通过妙记 token 查 + 获取 AI 产物 + 下载逐字稿
feishu-cli vc notes --minute-tokens obcnxxxx \
--with-artifacts --download-transcript --output-dir ./notes
# 从日历事件反查并下载全部逐字稿
feishu-cli vc notes --calendar-event-ids <event_id> --download-transcript --output-dir ./notes
# 从会议 ID 反查 minute_token
feishu-cli vc recording --meeting-ids 6900001 -o json
# 单条妙记下载到当前目录(自动解析文件名)
feishu-cli minutes download --minute-tokens obcnxxxx
# 批量下载到指定目录
feishu-cli minutes download --minute-tokens t1,t2,t3 --output ./media --overwrite
# 只取下载链接不下载
feishu-cli minutes download --minute-tokens obcnxxxx --url-only
# 获取妙记信息并展示 AI 摘要
feishu-cli minutes get obcnxxxx --with-artifacts
# 机器人按会议号入会(默认 Bot/Tenant 身份,无需登录)
feishu-cli vc bot meeting-join --meeting-number 123456789 --password 1234
# 预览离会请求体不实际调用
feishu-cli vc bot meeting-leave --meeting-id 6911188411932033028 --dry-run
# 查询机器人会议事件(必须 User Token),分页 + JSON 输出
feishu-cli vc bot meeting-events --meeting-id 6911188411932033028 \
--start 2026-03-01 --end 2026-03-31 --page-size 50 -o json
# 1. 搜索目标会议
feishu-cli vc search --query "架构评审" --start 2026-03-01 -o json
# → 记录 meeting_id
# 2. 查会议录制,拿 minute_token
feishu-cli vc recording --meeting-ids <meeting_id> -o json
# → 记录 minute_token
# 3. 下载媒体文件
feishu-cli minutes download --minute-tokens <minute_token> --output ./media
# 1. 从日历事件一次性拿到纪要、AI 产物、逐字稿
feishu-cli vc notes --calendar-event-ids <event_id> \
--with-artifacts --download-transcript --output-dir ./notes -o json
# 2. 若要下载音视频,配合 recording 命令
feishu-cli vc recording --calendar-event-ids <event_id> -o json
# → 取得 minute_token
feishu-cli minutes download --minute-tokens <minute_token> --output ./media
以下为最小所需精确 scope;项目顶层 CLAUDE.md 用
minutes:minutes*:*通配等价覆盖(minutes:minutes:readonly+minutes:minutes.artifacts:read+minutes:minutes.media:export+minutes:minutes.transcript:export)。
| 命令 / 功能 | 必需 scope |
|------|---------|
| vc search | vc:meeting.search:read |
| vc notes(meeting-ids 路径) | vc:meeting.meetingevent:read、vc:note:read |
| vc notes(minute-tokens 路径) | minutes:minutes:readonly、vc:note:read |
| vc notes --with-artifacts | + minutes:minutes.artifacts:read |
| vc notes --download-transcript | + minutes:minutes.transcript:export |
| vc notes(calendar-event-ids 路径) | + calendar:calendar:read、calendar:calendar.event:read |
| vc recording | vc:record:readonly(calendar 路径同上追加日历权限) |
| vc bot meeting-join | vc:meeting.bot.join:write |
| vc bot meeting-leave | vc:meeting.bot.leave:write |
| vc bot meeting-events | vc 读权限(必须 User Token;未登录会被 99991663 拒绝) |
| minutes get | minutes:minutes:readonly(--with-artifacts 额外需 minutes:minutes.artifacts:read) |
| minutes download | minutes:minutes.media:export |
权限在飞书开放平台的应用权限管理页面开通;开通后执行 feishu-cli auth login --scope "所需 scope..." 或 feishu-cli auth login --domain vc --domain minutes --recommend 重新授权即可。
vc search/notes/recording、vc bot meeting-events、minutes get/download。未登录会中文报错并引导 feishu-cli auth login;meeting-events 端点不接受 Tenant Token,未登录直接被 99991663 拒绝。vc bot meeting-join / vc bot meeting-leave,仅需 App ID + App Secret,无需登录;只有显式传 --user-access-token flag 才切到 User 身份(用 resolveFlagUserToken,不读 FEISHU_USER_ACCESS_TOKEN 环境变量)。meeting-join/meeting-leave(仅认 --user-access-token flag)外,其余命令也可用 FEISHU_USER_ACCESS_TOKEN 环境变量。vc search --start/--end 接受 YYYY-MM-DD / YYYY-MM-DD HH:MM:SS / RFC3339,均按本地时区解析;纯日期的 --end 自动对齐到 23:59:59。feishu-cli calendar agenda 或日程视图 API 获取。minutes download 按 Content-Disposition > Content-Type 扩展 > {token}.media 的优先级决定文件名;批量模式冲突时自动加 {token}- 前缀。vc notes 调用中同一 minute_token 的逐字稿只下载一次。tools
往飞书文档里插入/更新/读取/删除「妙笔BOX」HTML 小组件块——飞书文档里**唯一能跑动画和可交互内容**的载体。 把一整页 HTML(CSS/JS)塞进块,在 iframe 沙箱里真实执行:CSS @keyframes 动画、ECharts/Three.js 图表、 Canvas、可拖拽力导向图、Dashboard、打字机/进度条/状态机动画等都能动。 当用户请求"飞书文档里做动画/能动的图/可交互图表/数据大屏/Dashboard/真实地图/地理飞线/3D 图表(map3D、3D 曲面、Three.js)/在飞书文档里放 ECharts 可视化/批量做一套图表演示"、"妙笔BOX"、"HTML 小组件"、 "在飞书文档里跑 ECharts/CSS 动画/JavaScript"、"嵌入网页/HTML 到飞书文档"、"飞书文档里的图怎么动起来"时使用。 注意:要"动"必须用本技能(妙笔BOX);画板(feishu-cli-board)的 SVG 节点会被服务端栅格化成静态图,不会动。
tools
飞书 OpenAPI 裸调。api GET/POST/PUT/DELETE/PATCH <path> 直接调用任意飞书 OpenAPI 接口, 覆盖 feishu-cli 尚未封装的接口(对齐 lark-cli 的 api 能力)。支持 --params(query)/--data(body JSON)/--data-file(从文件读 body)/ --as auto|user|bot 身份/--dry-run 预览/-o 二进制下载/--format/--jq。 当用户请求"调用 X API"、"裸调飞书接口"、"feishu-cli 没封装的接口怎么调"、"raw api"、 "用 api 命令发请求"、"下载飞书媒体/文件 binary"时使用。 不适用:仅查 schema 不调用(用 feishu-cli schema);已有专用命令的高频场景(用对应 feishu-cli <模块>)。
tools
飞书电子表格高级能力(筛选视图 + 筛选条件 + 下拉单元格 + 浮动图片 + 批量样式)。 filter-view CRUD 管理筛选视图,filter-view condition CRUD 写筛选条件(V3 API); dropdown set/get/update/delete 管理单元格下拉框(V2 dataValidation); image get/update/media-upload/write-image 操作浮动图片与单元格写图; batch-set-style 批量设置多范围单元格样式。 基础读写(read/write/style/add-rows/add-sheet)仍在 feishu-cli 主命令 sheet/bitable, 本 skill 专注高级能力。 当用户请求"筛选视图"、"筛选条件"、"加下拉框"、"数据验证"、"列下拉"、"浮动图片"、"插入图片"、"批量样式"时使用。
tools
飞书 OpenAPI 方法本地浏览 + 通用 API 透传调用。schema `service.resource.method` 三段式查路径/参数/scope(无需联网); `feishu-cli api <method> <path>` 直接调任意端点(v1.29+,覆盖 2500+ 未封装 API)。 当用户请求"飞书有没有 XX API"、"X API 的参数是什么"、"X 方法需要什么 scope"、 "OpenAPI 方法浏览"、"看 SDK 怎么调用"、"调一个没封装的飞书 API"时使用。 不适用:查在线最新 schema(请用 OpenAPI Explorer,本地元数据可能落后于飞书开放平台)。