riba2534/feishu-cli

GitHub: riba2534/feishu-cli

飞书开放平台命令行工具,支持 Markdown 与飞书文档双向转换,并为 AI Agent 提供原生操控能力。

Stars: 631 | Forks: 74

feishu-cli Logo

feishu-cli

飞书开放平台命令行工具 — Markdown 与飞书文档双向转换,AI Agent 的飞书操控引擎。

Release Go Stars License

介绍 · 核心能力 · 快速开始 · 命令参考 · AI 技能 · 贡献

## feishu-cli 是什么 feishu-cli 是一个功能完整的飞书开放平台命令行工具。它将飞书文档、知识库、电子表格、消息、日历、任务等操作封装为简洁的命令行接口,**核心能力是 Markdown ↔ 飞书文档双向无损转换**。 除了传统的 CLI 用法,feishu-cli 还为 [Claude Code](https://claude.ai/claude-code) 等 AI 编程助手提供了 **11 个开箱即用的技能文件**,让 AI Agent 能够直接创建文档、发送消息、管理权限 — 无需任何额外配置。 ### 为什么选择 feishu-cli - **双向转换零损耗** — 支持 40+ 种块类型,Markdown 导入飞书后再导出,内容完整保留 - **图表原生渲染** — Mermaid(8 种图表类型)和 PlantUML 自动转换为飞书画板,不是截图,是可编辑的矢量图 - **大规模文档处理** — 三阶段并发管道架构,实测 10,000+ 行 / 127 个图表 / 170+ 个表格一次导入 - **AI Agent 原生** — 11 个技能文件覆盖飞书全功能,AI 助手即装即用 - **一个工具覆盖全平台** — 文档、知识库、表格、消息、日历、任务、权限、画板、评论、搜索 ## 核心能力 ### Markdown ↔ 飞书文档 将本地 Markdown 文件一键上传到飞书,或将飞书文档导出为 Markdown。支持完整语法转换: # 导入:Markdown → 飞书文档 feishu-cli doc import report.md --title "技术报告" --verbose # 导出:飞书文档 → Markdown feishu-cli doc export -o doc.md --download-images **支持的语法**:标题(6 级)、段落、列表(无限深度嵌套)、任务列表、代码块、引用、Callout(6 种类型)、表格(自动拆分)、分割线、图片、链接、公式、粗体 / 斜体 / 删除线 / 下划线 / 行内代码 / 高亮 ### Mermaid / PlantUML 图表 Markdown 中的 Mermaid 和 PlantUML 代码块**自动转换为飞书画板**(可编辑矢量图,非截图): ```mermaid flowchart TD A[开始] --> B{判断} B -->|是| C[处理] B -->|否| D[结束] ``` | 图表类型 | 声明 | 说明 | |---------|------|------| | 流程图 | `flowchart TD` / `flowchart LR` | 支持 subgraph | | 时序图 | `sequenceDiagram` | 参与者建议 ≤ 8 | | 类图 | `classDiagram` | | | 状态图 | `stateDiagram-v2` | 必须用 v2 | | ER 图 | `erDiagram` | | | 甘特图 | `gantt` | | | 饼图 | `pie` | | | 思维导图 | `mindmap` | | PlantUML 同样支持:时序图、活动图、类图、用例图、组件图、ER 图、思维导图等全部类型(` ```plantuml ` 或 ` ```puml `)。 ### 智能表格处理 - **列宽自动计算** — 根据内容智能调整,中英文字符区分宽度(中文 14px,英文 8px) - **大表格自动拆分** — 超过 9 行自动拆分为多个表格并保留表头(飞书 API 限制) - **单元格多块内容** — 支持 bullet / heading / text 混合内容 ### 三阶段并发管道 导入大文档时,feishu-cli 使用三阶段并发管道最大化吞吐量: 1. **阶段一(顺序)** — 按文档顺序创建所有块,收集图表和表格任务 2. **阶段二(并发)** — 图表 worker 池 + 表格 worker 池并发处理 3. **阶段三(逆序)** — 处理失败图表,降级为代码块 feishu-cli doc import large-doc.md --title "大文档" \ --upload-images --diagram-workers 5 --table-workers 3 --image-workers 2 --verbose ### 全功能 API 覆盖 | 模块 | 能力 | |------|------| | **文档** | 创建、导入、导出、编辑、批量更新、Callout、画板、异步导出/导入文件 | | **知识库** | 空间列表、节点增删改查、导出、空间详情、成员管理 | | **电子表格** | V2 基础读写 + V3 富文本 API,行列操作、样式、合并、查找替换 | | **消息** | 发送(text/post/image/file/card 等 11 种类型)、转发、合并转发、回复、Pin、表情回复、搜索群聊(Bot/User 双身份)、历史记录(支持 User Token 读 Bot 不在的群) | | **群聊** | 创建、获取、更新、删除、分享链接、成员管理 | | **日历** | 日历列表、主日历、日程增删改查、搜索、回复邀请、参与者管理、忙闲查询 | | **任务** | 创建、查看、完成、删除、子任务、成员管理、提醒管理、任务列表 | | **权限** | 添加 / 更新 / 删除协作者、批量添加、公开权限管理、分享密码、权限检查、转移所有权 | | **文件** | 云空间文件列表、创建、移动、复制、删除、上传、下载、版本管理、元数据、统计 | | **素材** | 上传 / 下载(图片、文件、音视频) | | **画板** | 精排绘图(create-notes)、Mermaid / PlantUML 导入、截图下载、节点管理 | | **评论** | 列出、添加、解决/恢复评论、回复管理 | | **搜索** | 消息搜索、应用搜索、文档搜索(需 User Access Token) | | **用户** | 获取用户信息、用户搜索、部门用户列表 | | **通讯录** | 部门详情、子部门列表 | ## 快速开始 ### 安装 **一键安装(推荐)** 自动检测平台,下载最新版本并安装到 `/usr/local/bin`: curl -fsSL https://raw.githubusercontent.com/riba2534/feishu-cli/main/install.sh | bash 已安装的用户执行同样的命令即可更新到最新版本。
其他安装方式 **手动下载** 从 [Releases](https://github.com/riba2534/feishu-cli/releases/latest) 页面下载对应平台的压缩包: | 平台 | 文件 | |------|------| | Linux x64 | `feishu-cli_*_linux-amd64.tar.gz` | | Linux ARM64 | `feishu-cli_*_linux-arm64.tar.gz` | | macOS Intel | `feishu-cli_*_darwin-amd64.tar.gz` | | macOS Apple Silicon | `feishu-cli_*_darwin-arm64.tar.gz` | | Windows x64 | `feishu-cli_*_windows_amd64.tar.gz` | tar -xzf feishu-cli_*_linux-amd64.tar.gz sudo mv feishu-cli_*/feishu-cli /usr/local/bin/ **使用 go install** go install github.com/riba2534/feishu-cli@latest **从源码编译** git clone https://github.com/riba2534/feishu-cli.git cd feishu-cli && make build # 二进制文件输出到 bin/feishu-cli
### 配置凭证 1. 在 [飞书开放平台](https://open.feishu.cn/app) 创建应用,获取 App ID 和 App Secret 2. 给应用添加所需权限(参见[权限要求](#权限要求)) 3. 配置凭证(二选一): # 方式一:环境变量(推荐) export FEISHU_APP_ID="cli_xxx" export FEISHU_APP_SECRET="xxx" # 方式二:配置文件 ~/.feishu-cli/config.yaml feishu-cli config init 4. (可选)如果需要使用搜索功能,还需完成 OAuth 用户授权: # 前置条件:在飞书开放平台 → 应用详情 → 安全设置 → 重定向 URL 中添加: # http://127.0.0.1:9768/callback # 一键 OAuth 登录 feishu-cli auth login ### 验证安装 feishu-cli doc create --title "Hello Feishu" 如果返回文档 ID,说明配置成功。 ## 命令参考 feishu-cli [subcommand] [flags] Commands: doc 文档操作(创建、导入、导出、编辑、异步导出/导入文件) wiki 知识库操作(节点增删改查、空间详情、成员管理) sheet 电子表格(读写、样式、V3 富文本 API) msg 消息操作(发送、转发、合并转发、回复、Pin、表情回复) chat 群聊管理(创建、更新、删除、成员管理) file 文件管理(列出、移动、复制、删除、上传、下载、版本管理) media 素材操作(上传、下载) perm 权限管理(添加、删除、批量添加、公开权限、密码、转移所有权) calendar 日历操作(日程增删改查、搜索、参与者、忙闲查询) task 任务操作(增删改查、子任务、成员、提醒) tasklist 任务列表管理(创建、查看、删除) user 用户操作(获取信息、搜索、部门用户列表) dept 部门操作(详情、子部门列表) board 画板操作(导入图表、下载图片) comment 评论操作(列出、添加、解决/恢复、回复管理) search 搜索操作(消息、应用、文档) auth 身份认证(OAuth 登录、状态、退出) config 配置管理
文档操作 # 创建文档 feishu-cli doc create --title "新文档" # 导入 Markdown(核心功能,默认上传图片) feishu-cli doc import doc.md --title "文档标题" --upload-images --verbose # 导出为 Markdown feishu-cli doc export -o output.md --download-images # 导出他人文档(自动从 auth login 读取 User Token,或手动指定) feishu-cli doc export -o output.md --user-access-token # 获取文档信息 feishu-cli doc get # 获取所有块 feishu-cli doc blocks --all # 添加内容(JSON 格式) feishu-cli doc add -c '' # 添加内容(Markdown 格式) feishu-cli doc add README.md --content-type markdown # 添加高亮块 feishu-cli doc add-callout "提示内容" --callout-type info # 批量更新 feishu-cli doc batch-update '[...]' --source-type content # 异步导出为文件(PDF/DOCX/XLSX) feishu-cli doc export-file --type pdf -o output.pdf # 异步导入本地文件为飞书文档 feishu-cli doc import-file local_file.docx --type docx --name "文档名"
知识库操作 feishu-cli wiki spaces # 列出知识空间 feishu-cli wiki get # 获取节点 feishu-cli wiki nodes # 列出节点 feishu-cli wiki export -o doc.md # 导出为 Markdown feishu-cli wiki create --space-id --title "新节点" feishu-cli wiki space-get # 获取知识空间详情 # 知识空间成员管理 feishu-cli wiki member add --member-type userid --member-id USER_ID --role admin feishu-cli wiki member list feishu-cli wiki member remove --member-type userid --member-id USER_ID --role admin
电子表格操作 # V2 API - 基础读写 feishu-cli sheet read "Sheet1!A1:C10" feishu-cli sheet write "Sheet1!A1:B2" --data '[["姓名","年龄"],["张三",25]]' # V3 API - 富文本支持 feishu-cli sheet read-rich "sheet!A1:C10" feishu-cli sheet write-rich --data-file data.json # 行列操作 feishu-cli sheet add-rows --count 5 feishu-cli sheet add-cols --count 3 # 样式与合并 feishu-cli sheet style "Sheet1!A1:C3" --bold --font-size 14 feishu-cli sheet merge "Sheet1!A1:C1"
消息操作 # 发送文本消息 feishu-cli msg send --receive-id-type email --receive-id user@example.com --text "Hello" # 发送富文本消息 feishu-cli msg send --receive-id-type email --receive-id user@example.com \ --msg-type post --content-file msg.json # 搜索群聊(Bot 身份,仅返回 Bot 所在的群) feishu-cli msg search-chats --query "关键词" # 搜索群聊(User 身份,可搜到用户所在的群) feishu-cli msg search-chats --query "关键词" --user-access-token # 获取历史消息(Bot 不在群内时使用 --user-access-token) feishu-cli msg history --container-id --container-id-type chat # 转发消息 feishu-cli msg forward --receive-id --receive-id-type email # 回复消息 feishu-cli msg reply --text "回复内容" # 合并转发 feishu-cli msg merge-forward --receive-id user@example.com --receive-id-type email --message-ids id1,id2 # 表情回复 feishu-cli msg reaction add --emoji-type THUMBSUP feishu-cli msg reaction remove --reaction-id REACTION_ID feishu-cli msg reaction list # Pin 消息 feishu-cli msg pin feishu-cli msg unpin feishu-cli msg pins --chat-id CHAT_ID
权限管理 # 添加 / 更新协作者 feishu-cli perm add --doc-type docx --member-type email \ --member-id user@example.com --perm full_access --notification feishu-cli perm update --doc-type docx --member-type email \ --member-id user@example.com --perm edit # 查看 / 删除协作者 feishu-cli perm list --doc-type docx feishu-cli perm delete --doc-type docx --member-type email --member-id user@example.com # 公开权限管理 feishu-cli perm public-get feishu-cli perm public-update --external-access --link-share-entity anyone_readable # 分享密码 feishu-cli perm password create feishu-cli perm password delete # 批量添加协作者 feishu-cli perm batch-add --members-file members.json --notification # 权限检查 feishu-cli perm auth --action view # 转移所有权 feishu-cli perm transfer-owner --member-type email --member-id user@example.com
群聊管理 # 群聊 CRUD feishu-cli chat create --name "群聊名" --user-ids id1,id2 feishu-cli chat get feishu-cli chat update --name "新群名" feishu-cli chat delete feishu-cli chat link # 群成员管理 feishu-cli chat member list feishu-cli chat member add --id-list id1,id2 feishu-cli chat member remove --id-list id1,id2
文件管理 # 基础操作 feishu-cli file list [folder_token] feishu-cli file mkdir --name "新文件夹" --folder-token # 上传 / 下载 feishu-cli file upload local_file.pdf --parent FOLDER_TOKEN feishu-cli file download -o output.pdf # 版本管理 feishu-cli file version list --doc-type docx feishu-cli file version create --doc-type docx --name "v1.0" feishu-cli file version get --doc-type docx feishu-cli file version delete --doc-type docx # 元数据与统计 feishu-cli file meta TOKEN1 TOKEN2 --doc-type docx feishu-cli file stats --doc-type docx
搜索操作 搜索 API 需要 User Access Token。推荐使用 `auth login` 一键获取(Token 自动保存和刷新),也可通过 `--user-access-token` 参数或环境变量手动指定。 # 获取 User Access Token(推荐,一次登录自动刷新) feishu-cli auth login # 搜索消息 feishu-cli search messages "关键词" feishu-cli search messages "会议" --chat-ids oc_xxx,oc_yyy feishu-cli search messages "你好" --chat-type p2p_chat # 搜索私聊消息 # 搜索应用 feishu-cli search apps "审批" # 搜索文档和 Wiki feishu-cli search docs "产品需求" feishu-cli search docs "季度报告" --docs-types doc,sheet feishu-cli search docs "技术方案" --count 10 --offset 0 # 也可以手动指定 Token feishu-cli search docs "产品需求" --user-access-token export FEISHU_USER_ACCESS_TOKEN="u-xxx" feishu-cli search docs "产品需求"
身份认证 通过 OAuth 2.0 获取 User Access Token,用于搜索等需要用户授权的功能。 **前置条件**:在飞书开放平台 → 应用详情 → 安全设置 → 重定向 URL 中添加 `http://127.0.0.1:9768/callback` # 登录授权(自动打开浏览器完成 OAuth) feishu-cli auth login # SSH 远程环境使用手动模式 feishu-cli auth login --manual # 指定端口(默认 9768) feishu-cli auth login --port 8080 # 指定 OAuth scope(建议加 offline_access 以获取 Refresh Token) feishu-cli auth login --scopes "search:docs:read search:message offline_access" # 非交互模式(AI Agent 推荐,不阻塞 stdin) feishu-cli auth login --print-url # 步骤 1:输出授权 URL 和 state feishu-cli auth callback "<回调URL>" --state "" # 步骤 2:用回调 URL 换 token # 查看当前授权状态 feishu-cli auth status feishu-cli auth status -o json # JSON 格式输出 # 退出登录(清除本地 token) feishu-cli auth logout **Token 管理**: - Token 保存在 `~/.feishu-cli/token.json`,Access Token 有效期约 2 小时 - Access Token 过期时自动使用 Refresh Token 刷新(Refresh Token 有效期 30 天) - **重要**:登录时需包含 `offline_access` scope 才会返回 Refresh Token,否则 2 小时后需重新登录 - Token 优先级:`--user-access-token` 参数 > `FEISHU_USER_ACCESS_TOKEN` 环境变量 > `token.json` > `config.yaml`
更多命令 # 文档异步导出/导入 feishu-cli doc export-file --type pdf -o output.pdf feishu-cli doc import-file local_file.docx --type docx --name "文档名" # 素材上传 feishu-cli media upload image.png --parent-type docx_image --parent-node # 日历 feishu-cli calendar list feishu-cli calendar get feishu-cli calendar primary feishu-cli calendar create-event --calendar-id --summary "会议" \ --start "2024-01-01T10:00:00+08:00" --end "2024-01-01T11:00:00+08:00" feishu-cli calendar event-search --calendar-id --query "关键词" feishu-cli calendar event-reply --status accept feishu-cli calendar attendee add --user-ids id1,id2 feishu-cli calendar attendee list feishu-cli calendar freebusy --start "2024-01-01T00:00:00+08:00" \ --end "2024-01-02T00:00:00+08:00" --user-ids id1,id2 # 任务 feishu-cli task create --summary "待办事项" feishu-cli task complete feishu-cli task subtask create --summary "子任务" feishu-cli task subtask list feishu-cli task member add --members id1,id2 --role assignee feishu-cli task reminder add --minutes 30 # 任务列表 feishu-cli tasklist create --name "任务列表" feishu-cli tasklist list feishu-cli tasklist get feishu-cli tasklist delete # 画板 feishu-cli board create-notes nodes.json -o json # 精排绘图(JSON 控制坐标、颜色、连线) feishu-cli board import --source-type content -c "graph TD; A-->B" --syntax mermaid # 导入 Mermaid feishu-cli board import diagram.puml --syntax plantuml # 导入 PlantUML feishu-cli board nodes # 获取画板所有节点 feishu-cli board image output.png # 下载画板截图 # 评论 feishu-cli comment list --type docx feishu-cli comment add --type docx --content "评论内容" feishu-cli comment resolve --type docx feishu-cli comment unresolve --type docx feishu-cli comment reply list --type docx feishu-cli comment reply delete --type docx # 用户 feishu-cli user info feishu-cli user search --email user@example.com feishu-cli user search --mobile 13800138000 feishu-cli user list --department-id DEPT_ID # 部门 feishu-cli dept get feishu-cli dept children
## AI 技能集成 `skills/` 目录包含 **11 个** 为 [Claude Code](https://claude.ai/claude-code) 设计的技能文件,让 AI Agent 能够直接操作飞书 — 创建文档、发送消息、管理权限,全部通过自然语言驱动。 | 技能 | 功能 | 触发示例 | |------|------|---------| | `feishu-cli-read` | 读取飞书文档 / 知识库 | "读一下这个飞书链接" | | `feishu-cli-write` | 创建 / 写入 / 更新文档 | "创建一个新飞书文档" | | `feishu-cli-import` | 从 Markdown 导入创建文档 | "把这个 md 文件上传到飞书" | | `feishu-cli-export` | 导出为 Markdown / PDF / Word | "把飞书文档导出来" | | `feishu-cli-perm` | 权限管理 | "给文档添加权限" | | `feishu-cli-msg` | 消息全功能管理 | "发消息给 xxx" | | `feishu-cli-toolkit` | 综合工具箱(表格/日历/任务/群聊/文件/评论/知识库/通讯录) | "读取飞书表格数据" | | `feishu-cli-board` | 画板操作(精排绘图/Mermaid 导入/截图/节点管理) | "画个架构图"、"在飞书里画图" | | `feishu-cli-auth` | OAuth 认证、Token 管理、scope 配置 | "登录飞书"、"获取 Token" | | `feishu-cli-search` | 搜索飞书文档 / 消息 / 应用 | "搜索飞书文档" | | `feishu-cli-doc-guide` | 飞书文档创建规范 | 其他技能内部引用 | **安装方法**: # 一键安装全部技能(推荐) npx skills add riba2534/feishu-cli --global --yes --agent claude-code --copy # 或手动复制 # 将 skills/ 目录复制到 ~/.claude/skills/ ## 块类型映射
Markdown ↔ 飞书块类型完整对照表 | Markdown | 飞书块类型 | block_type | 说明 | |----------|-----------|------------|------| | `# 标题` | Heading 1-9 | 3-11 | 支持 9 级标题(Markdown 规范 6 级) | | 段落文本 | Text | 2 | 普通文本 | | `- 列表` | Bullet | 12 | 无序列表(支持无限深度嵌套) | | `1. 列表` | Ordered | 13 | 有序列表(支持无限深度嵌套) | | `- [ ] 任务` | Todo | 17 | 任务列表 | | ` ```lang``` ` | Code | 14 | 代码块 | | ` ```mermaid``` ` | Board (Diagram) | 21 → 43 | 自动转画板 | | ` ```plantuml``` ` | Board (Diagram) | 21 → 43 | 自动转画板 | | `> 引用` | QuoteContainer | 34 | 引用容器 | | `> [!NOTE]` | Callout | 19 | 6 种类型(NOTE/WARNING/TIP/CAUTION/IMPORTANT/SUCCESS) | | `---` | Divider | 22 | 分割线 | | `\| 表格 \|` | Table | 31 | 大表格自动拆分 | | `![](https://raw.githubusercontent.com/riba2534/feishu-cli/main/url)` | Image | 27 | 图片(API 限制,创建占位块) | | `$$公式$$` | Equation | 16 | 块级公式(降级为行内) | | 附件 | File | 23 | 文件块 | | `