skills/feishu-cli-write/SKILL.md
向飞书文档写入内容、创建新文档、新建空白文档。支持 doc import 从 Markdown 创建、 doc content-update 精准追加/覆盖/替换/插入/删除,doc add/update/delete 低层块操作, 以及图片/文件插入。当用户请求创建文档、写文档、更新文档、替换章节、插入章节、 删除章节、追加内容、覆盖文档、插入图片或文件时使用。
npx skillsauth add riba2534/feishu-cli feishu-cli-writeInstall 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.
本技能负责创建和编辑飞书 docx。Markdown 文件导入创建文档也可直接用 feishu-cli-import;只读/导出走 feishu-cli-read / feishu-cli-export。
feishu-cli doc create --title "文档标题" --output json
创建后如需交付给用户,先解析 owner:
FEISHU_OWNER_EMAIL,其次读取 ~/.feishu-cli/config.yaml 的 owner_email。full_access:
feishu-cli perm add <document_id> --doc-type docx --member-type email --member-id <owner_email> --perm full_access --notification
FEISHU_TRANSFER_OWNERSHIP=true 或配置 transfer_ownership: true 时转移所有权:
feishu-cli perm transfer-owner <document_id> --doc-type docx --member-type email --member-id <owner_email> --notification
FEISHU_OWNER_EMAIL。feishu-cli doc import /tmp/doc.md --title "标题" --upload-images
写入临时 Markdown 后先做编码检查:
python3 -c "d=open('/tmp/doc.md','rb').read(); assert b'\xef\xbf\xbd' not in d; d.decode('utf-8')"
doc import 已在 CLI 内校验非法 UTF-8 和 U+FFFD,但生成阶段仍建议先检查,避免把乱码写入云文档。
不要把 doc import --document-id 当成更新命令;它会把 Markdown 转成新块追加到文档末尾。已有文档编辑优先用 doc content-update。
| 用户意图 | 推荐模式 |
|---|---|
| 在末尾新增内容 | append |
| 完全重写文档 | overwrite |
| 替换某个章节 | replace_range |
| 全文查找替换 | replace_all |
| 在某个章节前/后插入 | insert_before / insert_after |
| 删除某个章节 | delete_range |
常用示例:
# 按标题替换章节
feishu-cli doc content-update <document_id> --mode replace_range \
--selection-by-title "## 旧章节" \
--markdown-file /tmp/new-section.md
# 在章节后插入
feishu-cli doc content-update <document_id> --mode insert_after \
--selection-by-title "## 目标章节" \
--markdown "## 新增章节\n\n内容"
# 追加到末尾
feishu-cli doc content-update <document_id> --mode append \
--markdown-file /tmp/append.md
# 完全覆盖
feishu-cli doc content-update <document_id> --mode overwrite \
--markdown-file /tmp/full.md
# 控制 Markdown 表格列宽(默认按内容启发式自动计算)
feishu-cli doc content-update <document_id> --mode append \
--markdown-file /tmp/with-table.md \
--table-column-width 80,200,*,120
关键规则:用户说“修改/替换/更新某段”时用 replace_range 或 replace_all,不要 append 导致重复。
--table-column-width(content-update / add 通用,默认 auto):auto 按内容启发式 | fixed 固定宽度 | N1,N2,... 像素列表(* 表示该列走 auto)。仅 Markdown 内容类型生效;也可在表格上方写注释 <!-- feishu-colwidth: 80,200,*,30% --> 覆盖(注释优先级高于 flag)。
doc import 默认上传图片;doc add / content-update 使用 --upload-images 上传 Markdown 中的本地/网络图片并回填 Image Block。
feishu-cli doc content-update <document_id> --mode append \
--markdown-file /tmp/with-image.md \
--upload-images
单独插入图片或文件用 doc media-insert:
feishu-cli doc media-insert <document_id> --file /path/to/image.png --type image --align center --caption "说明"
feishu-cli doc media-insert <document_id> --file /path/to/report.pdf --type file
# doc add:默认 --content-type json;--source-type file/content;可指定父块和插入位置
feishu-cli doc add <document_id> content.md --content-type markdown --upload-images
feishu-cli doc add <document_id> --content '[{"block_type":2,...}]' --source-type content
feishu-cli doc add <document_id> doc.md --content-type markdown --block-id <parent_block_id> --index 0
# 带表格的 Markdown 可指定列宽(仅 markdown 内容类型生效)
feishu-cli doc add <document_id> table.md --content-type markdown --table-column-width auto
feishu-cli doc update <document_id> <block_id> --content-file update.json
# doc delete:必须指定父块 ID + 索引范围(左闭右开),或用 --all 删全部子块;--force 跳过确认
feishu-cli doc delete <document_id> <parent_block_id> --start 0 --end 3
feishu-cli doc delete <document_id> <parent_block_id> --all --force
# doc batch-update:默认 --source-type file;可传 --client-token(UUIDv4 幂等)和
# --document-revision-id(乐观锁,默认 -1=最新;指定具体版本时如版本不匹配会失败)
feishu-cli doc batch-update <document_id> updates.json --source-type file
feishu-cli doc batch-update <document_id> updates.json \
--client-token "$(uuidgen)" \
--document-revision-id -1
低层 JSON 需要熟悉飞书 Block 结构;普通章节编辑优先用 content-update。
doc add-board 添加画板块向文档插入一个空画板块(block_type=43),返回 block_id 和 whiteboard_id,后续可用 feishu-cli board 系列命令操作画板内容。
| flag | 说明 | 默认 |
|---|---|---|
| --parent-id | 父块 ID | 空(文档根节点) |
| --index | 插入位置索引 | -1(末尾) |
| --output, -o | 输出格式 (json) | 文本 |
# 末尾添加,JSON 输出便于脚本提取 whiteboard_id
feishu-cli doc add-board <document_id> -o json
# 指定父块和位置
feishu-cli doc add-board <document_id> --parent-id <block_id> --index 0
doc add-callout 添加高亮块向文档插入一个 Callout 高亮块(block_type=19),并自动写入文本内容(API 会自动生成空子块,CLI 已处理为直接更新而非额外创建)。
| --callout-type | 背景色 | 视觉含义 |
|---|---|---|
| info(默认) | 蓝色(6) | 信息提示,灯泡图标 |
| warning | 黄色(4) | 警告提示 |
| error | 红色(2) | 错误提示 |
| success | 绿色(5) | 成功提示 |
注:CLI 当前仅暴露 4 种 type;如需 CAUTION(橙=3)/IMPORTANT(紫=7)等其他 6 色 Callout,请用 Markdown
<callout type="CAUTION">...</callout>走doc import/content-update。
| flag | 说明 | 默认 |
|---|---|---|
| --callout-type | 类型 (info/warning/error/success) | info |
| --icon | 自定义图标(emoji shortcode,如 bulb fire) | 空 |
| --parent-id | 父块 ID | 空(文档根节点) |
| --index | 插入位置索引 | -1(末尾) |
| --output, -o | 输出格式 (json) | 文本 |
# 默认 info 蓝色
feishu-cli doc add-callout <document_id> "这是一条提示信息"
# 警告 + 自定义图标
feishu-cli doc add-callout <document_id> "请注意" --callout-type warning --icon fire
Markdown 表格导入 docx 时:
insert_table_row 追加到同一 block。feishu-cli sheet import-md report.md --title "报表"。文档内已有表格结构操作:
feishu-cli doc table insert-row DOC_ID TABLE_BLOCK_ID --index 1 --count 2
feishu-cli doc table delete-rows DOC_ID TABLE_BLOCK_ID --start 1 --end 3
feishu-cli doc table merge-cells DOC_ID TABLE_BLOCK_ID --row-start 0 --row-end 2 --col-start 0 --col-end 3
# 取消合并:指定合并区域内任一单元格的行/列索引
feishu-cli doc table unmerge-cells DOC_ID TABLE_BLOCK_ID --row 0 --col 0
doc import / content-update 支持常见 Markdown,以及导出端生成的 HTML 扩展标签:
<mention-user id="ou_xxx"/>
<mention-doc token="doc_token_xxx" type="docx">标题</mention-doc>
<callout type="NOTE">内容</callout>
<grid cols="2"><column>左</column><column>右</column></grid>
Mermaid / PlantUML 会在导入时转为飞书画板;语法限制参考 ../feishu-cli-import/references/doc-guide.md。
overwrite。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
在飞书云文档里画**会动的图 / 可交互图表 / 数据大屏**——妙笔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 节点会被服务端栅格化成静态图、不会动。
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 专注高级能力。 当用户请求"筛选视图"、"筛选条件"、"加下拉框"、"数据验证"、"列下拉"、"浮动图片"、"插入图片"、"批量样式"时使用。