讲师中心 微信公众号
AI工具推荐 视频效率加速

Feishu Cli Board

Polar Sponsor
爱发电 赞助
.NET 9.0

飞书画板全功能操作:创建画板、绘制架构图/流程图/看板(通过 create-notes API 精确控制节点位置和样式)、 导入 Mermaid/PlantUML 图表、下载画板图片、获取/复制画板节点。 当用户请求"画个图"、"画架构图"、"画流程图"、"画板"、"whiteboard"、"create-not...

QQ : app Access Token( QX FEISHU APP ID + FEISHU APP SECRET, ~/.fieshu-cli/confi

功能概述

QQ : app Access Token( QX FEISHU APP ID + FEISHU APP SECRET, ~/.fieshu-cli/confi是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

飞书画板操作技能

前置条件

  • 认证:需要有效的 App Access Token(环境变量 FEISHU_APP_ID + FEISHU_APP_SECRET,或 ~/.feishu-cli/config.yaml)
  • 权限:应用需开通 board:whiteboard(画板读写)和 docx:document(文档中添加画板)
  • 验证:feishu-cli auth status 确认认证状态正常

两种模式

在飞书文档中创建画板并绘制可视化图表。支持两种模式:

模式 方式 适用场景
精排绘图 board create-notes — JSON 描述节点坐标、颜色、连线 架构图、看板、自定义布局
图表导入 board import — Mermaid/PlantUML 代码自动渲染 标准流程图、时序图等 8 种图表

何时使用哪种方式

需求 推荐方式 说明
精确控制节点位置、颜色、坐标 board create-notes(本技能) 完全自定义布局,适合架构图、看板
从 Mermaid/PlantUML 代码快速生成图 board import 或 doc import 服务端自动排版,无需手动计算坐标
在文档中内嵌简单图表 feishu-cli-write / feishu-cli-import 的 Mermaid 支持 Markdown 中写 Mermaid 代码块,导入时自动转画板

简单判断:如果你只需要"画个流程图"且不关心精确坐标,优先用 Mermaid;如果需要"精排"或"自定义配色布局",用 create-notes。

精排绘图工作流(create-notes)

这是画板的核心能力,通过 JSON 精确控制每个节点的位置、大小、颜色和连线。

标准四步流程

# 1. 创建文档(或使用已有文档)
feishu-cli doc create --title "架构图" -o json
# → document_id

# 2. 在文档中添加画板
feishu-cli doc add-board  -o json
# → whiteboard_id

# 3. 创建节点(先形状,再连接线)
feishu-cli board create-notes  shapes.json -o json
# → node_ids(用于连接线引用)
feishu-cli board create-notes  connectors.json -o json

# 4. 截图验证
feishu-cli board image  output.png

关键原则:先创建所有形状节点获取 ID,再创建连接线引用这些 ID。

最小示例:2 个节点 + 1 条连线

在深入 JSON 格式细节之前,先看一个最小的完整示例——两个矩形节点通过一条箭头连接:

# shapes.json — 两个形状节点
cat > /tmp/minimal_shapes.json << 'EOF'
[
  {"type":"composite_shape","x":100,"y":100,"width":160,"height":40,
   "composite_shape":{"type":"round_rect"},
   "text":{"text":"服务 A","font_size":14,"font_weight":"regular","horizontal_align":"center","vertical_align":"mid"},
   "style":{"fill_color":"#3399ff","fill_opacity":100,"border_style":"none"},
   "z_index":10},
  {"type":"composite_shape","x":400,"y":100,"width":160,"height":40,
   "composite_shape":{"type":"round_rect"},
   "text":{"text":"服务 B","font_size":14,"font_weight":"regular","horizontal_align":"center","vertical_align":"mid"},
   "style":{"fill_color":"#509863","fill_opacity":100,"border_style":"none"},
   "z_index":10}
]
EOF
feishu-cli board create-notes $BOARD_ID /tmp/minimal_shapes.json -o json
# → 返回 node_ids: ["o1:1", "o1:2"]

# connector.json — 一条从服务 A 指向服务 B 的连线
cat > /tmp/minimal_connector.json << 'EOF'
[
  {"type":"connector","width":1,"height":1,"z_index":50,
   "connector":{"shape":"polyline",
     "start":{"arrow_style":"none","attached_object":{"id":"o1:1","position":{"x":1,"y":0.5},"snap_to":"right"}},
     "end":{"arrow_style":"triangle_arrow","attached_object":{"id":"o1:2","position":{"x":0,"y":0.5},"snap_to":"left"}}},
   "style":{"border_color":"#646a73","border_opacity":100,"border_style":"solid","border_width":"narrow"}}
]
EOF
feishu-cli board create-notes $BOARD_ID /tmp/minimal_connector.json -o json

这就是 create-notes 的基本模式:形状定义位置和样式 → 连接线通过 ID 引用形状。下面是各字段的详细说明。

节点 JSON 格式

形状节点(composite_shape)

最常用的节点类型,支持矩形、圆角矩形等:

{
  "type": "composite_shape",
  "x": 100, "y": 100, "width": 200, "height": 50,
  "composite_shape": {"type": "round_rect"},
  "text": {
    "text": "节点文本",
    "font_size": 14,
    "font_weight": "regular",
    "horizontal_align": "center",
    "vertical_align": "mid"
  },
  "style": {
    "fill_color": "#8569cb",
    "fill_opacity": 100,
    "border_style": "none"
  },
  "z_index": 10
}

注意:多余字段会导致 2890002 invalid arg 错误,保持最小格式。

连接线(connector)

连接两个已创建的形状节点:

{
  "type": "connector",
  "width": 1, "height": 1, "z_index": 50,
  "connector": {
    "shape": "polyline",
    "start": {
      "arrow_style": "none",
      "attached_object": {
        "id": "",
        "position": {"x": 1, "y": 0.5},
        "snap_to": "right"
      }
    },
    "end": {
      "arrow_style": "triangle_arrow",
      "attached_object": {
        "id": "",
        "position": {"x": 0, "y": 0.5},
        "snap_to": "left"
      }
    }
  },
  "style": {
    "border_color": "#646a73",
    "border_opacity": 100,
    "border_style": "solid",
    "border_width": "narrow"
  }
}

连接方向速查

方向 start position start snap_to end position end snap_to
→ 左到右 {x:1, y:0.5} right {x:0, y:0.5} left
↓ 上到下 {x:0.5, y:1} bottom {x:0.5, y:0} top
← 右到左 {x:0, y:0.5} left {x:1, y:0.5} right
↑ 下到上 {x:0.5, y:0} top {x:0.5, y:1} bottom

position 是归一化坐标(0-1),表示节点边缘上的连接点位置。一个节点连多条线时,调整 position 避免重叠(如扇出:x:0.25、x:0.5、x:0.75)。

配色方案

为不同实体类型使用不同颜色,让图表一目了然:

用途 填充色 边框色 适用对象
强调/标题 #8569cb — 核心服务、标题栏
紫色辅助 #eae2fe #8569cb API、中间层
绿色正向 #509863 — 成功、输出、完成
绿色辅助 #d5e8d4 #509863 处理步骤
蓝色服务 #3399ff — 主服务、入口
蓝色辅助 #cce5ff #3399ff 子服务、组件
橙色并发 #ffc285 — 并发处理、Worker
橙色辅助 #fff0e3 #ffc285 并发子任务
红色告警 #ef4444 — 错误、降级、告警
红色辅助 #ffe0e0 #ef4444 容错处理
灰色输入 #f5f5f5 #616161 用户、外部输入
连接线 — #646a73 普通连线

z_index 与透明度规则

z_index 用途 fill_opacity
0-1 背景色带(分区底色) ≤25%
2-3 次级区域 ≤60%
10 常规形状节点 100%
50 连接线 border_opacity=100

背景色带 fill_opacity 必须 ≤60%,否则遮挡上层节点。

布局设计建议

绘制复杂图表时的布局规划方法:

  1. 确定画布尺寸 — 宽 800px 左右,高度按行数估算(每行 ~80px 间距)
  2. 按行分区 — 标题行、输入行、处理行、输出行,每行 y 坐标递增
  3. 对齐网格 — 同层节点 y 坐标相同,节点间 x 间距 ≥30px
  4. 背景色带 — 用低透明度矩形作为分区视觉标记(z_index=0)
  5. 先画再连 — 所有形状一个批次创建,拿到 ID 后再创建连接线

传参方式

# 从 JSON 文件(推荐,复杂图表)
feishu-cli board create-notes  nodes.json -o json

# 内联 JSON(简单场景)
feishu-cli board create-notes  '' --source-type content -o json

Mermaid / PlantUML 图表导入

将 Mermaid 或 PlantUML 代码自动渲染为飞书画板(服务端排版):

# 从内容导入 Mermaid
feishu-cli board import  
  --source-type content 
  -c "graph TD; A-->B-->C" 
  --syntax mermaid

# 从文件导入 PlantUML
feishu-cli board import  diagram.puml --syntax plantuml

# 指定图表类型(通常 auto 即可)
feishu-cli board import  diagram.mmd --syntax mermaid --diagram-type 6

支持的 Mermaid 类型(8 种,全部验证通过)

类型 声明 diagram-type
流程图 flowchart TD 6
时序图 sequenceDiagram 2
类图 classDiagram 4
状态图 stateDiagram-v2 0 (auto)
ER 图 erDiagram 5
甘特图 gantt 0 (auto)
饼图 pie 0 (auto)
思维导图 mindmap 1

Mermaid 限制

  • 禁止花括号 {text}(被识别为菱形节点)
  • 禁止 par...and...end(飞书不支持)
  • 参与者建议 ≤8(过多会渲染失败)
  • 复杂图表失败时会降级为代码块

其他画板命令

# 下载画板为 PNG 图片
feishu-cli board image  output.png

# 获取画板所有节点(JSON)
feishu-cli board nodes 

# 在文档中添加空画板
feishu-cli doc add-board  -o json

复制/修改画板(Redraw 模式)

画板 API 不支持修改或删除已有节点,修改需要重建:

  1. board nodes 导出原始节点
  2. 清洗数据 — 移除只读字段(id、locked、children、text_color_type、fill_color_type、border_color_type、start_object/end_object)
  3. 分离形状和连接线
  4. 新画板中先创建形状 → 映射旧 ID 到新 ID → 再创建连接线

详细的清洗字段列表和 Redraw 流程见 references/node-api.md。

权限要求

权限 说明
board:whiteboard 画板读写
docx:document 文档中添加画板

错误排障

错误码速查

错误码 含义 常见原因
2890001 invalid format JSON 格式错误
2890002 invalid arg 包含未公开字段(如 sticky_note 类型)或格式不对
2890003 record missing whiteboard_id 不存在
2890006 rate limited 超过 50 req/s

排障指引

2890002 invalid arg(最常见):

JSON 中包含了 API 不支持的字段。只使用以下安全字段:

  • composite_shape 节点:type, x, y, width, height, composite_shape, text, style, z_index
  • connector 节点:type, width, height, z_index, connector, style
  • text 对象:text, font_size, font_weight, horizontal_align, vertical_align
  • style 对象:fill_color, fill_opacity, border_style, border_color, border_width, border_opacity

排查步骤:逐步删减 JSON 字段,定位导致错误的多余字段。常见陷阱包括 id、locked、children、text_color_type 等只读字段。

画板创建失败:

  • 检查应用是否已开通 board:whiteboard 权限
  • 确认 whiteboard_id 来自 doc add-board 的返回值,而非 document_id
  • 运行 feishu-cli auth status 确认 Token 有效

Mermaid 导入降级为代码块:

  • 飞书服务端解析失败时会自动降级,属于预期行为
  • 使用 --verbose 查看具体的服务端错误信息
  • 常见原因:花括号 {text}、par...and...end 语法、参与者过多(>8)
  • 解决方案:简化图表语法,或拆分为多个小图表

完整示例:绘制简单架构图

# 1. 创建文档和画板
DOC_ID=$(feishu-cli doc create --title "架构图" -o json | python3 -c "import sys,json;print(json.load(sys.stdin)['document_id'])")
BOARD_ID=$(feishu-cli doc add-board $DOC_ID -o json | python3 -c "import sys,json;print(json.load(sys.stdin)['whiteboard_id'])")

# 2. 创建形状节点
cat > /tmp/shapes.json << 'EOF'
[
  {"type":"composite_shape","x":50,"y":50,"width":150,"height":40,
   "composite_shape":{"type":"round_rect"},
   "text":{"text":"客户端","font_size":14,"font_weight":"regular","horizontal_align":"center","vertical_align":"mid"},
   "style":{"fill_color":"#f5f5f5","fill_opacity":100,"border_style":"solid","border_color":"#616161","border_width":"narrow"},
   "z_index":10},
  {"type":"composite_shape","x":300,"y":50,"width":150,"height":40,
   "composite_shape":{"type":"round_rect"},
   "text":{"text":"API 网关","font_size":14,"font_weight":"bold","horizontal_align":"center","vertical_align":"mid"},
   "style":{"fill_color":"#3399ff","fill_opacity":100,"border_style":"none"},
   "z_index":10},
  {"type":"composite_shape","x":550,"y":50,"width":150,"height":40,
   "composite_shape":{"type":"round_rect"},
   "text":{"text":"数据库","font_size":14,"font_weight":"regular","horizontal_align":"center","vertical_align":"mid"},
   "style":{"fill_color":"#509863","fill_opacity":100,"border_style":"none"},
   "z_index":10}
]
EOF
feishu-cli board create-notes $BOARD_ID /tmp/shapes.json -o json
# → 返回 node_ids: ["o1:1", "o1:2", "o1:3"]

# 3. 创建连接线(引用上面返回的 ID)
cat > /tmp/connectors.json << 'EOF'
[
  {"type":"connector","width":1,"height":1,"z_index":50,
   "connector":{"shape":"polyline",
     "start":{"arrow_style":"none","attached_object":{"id":"o1:1","position":{"x":1,"y":0.5},"snap_to":"right"}},
     "end":{"arrow_style":"triangle_arrow","attached_object":{"id":"o1:2","position":{"x":0,"y":0.5},"snap_to":"left"}}},
   "style":{"border_color":"#646a73","border_opacity":100,"border_style":"solid","border_width":"narrow"}},
  {"type":"connector","width":1,"height":1,"z_index":50,
   "connector":{"shape":"polyline",
     "start":{"arrow_style":"none","attached_object":{"id":"o1:2","position":{"x":1,"y":0.5},"snap_to":"right"}},
     "end":{"arrow_style":"triangle_arrow","attached_object":{"id":"o1:3","position":{"x":0,"y":0.5},"snap_to":"left"}}},
   "style":{"border_color":"#646a73","border_opacity":100,"border_style":"solid","border_width":"narrow"}}
]
EOF
feishu-cli board create-notes $BOARD_ID /tmp/connectors.json -o json

# 4. 截图验证
feishu-cli board image $BOARD_ID /tmp/architecture.png

详细 API 参考

节点类型完整字段、connector 高级参数、Redraw 清洗字段等详细信息见 references/node-api.md。

目录

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

0

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

0

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn