飞书日志记录技能
📖 功能
用户主动提供日志内容,智能整理、结构化、层次化后写入飞书文档:
- - ✅ 接收用户提供的日志内容(文本、会议记录、事件描述等)
- ✅ 不使用固定模板,根据内容智能整理
- ✅ 结构化层次化组织内容(保留所有关键细节)
- ✅ 使用飞书原生块格式(Block-based)写入内容
- ✅ 创建飞书云盘文件夹(日志/XX 年/XX 月/XX 日/log/)
- ✅ 创建飞书在线文档(主题 + 时间戳)
- ✅ 自动跳过已存在的文件夹(复用已有文件夹)
- ✅ 同一天可以有多个文件
- ✅ 添加用户为协作者(full_access 权限)
🎯 使用场景
- - 会议记录 - 记录会议内容、决策、行动项
- 项目日志 - 记录项目进展、里程碑、问题
- 工作复盘 - 记录每日/每周工作总结
- 重要事件 - 记录关键决策、客户沟通、突发事件
- 学习笔记 - 记录培训内容、技术分享
🔧 使用方式
方式 1: 对话中使用(推荐)
用户直接提供日志内容,例如:
CODEBLOCK0
CODEBLOCK1
CODEBLOCK2
📋 工作流程
步骤 1: 接收并理解内容
- - 阅读用户提供的全部内容
- 理解内容主题和关键信息
- 识别内容类型(会议/项目/工作/其他)
步骤 2: 智能整理与结构化
不使用固定模板,而是:
- 1. 提取关键信息
- 时间、地点、人员
- 主题、背景、目标
- 关键决策、行动项
- 2. 层次化组织
- 按逻辑关系组织内容
- 使用合适的标题层级(H1/H2/H3)
- 相关事项归类到同一章节
- 3. 保留所有细节
- 不丢失用户提供的任何重要信息
- 保持原始表述的准确性
- 补充必要的上下文
步骤 3: 确认当前日期
- - 获取当前日期(年 - 月-日)
- 用于文件夹命名和文档标题
步骤 4: 创建/复用文件夹结构
CODEBLOCK3
逻辑:
- 1. 检查"日志"文件夹是否存在 → 不存在则创建
- 检查"2026 年"文件夹是否存在 → 不存在则创建
- 检查"03 月"文件夹是否存在 → 不存在则创建
- 检查"04 日"文件夹是否存在 → 不存在则创建
- 检查"log"文件夹是否存在 → 不存在则创建
- 已存在的文件夹直接复用
- 添加用户为所有文件夹的协作者(full_access)
步骤 5: 创建文档
- - 文档标题格式: INLINECODE0
- 同一天可以有多个文件(不同主题)
- 添加用户为协作者(full_access 权限)
步骤 6: 写入内容(飞书块格式)
使用飞书原生块格式写入
结构化后的内容:
- - 文本块(blocktype: 2)- 普通段落
- 标题块(blocktype: 3/4/5)- H1/H2/H3 标题
- 列表块(blocktype: 12)- 无序列表
- 表格块(简化处理)- 数据表格
- 引用块(blocktype: 14)- 引用内容
- 分割线(block_type: 6)- 视觉分隔
🔐 所需权限
应用身份权限(使用 tenantaccesstoken)
重要:本技能使用 tenant_access_token(应用级令牌),无需用户授权即可使用。
| 权限 | 说明 |
|---|
| INLINECODE2 | 查看、评论、编辑和管理云空间中所有文件 |
| INLINECODE3 |
上传、下载文件到云空间 |
|
docx:document | 创建及编辑新版文档 |
|
space:folder:create | 创建云空间文件夹 |
|
docs:permission.member:add | 添加协作者权限 |
权限申请链接
CODEBLOCK4
Token 获取方式
技能自动使用 tenant_access_token,无需手动配置:
CODEBLOCK5
Token 有效期:2 小时(自动刷新)
⚠️ 配置参数
重要说明:本技能使用 tenant_access_token(应用级令牌),所有配置通过环境变量设置。
| 参数 | 说明 | 默认值 |
|---|
| INLINECODE9 | 飞书应用 ID | 必填(从.env 文件加载) |
| INLINECODE10 |
飞书应用密钥 | 必填(从.env 文件加载) |
|
DEFAULT_OWNER_ID | 协作者 user
id(用户的 openid) | 必填(从.env 文件加载) |
|
ROOT_LOG_FOLDER_NAME | 日志根文件夹名称 | 可选,默认:工作日志 |
环境变量设置方式
方式 1:在 .env 文件中配置(推荐)
CODEBLOCK6
方式 2:在 Shell 中导出
CODEBLOCK7
🔑 如何获取 Open ID
方法 1: 通过 API 获取
CODEBLOCK8
方法 2: 从消息事件中获取
消息 payload 中的 INLINECODE14
方法 3: 从飞书开发者后台查看
应用管理 > 权限管理 > 已授权用户
📊 输出结果
成功时返回:
CODEBLOCK9
⚠️ 重要注意事项
🔑 使用 tenantaccesstoken(重要)
本技能使用 tenant_access_token(应用级令牌),而非 user_access_token。
优势:
- - ✅ 无需用户授权,应用自动获取
- ✅ 有效期 2 小时,自动刷新
- ✅ 权限范围:应用级别权限
- ✅ 安全性更高,不依赖用户会话
工作流程:
CODEBLOCK10
feishu_doc 工具的 create 动作限制
问题: feishu_doc 的 create 动作不支持 content 参数,只会创建空文档。
正确用法:
CODEBLOCK11
修复方案:
- 1. 使用
create 创建文档,获取 INLINECODE23 - 使用
write 写入内容到该文档 - 或者直接使用
write 到已有文档
🐛 常见错误
| 错误码 | 说明 | 解决方案 |
|---|
| 99991400 | 应用频率限制 | 降低调用频率 |
| 1310213 |
权限不足 | 检查文件夹访问权限 |
| 1061004 | 禁止访问 | 确认应用权限配置 |
| 99991661 | 缺少 access token | 重新获取 token |
| 1770001 | 参数无效 | 检查块格式 |
|
文档内容为空 |
create 动作不处理 content |
改用 create + write 组合 |
✅ 已修复问题
| 问题 | 状态 | 说明 |
|---|
| 有序列表块格式错误 | ✅ 已修复 | 改为使用文本块渲染 |
| 内容写入失败 |
✅ 已修复 | 优化块解析器 |
| 权限管理 | ✅ 正常 | 添加用户为协作者(full_access) |
| 文件夹复用 | ✅ 正常 | 已存在的文件夹直接复用 |
|
固定模板限制 | ✅ 已移除 |
改为智能整理内容 |
💡 最佳实践
- 1. 提供充足信息 - 用户输入越详细,整理效果越好
- 保留原始细节 - 结构化时不丢失关键信息
- 层次化组织 - 按逻辑关系组织内容
- 文件夹复用 - 已存在的文件夹不重复创建
- 权限检查 - 确保用户在所有文件夹中是协作者
- 同天多文件 - 同一天的不同主题创建不同文档
- 标题清晰 - 文档标题包含日期和主题,便于检索
📁 文件夹结构说明
目录层级
CODEBLOCK12
命名规范
- - 年份文件夹: INLINECODE26
- 月份文件夹: INLINECODE27
- 日期文件夹: INLINECODE28
- 日志子文件夹: INLINECODE29
- 文档标题: INLINECODE30
🔑 权限管理说明
权限方案:协作者方式
- - 机器人保持资源所有权
- 用户获得
full_access 权限(可管理) - 用户可以查看、编辑、删除、分享
- 无需转移所有权
添加协作者 API
CODEBLOCK13
请求参数:
| 参数 | 说明 |
|---|
| INLINECODE32 | INLINECODE33 |
| INLINECODE34 |
用户的 open_id |
|
perm |
full_access(可管理) |
URL 参数:
| 参数 | 说明 |
|---|
| INLINECODE37 | 资源类型(folder/docx) |
权限级别说明
| 权限级别 | 可执行操作 |
|---|
| INLINECODE38 | 查看、编辑、删除、分享、添加协作者 |
| INLINECODE39 |
查看、编辑、评论 |
|
view | 查看、评论 |
🤖 AI 处理指令
当用户请求记录日志时,按以下流程处理:
1. 理解内容
- - 仔细阅读用户提供的内容
- 识别关键信息(时间、人员、主题、事项等)
- 理解内容的逻辑结构
2. 智能整理(不使用模板)
根据内容特点进行整理:
- - 提取并突出关键信息
- 按逻辑关系组织章节
- 相关内容归类到同一部分
- 使用合适的标题层级
- 不套用固定模板
3. 结构化示例
示例 1:会议记录
CODEBLOCK14
示例 2:项目进展
CODEBLOCK15
4. 确认日期
5. 文件夹操作
- - 创建/获取:
日志 → YYYY 年 → MM 月 → DD 日 → INLINECODE45 - 已存在则复用
- 添加用户为所有文件夹的协作者
6. 文档操作
- - 创建文档(标题:
YYYY-MM-DD 主题) - 写入结构化内容
- 添加用户为协作者
7. 反馈确认
- - 告知用户文档已创建
- 提供文档链接
- 确认用户拥有完整权限
技能位置: INLINECODE47
飞书日志记录技能
📖 功能
用户主动提供日志内容,智能整理、结构化、层次化后写入飞书文档:
- - ✅ 接收用户提供的日志内容(文本、会议记录、事件描述等)
- ✅ 不使用固定模板,根据内容智能整理
- ✅ 结构化层次化组织内容(保留所有关键细节)
- ✅ 使用飞书原生块格式(Block-based)写入内容
- ✅ 创建飞书云盘文件夹(日志/XX 年/XX 月/XX 日/log/)
- ✅ 创建飞书在线文档(主题 + 时间戳)
- ✅ 自动跳过已存在的文件夹(复用已有文件夹)
- ✅ 同一天可以有多个文件
- ✅ 添加用户为协作者(full_access 权限)
🎯 使用场景
- - 会议记录 - 记录会议内容、决策、行动项
- 项目日志 - 记录项目进展、里程碑、问题
- 工作复盘 - 记录每日/每周工作总结
- 重要事件 - 记录关键决策、客户沟通、突发事件
- 学习笔记 - 记录培训内容、技术分享
🔧 使用方式
方式 1: 对话中使用(推荐)
用户直接提供日志内容,例如:
请记录今天的会议内容:
- - 会议主题:[主题名称]
- 时间:[日期和时间]
- 参会人员:[人员名单]
- 主要内容:[讨论要点]
- 决策事项:[达成的决策]
- 下一步:[行动计划]
帮我记录项目进展:
- - 项目名称:[项目名称]
- 当前阶段:[项目阶段]
- 已完成:[完成的工作]
- 遇到问题:[遇到的挑战]
- 下一步计划:[后续安排]
记录今天的工作:
- - 完成的工作项 1
- 完成的工作项 2
- 参加的会议
- 遇到的问题和解决方案
📋 工作流程
步骤 1: 接收并理解内容
- - 阅读用户提供的全部内容
- 理解内容主题和关键信息
- 识别内容类型(会议/项目/工作/其他)
步骤 2: 智能整理与结构化
不使用固定模板,而是:
- 1. 提取关键信息
- 时间、地点、人员
- 主题、背景、目标
- 关键决策、行动项
- 2. 层次化组织
- 按逻辑关系组织内容
- 使用合适的标题层级(H1/H2/H3)
- 相关事项归类到同一章节
- 3. 保留所有细节
- 不丢失用户提供的任何重要信息
- 保持原始表述的准确性
- 补充必要的上下文
步骤 3: 确认当前日期
- - 获取当前日期(年 - 月-日)
- 用于文件夹命名和文档标题
步骤 4: 创建/复用文件夹结构
飞书云盘/
└── 日志/
└── 2026 年/
└── 03 月/
└── 04 日/
└── log/
├── 2026-03-04 华为会议.docx
└── 2026-03-04 信誉库节点网络配置.docx
逻辑:
- 1. 检查日志文件夹是否存在 → 不存在则创建
- 检查2026 年文件夹是否存在 → 不存在则创建
- 检查03 月文件夹是否存在 → 不存在则创建
- 检查04 日文件夹是否存在 → 不存在则创建
- 检查log文件夹是否存在 → 不存在则创建
- 已存在的文件夹直接复用
- 添加用户为所有文件夹的协作者(full_access)
步骤 5: 创建文档
- - 文档标题格式:YYYY-MM-DD 主题
- 同一天可以有多个文件(不同主题)
- 添加用户为协作者(full_access 权限)
步骤 6: 写入内容(飞书块格式)
使用飞书原生块格式写入
结构化后的内容:
- - 文本块(blocktype: 2)- 普通段落
- 标题块(blocktype: 3/4/5)- H1/H2/H3 标题
- 列表块(blocktype: 12)- 无序列表
- 表格块(简化处理)- 数据表格
- 引用块(blocktype: 14)- 引用内容
- 分割线(block_type: 6)- 视觉分隔
🔐 所需权限
应用身份权限(使用 tenantaccesstoken)
重要:本技能使用 tenantaccesstoken(应用级令牌),无需用户授权即可使用。
| 权限 | 说明 |
|---|
| drive:drive | 查看、评论、编辑和管理云空间中所有文件 |
| drive:file |
上传、下载文件到云空间 |
| docx:document | 创建及编辑新版文档 |
| space:folder:create | 创建云空间文件夹 |
| docs:permission.member:add | 添加协作者权限 |
权限申请链接
https://open.feishu.cn/app/YOURAPPID/auth?q=drive:drive,drive:file,docx:document,space:folder:create,docs:permission.member:add
Token 获取方式
技能自动使用 tenantaccesstoken,无需手动配置:
javascript
// 内部实现:使用 APPID 和 APPSECRET 获取 tenantaccesstoken
async function getTenantToken() {
const result = await httpRequest(POST, /auth/v3/tenantaccesstoken/internal/, {
body: { appid: CONFIG.APPID, appsecret: CONFIG.APPSECRET }
});
return result.tenantaccesstoken;
}
Token 有效期:2 小时(自动刷新)
⚠️ 配置参数
重要说明:本技能使用 tenantaccesstoken(应用级令牌),所有配置通过环境变量设置。
| 参数 | 说明 | 默认值 |
|---|
| FEISHUAPPID | 飞书应用 ID | 必填(从.env 文件加载) |
| FEISHUAPPSECRET |
飞书应用密钥 | 必填(从.env 文件加载) |
| DEFAULT
OWNERID | 协作者 user
id(用户的 openid) | 必填(从.env 文件加载) |
| ROOT
LOGFOLDER_NAME | 日志根文件夹名称 | 可选,默认:工作日志 |
环境变量设置方式
方式 1:在 .env 文件中配置(推荐)
bash
~/.openclaw/workspace/.env
FEISHU
APPID=your
appid
FEISHU
APPSECRET=your
appsecret
DEFAULT
OWNERID=your
openid
ROOT
LOGFOLDER_NAME=工作日志
方式 2:在 Shell 中导出
bash
export FEISHUAPPID=yourappid
export FEISHUAPPSECRET=yourappsecret
export DEFAULTOWNERID=youropenid
🔑 如何获取 Open ID
方法 1: 通过 API 获取
bash
TOKEN=$(curl -s -X POST https://open.feishu.cn/open-apis/auth/v3/tenant
accesstoken/internal/ \
-H Content-Type: application/json \
-d {app
id:clixxx,app
secret:xxx} | jq -r .tenantaccess_token)
curl -s https://open.feishu.cn/open-apis/contact/v3/users?useridtype=openid&pagesize=10 \
-H Authorization: Bearer $TOKEN | jq .data.items[] | {openid, userid}
方法 2: 从消息事件中获取
消息 payload 中的 sender.open_id
方法 3: 从飞书开发者后台查看
应用管理 > 权限管理 > 已授权用户
📊 输出结果
成功时返回:
json
{
success: true,
date: 2026-03-04,
title: 华为会议记录,
folder: {
root: 日志,
year: 2026 年,
month: 03 月,
day: 04 日,
subfolder: log,
token: fld_xxx
},
document: {
title: 2026-03-04 华为会议记录,
document_id: doxxx,
url: https://feishu.cn/docx/doxxx,
existed: false,
permission_added: true
},
permissions: