Skip to content

Commit 7db899d

Browse files
docs: add mindnote guidance to lark-doc (#1581)
1 parent c2d6038 commit 7db899d

3 files changed

Lines changed: 118 additions & 4 deletions

File tree

shortcuts/doc/doc_media_upload.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ var DocMediaUpload = common.Shortcut{
2323
AuthTypes: []string{"user", "bot"},
2424
Flags: []common.Flag{
2525
{Name: "file", Desc: "local file path (files > 20MB use multipart upload automatically)", Required: true},
26-
{Name: "parent-type", Desc: "parent type: docx_image | docx_file | whiteboard", Required: true},
27-
{Name: "parent-node", Desc: "parent node ID (block_id for docx, board_token for whiteboard)", Required: true},
26+
{Name: "parent-type", Desc: "parent type: docx_image | docx_file | whiteboard | mindnote_image", Required: true},
27+
{Name: "parent-node", Desc: "parent node ID (block_id for docx, board_token for whiteboard, mindnote token for mindnote)", Required: true},
2828
{Name: "doc-id", Desc: "document ID (for drive_route_token)"},
2929
},
3030
DryRun: func(ctx context.Context, runtime *common.RuntimeContext) *common.DryRunAPI {

skills/lark-doc/SKILL.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
name: lark-doc
33
version: 2.0.0
4-
description: "飞书云文档(Docx / Wiki 文档):读取和编辑飞书文档内容。当用户给出文档 URL 或 token,或需要查看、创建、编辑文档、插入或下载文档图片附件时使用。文档中嵌入的电子表格、多维表格、画板,先用本 skill 提取 token 再切到对应 skill。当用户给出 doubao.com 的 /docx/ 或 /wiki/ URL/token 时,也应直接使用本 skill;路由依据是 URL 路径模式和 token,而不是域名。不负责文档评论管理,也不负责表格或 Base 的数据操作。"
4+
description: "飞书云文档(Docx / Wiki 文档):读取和编辑飞书文档内容。当用户给出文档 URL 或 token,或需要查看、创建、编辑文档、插入或下载文档图片附件时使用。文档中嵌入的电子表格、多维表格、画板,先用本 skill 提取 token 再切到对应 skill。当用户给出 doubao.com 的 /docx/ 或 /wiki/ URL/token 时,也应直接使用本 skill;路由依据是 URL 路径模式和 token,而不是域名。不负责文档评论管理,也不负责表格或 Base 的数据操作。当用户明确要操作飞书思维笔记时,也使用本 skill。"
55
metadata:
66
requires:
77
bins: ["lark-cli"]
8-
cliHelp: "lark-cli docs --help; lark-cli docs +create --help; lark-cli docs +fetch --help; lark-cli docs +update --help; lark-cli docs +resource-download --help; lark-cli docs +resource-update --help; lark-cli docs +resource-delete --help"
8+
cliHelp: "lark-cli docs --help; lark-cli docs +create --help; lark-cli docs +fetch --help; lark-cli docs +update --help; lark-cli docs +resource-download --help; lark-cli docs +resource-update --help; lark-cli docs +resource-delete --help; lark-cli mindnotes nodes list --help; lark-cli mindnotes nodes create --help"
99
---
1010

1111
# docs
@@ -45,6 +45,7 @@ lark-cli docs +update --doc "文档URL或token" --command append --content '<p>
4545
- 用户明确说"下载/更新/删除文档封面图" → 用 `lark-cli docs +resource-download/+resource-update/+resource-delete --type cover`
4646
- `resource-*` 目前仅支持 Docx 封面资源;其他图片、附件或素材请走 `+media-*`
4747
- 如果目标是画板/whiteboard/画板缩略图 → 只能用 `lark-cli docs +media-download --type whiteboard`(不要用 `+media-preview`
48+
- 用户明确要操作思维笔记时;已有**思维笔记**,走 [思维笔记链路](references/lark-doc-mindnote.md);新建**思维笔记**,走 [lark-doc-whiteboard](references/lark-doc-whiteboard.md)
4849
- 拿到 spreadsheet URL/token 后 → 切到 `lark-sheets` 做对象内部操作
4950
- 用户需要统计文档的**总字数 / 总字符数**(word count / character count)时,先读取 [`lark-doc-word-stat.md`](references/lark-doc-word-stat.md),并按其中流程调用 [`scripts/doc_word_stat.py`](scripts/doc_word_stat.py);统计口径以该脚本为准,不要改用其他方式自行计算。
5051
- 用户说"给文档加评论""查看评论""回复评论""给评论加/删除表情 reaction" → 切到 `lark-drive` 处理
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# 飞书思维笔记(Mindnote)
2+
3+
> **前置条件:** 先阅读 [`../SKILL.md`](../SKILL.md)[`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和路由规则。
4+
5+
当用户要操作思维笔记时,入口属于 `lark-doc`,但实际执行命令使用 `lark-cli mindnotes nodes list/create`,不是 `docs +...`
6+
7+
> [!IMPORTANT]
8+
> 当前这条链路只支持**读取已有思维笔记**,以及在**已有思维笔记**里读取节点、创建子节点。
9+
> `mindnotes nodes create` 是新增/更新节点命令,**不是**新建一个新的思维笔记。
10+
> 如果用户要**新建思维笔记**,不要走本链路,改走 [lark-doc-whiteboard](lark-doc-whiteboard.md)
11+
12+
## 命令
13+
14+
```bash
15+
# 先看命令帮助
16+
lark-cli mindnotes nodes list --help
17+
lark-cli mindnotes nodes create --help
18+
19+
# 读取节点列表
20+
lark-cli mindnotes nodes list --mindnote-id "<mindnote_token>"
21+
22+
# 创建子节点
23+
lark-cli mindnotes nodes create \
24+
--mindnote-id "<mindnote_token>" \
25+
--data '{"client_token":"<client_token>","nodes":[{"parent_id":"node_parent123","texts":[{"element_type":"text","text":{"content":"子节点内容"}}],"highlight":"yellow","finish":false}]}'
26+
27+
# 更新已有节点
28+
lark-cli mindnotes nodes create \
29+
--mindnote-id "<mindnote_token>" \
30+
--data '{"client_token":"<client_token>","nodes":[{"node_id":"node_existing123","texts":[{"element_type":"text","text":{"content":"更新后的节点内容"}}],"highlight":"blue","finish":true}]}'
31+
```
32+
33+
## 参数
34+
35+
### `mindnotes nodes list`
36+
37+
| 参数 | 必填 | 说明 |
38+
|------|------|------|
39+
| `--mindnote-id` || 思维笔记 token / 唯一标识 |
40+
41+
返回重点:`data.nodes` 中常见字段有 `node_id``parent_id``texts``notes``images``finish``highlight`
42+
43+
### `mindnotes nodes create`
44+
45+
命令参数:
46+
47+
| 参数 | 必填 | 说明 |
48+
|------|------|------|
49+
| `--mindnote-id` || 思维笔记 token / 唯一标识 |
50+
| `--data` || JSON 请求体 |
51+
52+
请求体字段:
53+
54+
| 字段 | 必填 | 说明 |
55+
|------|------|------|
56+
| `client_token` || 幂等 token,建议写操作传入;推荐使用时间戳或 UUID |
57+
| `nodes` || 待创建或更新的节点数组 |
58+
| `nodes[].node_id` || 节点 ID;传入已有 `node_id` 时表示更新对应节点 |
59+
| `nodes[].parent_id` || 父节点 ID;创建子节点时传入 |
60+
| `nodes[].texts` || 节点正文富文本数组 |
61+
| `nodes[].notes` || 节点备注富文本数组 |
62+
| `nodes[].images` || 节点图片列表 |
63+
| `nodes[].highlight` || `red` / `yellow` / `pink` / `blue` / `cyan` / `olive` / `grey` |
64+
| `nodes[].finish` || 节点完成状态 |
65+
66+
富文本字段 `texts` / `notes` 是元素数组。最常见的是:
67+
68+
```json
69+
[{"element_type":"text","text":{"content":"节点内容"}}]
70+
```
71+
72+
### 节点图片(`nodes[].images`
73+
74+
`nodes[].images` 接收的是**图片 token**,不是本地文件路径,也不是 URL。
75+
76+
```bash
77+
# 先上传图片,拿到 token
78+
lark-cli docs +media-upload --file ./image.png --parent-type mindnote_image --parent-node <mindnote_token>
79+
80+
# 再把 token 写进节点
81+
lark-cli mindnotes nodes create \
82+
--mindnote-id "<mindnote_token>" \
83+
--data '{"client_token":"<client_token>","nodes":[{"node_id":"node_existing123","images":[{"token":"canonical_token"}]}]}'
84+
```
85+
86+
参数说明:
87+
88+
| 参数 | 必填 | 说明 |
89+
|------|------|------|
90+
| `--file` || 本地图片路径 |
91+
| `--parent-type` || 上传目标类型;图片使用 `mindnote_image` |
92+
| `--parent-node` || 传 Mindnote 的 token |
93+
| `nodes[].images[].token` || 上传后返回的图片 token |
94+
95+
## 推荐工作流
96+
97+
1. 先判断用户目标是不是“新建一个思维笔记”。
98+
2. 如果是新建思维笔记,切到 [lark-doc-whiteboard](lark-doc-whiteboard.md)
99+
3. 如果是操作已有思维笔记,先通过 token 类别判断。
100+
4. 确认是 **Mindnote** 后再拿到 `mindnote_id`
101+
5. 先执行 `mindnotes nodes list`,确认目标 `parent_id`
102+
6. 新增子节点时,在 `nodes[]` 里传 `parent_id`;更新已有节点时,在 `nodes[]` 里传已有 `node_id`
103+
7. 再执行 `mindnotes nodes create`
104+
8. 写操作优先带 `client_token`,推荐使用时间戳或 UUID,避免重试时重复创建或重复更新。
105+
106+
> [!CAUTION]
107+
> `mindnotes nodes create` 是写操作。创建时确认插入位置,更新时确认 `node_id` 指向的就是目标节点。
108+
109+
## 参考
110+
111+
- [lark-doc-fetch](lark-doc-fetch.md) — 获取文档内容
112+
- [lark-doc-whiteboard](lark-doc-whiteboard.md) — 新建思维笔记走画板链路
113+
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数

0 commit comments

Comments
 (0)