@amaster.ai/pi-lark 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +1 -3
  2. package/package.json +2 -2
  3. package/skills/lark-approval/SKILL.md +2 -2
  4. package/skills/lark-approval/references/lark-approval-instances-initiated.md +5 -0
  5. package/skills/lark-approval/references/lark-approval-tasks-add-sign.md +68 -20
  6. package/skills/lark-approval/references/lark-approval-tasks-query.md +5 -0
  7. package/skills/lark-apps/SKILL.md +1 -1
  8. package/skills/lark-apps/references/lark-apps-cache.md +38 -5
  9. package/skills/lark-base/SKILL.md +131 -11
  10. package/skills/lark-base/references/lark-base-app.md +18 -0
  11. package/skills/lark-base/references/lark-base-dashboard-block-config.md +28 -1
  12. package/skills/lark-base/references/lark-base-dashboard.md +29 -11
  13. package/skills/lark-base/references/lark-base-data-query.md +2 -6
  14. package/skills/lark-base/references/lark-base-field-extension.md +170 -0
  15. package/skills/lark-base/references/lark-base-field-lookup.md +1 -1
  16. package/skills/lark-base/references/lark-base-field-schema.md +10 -1
  17. package/skills/lark-base/references/lark-base-filter-condition.md +32 -5
  18. package/skills/lark-base/references/lark-base-form-detail.md +1 -1
  19. package/skills/lark-base/references/lark-base-form-questions-create.md +36 -5
  20. package/skills/lark-base/references/lark-base-form-submit.md +2 -2
  21. package/skills/lark-base/references/lark-base-record-history-list.md +19 -2
  22. package/skills/lark-base/references/lark-base-record-query-and-analysis-sop.md +95 -205
  23. package/skills/lark-base/references/lark-base-template-center.md +199 -0
  24. package/skills/lark-calendar/SKILL.md +14 -5
  25. package/skills/lark-calendar/references/lark-calendar-join-event.md +43 -0
  26. package/skills/lark-calendar/references/lark-calendar-transfer.md +89 -0
  27. package/skills/lark-doc/references/lark-doc-fetch.md +1 -1
  28. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -2
  29. package/skills/lark-drive/references/lark-drive-member-remove.md +2 -1
  30. package/skills/lark-im/SKILL.md +23 -3
  31. package/skills/lark-im/references/lark-im-message-read-status.md +96 -0
  32. package/skills/lark-im/references/lark-im-messages-edit.md +89 -0
  33. package/skills/lark-im/references/lark-im-messages-mget.md +8 -0
  34. package/skills/lark-im/references/lark-im-messages-reply.md +2 -0
  35. package/skills/lark-im/references/lark-im-messages-send.md +6 -2
  36. package/skills/lark-mail/references/lark-mail-draft-create.md +12 -12
  37. package/skills/lark-mail/references/lark-mail-forward.md +17 -17
  38. package/skills/lark-mail/references/lark-mail-reply-all.md +8 -8
  39. package/skills/lark-mail/references/lark-mail-reply.md +6 -6
  40. package/skills/lark-mail/references/lark-mail-send.md +20 -20
  41. package/skills/lark-mail/references/lark-mail-template-create.md +7 -6
  42. package/skills/lark-mail/references/lark-mail-template-update.md +7 -6
  43. package/skills/lark-markdown/SKILL.md +1 -1
  44. package/skills/lark-meeting/SKILL.md +150 -0
  45. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-apply-permission.md +2 -5
  46. package/skills/lark-meeting/references/lark-minutes-detail.md +52 -0
  47. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-download.md +4 -6
  48. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-search.md +4 -34
  49. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-speaker-replace.md +3 -4
  50. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-summary.md +3 -5
  51. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-todo.md +44 -16
  52. package/skills/{lark-minutes → lark-meeting}/references/lark-minutes-update.md +2 -3
  53. package/skills/lark-meeting/references/lark-minutes-upload.md +71 -0
  54. package/skills/lark-meeting/references/lark-note-detail.md +15 -0
  55. package/skills/lark-meeting/references/lark-note-transcript.md +19 -0
  56. package/skills/lark-meeting/references/lark-vc-agent-meeting-end.md +26 -0
  57. package/skills/lark-meeting/references/lark-vc-agent-meeting-invite.md +32 -0
  58. package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-join.md +11 -56
  59. package/skills/{lark-vc-agent → lark-meeting}/references/lark-vc-agent-meeting-leave.md +2 -41
  60. package/skills/lark-meeting/references/lark-vc-detail.md +31 -0
  61. package/skills/lark-meeting/references/lark-vc-meeting-countdown.md +103 -0
  62. package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-events.md +9 -98
  63. package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-list-active.md +4 -29
  64. package/skills/{lark-vc → lark-meeting}/references/lark-vc-meeting-message-send.md +3 -5
  65. package/skills/lark-meeting/references/lark-vc-meeting-screenshot.md +34 -0
  66. package/skills/{lark-vc → lark-meeting}/references/lark-vc-recording.md +4 -65
  67. package/skills/{lark-vc → lark-meeting}/references/lark-vc-search.md +9 -28
  68. package/skills/lark-meeting/scenes/create-and-edit-minutes.md +147 -0
  69. package/skills/lark-meeting/scenes/live-meeting-attend.md +164 -0
  70. package/skills/lark-meeting/scenes/live-meeting-interact.md +101 -0
  71. package/skills/lark-meeting/scenes/query-meeting-and-artifacts.md +90 -0
  72. package/skills/lark-meeting/scenes/query-minutes-and-artifacts.md +70 -0
  73. package/skills/lark-meeting/scenes/query-note-and-artifacts.md +127 -0
  74. package/skills/lark-minutes/SKILL.md +5 -203
  75. package/skills/lark-note/SKILL.md +5 -88
  76. package/skills/lark-shared/SKILL.md +25 -224
  77. package/skills/lark-shared/references/lark-shared-config-init.md +12 -0
  78. package/skills/lark-shared/references/lark-shared-high-risk-approval.md +38 -0
  79. package/skills/lark-shared/references/lark-shared-identity-and-permissions.md +105 -0
  80. package/skills/lark-shared/references/lark-shared-output-contract.md +17 -0
  81. package/skills/lark-shared/references/lark-shared-update-notice.md +23 -0
  82. package/skills/lark-sheets/SKILL.md +76 -60
  83. package/skills/lark-sheets/references/lark-sheets-batch-update.md +83 -14
  84. package/skills/lark-sheets/references/lark-sheets-chart.md +296 -159
  85. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +46 -9
  86. package/skills/lark-sheets/references/lark-sheets-filter.md +1 -1
  87. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +78 -65
  88. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +21 -17
  89. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +2 -1
  90. package/skills/lark-sheets/references/lark-sheets-range-operations.md +1 -1
  91. package/skills/lark-sheets/references/lark-sheets-read-data.md +8 -5
  92. package/skills/lark-sheets/references/lark-sheets-search-replace.md +4 -4
  93. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +2 -2
  94. package/skills/lark-sheets/references/lark-sheets-sparkline.md +1 -0
  95. package/skills/lark-sheets/references/lark-sheets-styles-put.md +3 -3
  96. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +6 -4
  97. package/skills/lark-sheets/references/lark-sheets-workbook.md +3 -1
  98. package/skills/lark-sheets/references/lark-sheets-write-cells.md +50 -48
  99. package/skills/lark-sheets/scripts/lark_chart_layout_check.py +472 -0
  100. package/skills/lark-slides/SKILL.md +2 -0
  101. package/skills/lark-slides/references/cli/lark-slides-add-slide.md +6 -6
  102. package/skills/lark-slides/references/cli/lark-slides-delete-slide.md +3 -3
  103. package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +11 -11
  104. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +1 -1
  105. package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +2 -2
  106. package/skills/lark-slides/references/workflow/slides-editing.md +11 -11
  107. package/skills/lark-slides/references/xml/slides_xml_schema_definition.xml +103 -14
  108. package/skills/lark-task/SKILL.md +1 -1
  109. package/skills/lark-vc/SKILL.md +5 -205
  110. package/skills/lark-vc-agent/SKILL.md +5 -206
  111. package/skills/lark-workflow-meeting-summary/SKILL.md +20 -13
  112. package/skills/lark-base/references/lark-base-cell-value.md +0 -165
  113. package/skills/lark-base/references/lark-base-data-analysis-pandas.md +0 -93
  114. package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +0 -120
  115. package/skills/lark-base/references/lark-base-record-batch-create.md +0 -63
  116. package/skills/lark-base/references/lark-base-record-batch-update.md +0 -57
  117. package/skills/lark-base/references/lark-base-record-query-and-analysis-cloud-sop.md +0 -145
  118. package/skills/lark-minutes/references/lark-minutes-detail.md +0 -63
  119. package/skills/lark-minutes/references/lark-minutes-upload.md +0 -104
  120. package/skills/lark-note/references/lark-note-detail.md +0 -29
  121. package/skills/lark-note/references/lark-note-transcript.md +0 -25
  122. package/skills/lark-vc/references/lark-vc-detail.md +0 -49
  123. package/skills/lark-vc/references/vc-domain-boundaries.md +0 -203
