# docs +create(创建飞书云文档) > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。 从 Lark-flavored Markdown 内容创建一个新的飞书云文档。 ## 重要说明 > **⚠️ 本文档中提到的 html 标签不需要在 Markdown 中转义!若转义,会导致相关的表格,多维表格,画板等 block 插入失败** ## 命令 ```bash # 创建简单文档 lark-cli docs +create --title "项目计划" --markdown "## 目标\n\n- 目标 1\n- 目标 2" # 创建到指定文件夹 lark-cli docs +create --title "会议纪要" --folder-token fldcnXXXX --markdown "## 讨论议题\n\n1. 进度\n2. 计划" # 创建到知识库节点下 lark-cli docs +create --title "技术文档" --wiki-node wikcnXXXX --markdown "## API 说明" # 创建到知识空间根目录 lark-cli docs +create --title "概览" --wiki-space 7000000000000000000 --markdown "## 项目概览" # 创建到个人知识库 lark-cli docs +create --title "学习笔记" --wiki-space my_library --markdown "## 笔记" ``` ## 返回值 工具成功执行后,返回一个 JSON 对象,包含以下字段: - **`doc_id`**(string):文档的唯一标识符(token),格式如 `doxcnXXXXXXXXXXXXXXXXXXX` - **`doc_url`**(string):文档的访问链接,可直接在浏览器中打开 - **`message`**(string):操作结果消息,如"文档创建成功" - **`permission_grant`**(object,可选):仅 `--as bot` 时返回,说明是否已自动为当前 CLI 用户授予可管理权限 > [!IMPORTANT] > 当文档创建在 `wiki_node` 或 `wiki_space` 下时,返回的 `doc_url` 可能是 `/wiki/...` 形式的知识库链接,而不是 `/docx/...` 形式的文档链接。 > 如果后续要调用 [`lark-doc-media-insert`](lark-doc-media-insert.md) 这类当前只支持 `doc_id` 或 `/docx/...` URL 自动提取的 skill,请优先使用返回值里的 `doc_id`,不要直接复用这个 `doc_url`。 > [!IMPORTANT] > 如果文档是**以应用身份(bot)创建**的,如 `lark-cli docs +create --as bot` 在文档创建成功后, CLI 会**尝试为当前 CLI 用户自动授予该文档的 `full_access`(可管理权限)**。 > > 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果: > - `status = granted`:当前 CLI 用户已获得该文档的可管理权限 > - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权;可提示用户先完成 `lark-cli auth login`,再让 AI / agent 继续使用应用身份(bot)授予当前用户权限 > - `status = failed`:文档已创建成功,但自动授权用户失败;会带上失败原因,并提示稍后重试或继续使用 bot 身份处理该文档 > > `permission_grant.perm = full_access` 表示该资源已授予“可管理权限”。 > > **不要擅自执行 owner 转移。** 如果用户需要把 owner 转给自己,必须单独确认。 ## 重要:创建文档后的可视化流程 如果文档中包含空白画板(``),**必须继续以下步骤**: 1. 从返回值的 `data.board_tokens` 字段记录所有新建画板的 token 2. 读取 `../../lark-whiteboard/SKILL.md`,跳至"渲染 & 写入画板"章节,为每个 board_token 生成并写入实际内容 3. 确认所有画板都有实际内容后,任务才算完成 **仅创建空白画板是不够的!** 如果只创建空白画板而不填充内容,任务将被视为未完成。 > ⚠️ **警告**:务必检查返回值中是否有 `board_tokens` 字段。如果有,说明创建了空白画板,必须继续填充内容! ## 参数 | 参数 | 必填 | 说明 | |------|------|------| | `--markdown` | 是 | 文档的 Markdown 内容(Lark-flavored Markdown 格式) | | `--title` | 否 | 文档标题 | | `--folder-token` | 否 | 父文件夹 token(与 `--wiki-node`、`--wiki-space` 互斥) | | `--wiki-node` | 否 | 知识库节点 token 或 URL(与 `--folder-token`、`--wiki-space` 互斥) | | `--wiki-space` | 否 | 知识空间 ID,特殊值 `my_library` 表示个人知识库(与 `--folder-token`、`--wiki-node` 互斥) | ### markdown(必填) 文档的 Markdown 内容,使用 Lark-flavored Markdown 格式。 调用本工具的 markdown 内容应当尽量结构清晰,样式丰富,有很高的可读性。合理地使用 callout 高亮块、分栏、表格、图片和空白画板等能力,做到图文并茂。 你需要遵循以下原则: - **结构清晰**:标题层级 ≤ 4 层,用 Callout 突出关键信息 - **视觉节奏**:用分割线、分栏、表格打破大段纯文字 - **图文交融**:流程、架构或草图需要可视化时,优先使用图片、表格或空白画板 - **克制留白**:Callout 不过度、加粗只强调核心词 - **主动画板**:文档涉及架构、流程、组织、时间线、因果等逻辑关系时,**必须**在 markdown 对应章节的文字内容之后插入 `` 占位,每个图表对应一个标签。**禁止**用 `whiteboard-cli` 渲染的 PNG/SVG 图片替代画板。创建完成后从返回值 `data.board_tokens` 取 token,读取 `../../lark-whiteboard/SKILL.md` 的"渲染 & 写入画板"章节为每个 token 写入图表内容。例:文档含"系统整体架构""分层架构""部署架构"各需插入一个画板,"类图"也需插入一个画板(走 Mermaid 路由)。 当用户有明确的样式、风格需求时,应当以用户的需求为准! **重要提示**: - **禁止重复标题**:markdown 内容开头不要写与 title 相同的一级标题!title 参数已经是文档标题,markdown 应直接从正文内容开始 - **目录**:飞书自动生成,无需手动添加 - Markdown 语法必须符合 Lark-flavored Markdown 规范,详见下方"内容格式"章节 - 创建较长的文档时,强烈建议配合 `docs +update --mode append`,进行分段的创建,提高成功率 ### folder-token(可选) 父文件夹的 token。如果不提供,文档将创建在用户的个人空间根目录。 folder_token 可以从飞书文件夹 URL 中获取,格式如:`https://xxx.feishu.cn/drive/folder/fldcnXXXX`,其中 `fldcnXXXX` 即为 folder_token。 ### wiki-node(可选) 知识库节点 token 或 URL(可选,传入则在该节点下创建文档,与 folder-token 和 wiki-space 互斥) wiki_node 可以从飞书知识库页面 URL 中获取,格式如:`https://xxx.feishu.cn/wiki/wikcnXXXX`,其中 `wikcnXXXX` 即为 wiki_node token。 ### wiki-space(可选) 知识空间 ID(可选,传入则在该空间根目录下创建文档。特殊值 `my_library` 表示用户的个人知识库。与 wiki-node 和 folder-token 互斥) wiki_space 可以从知识空间设置页面 URL 中获取,格式如:`https://xxx.feishu.cn/wiki/settings/7000000000000000000`,其中 `7000000000000000000` 即为 wiki_space ID。 **参数优先级**:wiki-node > wiki-space > folder-token ## 示例 ### 示例 1:创建简单文档 ```bash lark-cli docs +create --title "项目计划" --markdown "## 项目概述\n\n这是一个新项目。\n\n## 目标\n\n- 目标 1\n- 目标 2" ``` ### 示例 2:使用飞书扩展语法 ```bash lark-cli docs +create --title "产品需求" --markdown '\n重要需求说明\n' ``` # 内容格式 文档内容使用 **Lark-flavored Markdown** 格式,这是标准 Markdown 的扩展版本,支持飞书文档的所有块类型和富文本格式。 ## 通用规则 - 使用标准 Markdown 语法作为基础 - 使用自定义 XML 标签实现飞书特有功能(具体标签见各功能章节) - 只有当字符会被解释为 Markdown / Lark 富文本语法时,才需要使用反斜杠转义:``* ~ ` $ [ ] < > { } | ^`` - 普通文本中的孤立字符不要过度转义。例如 `5 * 3`、`version~1.0`、`final_trajectory` 通常应保持原样,只有像 `*斜体*`、`**粗体**`、`~~删除线~~` 这种会触发格式化的写法,想按字面量显示时才需要转义 --- ## 基础块类型 ### 文本(段落) ```markdown 普通文本段落 段落中的**粗体文字** 多个段落之间用空行分隔。 居中文本 {align="center"} 右对齐文本 {align="right"} ``` **段落对齐**:支持 `{align="left|center|right"}` 语法。可与颜色组合:`{color="blue" align="center"}` ### 标题 飞书支持 9 级标题。H1-H6 使用标准 Markdown 语法,H7-H9 使用 HTML 标签: ```markdown # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 七级标题 八级标题 九级标题 # 带颜色的标题 {color="blue"} ## 红色标题 {color="red"} # 居中标题 {align="center"} ## 蓝色居中标题 {color="blue" align="center"} ``` **标题属性**:支持 `{color="颜色名"}` 和 `{align="left|center|right"}` 语法,可组合使用。颜色值:red, orange, yellow, green, blue, purple, gray。请谨慎使用该能力。 ### 列表 有序列表、无序列表嵌套使用 tab 或者 2 空格缩进: ```markdown - 无序项1 - 无序项1.a - 无序项1.b 1. 有序项1 2. 有序项2 - [ ] 待办 - [x] 已完成 ``` ### 引用块 ```markdown > 这是一段引用 > 可以跨多行 > 引用中支持**加粗**和*斜体*等格式 ``` ### 代码块 **注意**:只支持围栏代码块(` ``` `),不支持缩进代码块。 ````markdown ```python print("Hello") ``` ```` 支持语言:python, javascript, go, java, sql, json, yaml, shell 等。 ### 分割线 ```markdown --- ``` --- ## 富文本格式 ### 文本样式 `**粗体**` `*斜体*` `~~删除线~~` `` `行内代码` `` `下划线` ### 文字颜色 `红色` `黄色背景` 支持: red, orange, yellow, green, blue, purple, gray ### 链接 `[链接文字](https://example.com)` (不支持锚点链接) ### 行内公式(LaTeX) `$E = mc^2$`(`$`前后需空格)或 `E = mc^2`(无限制,推荐) --- ## 高级块类型 ### 高亮块(Callout) ```html 支持**格式化**的内容,可包含多个块 ``` **属性**: emoji (使用 emoji 字符如 ✅ ⚠️ 💡), background-color, border-color, text-color **背景色**: light-red/red, light-blue/blue, light-green/green, light-yellow/yellow, light-orange/orange, light-purple/purple, pale-gray/light-gray/dark-gray **常用**: 💡light-blue(提示) ⚠️light-yellow(警告) ❌light-red(危险) ✅light-green(成功) **限制**: callout 子块仅支持文本、标题、列表、待办、引用。不支持代码块、表格、图片。 ### 分栏(Grid) 适合对比、并列展示场景。支持 2-5 列: #### 两栏(等宽) ```html 左栏内容 右栏内容 ``` #### 三栏自定义宽度 ```html 左栏(20%) 中栏(60%) 右栏(20%) ``` **属性**: `cols`(列数 2-5), `width`(列宽百分比,总和为 100,等宽时可省略) ### 表格 #### 标准 Markdown 表格 ```markdown | 列 1 | 列 2 | 列 3 | |------|------|------| | 单元格 1 | 单元格 2 | 单元格 3 | | 单元格 4 | 单元格 5 | 单元格 6 | ``` #### 飞书增强表格 当单元格需要复杂内容(列表、代码块、高亮块等)时使用。 **层级结构**(必须严格遵守): ``` <- 表格容器 <- 行(直接子元素只能是 lark-tr) 内容 <- 单元格(直接子元素只能是 lark-td) 内容 <- 每行的 lark-td 数量必须相同! ``` **属性**: - `column-widths`:列宽,逗号分隔像素值,总宽约 730 - `header-row`:首行是否为表头(`"true"` 或 `"false"`) - `header-column`:首列是否为表头(`"true"` 或 `"false"`) **单元格写法**:内容前后必须空行 ```html 这里写内容 ``` **完整示例**(2行3列): ```html **表头1** **表头2** **表头3** 普通文本 - 列表项1 - 列表项2 代码内容 ``` **限制**:单元格内不支持 Grid 和嵌套表格 **合并单元格**:读取时返回 `rowspan/colspan` 属性,创建暂不支持 **禁止**: - 混用 Markdown 表格语法(`|---|`) - 使用 `
` 换行 - 遗漏 `` 标签 ### 图片 ```html ``` **属性**: url (必需,系统会自动下载并上传), width, height, align (left/center/right), caption **注意**: 不支持直接使用 `token` 属性(如 ``),只支持 URL 方式。系统会自动下载图片并上传到飞书。 支持 PNG/JPG/GIF/WebP/BMP,最大 10MB **图片/文件插入方式选择**: - **有公开可访问的图片 URL** → 直接在 `docs +create` / `docs +update` 的 markdown 中使用 `` 一步到位 - **本地图片或文件** → 先用 `docs +create` / `docs +update` 创建或更新文档文本内容,再用 `lark-doc-media-insert`(docs +media-insert)将本地图片或文件追加到文档末尾 ### 文件 ```html ``` **属性**: - url (文件 URL,必需,系统会自动下载并上传) - name (文件名,必需) - view-type (1=卡片视图, 2=预览视图,可选) **注意**: 不支持直接使用 `token` 属性(如 ``) ### 画板 创建空白画板时,直接在 markdown 中写 ``。 自然语言请求示例: - “帮我创建一个带单个空白画板的文档” - “帮我创建一个文档,里面放两个空白画板” ```bash # 创建带单个空白画板的文档 lark-cli docs +create --title "空白画板示例" --markdown '' ``` ```html ``` 一次创建多个空白画板时,在同一个 markdown 里重复多个标签: ```html ``` #### 读取画板 读取时返回 `` 标签: ```html ``` **重要说明**: - 创建空白画板时,直接使用 `` - 读取时只能获取 token,可通过 media-download 查看内容,无法直接读出画板内部内容 - 画板编辑:详见 [../../lark-whiteboard/SKILL.md](../../lark-whiteboard/SKILL.md) ### 多维表格(Base) ```html ``` **属性**: view (table/kanban,默认 table) **注意**: token 是只读属性,创建时不能指定。只能创建空的多维表格,创建后再手动添加数据。 ### 会话卡片(ChatCard) ```html ``` **属性**: id (格式 oc_xxx, 必需), align (left/center/right) ### 内嵌网页(Iframe) ```html