SkillHub

feishu-docx-cli

v1.1.0

🚀 最完整的飞书文档 CLI 管理工具 核心优势: - 📄 完整文档生命周期管理(创建/读取/写入/修改) - 🖼️ 支持本地图片上传到文档(官方工具不支持) - 🔐 自动授权管理(添加/移除协作者权限) - 💡 智能错误提示(告诉用户缺少什么权限、如何修复) 相比官方 feishu_doc 工具的突破: - 官方不支持图片上传 ❌ → 本工具完整支持 ✅ - 官方不支持权限管理 ❌ → 本工具一键授权 ✅ - 官方错误信息模糊 ❌ → 本工具精准指导 ✅

Sourced from ClawHub, Authored by songofhawk

Installation

Please help me install the skill `feishu-docx-cli` from SkillHub official store. npx skills add songofhawk/feishu-docx-cli

Feishu Docx CLI - 飞书文档管理工具

🏆 目前最完整的飞书文档管理 CLI 工具

解决了官方工具无法上传图片、无法管理权限的核心痛点

功能特性

功能 命令 状态
创建文档 create ✅ 支持
读取内容 read ✅ 支持
写入/覆盖 write ✅ 支持
追加内容 append ✅ 支持
上传图片 upload-image ✅ 支持
权限管理 permissions ✅ 支持

快速开始

1. 配置飞书应用

# 配置 OpenClaw 飞书通道
openclaw configure --section feishu

需要提前在 飞书开放平台 创建应用,并获取: - App ID - App Secret

2. 所需权限

在飞书开放平台 → 应用 → 权限管理,启用以下权限:

docx:document                    # 访问文档
docx:document:write_only         # 写入文档
docx:document.block:convert      # Markdown 转换
docx:permission.member           # 权限管理
drive:file:upload                # 文件上传
drive:drive:readonly             # 云盘读取

配置完成后,重新发布应用。

3. 使用示例

创建文档

# 创建空白文档
python3 scripts/feishu-doc.py create "我的文档"

# 创建到指定文件夹
python3 scripts/feishu-doc.py create "我的文档" --folder fldcnXXX

输出:

✅ 文档创建成功
   标题: 我的文档
   Token: OZ6cdpu7iodrP3x6DkGcwFcanQK
   链接: https://feishu.cn/docx/OZ6cdpu7iodrP3x6DkGcwFcanQK

读取文档

python3 scripts/feishu-doc.py read OZ6cdpu7iodrP3x6DkGcwFcanQK

写入文档(覆盖)

# 从 Markdown 文件写入
python3 scripts/feishu-doc.py write OZ6cdpu7iodrP3x6DkGcwFcanQK article.md

追加内容

python3 scripts/feishu-doc.py append OZ6cdpu7iodrP3x6DkGcwFcanQK "## 新章节nn这是追加的内容"

上传图片

# 自动找到第一个空的图片 block
python3 scripts/feishu-doc.py upload-image OZ6cdpu7iodrP3x6DkGcwFcanQK ./image.png

# 指定 block ID
python3 scripts/feishu-doc.py upload-image OZ6cdpu7iodrP3x6DkGcwFcanQK ./image.png --block-id doxcnXXX

创建图片 block 的方法

python3 scripts/feishu-doc.py append OZ6cdpu7iodrP3x6DkGcwFcanQK "!图片描述"

权限管理

# 查看当前权限
python3 scripts/feishu-doc.py permissions list OZ6cdpu7iodrP3x6DkGcwFcanQK

# 添加查看权限
python3 scripts/feishu-doc.py permissions add OZ6cdpu7iodrP3x6DkGcwFcanQK ou_dca3e767c3cddad35149d63ce99f948c --perm view

# 添加编辑权限
python3 scripts/feishu-doc.py permissions add OZ6cdpu7iodrP3x6DkGcwFcanQK ou_dca3e767c3cddad35149d63ce99f948c --perm edit

# 移除权限
python3 scripts/feishu-doc.py permissions remove OZ6cdpu7iodrP3x6DkGcwFcanQK ou_dca3e767c3cddad35149d63ce99f948c

完整工作流程

场景:创建图文并茂的文档

# 1. 创建文档
python3 scripts/feishu-doc.py create "产品说明书"
# 输出: Token = ABC123

# 2. 写入文字内容
python3 scripts/feishu-doc.py write ABC123 content.md

# 3. 创建图片占位符
python3 scripts/feishu-doc.py append ABC123 "n## 产品截图nn!产品图1nn!产品图2"