@@ -0,0 +1,127 @@
1
+ # 基于 note_id 查询智能纪要及关联产物
2
+
3
+ - 身份:`note +detail` 支持 `--as user` / `--as bot`;`note +transcript` 仅支持 `--as user`。`note_id` 若由某个身份取得(例如 `vc +detail --as bot`),`note +detail` 及后续 Doc、Drive 命令必须显式沿用同一个 `--as`。
4
+ - 如果 `note +detail --as bot` 返回 `unified`,不要静默切到 `--as user` 继续。先向用户说明该纪要逐字稿只能以用户身份读取,只有用户明确同意才切换身份重试。
5
+
6
+ ## 从智能纪要 Docx 查询关联链接
7
+
8
+ 当用户提供智能纪要 Docx URL/token,且只需要纪要类型或关联产物链接时,直接执行:
9
+
10
+ ```bash
11
+ lark-cli docs +fetch --doc "<docx_url_or_token>" --doc-format markdown --as <source_identity>
12
+ ```
13
+
14
+ 从返回结构中仅提取:
15
+
16
+ - 输入文档:作为智能纪要主文档,返回用户提供的原始 URL。
17
+ - `<vc-transcribe-tab vc-node-id="...">`:可作为明确的 `note_id`。
18
+ - 标记为“文字记录”的 Docx URL。
19
+ - `/minutes/` 妙记 URL。
20
+ - `<cite type="doc" doc-id="..." file-type="...">` 中的共享文档 token。
21
+
22
+ 如果没有从 `<vc-transcribe-tab>` 取得明确的 `note_id`,但存在妙记 URL,从 URL 路径最后一段提取 `minute_token`,再查询妙记基础信息:
23
+
24
+ ```bash
25
+ lark-cli minutes +detail --minute-tokens "<minute_token>" --as <source_identity>
26
+ ```
27
+
28
+ 从对应的 `note_id` 继续 Note 查询;该字段为空或未返回时,继续按 Doc 处理。不要把 Doc token 或 `minute_token` 直接传给 Note 命令。
29
+
30
+ ## 确认 note_id
31
+
32
+ Note 域只接受明确的 `note_id`:
33
+
34
+ - 用户直接提供的 `note_id`。
35
+ - `vc +detail` 从 `meeting_id` 返回的 `note_id`。
36
+ - `minutes +detail` 从 `minute_token` 返回的顶层 `note_id`。
37
+ - `docs +fetch` 返回的 `<vc-transcribe-tab vc-node-id="...">` 中的 `vc-node-id`。
38
+
39
+ 不要从 Doc token、Docx URL、文档标题、正文或 backlink 反推 `note_id`。只有自然语言纪要标题或 Docx 链接时,先使用 Drive/Doc 搜索或读取文档;没有明确 `vc-node-id` 时继续按 Doc 处理,不进入 Note 查询。如果文档正文明确给出“逐字稿”或“文字记录”的 Docx 链接,将该链接继续作为 Doc 沿用当前身份读取;该链接仍不是 `note_id`。
40
+
41
+ 如果当前只有 `meeting_id`、`minute_token` 或 Calendar `event_id`,先使用会议、妙记或日程场景取得 `note_id`;不要把这些标识直接传给 Note 命令。
42
+
43
+ ## 查询关联产物标识
44
+
45
+ ```bash
46
+ lark-cli note +detail --note-id <note_id> --as <source_identity>
47
+ ```
48
+
49
+ 保留以下字段,并按用户目标选择后续操作:
50
+
51
+ | 字段 | 含义 | 后续操作 |
52
+ |---|---|---|
53
+ | `note_id` | Note 唯一标识 | 后续 Note 命令继续使用该值 |
54
+ | `note_display_type` | `normal` / `unified` / `unknown` | 决定逐字稿入口 |
55
+ | `note_doc_token` | AI 智能纪要正文 | 交给 Doc 读取正文,或交给 Drive 查询名称和 URL |
56
+ | `verbatim_doc_token` | `normal` 或部分 `unknown` Note 的独立逐字稿 Doc | 仅按下方展示类型规则使用 |
57
+ | `shared_doc_tokens` | 会中共享文档列表 | 按用户目标查询元信息或正文 |
58
+
59
+ 用户只需要关联产物标识时,返回上述可用 token 和 `note_display_type` 后停止,不读取文档正文。
60
+
61
+ ## 读取智能纪要正文
62
+
63
+ 用户需要 AI 智能纪要中的总结、待办、章节或正文时,读取 `note_doc_token`:
64
+
65
+ ```bash
66
+ lark-cli docs +fetch --doc <note_doc_token> --doc-format markdown --as <source_identity>
67
+ ```
68
+
69
+ 读取正文后,检查返回 Markdown 中的第一个 `<whiteboard token="...">`。该画板是智能纪要封面;存在时提取 token,沿用同一身份下载到 `./notes/<note_id>/cover`,与 `note +transcript` 的逐字稿归入同一 Note 目录,并随正文一起展示:
70
+
71
+ ```bash
72
+ lark-cli docs +media-download --type whiteboard --token <whiteboard_token> --output ./notes/<note_id>/cover --as <source_identity>
73
+ ```
74
+
75
+ 没有 `<whiteboard>` 时直接跳过,不视为失败。只有第一个 `<whiteboard>` 按封面处理;不要自动下载正文中的其他画板。
76
+
77
+ 只需要文档名称或 URL 时不要读取正文,使用 Drive 元信息接口:
78
+
79
+ ```bash
80
+ lark-cli drive metas batch_query --data '{"request_docs":[{"doc_type":"docx","doc_token":"<note_doc_token>"}],"with_url":true}' --as <source_identity>
81
+ ```
82
+
83
+ ## 读取逐字稿(文字记录)
84
+
85
+ 逐字稿入口由 `note +detail` 返回的 `note_display_type` 决定,不要只根据 `verbatim_doc_token` 是否为空判断:
86
+
87
+ normal Note 逐字稿是 Doc 读取结果,unified Note 可由 `note +transcript` 保存为 Markdown 或 plain text,Minutes Transcript 则是妙记产物文本。它们都可作为原始发言记录,但序列化格式不是统一契约;应以实际返回内容为准,不要硬编码“发言人 + 相对时间戳”等固定行格式。
88
+
89
+ ### note_display_type = normal 且 有 verbatim_doc_token
90
+
91
+ ```bash
92
+ lark-cli docs +fetch --doc <verbatim_doc_token> --doc-format markdown --as <source_identity>
93
+ ```
94
+
95
+ ### note_display_type = unknown 且 有 verbatim_doc_token
96
+
97
+ ```bash
98
+ lark-cli docs +fetch --doc <verbatim_doc_token> --doc-format markdown --as <source_identity>
99
+ ```
100
+
101
+ ### note_display_type = unknown 且 无 verbatim_doc_token
102
+
103
+ 停止并说明无法确定逐字稿入口,不要反复重试或猜成 unified
104
+
105
+ ### note_display_type = unified
106
+
107
+ ```bash
108
+ lark-cli note +transcript --note-id <note_id> --as user
109
+ ```
110
+
111
+ `note +transcript` 会自动获取完整分页并保存文件;目标文件已存在时,只有用户明确要求覆盖才添加 `--overwrite`。
112
+
113
+ ## 查询会中共享文档
114
+
115
+ `shared_doc_tokens` 是该 Note 关联的会中共享文档,不是逐字稿或 `meeting_note`。按用户目标处理:
116
+
117
+ - 只要文档名称或 URL:使用 `drive metas batch_query`,每批最多查询 10 个 token。
118
+ - 需要正文:逐个使用 `docs +fetch --doc <shared_doc_token>`。
119
+ - 有多个共享文档时,先返回标题和 URL 让用户选择;用户明确要求全部读取时再逐个读取。
120
+ - 某个共享文档不存在或无权限时,保留该 token 并逐项报告,不把整组结果误报为失败。
121
+
122
+ ## 基于纪要内容回答
123
+
124
+ - 用户只要现成 AI 总结、待办或章节时,读取智能纪要正文并返回对应内容。
125
+ - 用户要求提炼、重新总结、复盘、争议分析或“谁说了什么”时,按展示类型读取逐字稿原始内容并独立分析;禁止直接改写 AI 智能纪要作为独立结论。
126
+ - 用户只要链接或关联产物清单时,不读取正文或逐字稿。
127
+ - `meeting_note` 是 Calendar 日程上用户手工绑定的文档,不属于 Note 的 `shared_doc_tokens`,也不能通过 `note_id` 查询。
@@ -1,213 +1,15 @@
1
1
  ---
