OpenClaw + 飞书:企业自动化完全指南
飞书已成为众多企业的协作标配,但重复性的文档编辑、表格更新、权限管理仍占用大量时间。OpenClaw 深度集成飞书生态,让你用代码自动化这些工作。本文是飞书自动化的完全指南。
01 飞书自动化价值
企业常见痛点:
OpenClaw 飞书技能矩阵:
02 环境准备
配置飞书应用
# 在飞书开放平台创建应用
# https://open.feishu.cn/app
# 获取以下凭证:# - App ID
# - App Secret
# - 申请所需权限:docx:document, drive:drive, etc.
OpenClaw 配置
{
"channels": {
"feishu": {
"appId": "cli_xxxxxxxx",
"appSecret": "xxxxxxxx"
}
}
}
03 文档自动化(feishu-doc)
基础操作
读取文档:
{
"tool": "feishu_doc",
"action": "read",
"doc_token": "ABC123def"
}
创建文档:
{
"tool": "feishu_doc",
"action": "create",
"title": " 项目周报 ",
"folder_token": "fldcnXXX",
"owner_open_id": "ou_xxx"
}
写入内容:
{
"tool": "feishu_doc",
"action": "write",
"doc_token": "ABC123def",
"content": "# 项目周报 \n\n## 本周进展 \n- 完成需求评审 \n- 启动开发 "
}
实战案例 1:自动生成项目周报
#!/bin/bash
# weekly-report.sh
# 1. 创建周报文档
DOC=$(feishu_doc action="create" title=" 项目周报 - $(date +%Y%m%d)" folder_token="fldcnProject")
DOC_TOKEN=$(echo $DOC | jq -r '.doc_token')
# 2. 生成周报内容
CONTENT="# 项目周报 ($(date +%Y-%m-%d))
## 一、本周进展
### 1. 开发进度
- 后端 API 开发完成 80%
- 前端页面完成 60%
- 单元测试覆盖率 75%
### 2. 问题与风险
| 问题 | 影响 | 解决方案 | 负责人 |
|------|------|----------|--------|
| 第三方接口延迟 | 高 | 增加缓存层 | 张三 |
| 前端性能优化 | 中 | 代码分割 | 李四 |
### 3. 下周计划
- [ ] 完成核心功能开发
- [ ] 联调测试
- [ ] 准备上线文档
## 二、数据统计
本周提交代码:$(git log --oneline --since='1 week ago' | wc -l) 次
解决 Bug:15 个
新增功能:3 个
---
* 自动生成于 $(date)*"
# 3. 写入文档
feishu_doc action="write" doc_token="$DOC_TOKEN" content="$CONTENT"
# 4. 创建表格
TABLE=$(feishu_doc action="create_table" doc_token="$DOC_TOKEN" row_size=4 column_size=3 column_width='[150,200,150]')
# 5. 填充表格数据
feishu_doc action="write_table_cells" doc_token="$DOC_TOKEN" table_block_id="$TABLE" values='[[" 任务 "," 负责人 "," 状态 "],["API 开发 "," 张三 "," 进行中 "],[" 前端页面 "," 李四 "," 进行中 "],[" 测试 "," 王五 "," 待开始 "]]'
# 6. 分享文档给团队
feishu_perm action="share" doc_token="$DOC_TOKEN" chat_id="chat_xxx" perm="edit"
echo " 周报已生成: https://xxx.feishu.cn/docx/$DOC_TOKEN"
执行输出:
周报已生成: https://xxx.feishu.cn/docx/doxcnXXX
实战案例 2:批量更新文档模板
#!/bin/bash
# batch-update-template.sh
# 获取文件夹下所有文档
DOCS=$(feishu_drive action="list" folder_token="fldcnTemplates")
# 遍历更新
echo "$DOCS" | jq -r '.files[] | select(.type == "docx") | .token' | while read doc_token; do
echo " 更新文档: $doc_token"
# 读取原文档
CONTENT=$(feishu_doc action="read" doc_token="$doc_token" | jq -r '.content')
# 替换模板变量
NEW_CONTENT=$(echo "$CONTENT" | sed 's/{{COMPANY}}/ 公司名称 /g')
NEW_CONTENT=$(echo "$NEW_CONTENT" | sed 's/{{YEAR}}/2024/g')
# 写回文档
feishu_doc action="write" doc_token="$doc_token" content="$NEW_CONTENT"
done
echo " 批量更新完成 "
执行输出:
找到 15 个文档
正在更新: 合同模板 -v1.docx
正在更新: 合同模板 -v2.docx
...
批量更新完成
04 知识库自动化(feishu-wiki)
基础操作
列出知识库:
{
"tool": "feishu_wiki",
"action": "spaces"
}
获取知识库节点:
{
"tool": "feishu_wiki",
"action": "nodes",
"space_id": "space_xxx"
}
创建 wiki 页面:
{
"tool": "feishu_wiki",
"action": "create",
"space_id": "space_xxx",
"title": " 新人入职指南 ",
"parent_node_token": "nodexxx"
}
实战案例 3:自动归档过期文档
#!/bin/bash
# archive-old-docs.sh
SPACE_ID="space_xxx"
# 跨平台兼容的日期计算(支持 macOS 和 Linux)CUTOFF_DATE=$(python3 -c "from datetime import datetime, timedelta; print((datetime.now() - timedelta(days=90)).strftime('%Y-%m-%d'))" 2>/dev/null || \
date -u -v-90d +%Y-%m-%d 2>/dev/null || \
date -d '90 days ago' +%Y-%m-%d 2>/dev/null || \
date --date='90 days ago' +%Y-%m-%d)
# 获取所有 wiki 节点
NODES=$(feishu_wiki action="nodes" space_id="$SPACE_ID")
# 找出 90 天未更新的文档
echo "$NODES" | jq -r '.nodes[] | select(.obj_type == "docx")' | while read node; do
NODE_TOKEN=$(echo $node | jq -r '.node_token')
LAST_EDIT=$(echo $node | jq -r '.edited_time')
if [["$LAST_EDIT" < "$CUTOFF_DATE"]]; then
echo " 归档文档: $NODE_TOKEN (最后编辑: $LAST_EDIT)"
# 移动到归档目录
feishu_wiki action="move" node_token="$NODE_TOKEN" target_parent_token="nodexxxArchive"
fi
done
echo " 归档完成 "
执行输出:
归档文档: nodexxx123 (最后编辑: 2025-12-01)
归档文档: nodexxx456 (最后编辑: 2025-11-15)
归档完成
实战案例 4:知识库目录自动生成
#!/bin/bash
# generate-wiki-index.sh
SPACE_ID="space_xxx"
OUTPUT_DOC="docx_xxx"
# 获取所有节点
NODES=$(feishu_wiki action="nodes" space_id="$SPACE_ID")
# 生成目录内容
INDEX="# 知识库目录 \n\n"
INDEX+="* 最后更新: $(date)*\n\n"
# 按分类组织
echo "$NODES" | jq -r '.nodes[] | select(.parent_node_token == "")' | while read category; do
CAT_NAME=$(echo $category | jq -r '.title')
CAT_TOKEN=$(echo $category | jq -r '.node_token')
INDEX+="## $CAT_NAME\n\n"
# 获取子节点
echo "$NODES" | jq -r ".nodes[] | select(.parent_node_token == \"$CAT_TOKEN\")" | while read doc; do
DOC_TITLE=$(echo $doc | jq -r '.title')
DOC_TOKEN=$(echo $doc | jq -r '.node_token')
INDEX+="- [$DOC_TITLE](https://xxx.feishu.cn/wiki/$DOC_TOKEN)\n"
done
INDEX+="\n"
done
# 写入索引文档
feishu_doc action="write" doc_token="$OUTPUT_DOC" content="$INDEX"
echo " 目录已更新 "
执行输出:
目录已更新
05 云盘自动化(feishu-drive)
基础操作
列出文件:
{
"tool": "feishu_drive",
"action": "list",
"folder_token": "fldcnxxx"
}
创建文件夹:
{
"tool": "feishu_drive",
"action": "create_folder",
"name": "2024-Q1-Reports",
"folder_token": "fldcnxxx"
}
移动文件:
{
"tool": "feishu_drive",
"action": "move",
"file_token": "filexxx",
"folder_token": "fldcnxxx"
}
实战案例 5:自动归档项目文件
#!/bin/bash
# auto-archive-project.sh
PROJECT_NAME="$1"
DATE=$(date +%Y%m%d)
# 1. 创建项目归档文件夹
FOLDER=$(feishu_drive action="create_folder" name="$PROJECT_NAME- 归档 -$DATE" folder_token="fldcnArchive")
FOLDER_TOKEN=$(echo $FOLDER | jq -r '.folder_token')
# 2. 收集项目相关文件
# 从各个文件夹移动文件到归档
for file_token in file1 file2 file3; do
feishu_drive action="move" file_token="$file_token" folder_token="$FOLDER_TOKEN"
done
# 3. 设置权限(只读)feishu_perm action="share" file_token="$FOLDER_TOKEN" perm="readonly"
echo " 项目 $PROJECT_NAME 已归档 "
06 权限管理(feishu-perm)
权限基础操作
分享文档:
{
"tool": "feishu_perm",
"action": "share",
"doc_token": "docx_xxx",
"user_id": "ou_xxx",
"perm": "edit"
}
批量设置权限:
#!/bin/bash
# batch-set-perm.sh
DOC_TOKEN="docx_xxx"
USERS="ou_1 ou_2 ou_3" # 用户 ID 列表
for user in $USERS; do
feishu_perm action="share" doc_token="$DOC_TOKEN" user_id="$user" perm="view"
done
echo " 权限设置完成 "
执行输出:
权限设置完成
07 综合实战
案例 6:新员工入职自动化
#!/bin/bash
# onboarding-automation.sh
NEW_EMPLOYEE_NAME="$1"
NEW_EMPLOYEE_ID="$2"
MANAGER_ID="$3"
# 1. 创建入职文档
ONBOARDING_DOC=$(feishu_doc action="create" title="$NEW_EMPLOYEE_NAME - 入职指南 " folder_token="fldcnHR")
DOC_TOKEN=$(echo $ONBOARDING_DOC | jq -r '.doc_token')
# 2. 写入入职内容
CONTENT="# $NEW_EMPLOYEE_NAME 入职指南
欢迎加入公司!以下是入职第一周的任务清单:## Day 1
- [ ] 完成入职培训
- [ ] 配置开发环境
- [ ] 熟悉团队文档
## Day 2-3
- [ ] 阅读项目代码
- [ ] 完成第一个小任务
## Week 1
- [ ] 参加周会
- [ ] 提交第一份代码
## 重要链接
- [员工手册](https://xxx.feishu.cn/wiki/xxx)
- [技术文档](https://xxx.feishu.cn/wiki/yyy)
- [团队日历](https://xxx.feishu.cn/calendar/zzz)
---
直属领导: @$MANAGER_ID"
feishu_doc action="write" doc_token="$DOC_TOKEN" content="$CONTENT"
# 3. 分享给新员工和主管
feishu_perm action="share" doc_token="$DOC_TOKEN" user_id="$NEW_EMPLOYEE_ID" perm="edit"
feishu_perm action="share" doc_token="$DOC_TOKEN" user_id="$MANAGER_ID" perm="edit"
echo " 入职文档已创建: https://xxx.feishu.cn/docx/$DOC_TOKEN"
执行输出:
入职文档已创建: https://xxx.feishu.cn/docx/doxcnXXX
08 常见问题
Q1: API 返回权限错误
解决: 1. 检查应用权限是否申请 2. 确认文档已分享给应用 3. 用户是否已授权
Q2: 文档内容格式错乱
建议: – 使用 Markdown 格式 – 表格用 create_table + write_table_cells – 图片先上传再引用
Q3: 如何批量操作大量文档?
策略:
# 分页处理
PAGE_SIZE=50
OFFSET=0
while true; do
DOCS=$(feishu_drive action="list" folder_token="fldcnxxx" page_size="$PAGE_SIZE" offset="$OFFSET")
# 处理本页
...
# 检查是否还有下一页
HAS_MORE=$(echo $DOCS | jq -r '.has_more')
["$HAS_MORE" = "false"] && break
OFFSET=$((OFFSET + PAGE_SIZE))
done
Q4: 如何监控文档变更?
方案: 结合飞书 webhook
# 设置 webhook 接收文档变更事件
# 在 OpenClaw 中处理事件
09 总结
下一步: – 建立企业自动化脚本库 – 结合审批流程实现完整工作流 – 探索与飞书机器人的深度集成
本文是 OpenClaw 进阶技能系列第 8 篇,下一篇:《OpenClaw 媒体处理:视频、图片、GIF 全搞定》
#OpenClaw #飞书 #企业自动化 #文档管理 #协作工具
正文完