SuperAPI AI 工具集

feishu-doc

办公与效率

查看项目

更新于 10-15 08:49

技能介绍

飞书文档助手通过 feishu_doc.py 统一管理飞书文档的读取、写入、编辑和知识库操作。

前置条件

  • Python >= 3.11(feishu-docx 要求)。推荐使用 uv run --python 3.12 或确保系统 Python 版本满足要求。
  • 安装依赖:pip install feishu-docx markdown2feishu httpx pyyaml
  • 配置凭证(二选一):设置环境变量 FEISHU_APP_ID 和 FEISHU_APP_SECRET;或编辑 skills/feishu-doc/config.yaml。
  • 飞书应用需开通权限:docx:document(文档读写)、wiki:wiki(知识库)、im:message(群消息)。

环境变量对照表:

环境变量 config.yaml 键 说明
FEISHU_APP_ID app_id 飞书应用 ID(必需)
FEISHU_APP_SECRET app_secret 飞书应用密钥(必需)
FEISHU_WIKI_SPACE_ID wiki_space_id 知识库 space_id(知识库写入必需,可通过 wiki-spaces 命令查看)
FEISHU_DEFAULT_PARENT_NODE default_parent_node 默认父节点 token
FEISHU_NOTIFY_CHAT_ID notify_chat_id 群消息通知的 chat_id

环境变量优先于 config.yaml 中的配置。

验证连通性:

python skills/feishu-doc/feishu_doc.py test

触发条件

以下情况使用此 Skill:

  • 用户发送了飞书链接(feishu.cn/docx/、feishu.cn/wiki/、feishu.cn/sheets/)
  • 用户说「写到飞书」「同步到知识库」「看一下飞书文档」「发到群里」
  • 用户要求导出、编辑、对比飞书文档内容

读取文档

当用户想查看飞书文档内容时:

python skills/feishu-doc/feishu_doc.py read <URL> # 读取文档,输出 Markdown python skills/feishu-doc/feishu_doc.py read <URL> --with-block-ids # 带 block_id(编辑前必用)

支持所有飞书文档 URL 格式:/docx/、/wiki/、/sheets/、/base/。

当用户想了解知识库结构时:

python skills/feishu-doc/feishu_doc.py wiki-tree <space_id 或 wiki_URL> # 树形结构 python skills/feishu-doc/feishu_doc.py export-wiki <space_id 或 wiki_URL> -o ./output # 批量导出

创建文档

当用户说「写一篇飞书文档」「把这个同步到飞书」时:

python skills/feishu-doc/feishu_doc.py create "标题" -c "Markdown 内容" # 从内容创建 python skills/feishu-doc/feishu_doc.py create "标题" -f ./report.md # 从文件创建 python skills/feishu-doc/feishu_doc.py create "标题" -f ./report.md --wiki <parent_node_token> # 创建到知识库

创建到知识库时,如果权限不足会自动降级为云文档,并提示手动移入。

编辑已有文档

当用户说「改一下这个文档」「把第X段更新成…」时:

第一步 — 读出文档结构(找到要改的块):

python skills/feishu-doc/feishu_doc.py list-blocks <URL>

输出每个块的 block_id、类型和内容摘要。

第二步 — 精确操作:

python skills/feishu-doc/feishu_doc.py update-block <URL> <block_id> "新内容" # 改一个块 python skills/feishu-doc/feishu_doc.py delete-block <URL> <block_id> # 删一个块 python skills/feishu-doc/feishu_doc.py append <URL> -c "追加内容" # 末尾追加 python skills/feishu-doc/feishu_doc.py overwrite <URL> -f ./new.md # 清空重写

知识库管理

python skills/feishu-doc/feishu_doc.py wiki-spaces # 列出可访问的知识库(发现 space_id) python skills/feishu-doc/feishu_doc.py wiki-tree <URL> # 查看知识库结构 python skills/feishu-doc/feishu_doc.py wiki-move <文档URL> <目标节点token> # 云文档移入知识库 python skills/feishu-doc/feishu_doc.py wiki-move <文档URL> <目标节点token> --title "X" # 移入并设置标题 python skills/feishu-doc/feishu_doc.py wiki-sync <md文件> --parent <节点> # 同步到知识库(幂等)

权限管理

python skills/feishu-doc/feishu_doc.py permission <URL> editable # 组织内可编辑 python skills/feishu-doc/feishu_doc.py permission <URL> viewable # 组织内可查看 python skills/feishu-doc/feishu_doc.py permission <URL> public # 互联网可查看 python skills/feishu-doc/feishu_doc.py permission <URL> closed # 关闭链接分享

群消息

当用户说「通知群里」「发到飞书群」时:

python skills/feishu-doc/feishu_doc.py notify "标题" "Markdown内容" # 发卡片消息 python skills/feishu-doc/feishu_doc.py send "纯文本消息" # 发文本 python skills/feishu-doc/feishu_doc.py read-chat [N] # 读最近 N 条群消息

典型工作流

「帮我看看知识库里有什么」

  1. wiki-tree 列出结构
  2. 用 read 读取感兴趣的文档
  3. 总结返回

「把这份报告写到知识库运营相关下面」

  1. 整理内容为 Markdown,写入临时文件
  2. create --wiki <parent_node> 创建
  3. 如果权限不足,自动降级 create(云文档)→ 提示用 wiki-move 迁入
  4. notify 通知群聊

「这个文档第二段数据错了,改成 XXX」

  1. list-blocks <URL> 列出所有块和 block_id
  2. 找到目标块
  3. update-block <URL> <block_id> "新内容" 精确更新

「把这篇微信文章转成飞书文档」

  1. import-wechat <微信URL> 抓取转换
  2. 返回飞书文档链接

注意事项

  • 知识库写入需要 Bot 被添加为空间「可编辑」成员;公开知识库需人工添加
  • wiki-move 优先使用 tenant token(Bot 权限),失败后自动尝试 OAuth user token
  • 飞书 API 有限流,工具内置 429 自动重试(指数退避)
  • wiki-sync 有幂等保护,同名文档不会重复创建
  • 表格超过 9 行会自动拆分成多个连续表格(飞书 API 限制)
  • 卡片消息的内容支持飞书 Markdown(粗体、链接、\n 换行)