2
2
  name: lark-minutes
3
3
  version: 1.0.0
4
- description: "飞书妙记:搜索妙记、查看妙记基础信息、下载/上传音视频、读取或编辑妙记的产物内容、改标题、替换说话人/关键词、申请妙记查看/编辑权限。当给出minute_token、本地音视频文件,要查/改/转妙记产物,或用户明确要主动申请妙记权限时使用;本地音视频转纪要/逐字稿优先走本 skill,不要用 ffmpeg/whisper 本地转写。不负责:获取会议关联妙记,或仅按自然语言标题定位纪要"
4
+ description: "仅当用户或上游配置显式指定 lark-minutes 时使用,相关请求统一交由 lark-meeting 技能处理。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["lark-cli"]
8
- cliHelp: "lark-cli minutes --help"
8
+ skills: ["lark-meeting"]
9
9
  ---
10
10
 
11
- # minutes (v1)
11
+ # Compatibility entry
12
12
 
13
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
13
+ 本技能只用于兼容旧名称,不直接处理业务。
14
14
 
15
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-vc/references/vc-domain-boundaries.md`](../lark-vc/references/vc-domain-boundaries.md)**,不读将导致命令使用、会议产物决策、领域边界职责判断错误:
16
- > 1. 了解日历 & VC、会议产物 & 文档的关联关系和职责划分
17
- > 2. 了解会议产物(妙记和纪要)之间的关联关系,例如:**妙记和纪要产生条件相互独立**
18
- > 3. 了解不同会议产物的组成部分,以便根据需求决策使用哪种产物的数据
19
- > 4. 了解会议总结、分析和信息提取的标准流程
20
-
21
- ## 身份
22
-
23
- 身份是跨命令工作流的状态:一旦某个 `minute_token` / `note_id` 由某个身份取得,后续消费它的命令必须显式沿用相同 `--as`,不要依赖 profile 默认身份。完整规则见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 的「身份延续」。
24
-
25
- 所有 minutes 命令默认使用 `--as user`。`+search`、`minutes get`、`+detail`、`+download` 和 `+apply-permission` 也支持 `--as bot`(bot 只能访问 / 操作 bot 有权限的妙记)。精确身份支持以 `<command> --help` 为准。
26
-
27
- ## Shortcuts
28
-
29
- | Shortcut | 说明 |
30
- |----------|------|
31
- | [`+search`](references/lark-minutes-search.md) | 按关键词、所有者、参与者、时间范围搜索妙记;支持 user/bot 身份 |
32
- | [`+detail`](references/lark-minutes-detail.md) | 查询妙记详情(标题和关联的纪要note_id),按需获取 AI 产物(总结、待办、章节、逐字稿、关键词) |
33
- | [`+download`](references/lark-minutes-download.md) | 下载妙记音视频媒体文件 |
34
- | [`+upload`](references/lark-minutes-upload.md) | 上传 file_token 生成妙记 |
35
- | [`+update`](references/lark-minutes-update.md) | 更新妙记标题 |
36
- | [`+apply-permission`](references/lark-minutes-apply-permission.md) | 申请妙记查看或编辑权限 |
37
- | [`+speaker-replace`](references/lark-minutes-speaker-replace.md) | 替换妙记逐字稿中的说话人(须先 `lark-cli api GET .../speakerlist` 取 `speaker_id`) |
38
- | `+word-replace` | 批量替换逐字稿关键词(详见 `lark-cli minutes +word-replace --help`) |
39
- | [`+summary`](references/lark-minutes-summary.md) | 替换妙记 AI 总结全文 |
40
- | [`+todo`](references/lark-minutes-todo.md) | 新建/更新/删除妙记 AI 待办(单条或 `--todos` 批量;不是 lark-task) |
41
-
42
- - 使用任何 Shortcut 前,必须先读其对应 reference 文档。
43
-
44
- ## 意图路由
45
-
46
- | 用户意图 | 命令 |
47
- |---------|------|
48
- | 我的妙记 / 搜索妙记 / 某段时间的妙记 | `+search` |
49
- | 妙记基础信息:标题 / 时长 / 封面 / 链接 | `minutes get` |
50
- | 下载妙记音视频文件、获取媒体下载链接 | `+download`(仅媒体;要妙记内容用 `+detail`) |
51
- | 妙记总结 / 章节 / 待办 / 关键词 / 逐字稿 | `+detail --minute-tokens <token>` + 显式产物 flag |
52
- | 基于妙记**提炼/总结/分析/回顾**会议 | `+detail --minute-tokens <token> --transcript`,再独立分析(**禁止照搬 AI 总结**) |
53
- | 拿这条妙记关联的纪要文档(`note_doc_token` / `verbatim_doc_token` / `shared_doc_tokens`) | `+detail` 取顶层 `note_id` → [`note +detail --note-id`](../lark-note/SKILL.md) |
54
- | 把本地音视频转纪要 / 逐字稿 / 文字稿 | `drive +upload` 取 `file_token` → `+upload` 生成 `minute_url` → `+detail` 拿产物 |
55
- | 在妙记里增加 / 更改 / 删除 AI 待办 | `+todo`(**禁止走 lark-task**) |
56
- | 替换妙记的AI 总结 | `+summary` |
57
- | 重命名妙记/改妙记标题 | `+update` |
58
- | 申请妙记权限(查看/编辑) | `+apply-permission --perm view\|edit` |
59
- | 替换说话人/把 A 的发言改成 B/重新归属发言人/把外部(非飞书)说话人改成飞书用户" | 先 `lark-cli api GET .../transcript/speakerlist` 取 `speaker_id`,再 [`minutes +speaker-replace`](references/lark-minutes-speaker-replace.md);`--from-speaker-id` 只传 id,不传展示名 |
60
- | 批量替换逐字稿关键词 | `+word-replace` |
61
- | 用户同时提到"会议/开会"和"妙记" | 先 [lark-vc](../lark-vc/SKILL.md)(`+search` → `+recording`)获取 `minute_token`,再本 skill |
62
-
63
- ## 核心概念
64
-
65
- - **妙记(Minutes)**:来源于飞书视频会议的录制产物或用户上传的音视频文件,通过 `minute_token` 标识。
66
- - **妙记 Token(minute_token)**:妙记的唯一标识符,可从妙记 URL 末尾提取(如 `https://*.feishu.cn/minutes/obcnxxx` 中的 `obcnxxx`)。如果 URL 中包含额外参数(如 `?xxx`),截取路径最后一段。
67
-
68
- ## 核心场景
69
-
70
- ### 1. 搜索妙记
71
-
72
- 1. 如果是会议的妙记,应优先通过 [lark-vc](../lark-vc/SKILL.md) 定位会议并获取 `minute_token`。
73
- 2. 会议场景的妙记路由,以及"参与的妙记"如何解释,统一以 [minutes +search](references/lark-minutes-search.md) 为准。
74
-
75
-
76
- ### 2. 查看妙记基础信息
77
-
78
- 1. 当用户只需要确认某条妙记的标题、封面、时长、所有者、URL 等基础信息时,使用 `minutes minutes get`。
79
- 2. 如果是会议 / 日程上下文中的妙记基础信息,先通过 VC/Calendar 链路拿到 `minute_token`,再调用 `minutes minutes get`。
80
- 3. 用户意图不明确时,默认先给基础元信息,帮助确认是否命中目标妙记。
81
-
82
- ### 3. 申请妙记权限
83
-
84
- 遇到妙记没有查看或编辑权限时,引导用户申请对应权限;只有用户明确要申请时,才调用 `minutes +apply-permission`。使用前必读 [`+apply-permission` reference](references/lark-minutes-apply-permission.md)(write 操作,含 user/bot 身份与权限语义)。
85
-
86
- 只有当用户明确要求"申请查看权限"、"申请编辑权限"、"帮我申请这条妙记权限"时,才调用:
87
-
88
- ```bash
89
- lark-cli minutes +apply-permission --minute-token <token> --perm view|edit --as user
90
- lark-cli minutes +apply-permission --minute-token <token> --perm view|edit --as bot
91
- ```
92
-
93
- 这是向妙记所有者发起权限申请,不代表立即获得权限。
94
-
95
- **安全约束**:
96
- - 遇到无权限错误时,不要自动调用 `+apply-permission`;先把无权限事实告知用户,只有用户明确要求申请权限时才发起申请。
97
- - **必须沿用触发无权限错误时的来源身份**:例如 `--as bot` 读取妙记时遇到无权限,申请也要用 `--as bot`,不要切到 user 身份申请。
98
- - **禁止**用切换身份的方式绕过资源权限(例如 bot 无权限时改用 user 身份重新读取)。
99
-
100
- ### 4. 上传音视频文件生成妙记(并可继续获取纪要 / 逐字稿)
101
-
102
- 1. 当用户说"把音视频文件转成纪要""把录音转成逐字稿/文字稿/撰写文字""把 mp4/mp3 转成总结/待办/章节"时,也先走这个入口。
103
- 2. **处理流程**:
104
- - **上传音视频获取 `file_token`**:使用 [`lark-cli drive +upload`](../lark-drive/references/lark-drive-upload.md) 上传本地文件到云空间(云盘/云存储)并获取 `file_token`。
105
- - **生成妙记**:获取到 `file_token` 后,调用 [`lark-cli minutes +upload`](references/lark-minutes-upload.md) 将文件转换为妙记并获取 `minute_url` 链接。
106
- - **继续获取纪要 / 逐字稿(按需)**:如果用户目标不是只要妙记链接,而是要纪要、逐字稿、总结、待办或章节,则从 `minute_url` 中提取 `minute_token`,再调用 [`lark-cli minutes +detail --minute-tokens`](references/lark-minutes-detail.md) 获取对应产物。
107
-
108
- > **注意**:必须先获取飞书云空间(云盘/云存储)的 `file_token` 才能进行转换。
109
- >
110
- > **不要误走本地转写工具**:当用户目标是把本地音视频文件转成纪要、逐字稿、文字稿、撰写文字时,不要改用 `ffmpeg`、`whisper` 或其他本地 ASR/转码命令;标准路径就是 `drive +upload -> minutes +upload -> minutes +detail --minute-tokens`。
111
-
112
- ### 5. 编辑妙记的 AI 待办与 AI 总结(写入)
113
-
114
- 当用户要在**某条妙记内**操作 AI 待办或 AI 总结时使用本节。**不是**飞书任务(Task)清单里的待办。
115
-
116
- **触发信号(任一命中即走本 skill,禁止走 lark-task)**:
117
-
118
- - "在(某条)妙记里新建 / 添加 / 修改 / 删除待办"
119
- - "把妙记 A 的待办改成已完成 / 未完成"
120
- - "妙记里的任务1 / 任务2"(上下文已明确是妙记)
121
- - 已给出 `minute_token` 或妙记 URL,且要改待办 / 总结
122
-
123
- **妙记 AI 待办 vs 飞书任务 Task**:
124
-
125
- | 用户意图 | 正确命令 | 错误命令 |
126
- |---------|---------|---------|
127
- | 妙记里加待办 | `minutes +todo --operation add` 或 `--todos '[...]'` | `task +create` / `task tasklists list` |
128
- | 妙记里改待办 | `minutes +todo --operation update --todo-id ...` | `task +update` |
129
- | 妙记里删待办 | `minutes +todo --operation delete --todo-id ...` | `task tasks delete` |
130
- | 我的任务清单 | — | 走 [lark-task](../lark-task/SKILL.md) |
131
-
132
- **新建多条待办**:优先用 `--todos` 一次提交;单条则用多次 `--operation add`:
133
-
134
- ```bash
135
- # 批量:任务1 已完成 + 任务2 未完成
136
- lark-cli minutes +todo --minute-token <token> --as user --todos '[
137
- {"operation":"add","content":"晚上好1","is_done":true},
138
- {"operation":"add","content":"晚上好2","is_done":false}
139
- ]'
140
- ```
141
-
142
- **更新 / 删除前**:先用 `minutes +detail --minute-tokens <token> --todo` 读取 `todos[].todo_id`(按 `content` 匹配目标条目;列表顺序不保证稳定,**不要**用"第 2 条"代替 `todo_id`)。
143
-
144
- **无编辑权限**:若 CLI 返回 `error.subtype=permission_denied`,表示对**这条妙记**没有编辑权,应请所有者授权;**不要**误走 `auth login --scope`。
145
-
146
- **逐字稿关键词替换无命中**:`minutes +word-replace` 时,若 CLI 返回 `error.subtype=not_found`,表示传入的 `source_word` 在该妙记逐字稿中**一个都没匹配到**,未做任何替换。这是**参数问题不是权限问题**:先用 `minutes +detail --minute-tokens <token> --transcript` 读取当前逐字稿,核对 `source_word` 的精确写法与大小写后重试。
147
-
148
- **替换 AI 总结全文**:见 [minutes +summary](references/lark-minutes-summary.md)。
149
-
150
- > 使用 `+todo` 前必须阅读 [references/lark-minutes-todo.md](references/lark-minutes-todo.md);使用 `+summary` 前必须阅读 [references/lark-minutes-summary.md](references/lark-minutes-summary.md)。
151
-
152
- ### 7. 替换妙记逐字稿说话人
153
-
154
- 当用户要把妙记里某说话人的发言改绑到另一位飞书用户时使用。
155
-
156
- **触发信号**:「替换说话人」「把 A 的发言改成 B」「说话人识别错了」「把外部说话人改成飞书用户」等。
157
-
158
- **Agent 必读流程**(详见 [minutes +speaker-replace](references/lark-minutes-speaker-replace.md)):
159
-
160
- 1. 确认 `minute_token`。
161
- 2. **先**用 `lark-cli api GET "/open-apis/minutes/v1/minutes/<token>/transcript/speakerlist"` 查说话人列表(内部 HTTP,无 shortcut、无公开 OpenAPI 文档页)。
162
- 3. 根据用户描述的原说话人展示名,在返回的 `data.speakers[]` 中匹配 `name` → 得到 `speaker_id`;同名多人时结合 `vc +notes` 逐字稿请用户确认,**不要擅自挑选**。
163
- 4. 新说话人姓名用 [lark-contact](../lark-contact/SKILL.md) 解析为 `ou_` open_id。
164
- 5. 调用 `minutes +speaker-replace`,**`--from-speaker-id` 只传步骤 3 的 `speaker_id`,禁止传展示名**。
165
-
166
- ## 行为规则
167
-
168
- ### 1. `+detail` 必须显式声明产物 flag
169
-
170
- 不传 `--summary` / `--todo` / `--chapter` / `--keyword` / `--transcript` 时只返回基础信息(含顶层 `note_id`),AI 产物字段一律不返回。即使产物为空也会返回空值字段,便于程序化处理。
171
-
172
- ```bash
173
- # 拿全产物
174
- lark-cli minutes +detail --minute-tokens <token> --summary --todo --chapter --keyword --transcript
175
- ```
176
-
177
- ### 2. "提炼 / 总结"必须基于 Transcript,不要照搬 AI 总结
178
-
179
- AI 总结是模型对会议的二次压缩,可能遗漏争论过程和隐含决策。用户要求"提炼"或"重新总结"时,期望基于原始发言独立分析,而非搬运 AI 产物。**优先 `--transcript`,再独立写结论**。
180
-
181
- ### 3. 从妙记反查纪要:不绕 lark-vc
182
-
183
- `minutes +detail` 顶层直接返回 `note_id`(仅在该妙记关联纪要时存在)。不需要绕回 [lark-vc](../lark-vc/SKILL.md),直接:
184
-
185
- ```bash
186
- # 1) 取 note_id(顶层 .minutes[0].note_id)
187
- lark-cli minutes +detail --minute-tokens <minute_token> --format json
188
- # 2) 用上一步拿到的 note_id 读纪要 token
189
- lark-cli note +detail --note-id <note_id> # 拿 note_doc_token / verbatim_doc_token / shared_doc_tokens
190
- ```
191
-
192
- 顶层无 `note_id` 字段即代表无关联纪要,到此为止——不要继续尝试用 `minute_token` 当 `note_id`。
193
-
194
-
195
- ## API Resources
196
-
197
- ```bash
198
- lark-cli minutes <resource> <method> [flags]
199
- ```
200
-
201
- ### minutes
202
-
203
- - `get` — 获取妙记信息
204
-
205
- > **权限错误**:如果返回 `[2091005] permission deny`,表示用户没有对应妙记文件的阅读权限,需提示用户联系妙记 owner 申请权限。
206
-
207
- ## 不在本 skill 范围
208
-
209
- - 搜索历史会议记录、查参会人快照 → [lark-vc](../lark-vc/SKILL.md)
210
- - 未来日程 / 日历查询 → [lark-calendar](../lark-calendar/SKILL.md)
211
- - 已知 `note_id` 直接读纪要详情 → [lark-note](../lark-note/SKILL.md)
212
- - 飞书任务清单(个人 Todo / 共享清单) → [lark-task](../lark-task/SKILL.md)
213
- - 只有自然语言纪要标题、没有 `minute_token` / 妙记 URL / 本地音视频时定位逐字稿 → 文档搜索([lark-drive](../lark-drive/SKILL.md) / [lark-doc](../lark-doc/SKILL.md))
15
+ **MUST 完整读取 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md),并按照其中的路由和行动指南执行。**
@@ -1,98 +1,15 @@
1
1
  ---
