@amaster.ai/pi-lark 0.1.5 → 0.1.6
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.
- package/package.json +3 -3
- package/skills/lark-approval/references/lark-approval-initiate.md +2 -5
- package/skills/lark-approval/references/lark-approval-instances-initiated.md +6 -0
- package/skills/lark-approval/references/lark-approval-tasks-query.md +9 -0
- package/skills/lark-approval/references/lark-approval-tasks-rollback.md +8 -2
- package/skills/lark-apps/SKILL.md +25 -7
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
- package/skills/lark-apps/references/lark-apps-automation.md +164 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +186 -2
- package/skills/lark-apps/references/lark-apps-db.md +3 -3
- package/skills/lark-apps/references/lark-apps-get.md +43 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +7 -2
- package/skills/lark-apps/references/lark-apps-init.md +1 -2
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +3 -1
- package/skills/lark-apps/references/lark-apps-role.md +133 -0
- package/skills/lark-base/SKILL.md +7 -3
- package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
- package/skills/lark-base/references/lark-base-cell-value.md +9 -4
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
- package/skills/lark-base/references/lark-base-dashboard.md +11 -2
- package/skills/lark-base/references/lark-base-data-query.md +9 -7
- package/skills/lark-base/references/lark-base-field-create.md +4 -2
- package/skills/lark-base/references/lark-base-field-json.md +52 -15
- package/skills/lark-base/references/lark-base-field-update.md +4 -2
- package/skills/lark-base/references/lark-base-view-set-filter.md +3 -1
- package/skills/lark-calendar/SKILL.md +89 -31
- package/skills/lark-calendar/references/lark-calendar-create.md +8 -39
- package/skills/lark-calendar/references/lark-calendar-room-find.md +5 -9
- package/skills/lark-calendar/references/lark-calendar-rsvp.md +1 -5
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +67 -210
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -5
- package/skills/lark-calendar/references/lark-calendar-update.md +2 -7
- package/skills/lark-doc/SKILL.md +1 -1
- package/skills/lark-doc/references/lark-doc-fetch.md +4 -2
- package/skills/lark-doc/references/lark-doc-mindnote.md +17 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +4 -0
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +35 -0
- package/skills/lark-doc/references/lark-doc-xml.md +3 -2
- package/skills/lark-drive/SKILL.md +20 -8
- package/skills/lark-drive/references/lark-drive-comment-location.md +16 -4
- package/skills/lark-drive/references/lark-drive-comments-guide.md +16 -8
- package/skills/lark-drive/references/lark-drive-delete.md +35 -11
- package/skills/lark-drive/references/lark-drive-export.md +39 -10
- package/skills/lark-drive/references/lark-drive-files-list.md +27 -2
- package/skills/lark-drive/references/lark-drive-inspect.md +2 -0
- package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +1 -1
- package/skills/lark-drive/references/lark-drive-move.md +5 -3
- package/skills/lark-drive/references/lark-drive-permission-guide.md +12 -0
- package/skills/lark-drive/references/lark-drive-pull.md +3 -3
- package/skills/lark-drive/references/lark-drive-push.md +33 -6
- package/skills/lark-drive/references/lark-drive-status.md +12 -14
- package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +26 -20
- package/skills/lark-drive/references/lark-drive-workflow.md +2 -1
- package/skills/lark-event/SKILL.md +2 -1
- package/skills/lark-event/references/lark-event-approval.md +170 -0
- package/skills/lark-im/SKILL.md +5 -4
- package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
- package/skills/lark-im/references/lark-im-messages-send.md +1 -1
- package/skills/lark-mail/SKILL.md +12 -9
- package/skills/lark-mail/references/lark-mail-forward.md +1 -1
- package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
- package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
- package/skills/lark-mail/references/lark-mail-reply-all.md +1 -1
- package/skills/lark-mail/references/lark-mail-reply.md +1 -1
- package/skills/lark-mail/references/lark-mail-watch.md +1 -1
- package/skills/lark-markdown/SKILL.md +3 -2
- package/skills/lark-markdown/references/lark-markdown-create.md +22 -2
- package/skills/lark-minutes/SKILL.md +19 -4
- package/skills/lark-minutes/references/lark-minutes-download.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-search.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-summary.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-todo.md +2 -4
- package/skills/lark-minutes/references/lark-minutes-update.md +0 -2
- package/skills/lark-minutes/references/lark-minutes-upload.md +10 -10
- package/skills/lark-shared/SKILL.md +26 -8
- package/skills/lark-sheets/SKILL.md +98 -29
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
- package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
- package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
- package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
- package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
- package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
- package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
- package/skills/lark-slides/SKILL.md +29 -18
- package/skills/lark-slides/references/asset-planning.md +16 -5
- package/skills/lark-slides/references/examples.md +57 -227
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +21 -2
- package/skills/lark-slides/references/lark-slides-media-upload.md +0 -1
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
- package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
- package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -1
- package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
- package/skills/lark-slides/references/lark-slides-whiteboard.md +31 -30
- package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +9 -7
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +12 -10
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +14 -13
- package/skills/lark-slides/references/planning-layer.md +32 -2
- package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +8 -3
- package/skills/lark-slides/references/troubleshooting.md +7 -25
- package/skills/lark-slides/references/validation-checklist.md +18 -9
- package/skills/lark-slides/references/visual-planning.md +4 -3
- package/skills/lark-slides/references/xml-format-guide.md +65 -1
- package/skills/lark-slides/references/xml-schema-quick-ref.md +7 -3
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +907 -54
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +876 -5
- package/skills/lark-task/SKILL.md +1 -0
- package/skills/lark-task/references/lark-task-create.md +14 -1
- package/skills/lark-vc/SKILL.md +6 -3
- package/skills/lark-vc/references/lark-vc-recording.md +0 -2
- package/skills/lark-vc/references/vc-domain-boundaries.md +9 -1
- package/skills/lark-vc-agent/SKILL.md +25 -15
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +65 -37
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +8 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +5 -2
- package/skills/lark-wiki/SKILL.md +7 -3
- package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
- package/skills/lark-wiki/references/lark-wiki-node-get.md +1 -1
- package/skills/lark-wiki/references/lark-wiki-node-list.md +9 -2
- package/skills/lark-calendar/references/lark-calendar-agenda.md +0 -78
- package/skills/lark-calendar/references/lark-calendar-freebusy.md +0 -124
- package/skills/lark-calendar/references/lark-calendar-search-event.md +0 -29
- package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -220
package/skills/lark-im/SKILL.md
CHANGED
|
@@ -41,13 +41,14 @@ Chat (oc_xxx)
|
|
|
41
41
|
- `--as bot` means **bot identity** and uses `tenant_access_token`. Calls run as the app bot, so behavior depends on the bot's membership, app visibility, availability range, and bot-specific scopes.
|
|
42
42
|
- If an IM API says it supports both `user` and `bot`, the token type changes who the operator is. The same API can succeed with one identity and fail with the other because owner/admin status, chat membership, tenant boundary, or app availability are checked against the current caller.
|
|
43
43
|
|
|
44
|
-
### Sender Name Resolution
|
|
44
|
+
### Sender Name Resolution
|
|
45
45
|
|
|
46
|
-
When
|
|
46
|
+
When fetching messages (`+chat-messages-list`, `+threads-messages-list`, `+messages-mget`, `+messages-search`), the CLI shows a display name for both user and bot senders:
|
|
47
47
|
|
|
48
|
-
**
|
|
48
|
+
- **Server-provided name**: the read APIs return `sender_name` (plus the full-i18n `sender_i18n_names` map) on each message `sender`; the CLI surfaces it as the sender's `name` for users and bots alike. No name lookup and no extra permission are needed — **no contact scope** and no `application:bot.basic_info:read`.
|
|
49
|
+
- **Fallback to id**: when the server does not provide a name, the sender is shown by its id and the command still exits 0. There is no contact-directory fallback.
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
The raw `sender_name` is not duplicated in output (its value is in `name`); the full `sender_i18n_names` map (all locales) is preserved for consumers that need a specific language, alongside an optional `open_bot_id` (`ou_`) for bot senders aligned with the message-receive event channel. System messages (`msg_type: system`) have no sender name — that is normal, not an error.
|
|
51
52
|
|
|
52
53
|
### Default message enrichment (reactions / update_time)
|
|
53
54
|
|
|
@@ -188,7 +188,7 @@ lark-cli im +messages-reply --message-id om_xxx --msg-type interactive --content
|
|
|
188
188
|
| `--video-cover <path\|url\|key>` | **Required with `--video`** | Cwd-relative local cover image path, URL, or `image_key` (`img_xxx`) |
|
|
189
189
|
| `--audio <path\|url\|key>` | One content option | Voice-message audio key, URL, or cwd-relative local path. Local paths and URLs must be Opus (`.opus` or Ogg Opus `.ogg`) |
|
|
190
190
|
| `--reply-in-thread` | No | Reply inside the thread. The reply appears in the target message's thread instead of the main chat stream |
|
|
191
|
-
| `--idempotency-key <key>` | No | Idempotency key; the same key sends only one reply within 1 hour
|
|
191
|
+
| `--idempotency-key <key>` | No | Idempotency key, max 50 characters; the same key sends only one reply within 1 hour |
|
|
192
192
|
| `--as <identity>` | No | Identity type: `bot` or `user` (default `bot`) |
|
|
193
193
|
| `--dry-run` | No | Print the request only, do not execute it |
|
|
194
194
|
|
|
@@ -191,7 +191,7 @@ lark-cli im +messages-send --chat-id oc_xxx --msg-type interactive --content '<c
|
|
|
191
191
|
| `--video-cover <path\|url\|key>` | **Required with `--video`** | Cwd-relative local cover image path, URL, or `image_key` (`img_xxx`). Local paths and URLs are uploaded automatically |
|
|
192
192
|
| `--audio <path\|url\|key>` | One content option | Voice-message audio key, URL, or cwd-relative local path. Local paths and URLs must be Opus (`.opus` or Ogg Opus `.ogg`) |
|
|
193
193
|
| `--msg-type <type>` | No | Message type (default `text`). If you use `--text` / `--markdown` / media flags, the effective type is inferred automatically. Explicitly setting a conflicting `--msg-type` fails validation |
|
|
194
|
-
| `--idempotency-key <key>` | No | Idempotency key; the same key sends only one message within 1 hour
|
|
194
|
+
| `--idempotency-key <key>` | No | Idempotency key, max 50 characters; the same key sends only one message within 1 hour |
|
|
195
195
|
| `--as <identity>` | No | Identity type: `bot` or `user` (default `bot`) |
|
|
196
196
|
| `--dry-run` | No | Print the request only, do not execute it |
|
|
197
197
|
|
|
@@ -79,7 +79,7 @@ metadata:
|
|
|
79
79
|
|
|
80
80
|
1. `+triage --from spam@x.com` → 列出 N 条结果
|
|
81
81
|
2. 展示:"将删除 N 封邮件(发件人 spam@x.com,主题:…),确认?"
|
|
82
|
-
3. 用户确认后 →
|
|
82
|
+
3. 用户确认后 → `+message-trash --message-ids ... --yes`
|
|
83
83
|
|
|
84
84
|
## 身份选择:优先使用 user 身份
|
|
85
85
|
|
|
@@ -96,13 +96,14 @@ metadata:
|
|
|
96
96
|
1. **确认身份** — 首次操作邮箱前先调用 `lark-cli mail user_mailboxes profile --params '{"user_mailbox_id":"me"}'` 获取当前用户的真实邮箱地址(`primary_email_address`),不要通过系统用户名猜测。后续判断"发件人是否为用户本人"时以此地址为准。
|
|
97
97
|
2. **浏览** — `+triage` 查看收件箱摘要,获取 `message_id` / `thread_id`
|
|
98
98
|
3. **阅读** — `+message` 只读单封邮件;已有多个 `message_id` 时用 `+messages` 批量读取,不要循环调用 `+message`;`+thread` 读整个会话
|
|
99
|
-
4.
|
|
100
|
-
5.
|
|
101
|
-
6.
|
|
102
|
-
7.
|
|
103
|
-
8.
|
|
104
|
-
9.
|
|
105
|
-
10.
|
|
99
|
+
4. **整理** — 标签、已读/未读状态和移动文件夹优先用 `+message-modify`;软删除优先用 `+message-trash`
|
|
100
|
+
5. **回复** — `+reply` / `+reply-all`(默认存草稿,加 `--confirm-send` 则立即发送)
|
|
101
|
+
6. **转发** — `+forward`(默认存草稿,加 `--confirm-send` 则立即发送)
|
|
102
|
+
7. **新邮件** — `+send` 存草稿(默认),加 `--confirm-send` 发送
|
|
103
|
+
8. **HTML body 预检(可选)** — 复杂 HTML body 提交前可先跑 `+lint-html` 看 lint 会改 / 删什么;写信路径(`+send` / `+draft-create` / `+reply` / `+reply-all` / `+forward` / `+draft-edit` body op)已内置 autofix,普通正文不必先跑。详见 [references/lark-mail-html.md](references/lark-mail-html.md) 中的「写入路径内置 HTML lint」章节
|
|
104
|
+
9. **确认投递** — 立即发送后用 `send_status` 查询投递状态,定时发送后在预定时间后再查询;取消定时发送用 `cancel_scheduled_send`
|
|
105
|
+
10. **编辑草稿** — `+draft-edit` 修改已有草稿。正文编辑通过 `--patch-file`:回复/转发草稿用 `set_reply_body` op 保留引用区,普通草稿用 `set_body` op
|
|
106
|
+
11. **已读回执** —
|
|
106
107
|
- **请求回执(写信侧)**:`--request-receipt` 仅在**用户显式要求**时添加,**不要从 subject / body 内容推断意图**。
|
|
107
108
|
- **响应回执(拉信侧)**:拉信看到 `label_ids` 含 `READ_RECEIPT_REQUEST`(或 `-607`)时,**必须先问用户**是否回执(不要自动回执,涉及隐私)。用户同意 → `+send-receipt` 响应;用户不同意但想消掉提示 → `+decline-receipt` 只清本地标签、不发邮件。
|
|
108
109
|
|
|
@@ -119,6 +120,8 @@ metadata:
|
|
|
119
120
|
- 查看发送邮件后的投递状态:发送成功后查看邮件投递状态;也覆盖发送拦截。ref: [lark-mail-send-status](references/lark-mail-send-status.md)
|
|
120
121
|
- 使用邮件模板:区分个人模板和静态 HTML 模板,发信类 shortcut 用 `--template-id` 套用模板。ref: [lark-mail-template](references/lark-mail-template.md)
|
|
121
122
|
- 撤回已发送邮件:撤回邮件并查询异步撤回状态。ref: [lark-mail-recall](references/lark-mail-recall.md)
|
|
123
|
+
- 修改邮件标签/已读状态/文件夹:优先使用 `+message-modify`。ref: [`+message-modify`](references/lark-mail-message-modify.md)
|
|
124
|
+
- 软删除邮件:优先使用 `+message-trash`。ref: [`+message-trash`](references/lark-mail-message-trash.md)
|
|
122
125
|
- 收信规则:创建、验证、删除自动处理收到邮件的规则。ref: [lark-mail-rules](references/lark-mail-rules.md)
|
|
123
126
|
- 分享邮件到 IM:分享邮件或会话到群聊、个人会话。ref: [lark-mail-share-to-chat](references/lark-mail-share-to-chat.md)
|
|
124
127
|
- 发送日程邀请邮件:在邮件中嵌入 `text/calendar` 日程邀请。ref: [lark-mail-calendar-invite](references/lark-mail-calendar-invite.md)
|
|
@@ -192,7 +195,7 @@ lark-cli mail +messages --message-ids <id1>,<id2>,<id3> --html=false
|
|
|
192
195
|
|
|
193
196
|
## 原生 API 调用规则
|
|
194
197
|
|
|
195
|
-
没有 Shortcut 覆盖的操作才使用原生 API
|
|
198
|
+
没有 Shortcut 覆盖的操作才使用原生 API。标签、已读状态、移动文件夹优先使用 `+message-modify`;软删除优先使用 `+message-trash`。调用步骤以本节为准;资源和 method 用 `lark-cli mail -h` / `lark-cli mail <resource> -h` 发现,不在入口保留完整资源表。
|
|
196
199
|
|
|
197
200
|
### Step 1 — 用 `-h` 确定要调用的 API(必须,不可跳过)
|
|
198
201
|
|
|
@@ -215,7 +215,7 @@ lark-cli mail user_mailbox.drafts cancel_scheduled_send --params '{"user_mailbox
|
|
|
215
215
|
**2. 标记已读**(可选)— 询问用户是否需要将原邮件标记为已读。如果用户同意:
|
|
216
216
|
|
|
217
217
|
```bash
|
|
218
|
-
lark-cli mail
|
|
218
|
+
lark-cli mail +message-modify --message-ids <原邮件ID> --remove-label-ids UNREAD
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
## 编辑转发草稿
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# mail +message-modify
|
|
2
|
+
|
|
3
|
+
`mail +message-modify` is the preferred shortcut for changing labels, read-state labels, or folder placement on existing messages.
|
|
4
|
+
|
|
5
|
+
Use it instead of raw `user_mailbox.messages batch_modify` when the operation targets concrete `message_id` values from `+triage`, `+message`, or `+messages`.
|
|
6
|
+
|
|
7
|
+
## Common Commands
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
lark-cli mail +message-modify --message-ids <id1>,<id2> --add-label-ids unread
|
|
11
|
+
lark-cli mail +message-modify --message-ids <id> --remove-label-ids FLAGGED
|
|
12
|
+
lark-cli mail +message-modify --message-ids <id> --add-folder archive
|
|
13
|
+
lark-cli mail +message-modify --mailbox shared@example.com --message-ids <id> --add-folder folder_xxx
|
|
14
|
+
lark-cli mail +message-modify --message-ids <id> --add-label-ids custom_label_id --dry-run
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Flags
|
|
18
|
+
|
|
19
|
+
| Flag | Required | Notes |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `--mailbox` | No | Mailbox that owns the messages. Defaults to `me`. |
|
|
22
|
+
| `--message-ids` | Yes | `string_array`; supports comma-separated values and repeated flags. |
|
|
23
|
+
| `--add-label-ids` | No | Adds labels. System labels `unread`, `important`, `other`, `flagged` normalize to upper case. |
|
|
24
|
+
| `--remove-label-ids` | No | Removes labels. Cannot overlap with `--add-label-ids`. |
|
|
25
|
+
| `--add-folder` | No | Moves to one folder. `inbox`, `sent`, `spam`, `archive`, `archived` normalize to system folder IDs. |
|
|
26
|
+
|
|
27
|
+
`TRASH` is intentionally rejected by this shortcut. Use `mail +message-trash --message-ids <id> --yes` for soft deletion.
|
|
28
|
+
|
|
29
|
+
## Behavior
|
|
30
|
+
|
|
31
|
+
- Message IDs are locally validated, de-duplicated in first-seen order, and sent in batches of 20.
|
|
32
|
+
- Custom label IDs are checked with `labels.get`; custom folder IDs are checked with `folders.get`.
|
|
33
|
+
- If no label or folder operation is requested, the command succeeds locally, emits all message IDs as `success_message_ids`, and makes no POST request.
|
|
34
|
+
- Single batch POST failures mark every message in that batch with the same failure reason; later batches still run.
|
|
35
|
+
- JSON output is intentionally compact:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"success_message_ids": ["id1"],
|
|
40
|
+
"failed_message_ids": [
|
|
41
|
+
{"message_id": "id2", "reason": "api error"}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## When Raw API Is Still Appropriate
|
|
47
|
+
|
|
48
|
+
Use raw `mail user_mailbox.messages batch_modify` only when you need a request shape that the shortcut intentionally does not expose, or when reproducing backend/API behavior exactly for diagnostics.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# mail +message-trash
|
|
2
|
+
|
|
3
|
+
`mail +message-trash` is the preferred shortcut for soft-deleting existing messages.
|
|
4
|
+
|
|
5
|
+
Use it after obtaining real `message_id` values from `+triage`, `+message`, or `+messages`, and after the user has confirmed the deletion preview.
|
|
6
|
+
|
|
7
|
+
## Common Commands
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
lark-cli mail +message-trash --message-ids <id1>,<id2> --yes
|
|
11
|
+
lark-cli mail +message-trash --mailbox shared@example.com --message-ids <id> --yes
|
|
12
|
+
lark-cli mail +message-trash --message-ids <id1> --message-ids <id2> --dry-run
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Flags
|
|
16
|
+
|
|
17
|
+
| Flag | Required | Notes |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `--mailbox` | No | Mailbox that owns the messages. Defaults to `me`. |
|
|
20
|
+
| `--message-ids` | Yes | `string_array`; supports comma-separated values and repeated flags. |
|
|
21
|
+
| `--yes` | Yes for execution | Required by the high-risk write confirmation framework. |
|
|
22
|
+
|
|
23
|
+
## Behavior
|
|
24
|
+
|
|
25
|
+
- Message IDs are locally validated, de-duplicated in first-seen order, and sent in batches of 20.
|
|
26
|
+
- The shortcut calls `POST /open-apis/mail/v1/user_mailboxes/<mailbox>/messages/batch_trash` sequentially.
|
|
27
|
+
- Single batch POST failures mark every message in that batch with the same failure reason; later batches still run.
|
|
28
|
+
- JSON output is intentionally compact:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"success_message_ids": ["id1"],
|
|
33
|
+
"failed_message_ids": [
|
|
34
|
+
{"message_id": "id2", "reason": "api error"}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## When Raw API Is Still Appropriate
|
|
40
|
+
|
|
41
|
+
Use raw `mail user_mailbox.messages batch_trash` only when reproducing backend/API behavior exactly for diagnostics. For normal soft deletion, prefer this shortcut because it handles validation, batching, compact output, and `--yes` confirmation consistently.
|
|
@@ -203,7 +203,7 @@ lark-cli mail user_mailbox.drafts cancel_scheduled_send --params '{"user_mailbox
|
|
|
203
203
|
**2. 标记已读**(可选)— 询问用户是否需要将原邮件标记为已读。如果用户同意:
|
|
204
204
|
|
|
205
205
|
```bash
|
|
206
|
-
lark-cli mail
|
|
206
|
+
lark-cli mail +message-modify --message-ids <原邮件ID> --remove-label-ids UNREAD
|
|
207
207
|
```
|
|
208
208
|
|
|
209
209
|
## 相关命令
|
|
@@ -218,7 +218,7 @@ lark-cli mail user_mailbox.drafts cancel_scheduled_send --params '{"user_mailbox
|
|
|
218
218
|
**2. 标记已读**(可选)— 询问用户是否需要将原邮件标记为已读。如果用户同意:
|
|
219
219
|
|
|
220
220
|
```bash
|
|
221
|
-
lark-cli mail
|
|
221
|
+
lark-cli mail +message-modify --message-ids <原邮件ID> --remove-label-ids UNREAD
|
|
222
222
|
```
|
|
223
223
|
|
|
224
224
|
## 编辑回复草稿
|
|
@@ -47,7 +47,7 @@ lark-cli mail +watch --print-output-schema
|
|
|
47
47
|
|------|------|------|
|
|
48
48
|
| `--mailbox <id>` | `me` | 订阅目标邮箱 |
|
|
49
49
|
| `--msg-format <mode>` | `metadata` | 输出模式:`metadata` / `minimal` / `plain_text_full` / `full` / `event` |
|
|
50
|
-
| `--format <mode>` | `
|
|
50
|
+
| `--format <mode>` | `data` | 输出样式:`json`(带 ok/data 信封的 NDJSON 流)/ `data`(裸 NDJSON 流) |
|
|
51
51
|
| `--folder-ids <json-array>` | — | 文件夹 ID 过滤,如 `["INBOX","SENT"]` |
|
|
52
52
|
| `--folders <json-array>` | — | 文件夹名称过滤(与 `--folder-ids` 取并集) |
|
|
53
53
|
| `--label-ids <json-array>` | — | 标签 ID 过滤,如 `["FLAGGED","IMPORTANT"]` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-markdown
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.2
|
|
4
4
|
description: "飞书 Markdown:查看、创建、上传、编辑和比较 Markdown 文件。当用户需要创建或编辑 Markdown 文件、读取、修改、局部 patch 或比较差异时使用。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
@@ -25,7 +25,8 @@ metadata:
|
|
|
25
25
|
- 用户要先拿 Markdown 文件的历史版本号,再做比较/下载/回滚,先用 [`lark-drive`](../lark-drive/SKILL.md) 的 `lark-cli drive +version-history`
|
|
26
26
|
- 用户要把本地 Markdown **导入成在线新版文档(docx)**,不要用本 skill,改用 [`lark-drive`](../lark-drive/SKILL.md) 的 `lark-cli drive +import --type docx`
|
|
27
27
|
- 用户要对 Markdown 文件做**rename / move / delete / 搜索 / 权限 / 评论**等云空间(云盘/云存储)操作,不要留在本 skill,切到 [`lark-drive`](../lark-drive/SKILL.md)
|
|
28
|
-
- `markdown +create` / `+overwrite` 命中 `missing scope`、`permission denied`、`not found`、`version limit` 时,默认停止重试并按报错 hint 处理;只有 `
|
|
28
|
+
- `markdown +create` / `+overwrite` 命中 `missing scope`、`permission denied`、`not found`、`quota_exceeded`、`version limit` 时,默认停止重试并按报错 hint 处理;只有 `rate_limit`、`server_error` 或临时网络错误才做有限退避重试。
|
|
29
|
+
- `markdown +create` 的目标参数不要猜:Drive 文件夹用 `--folder-token`,Wiki 节点用 `--wiki-token`。如果用户给的是 URL,可以直接传完整 URL;CLI 会归一成 token。不要把 doc/sheet/wiki URL 放进 `--folder-token` 试错。
|
|
29
30
|
|
|
30
31
|
## 核心边界
|
|
31
32
|
|
|
@@ -32,11 +32,21 @@ lark-cli markdown +create \
|
|
|
32
32
|
--folder-token fldcn_xxx \
|
|
33
33
|
--file ./README.md
|
|
34
34
|
|
|
35
|
+
# 创建到指定文件夹(可直接传 Drive folder URL)
|
|
36
|
+
lark-cli markdown +create \
|
|
37
|
+
--folder-token "https://feishu.cn/drive/folder/fldcn_xxx" \
|
|
38
|
+
--file ./README.md
|
|
39
|
+
|
|
35
40
|
# 创建到指定 wiki 节点
|
|
36
41
|
lark-cli markdown +create \
|
|
37
42
|
--wiki-token wikcn_xxx \
|
|
38
43
|
--file ./README.md
|
|
39
44
|
|
|
45
|
+
# 创建到指定 wiki 节点(可直接传 wiki URL)
|
|
46
|
+
lark-cli markdown +create \
|
|
47
|
+
--wiki-token "https://feishu.cn/wiki/wikcn_xxx" \
|
|
48
|
+
--file ./README.md
|
|
49
|
+
|
|
40
50
|
# 预览底层请求
|
|
41
51
|
lark-cli markdown +create \
|
|
42
52
|
--name README.md \
|
|
@@ -48,8 +58,8 @@ lark-cli markdown +create \
|
|
|
48
58
|
|
|
49
59
|
| 参数 | 必填 | 说明 |
|
|
50
60
|
|------|------|------|
|
|
51
|
-
| `--folder-token` | 否 | 目标 Drive 文件夹 token;与 `--wiki-token` 互斥;省略时创建到根目录 |
|
|
52
|
-
| `--wiki-token` | 否 | 目标 wiki 节点 token;与 `--folder-token` 互斥;传入后自动映射为 `parent_type=wiki` |
|
|
61
|
+
| `--folder-token` | 否 | 目标 Drive 文件夹 token 或 Drive folder URL;与 `--wiki-token` 互斥;省略时创建到根目录 |
|
|
62
|
+
| `--wiki-token` | 否 | 目标 wiki 节点 token 或 wiki URL;与 `--folder-token` 互斥;传入后自动映射为 `parent_type=wiki` |
|
|
53
63
|
| `--name` | 条件必填 | 文件名,**必须显式带 `.md` 后缀**;使用 `--content` 时必填;使用 `--file` 时可省略,默认取本地文件名 |
|
|
54
64
|
| `--content` | 条件必填 | Markdown 内容;与 `--file` 互斥;支持直接传字符串、`@file`、`-`(stdin) |
|
|
55
65
|
| `--file` | 条件必填 | 本地 `.md` 文件路径;与 `--content` 互斥 |
|
|
@@ -58,6 +68,8 @@ lark-cli markdown +create \
|
|
|
58
68
|
|
|
59
69
|
- `--content` 与 `--file` 必须二选一
|
|
60
70
|
- `--folder-token` 与 `--wiki-token` 互斥
|
|
71
|
+
- `--folder-token` 只能是 Drive 文件夹;不要传 wiki/doc/sheet/base/file token 或 URL
|
|
72
|
+
- `--wiki-token` 只能是 Wiki 节点;如果只有 docx/sheet/base 等文档 URL,先用 `lark-cli wiki +node-get --node-token <url>` 解析出 `node_token`
|
|
61
73
|
- `--name` 必须带 `.md` 后缀
|
|
62
74
|
- `--file` 指向的本地文件名也必须带 `.md` 后缀
|
|
63
75
|
- 传 `--wiki-token` 时,返回值中不会附带 `/file/<token>` URL,因为 wiki 承载文件没有稳定的独立 file URL
|
|
@@ -88,6 +100,14 @@ lark-cli markdown +create \
|
|
|
88
100
|
>
|
|
89
101
|
> **不要擅自执行 owner 转移。** 如果用户需要把 owner 转给自己,必须单独确认。
|
|
90
102
|
|
|
103
|
+
## 失败处理
|
|
104
|
+
|
|
105
|
+
- `not_found` / `1061044`:父目录或 wiki 节点不存在,或 token 类型放错参数。修正 `--folder-token` / `--wiki-token` 后再试,不要重复提交同一参数。
|
|
106
|
+
- `quota_exceeded` / `1061101`:目标存储空间配额已满。释放空间、换父目录/节点或请管理员扩容后再试。
|
|
107
|
+
- `permission_denied` / `missing_scope`:区分身份处理。`--as user` 看用户授权和目标 ACL;`--as bot` 看应用 scope 与目标目录/节点 ACL。
|
|
108
|
+
- `rate_limit`:停止立即重试,使用退避。
|
|
109
|
+
- `server_error` / `233523001`:可以稍后有限重试;若重复出现,保留 `log_id` / request id 给服务端排查。
|
|
110
|
+
|
|
91
111
|
## 参考
|
|
92
112
|
|
|
93
113
|
- [lark-markdown](../SKILL.md) — Markdown 域总览
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lark-minutes
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: "
|
|
4
|
+
description: "飞书妙记:搜索妙记、查看妙记基础信息、下载/上传音视频、读取或编辑妙记的产物内容、改标题、替换说话人/关键词、申请妙记查看/编辑权限。当给出minute_token、本地音视频文件,要查/改/转妙记产物,或用户明确要主动申请妙记权限时使用;本地音视频转纪要/逐字稿优先走本 skill,不要用 ffmpeg/whisper 本地转写。不负责:获取会议关联妙记,或仅按自然语言标题定位纪要"
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
7
7
|
bins: ["lark-cli"]
|
|
@@ -31,6 +31,7 @@ metadata:
|
|
|
31
31
|
| [`+download`](references/lark-minutes-download.md) | 下载妙记音视频媒体文件 |
|
|
32
32
|
| [`+upload`](references/lark-minutes-upload.md) | 上传 file_token 生成妙记 |
|
|
33
33
|
| [`+update`](references/lark-minutes-update.md) | 更新妙记标题 |
|
|
34
|
+
| `+apply-permission` | 申请妙记查看或编辑权限 |
|
|
34
35
|
| [`+speaker-replace`](references/lark-minutes-speaker-replace.md) | 替换妙记逐字稿中的说话人(须先 `lark-cli api GET .../speakerlist` 取 `speaker_id`) |
|
|
35
36
|
| `+word-replace` | 批量替换逐字稿关键词(详见 `lark-cli minutes +word-replace --help`) |
|
|
36
37
|
| [`+summary`](references/lark-minutes-summary.md) | 替换妙记 AI 总结全文 |
|
|
@@ -52,6 +53,7 @@ metadata:
|
|
|
52
53
|
| 在妙记里增加 / 更改 / 删除 AI 待办 | `+todo`(**禁止走 lark-task**) |
|
|
53
54
|
| 替换妙记的AI 总结 | `+summary` |
|
|
54
55
|
| 重命名妙记/改妙记标题 | `+update` |
|
|
56
|
+
| 申请妙记权限(查看/编辑) | `+apply-permission --perm view\|edit` |
|
|
55
57
|
| 替换说话人/把 A 的发言改成 B/重新归属发言人/把外部(非飞书)说话人改成飞书用户" | 先 `lark-cli api GET .../transcript/speakerlist` 取 `speaker_id`,再 [`minutes +speaker-replace`](references/lark-minutes-speaker-replace.md);`--from-speaker-id` 只传 id,不传展示名 |
|
|
56
58
|
| 批量替换逐字稿关键词 | `+word-replace` |
|
|
57
59
|
| 用户同时提到"会议/开会"和"妙记" | 先 [lark-vc](../lark-vc/SKILL.md)(`+search` → `+recording`)获取 `minute_token`,再本 skill |
|
|
@@ -75,8 +77,21 @@ metadata:
|
|
|
75
77
|
2. 如果是会议 / 日程上下文中的妙记基础信息,先通过 VC/Calendar 链路拿到 `minute_token`,再调用 `minutes minutes get`。
|
|
76
78
|
3. 用户意图不明确时,默认先给基础元信息,帮助确认是否命中目标妙记。
|
|
77
79
|
|
|
80
|
+
### 3. 申请妙记权限
|
|
78
81
|
|
|
79
|
-
|
|
82
|
+
遇到妙记没有查看或编辑权限时,引导用户申请对应权限;只有用户明确要申请时,才调用 `minutes +apply-permission`。
|
|
83
|
+
|
|
84
|
+
只有当用户明确要求"申请查看权限"、"申请编辑权限"、"帮我申请这条妙记权限"时,才调用:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
lark-cli minutes +apply-permission --minute-token <token> --perm view|edit
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
这是向妙记所有者发起权限申请,不代表立即获得权限。
|
|
91
|
+
|
|
92
|
+
**安全约束**:遇到无权限错误时,不要自动调用 `+apply-permission`;先把无权限事实告知用户,只有用户明确要求申请权限时才发起申请。
|
|
93
|
+
|
|
94
|
+
### 4. 上传音视频文件生成妙记(并可继续获取纪要 / 逐字稿)
|
|
80
95
|
|
|
81
96
|
1. 当用户说"把音视频文件转成纪要""把录音转成逐字稿/文字稿/撰写文字""把 mp4/mp3 转成总结/待办/章节"时,也先走这个入口。
|
|
82
97
|
2. **处理流程**:
|
|
@@ -120,9 +135,9 @@ lark-cli minutes +todo --minute-token <token> --as user --todos '[
|
|
|
120
135
|
|
|
121
136
|
**更新 / 删除前**:先用 `minutes +detail --minute-tokens <token> --todo` 读取 `todos[].todo_id`(按 `content` 匹配目标条目;列表顺序不保证稳定,**不要**用"第 2 条"代替 `todo_id`)。
|
|
122
137
|
|
|
123
|
-
**无编辑权限**:若 CLI 返回 `error.
|
|
138
|
+
**无编辑权限**:若 CLI 返回 `error.subtype=permission_denied`,表示对**这条妙记**没有编辑权,应请所有者授权;**不要**误走 `auth login --scope`。
|
|
124
139
|
|
|
125
|
-
**逐字稿关键词替换无命中**:`minutes +word-replace` 时,若 CLI 返回 `error.
|
|
140
|
+
**逐字稿关键词替换无命中**:`minutes +word-replace` 时,若 CLI 返回 `error.subtype=not_found`,表示传入的 `source_word` 在该妙记逐字稿中**一个都没匹配到**,未做任何替换。这是**参数问题不是权限问题**:先用 `minutes +detail --minute-tokens <token> --transcript` 读取当前逐字稿,核对 `source_word` 的精确写法与大小写后重试。
|
|
126
141
|
|
|
127
142
|
**替换 AI 总结全文**:见 [minutes +summary](references/lark-minutes-summary.md)。
|
|
128
143
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
# minutes +download
|
|
3
3
|
|
|
4
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
5
4
|
|
|
6
5
|
下载妙记的音视频媒体文件到本地,或获取有效期 1 天的下载链接。只读操作。
|
|
7
6
|
|
|
@@ -134,4 +133,3 @@ API 限流 5 次/秒,批量下载时需注意控制频率。
|
|
|
134
133
|
|
|
135
134
|
- [lark-minutes](../SKILL.md) — 妙记全部命令
|
|
136
135
|
- [lark-minutes-detail](lark-minutes-detail.md) — 妙记详情与 AI 产物查询
|
|
137
|
-
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# minutes +search
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
搜索妙记列表,支持关键词、所有者、参与者以及时间范围等多条件过滤。所有者与参与者都支持传入多个 open\_id,也支持传入 `me` 表示当前用户。只读操作,不修改任何妙记数据。
|
|
6
5
|
|
|
@@ -199,6 +198,5 @@ lark-cli minutes +detail --minute-tokens <minute_token> --summary
|
|
|
199
198
|
|
|
200
199
|
- [lark-minutes](../SKILL.md) -- 妙记相关命令
|
|
201
200
|
- [lark-minutes-detail](lark-minutes-detail.md) -- 基于 `minute_token` 获取逐字稿、总结、待办、章节等产物
|
|
202
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
203
201
|
- [lark-vc](../../lark-vc/SKILL.md) -- 视频会议全部命令
|
|
204
202
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# minutes +speaker-replace
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
替换妙记逐字稿中的说话人身份:把妙记逐字稿里"原说话人"对应的所有发言段,重新归属到"新说话人"。常用于解决妙记自动识别错说话人,或需要把外部/非飞书说话人改绑到正确飞书用户的场景。
|
|
6
5
|
|
|
@@ -106,4 +105,3 @@ Agent 必须先 `lark-cli api GET .../speakerlist`,再 `+speaker-replace`;`-
|
|
|
106
105
|
## 参考
|
|
107
106
|
|
|
108
107
|
- [lark-minutes](../SKILL.md) -- 妙记相关功能说明
|
|
109
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# minutes +summary
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
替换妙记的 AI 总结内容。写操作,会覆盖当前总结。
|
|
6
5
|
|
|
@@ -119,4 +118,3 @@ lark-cli minutes +summary --minute-token obcnxxxxxxxxxxxxxxxxxxxx --summary @sum
|
|
|
119
118
|
- [lark-minutes](../SKILL.md) — 妙记全部命令
|
|
120
119
|
- [minutes +todo](lark-minutes-todo.md) — 替换待办项
|
|
121
120
|
- [minutes +detail](lark-minutes-detail.md) — 读取总结、待办等 AI 产物
|
|
122
|
-
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
> **路由**:本命令操作**妙记内的 AI 待办**,不是飞书任务(Task)。用户说「在妙记里新建待办」时**必须**用本命令,**禁止**走 `lark-cli task` / `tasklists list` / `task +create`。详见 [lark-minutes/SKILL.md](../SKILL.md) 第 6 节。
|
|
4
4
|
|
|
5
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
6
5
|
|
|
7
6
|
对妙记中的待办做新增 / 更新 / 删除(单条或批量)。写操作。
|
|
8
7
|
|
|
@@ -127,12 +126,11 @@ lark-cli minutes +todo --minute-token obcnxxxxxxxxxxxxxxxxxxxx --operation add -
|
|
|
127
126
|
| 未指定操作 | 单条模式传 `--operation`,或批量传 `--todos` |
|
|
128
127
|
| `--todos` 与单条 flags 冲突 | 二选一 |
|
|
129
128
|
| `todos[i]` 校验失败 | 检查该条 `operation` 与字段组合 |
|
|
130
|
-
| `error.
|
|
131
|
-
| 缺少 OAuth scope(`
|
|
129
|
+
| `error.subtype` = `permission_denied` | **妙记资源无编辑权**:向妙记所有者申请该妙记的编辑/协作权限;**不要**走 `auth login --scope` |
|
|
130
|
+
| 缺少 OAuth scope(`error.missing_scopes` 含 `minutes:minutes:update`) | `lark-cli auth login --scope "minutes:minutes:update"` |
|
|
132
131
|
|
|
133
132
|
## 参考
|
|
134
133
|
|
|
135
134
|
- [lark-minutes](../SKILL.md)
|
|
136
135
|
- [minutes +summary](lark-minutes-summary.md)
|
|
137
136
|
- [minutes +detail](lark-minutes-detail.md)
|
|
138
|
-
- [lark-shared](../../lark-shared/SKILL.md)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# minutes +update
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
修改飞书妙记的标题(topic)。
|
|
6
5
|
|
|
@@ -38,4 +37,3 @@ lark-cli minutes +update --minute-token xxx --topic "周会纪要 2026-05-18"
|
|
|
38
37
|
## 参考
|
|
39
38
|
|
|
40
39
|
- [lark-minutes](../SKILL.md) -- 妙记相关功能说明
|
|
41
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# minutes +upload
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
3
|
|
|
5
4
|
上传音视频文件到飞书妙记并生成妙记(Minute)。
|
|
6
5
|
|
|
@@ -31,12 +30,12 @@
|
|
|
31
30
|
```
|
|
32
31
|
- 命令执行成功后,将返回生成的妙记链接 `minute_url`。
|
|
33
32
|
|
|
34
|
-
3. **如需纪要 / 逐字稿 / 文字稿 /
|
|
35
|
-
-
|
|
36
|
-
- 如果用户要的是纪要、逐字稿、文字稿、撰写文字、总结、待办或章节,继续调用:
|
|
33
|
+
3. **如需纪要 / 逐字稿 / 文字稿 / 撰写文字,使用返回的 `minute_token` 调用 `minutes +detail`**
|
|
34
|
+
- 如果用户要的是纪要、逐字稿、文字稿、撰写文字、总结、待办或章节,使用上一步返回的 `minute_token` 继续调用:
|
|
37
35
|
```bash
|
|
38
|
-
lark-cli minutes +detail --minute-tokens <minute_token> --summary --todo --chapter --keyword --transcript
|
|
36
|
+
lark-cli minutes +detail --minute-tokens <minute_token> --wait-ready --summary --todo --chapter --keyword --transcript
|
|
39
37
|
```
|
|
38
|
+
- `--wait-ready` 参数表示等待妙记生成完毕后再获取产物,上传后立即读取详情时必须加上此参数。
|
|
40
39
|
- `minutes +detail --minute-tokens` 会返回妙记产物(总结、待办、章节、关键词、逐字稿);必要时还会把逐字稿落地到本地文件。
|
|
41
40
|
|
|
42
41
|
> **异步生成提示**:API 会立即返回 `minute_url`,但妙记可能仍在异步生成中,您可以直接通过该妙记链接查看当前的处理状态和转写结果。
|
|
@@ -47,8 +46,8 @@
|
|
|
47
46
|
# 通过已上传到云空间(云盘/云存储)的 file_token 生成妙记
|
|
48
47
|
lark-cli minutes +upload --file-token boxcnxxxxxxxxxxxxxxxx
|
|
49
48
|
|
|
50
|
-
#
|
|
51
|
-
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxx --summary
|
|
49
|
+
# 上传后立即获取妙记产物,需加 --wait-ready 等待生成完毕(--summary --todo --chapter --keyword --transcript 按需传入)
|
|
50
|
+
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxx --wait-ready --summary
|
|
52
51
|
```
|
|
53
52
|
|
|
54
53
|
## 参数
|
|
@@ -81,7 +80,7 @@ lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxx --summary
|
|
|
81
80
|
1. 使用 `lark-cli drive +upload --file <path>` 上传本地音视频文件到云空间(云盘/云存储)
|
|
82
81
|
2. 从返回结果中取出 `file_token`
|
|
83
82
|
3. 调用 `lark-cli minutes +upload --file-token <file_token>` 生成妙记
|
|
84
|
-
4.
|
|
83
|
+
4. 如果目标是纪要、逐字稿、文字稿、撰写文字、总结、待办或章节,使用返回的 `minute_token`,继续调用 `lark-cli minutes +detail --minute-tokens <minute_token> --wait-ready`
|
|
85
84
|
|
|
86
85
|
> **边界说明**:`minutes +upload` 本身只负责把文件转成妙记并返回 `minute_url`。纪要内容、逐字稿、文字稿、撰写文字、总结、待办、章节属于后续产物获取,应由 [minutes +detail](lark-minutes-detail.md) 承接。
|
|
87
86
|
|
|
@@ -89,16 +88,17 @@ lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxx --summary
|
|
|
89
88
|
|
|
90
89
|
```json
|
|
91
90
|
{
|
|
92
|
-
"minute_url": "http(s)://<host>/minutes/<minute-token>"
|
|
91
|
+
"minute_url": "http(s)://<host>/minutes/<minute-token>",
|
|
92
|
+
"minute_token": "<minute-token>"
|
|
93
93
|
}
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
| 字段 | 说明 |
|
|
97
97
|
|------|------|
|
|
98
98
|
| `minute_url` | 生成的妙记访问链接 |
|
|
99
|
+
| `minute_token` | 从 `minute_url` 提取出的妙记 Token,可直接传给 `minutes +detail --minute-tokens` |
|
|
99
100
|
|
|
100
101
|
## 参考
|
|
101
102
|
|
|
102
103
|
- [lark-minutes](../SKILL.md) -- 妙记相关功能说明
|
|
103
104
|
- [drive +upload](../../lark-drive/references/lark-drive-upload.md) -- 上传文件到云空间(云盘/云存储)
|
|
104
|
-
- [lark-shared](../../lark-shared/SKILL.md) -- 认证和全局参数
|
|
@@ -69,7 +69,7 @@ LARKSUITE_CLI_NO_UPDATE_NOTIFIER=1 LARKSUITE_CLI_NO_SKILLS_NOTIFIER=1 lark-cli a
|
|
|
69
69
|
遇到权限相关错误时,**根据当前身份类型采取不同解决方案**。
|
|
70
70
|
|
|
71
71
|
错误响应中包含关键信息:
|
|
72
|
-
- `
|
|
72
|
+
- `missing_scopes`:列出缺失的 scope (N选1)
|
|
73
73
|
- `console_url`:飞书开发者后台的权限配置链接
|
|
74
74
|
- `hint`:建议的修复命令
|
|
75
75
|
|
|
@@ -146,6 +146,24 @@ lark-cli update
|
|
|
146
146
|
|
|
147
147
|
**重要**:始终使用 `lark-cli update` 更新,它会同时更新 CLI 和 AI Skills。
|
|
148
148
|
|
|
149
|
+
## JSON 输出契约
|
|
150
|
+
|
|
151
|
+
`--format json`(默认)下,成功与错误的信封结构不同:
|
|
152
|
+
|
|
153
|
+
成功信封写入 **stdout**(退出码 0):
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{ "ok": true, "identity": "user", "data": { "guid": "..." }, "meta": { "count": 1 } }
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
错误信封写入 **stderr**(退出码非 0):
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{ "ok": false, "identity": "user", "error": { "type": "authorization", "subtype": "missing_scope", "code": 99991679, "message": "...", "hint": "...", "missing_scopes": ["..."] } }
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**判断成功必须用 `ok == true`(或进程退出码 0),不要用 `code == 0`**:成功信封没有顶层 `code` / `msg` 字段,`code` 只出现在错误信封的 `error` 内,含义是上游 OpenAPI 的 numeric code。按 OpenAPI 老格式 `{"code": 0, "msg": "ok"}` 判断会把所有成功调用误判为失败;封装写入类命令(如 `task +create`)时尤其危险,误判会绕过幂等逻辑导致重复创建。
|
|
166
|
+
|
|
149
167
|
## 安全规则
|
|
150
168
|
|
|
151
169
|
- **禁止输出密钥**(appSecret、accessToken)到终端明文。
|
|
@@ -160,22 +178,22 @@ lark-cli 对高风险写操作(`risk: "high-risk-write"`)有强制确认门
|
|
|
160
178
|
```json
|
|
161
179
|
{
|
|
162
180
|
"ok": false,
|
|
181
|
+
"identity": "bot",
|
|
163
182
|
"error": {
|
|
164
|
-
"type": "
|
|
183
|
+
"type": "confirmation",
|
|
184
|
+
"subtype": "confirmation_required",
|
|
165
185
|
"message": "drive +delete requires confirmation",
|
|
166
186
|
"hint": "add --yes to confirm",
|
|
167
|
-
"risk":
|
|
168
|
-
|
|
169
|
-
"action": "drive +delete"
|
|
170
|
-
}
|
|
187
|
+
"risk": "high-risk-write",
|
|
188
|
+
"action": "drive +delete"
|
|
171
189
|
}
|
|
172
190
|
}
|
|
173
191
|
```
|
|
174
192
|
|
|
175
193
|
**遇到这种情况,不要当普通错误放弃。** 按以下流程处理:
|
|
176
194
|
|
|
177
|
-
1. **识别**:看到子进程 exit code = `10` 且 stderr JSON 里 `error.type == "confirmation_required"`
|
|
178
|
-
2. **向用户确认**:把 `error.risk
|
|
195
|
+
1. **识别**:看到子进程 exit code = `10` 且 stderr JSON 里 `error.type == "confirmation"`、`error.subtype == "confirmation_required"`
|
|
196
|
+
2. **向用户确认**:把 `error.action`、`error.risk` 和关键参数展示给用户,明确告知"这是高风险操作",等待用户显式同意
|
|
179
197
|
3. **用户同意** → 在你**原始 argv 的末尾追加 `--yes`** 后重试
|
|
180
198
|
4. **用户拒绝** → 终止流程,不要擅自改写参数或跳过门禁
|
|
181
199
|
|