skills/feishu-cli-htmlbox/SKILL.md
在飞书云文档里画**会动的图 / 可交互图表 / 数据大屏**——妙笔BOX 是飞书文档里唯一能真实跑 CSS/JS 的载体 (iframe 沙箱)。能画:ECharts 全家桶(折线/柱/饼/雷达/散点/热力/桑基/漏斗/仪表/K线/箱线/平行坐标/旭日/treemap/ 力导向关系图/时序/甘特)、真实地图与经纬度飞线、echarts-gl 3D(map3D/3D柱/3D散点/3D曲面)、Three.js 真 3D 场景、 词云、水球、纯 CSS 动画、Canvas 粒子、SVG 矢量动画、KPI 滚动大屏。 当用户要"在飞书文档里画图/做动画/能动的图/可交互图表/数据大屏/Dashboard/折线图/柱状图/地图/飞线图/3D图/ 关系图/流程动画/ECharts/可视化",或要做**能调 AI / 读写多维表 / 持久化状态 / 拿用户身份的交互式文档小程序**, 或提到"妙笔BOX/HTML 小组件/让飞书文档里的图动起来/嵌入网页到飞书文档/window.magic"时, **必须用本技能**。注意:要"动"只能用妙笔BOX;画板(feishu-cli-board)的 SVG 节点会被服务端栅格化成静态图、不会动。
npx skillsauth add riba2534/feishu-cli feishu-cli-htmlboxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
你拿到「在飞书文档里画一个 X 图 / 做个能动的可视化 / 做数据大屏」这类任务时用本技能。
妙笔BOX 是飞书文档里唯一能真实执行 CSS/JS 的载体(iframe 沙箱),所以一切动画、ECharts、Three.js、Canvas
都能动。流程就三件事:照配方写一页自包含 HTML → 本地浏览器验证它真渲染 → 用 doc htmlbox 落库。
要"动"只能用妙笔BOX。画板(
feishu-cli-board)的 SVG 节点会被飞书服务端栅格化成静态图、永远不动; 代价是妙笔BOX 是整体 iframe,内部元素不能像画板节点那样在飞书里单独点选编辑(鱼与熊掌不可兼得)。
先在下表对号入座,再去对应 reference 抄骨架 + 配方。不要从零手搓 ECharts option——配方都验证过、能直接 create。
| 你要画的图 | 引擎 / 方案 | 配方位置 |
|---|---|---|
| 折线 / 面积 / 柱状 / 堆叠柱 / 柱状竞赛 BarRace / 玫瑰饼 / 雷达 | ECharts(换 series.type) | references/gallery.md › 数据对比 |
| 散点气泡 / 热力 / 日历热力 / 箱线 / K线蜡烛 / 平行坐标 | ECharts | references/gallery.md › 分布统计 |
| 饼 / 漏斗 / 桑基 Sankey / 主题河流 / 仪表盘 gauge / 水球 liquidFill | ECharts(+扩展) | references/gallery.md › 构成流向 |
| 力导向关系图(可拖拽)/ 组织树 tree / 旭日 sunburst / 矩形树图 treemap | ECharts | references/gallery.md › 关系层级 |
| 时序 / 状态机 / 甘特 / CI流水线 / 看板流动 | ECharts custom / CSS | references/gallery.md › 流程时序 |
| 词云 wordCloud | echarts-wordcloud | references/gallery.md › 构成流向 |
| 纯 CSS 动画(旋转/脉动/进度条/打字机/变色) | CSS @keyframes(最稳,不依赖外网) | references/gallery.md › 创意动画 |
| 粒子流 / 星空 / 自绘动画 | Canvas + requestAnimationFrame | references/gallery.md › 创意动画 |
| 矢量路径自绘 / morphing / 维恩图 | 内联 <svg> + SMIL/CSS | references/gallery.md › 创意动画 |
| KPI 数据大屏(数字滚动 + 迷你趋势) | HTML/CSS/JS | references/gallery.md › 创意动画 |
| 真实地图着色 choropleth / 经纬度 geo 飞线 | ECharts geo + registerMap | references/geo-3d.md |
| 3D 立体地图 map3D / 3D 柱 / 3D 散点 / 3D 曲面 | echarts-gl | references/geo-3d.md |
| 真 3D 场景(旋转星球 / GPU 粒子 / 几何体) | Three.js(WebGL) | references/geo-3d.md |
不确定用哪个?默认 ECharts(覆盖绝大多数统计/关系图);只有要真实地理、可旋转 3D、或 ECharts 给不出的自由视觉,才上 geo-3d / Canvas / SVG。
妙笔BOX 的 iframe 里,飞书注入了一个 window.magic 运行时——OpenAPI 建的块也有(已实测,注入认 component_type_id 不认来源)。所以它不只是画图,还能做会读数据、能交互、有状态的文档小程序。当任务需要下面任一项,看 references/window-magic.md:
| 需求 | 能力 |
|---|---|
| 当前用户身份(名字 / open_id,用于个性化或写人员字段) | window.magic.user |
| 读当前文档全文 / 元信息(喂 AI、统计、生成目录) | getDocAsMarkdown / getPageMeta |
| 持久化状态(计数器 / 抽奖 / 祝福墙 / 已读列表) | window.magic.redis / store(禁 localStorage,见 pitfalls) |
| 图表接真实数据源(活数据 Dashboard) | base_records_search 拉多维表 → ECharts |
| 文档内调 AI(摘要 / 问答 / 文案,无需自带 key) | window.magic.ai(豆包) |
⚠ window.magic 只在飞书文档端注入,本地 file:// 预览必为 undefined——所有用法都要判存兜底,否则本地白屏。
/tmp/x.html。从 gallery.md / geo-3d.md 取对应骨架 + 配方;统一深色背景、容器固定高度(如 #chart{height:360px})、width:100%、监听 resize 调 chart.resize()。scripts/verify.sh /tmp/x.html # 地图/CDN 重的加等待秒数:scripts/verify.sh /tmp/x.html 5
退出码 0 才算初步通过;但「画对没画对、在不在动」机器判不了,务必再肉眼看它打印的那张截图。排查白屏见 references/pitfalls.md。feishu-cli doc htmlbox create <doc_id> --html-file /tmp/x.html。feishu-cli doc htmlbox update <doc_id> <block_id> --html-file /tmp/x2.html(block_id 会变,后续用返回的 new_block_id)。| 操作 | 命令 |
|---|---|
| 插入 | feishu-cli doc htmlbox create <doc_id> --html-file x.html(--index 控位置,默认末尾) |
| 替换 | feishu-cli doc htmlbox update <doc_id> <block_id> --html-file x2.html(返回 new_block_id) |
| 读回 | feishu-cli doc htmlbox get <doc_id> <block_id> --raw > cur.html |
| 删除 | feishu-cli doc htmlbox delete <doc_id> <block_id> |
输入也支持 --html '<...>' 或 --html-file -(stdin)。四个命令都支持 --format / --jq;写类 create/update/delete 另有 --dry-run 预览和 -o 写文件,get 用 --raw 出纯 HTML(get 无 --dry-run/-o)。默认 Bot 身份(操作 feishu-cli 自建文档无需登录);改他人/手建文档传 --user-access-token。
references/pitfalls.md)<script> 是异步的 → 用前轮询等库就绪(if(typeof echarts==='undefined') return setTimeout(boot,150)),每个 <script src> 加 onerror 兜底。飞书沙箱实测能联 jsdelivr。type:'map' 空白;先 fetch GeoJSON(借 [email protected]/map/json/china.json)再 registerMap。visualMap 对它无效,给每个 data 项显式 itemStyle.color。create 之间 sleep 0.5s,否则触发飞书写限流 99991400;多图配标题用 doc content-update --mode append --markdown "## 标题" 与 create 交替追加。文档要交给用户时:按 feishu-cli-write 的 owner 授权流程(perm add full_access + 视配置 perm transfer-owner),并按全局规则发一张飞书卡片通知。
scripts/verify.sh <html> [等待秒数] — 落库前验证脚本(工作流第 2 步用它):全新 session 打开 → 抓 page error/console → 数 canvas/svg → 截图 → 给通过判定;退出码 0 才算初步通过,仍须肉眼看截图references/gallery.md — 主力配方库:4 种通用骨架(ECharts/Canvas/Three.js/SVG-CSS)+ 按图表类型的可直接用配方references/geo-3d.md — 地图 / echarts-gl 3D / Three.js 的完整可跑模板(这几类有 CDN/registerMap/坐标系/着色坑)references/window-magic.md — 文档小程序运行时:window.magic 能力配方(用户身份 / 读文档 / 持久化 / 多维表 / AI),含判存兜底范式与活数据 Dashboard、文档内 AI 卡等组合配方references/pitfalls.md — 画图避坑与白屏排查(来自真实创建一篇 47 图大文档)references/mechanism.md — 块机制 / 身份 / update 速查(只在排查 token、组件 ID、update 行为时才需要)tools
飞书多维表格(Bitable/Base)操作。底层使用 base/v3 新 API,支持视图完整配置写入、 记录 upsert、记录批量获取、记录附件上传下载、记录修改历史、角色 CRUD + 协作者增删、 多维表格本体重命名/高级权限开关、数据聚合查询、 仪表盘 + 仪表盘块 CRUD、表单 + 表单问题 CRUD、工作流 CRUD 等。 当用户请求"创建多维表格"、"操作数据表"、"添加记录"、"查询记录"、"管理字段"、 "多维表格"、"base"、"bitable"、"数据表"、"视图排序"、"视图过滤"、"视图分组"、 "角色"、"role"、"高级权限"、"advperm"、"数据聚合"、"data query"、 "仪表盘"、"dashboard"、"表单"、"form"、"工作流"、"workflow"、"记录附件"、 "复制多维表格"时使用。 支持 --as bot|user|auto 身份切换:默认 auto(User 优先、Tenant 兜底), --as bot 用 App Token 操作多维表格,无需 auth login、永不过期, 适合 cron / 无人值守 / 脚本自动抓取多维表格内容。 凡涉及"App Token 读写 bitable"、"不登录抓多维表格"、"cron 定时同步多维表格"、 "bitable 报需要 User Token / 91403 没权限"时也应使用本技能。
tools
飞书 OpenAPI 裸调。api GET/POST/PUT/DELETE/PATCH <path> 直接调用任意飞书 OpenAPI 接口, 覆盖 feishu-cli 尚未封装的接口(对齐 lark-cli 的 api 能力)。支持 --params(query)/--data(body JSON)/--data-file(从文件读 body)/ --as auto|user|bot 身份/--dry-run 预览/-o 二进制下载/--format/--jq。 当用户请求"调用 X API"、"裸调飞书接口"、"feishu-cli 没封装的接口怎么调"、"raw api"、 "用 api 命令发请求"、"下载飞书媒体/文件 binary"时使用。 不适用:仅查 schema 不调用(用 feishu-cli schema);已有专用命令的高频场景(用对应 feishu-cli <模块>)。
tools
飞书电子表格高级能力(筛选视图 + 筛选条件 + 下拉单元格 + 浮动图片 + 批量样式)。 filter-view CRUD 管理筛选视图,filter-view condition CRUD 写筛选条件(V3 API); dropdown set/get/update/delete 管理单元格下拉框(V2 dataValidation); image get/update/media-upload/write-image 操作浮动图片与单元格写图; batch-set-style 批量设置多范围单元格样式。 基础读写(read/write/style/add-rows/add-sheet)仍在 feishu-cli 主命令 sheet/bitable, 本 skill 专注高级能力。 当用户请求"筛选视图"、"筛选条件"、"加下拉框"、"数据验证"、"列下拉"、"浮动图片"、"插入图片"、"批量样式"时使用。
tools
飞书 OpenAPI 方法本地浏览 + 通用 API 透传调用。schema `service.resource.method` 三段式查路径/参数/scope(无需联网); `feishu-cli api <method> <path>` 直接调任意端点(v1.29+,覆盖 2500+ 未封装 API)。 当用户请求"飞书有没有 XX API"、"X API 的参数是什么"、"X 方法需要什么 scope"、 "OpenAPI 方法浏览"、"看 SDK 怎么调用"、"调一个没封装的飞书 API"时使用。 不适用:查在线最新 schema(请用 OpenAPI Explorer,本地元数据可能落后于飞书开放平台)。