2
2
  name: lark-note
3
3
  version: 1.0.0
4
- description: "飞书会议纪要(Note)直查:已知 note_id 时查询纪要详情、展示类型、关联文档 token,并读取 unified 原始逐字记录。当用户已持有 note_id,或从文档显式 vc-node-id 获得 note_id 时使用。不负责会议/日程/妙记定位、文档标题搜索或 Docx 正文读取。"
4
+ description: "仅当用户或上游配置显式指定 lark-note 时使用,相关请求统一交由 lark-meeting 技能处理。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["lark-cli"]
8
- cliHelp: "lark-cli note --help"
8
+ skills: ["lark-meeting"]
9
9
  ---
10
10
 
11
- # note (v1)
11
+ # Compatibility entry
12
12
 
13
- 身份:`+detail` 支持 `--as user` / `--as bot`;`+transcript` 仅支持 `--as user`。`note_id` 若由某个身份取得(例如 `vc +detail --as bot`),`+detail` 必须显式沿用同一个 `--as`——不要依赖 profile 默认身份。完整身份延续规则见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),使用前必读。
13
+ 本技能只用于兼容旧名称,不直接处理业务。
14
14
 
15
- `+detail` 返回的 `note_doc_token` / `verbatim_doc_token` / `shared_doc_tokens` 交给 [lark-doc](../lark-doc/SKILL.md) 读正文时,仍要显式带上同一个 `--as`。lark-doc 对普通文档推荐 `--as user`,**不覆盖这些纪要文档 token 的来源身份**。
16
-
17
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-vc/references/vc-domain-boundaries.md`](../lark-vc/references/vc-domain-boundaries.md)**,不读将导致命令使用、会议产物决策、领域边界职责判断错误:
18
- > 1. 了解日历 & VC、会议产物 & 文档的关联关系和职责划分
19
- > 2. 了解会议产物(妙记和纪要)之间的关联关系,例如:**妙记和纪要产生条件相互独立**
20
- > 3. 了解不同会议产物的组成部分,以便根据需求决策使用哪种产物的数据
21
-
22
- Note 域只接受显式 `note_id`:用户直接提供,或 `docs +fetch` 返回的 `<vc-transcribe-tab vc-node-id="...">` 中的 `vc-node-id`。不要从 `doc_token`、标题、正文或 backlink 反推 `note_id`。
23
-
24
- ## 命令路由
25
-
26
- | 用户表达 / 上下文 | 路由 |
27
- |---------|------|
28
- | 已知 `note_id`,查纪要类型 / 文档 token | `note +detail --note-id NOTE_ID` |
29
- | `docs +fetch` 返回 `<vc-transcribe-tab vc-node-id="...">` | 取 `vc-node-id` 作为 `NOTE_ID`,先 `note +detail --note-id NOTE_ID` |
30
- | 只持有 `meeting_id` | 先 `vc +detail --meeting-ids <id>` 拿 `note_id`,再 `note +detail --note-id NOTE_ID` |
31
- | 只持有 `minute_token`(妙记 URL) | 先 `minutes +detail --minute-tokens <token>` 顶层取 `note_id`,再 `note +detail --note-id NOTE_ID`(不要把 `minute_token` 当 `note_id`) |
32
- | 只持有日程 `event_id` | 先 `calendar +meeting --event-ids <id>` 拿 `meeting_id`,再按上一行继续 |
33
- | 已知 `note_id`,读纪要正文 | `note +detail` → `docs +fetch --doc <note_doc_token>` |
34
- | 已知 `note_id`,查 unified 原始记录 / 逐字稿 | `note +transcript --note-id NOTE_ID` |
35
- | 只有自然语言纪要标题,用户要逐字稿 / 原始记录 / 谁说了什么 | 不进本 skill;先走文档搜索与 `docs +fetch`,拿到 `vc-node-id` 后再回来 |
36
-
37
- ## `note_display_type` 路由
38
-
39
- | `note +detail` 结果 | 用户要逐字稿 / 原始记录时 |
40
- |------|---------------|
41
- | `normal` + `verbatim_doc_token` 非空 | `docs +fetch --doc <verbatim_doc_token>`(沿用 `+detail` 用的身份) |
42
- | `unknown` + `verbatim_doc_token` 非空 | 先按独立文档处理;不要猜成 unified |
43
- | `unknown` + 无逐字稿 token | 停止重试并说明无法确定逐字稿入口 |
44
- | `unified` | `note +transcript --note-id <note_id>`(仅支持 `--as user`) |
45
-
46
- 判别键是 `note_display_type`,不是 `verbatim_doc_token` 是否为空:unified 纪要也可能返回非空 `verbatim_doc_token`。
47
-
48
- > **bot + unified 的边界**:`+transcript` 目前仅支持 `--as user`。如果 `+detail --as bot` 返回 `unified`,不要静默切到 `--as user` 继续——先停下来向用户说明"该纪要逐字稿只能以 user 身份读取",只有用户明确同意才切换身份重试。
49
-
50
- ## 关键字段
51
-
52
- - `note_id`:Note 域唯一入口。
53
- - `note_display_type`:`unknown` / `normal` / `unified`。
54
- - `note_doc_token`:纪要正文文档,正文读取交给 [lark-doc](../lark-doc/SKILL.md)。
55
- - `verbatim_doc_token`:普通纪要逐字稿文档;unified 逐字稿不按这个 token 路由。
56
-
57
- ## 不在本 Skill 范围
58
-
59
- - 通过 `meeting_id` 定位纪要(`note_id`)→ [lark-vc](../lark-vc/SKILL.md)(`vc +detail`)。
60
- - 通过 `minute_token` 定位纪要(`note_id`)→ [lark-minutes](../lark-minutes/SKILL.md)(`minutes +detail` 顶层返回 `note_id`)。
61
- - 通过日程 `event_id` 定位会议(`meeting_id`) / 用户绑定纪要(`meeting_note`) → [lark-calendar](../lark-calendar/SKILL.md)(`calendar +meeting`)。
62
- - 自然语言纪要标题搜索 → [lark-drive](../lark-drive/SKILL.md) / [lark-doc](../lark-doc/SKILL.md)。
63
- - Docx 正文读取 → [lark-doc](../lark-doc/SKILL.md)。
64
- - 妙记基础信息与媒体文件 → [lark-minutes](../lark-minutes/SKILL.md)。
65
-
66
- ## Shortcuts
67
-
68
- | Shortcut | 何时读 reference |
69
- |----------|------|
70
- | [`+detail`](references/lark-note-detail.md) | 需要解释输出字段或根据展示类型继续路由 |
71
- | [`+transcript`](references/lark-note-transcript.md) | 需要拉取 unified 原始记录或处理本地输出文件 |
72
-
73
- ## 核心概念
74
-
75
- - **会议纪要(Note)**:视频会议结束后生成的结构化文档,通过 `note_id` 标识。一个 Note 包含 AI 智能纪要文档、逐字稿文档和会中共享文档。
76
- - **note_id**:纪要的唯一标识符,可通过 `vc +detail --meeting-ids` 获取。
77
- - **AI 智能纪要(MainDoc)**:AI 生成的会议总结与待办,对应 `note_doc_token`。
78
- - **逐字稿(VerbatimDoc)**:会议的逐句发言记录,含说话人和时间戳,对应 `verbatim_doc_token`。
79
- - **共享文档(SharedDoc)**:会中投屏共享的文档,对应 `shared_doc_tokens`。
80
-
81
- ## 核心场景
82
-
83
- ### 1. 通过 note_id 获取纪要文档 Token
84
-
85
- 1. 当用户已有 `note_id`,需要获取对应的 `note_doc_token`、`verbatim_doc_token` 或 `shared_doc_tokens` 时,使用 `note +detail`。
86
- 2. `note_id` 通常来自 `vc +detail` 的返回结果。
87
- 3. 获取到文档 Token 后,可使用 `docs +fetch` 读取文档内容,或使用 `drive metas batch_query` 获取文档元信息。
88
-
89
- ```bash
90
- # 1. 从会议获取 note_id(这里以 bot 身份为例)
91
- lark-cli vc +detail --meeting-ids <meeting_id> --as bot
92
-
93
- # 2. 用 note_id 拿文档 Token;沿用第 1 步的身份,不要省略 --as
94
- lark-cli note +detail --note-id <note_id> --as bot
95
-
96
- # 3. 读取纪要文档内容;同样沿用第 1 步的身份
97
- lark-cli docs +fetch --doc <note_doc_token> --doc-format markdown --as bot
98
- ```
15
+ **MUST 完整读取 [`../lark-meeting/SKILL.md`](../lark-meeting/SKILL.md),并按照其中的路由和行动指南执行。**