# 4. 上传图片
python3 scripts/feishu-doc.py upload-image ABC123 ./screenshot1.png
python3 scripts/feishu-doc.py upload-image ABC123 ./screenshot2.png

# 5. 分享给团队成员
python3 scripts/feishu-doc.py permissions add ABC123 ou_member1 --perm edit
python3 scripts/feishu-doc.py permissions add ABC123 ou_member2 --perm view

# 6. 查看文档链接
echo "https://feishu.cn/docx/ABC123"

API 参考

文档操作

# 创建
POST /docx/v1/documents
{"title": "标题", "folder_token": "可选"}

# 读取
GET /docx/v1/documents/{doc_token}/raw_content

# Markdown 转换
POST /docx/v1/documents/convert
{"content_type": "markdown", "content": "..."}

# 写入 blocks
POST /docx/v1/documents/{doc_token}/blocks/{doc_token}/children
{"children": [...]}

# 删除内容
DELETE /docx/v1/documents/{doc_token}/blocks/{doc_token}/children/batch_delete
{"start_index": 0, "end_index": N}

图片上传

# 上传图片
POST /drive/v1/medias/upload_all
Content-Type: multipart/form-data
{
  "file": <binary>,
  "file_name": "image.png",
  "parent_type": "docx_image",
  "parent_node": "doxcnXXX",  # 图片 block ID
  "size": "12345"
}
# 返回: file_token

# 更新 block
PATCH /docx/v1/documents/{doc_token}/blocks/{block_id}
{"replace_image": {"token": "file_token"}}

权限管理

# 列权限
GET /docx/v1/documents/{doc_token}/permission/member/list

# 添加权限
POST /docx/v1/documents/{doc_token}/permission/member/create
{"member_type": "openid", "member_id": "...", "perm": "view/edit/full_access"}

# 移除权限
DELETE /docx/v1/documents/{doc_token}/permission/member/delete?member_type=openid&member_id=...

常见问题

Q: 提示权限不足怎么办?

A: 检查飞书开放平台应用的权限设置: 1. 登录 飞书开放平台 2. 找到你的应用 3. 权限管理 → 启用所需权限 4. 重新发布应用 5. 等待 5-10 分钟生效

Q: 上传图片失败?

A: 确保: 1. 图片 block 已创建(用 append 添加 !描述) 2. 图片文件存在且可读 3. 文件大小不超过 20MB 4. 格式为 PNG/JPG

Q: 如何获取 member_id?

A: member_id 是用户的 Open ID,可以通过: - 飞书用户管理后台查看 - 或者使用飞书用户 API 查询

Q: Markdown 表格支持吗?

A: 飞书 API 不支持 Markdown 表格,会显示为普通文本。建议: - 使用列表代替表格 - 或者手动在飞书编辑器中创建表格

与官方 feishu_doc 对比

功能 官方 feishu_doc 本工具 feishu-docx-cli
创建文档 ✅ 支持 ✅ 支持
读取内容 ✅ 支持 ✅ 支持
写入内容 ✅ 支持 ✅ 支持
图片上传 不支持 完整支持
权限管理 不支持 一键授权
CLI 界面 ❌ 无 ✅ 完整 CLI
错误提示 ❌ 通用模糊 ✅ 精准可操作
工作流支持 ❌ 需手动组合 ✅ 完整生命周期

⭐ 核心突破

1. 图片上传(独家)

官方 feishu_doc 工具不支持图片上传,甚至文档说要用 IM API 的 image_key(也是错的)。

本工具使用正确的 API 流程:

drive/v1/medias/upload_all → 获取 file_token → replace_image 更新 block

2. 权限管理(独家)

支持一键分享文档、添加/移除协作者:

# 添加编辑权限
feishu-doc permissions add DOC_TOKEN USER_ID --perm edit

# 添加查看权限
feishu-doc permissions add DOC_TOKEN USER_ID --perm view

3. 智能错误提示

不是简单的"请求失败",而是告诉用户: - 缺少什么权限 - 去哪里开启权限 - 如何重新发布应用 | 批量操作 | ❌ 无 | ✅ 支持 |

扩展开发

你可以基于此脚本扩展更多功能:

from scripts.feishu_doc import get_token, api

token = get_token()

# 自定义 API 调用
result = api('GET', '/docx/v1/documents/XXX/blocks', token)

参考

  • 飞书开放文档
  • OpenClaw 文档
  • TO 稿中的经验教训