Sources: ~/.openclaw/skills, ~/.agents/skills, workshop-skills, workspace/skills
3.8 KiB
3.8 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| feishu-wiki-tools | 读写飞书知识库:增删查改节点、写入页面、创建早报、记录踩坑,基于 tenant_access_token。 |
|
Feishu Wiki Tools
飞书知识库读写操作。所有脚本使用 tenant_access_token,从 ~/.openclaw/openclaw.json 读取凭证。
前置条件
- 飞书应用已开通
wiki:wiki docx:document权限 - 机器人已加入目标知识库并获
full_access(参考references/auth.md) - 服务器可访问飞书 API
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
FEISHU_SPACE_ID |
7664817589230570761 |
知识库 Space ID |
FEISHU_ROOT_NODE |
LY5wwNWpniOoFwkHHG4cmDvGnSh |
首页 node token |
FEISHU_DIGEST_PARENT |
BH8AwLgJhipBcUkehCAcyKvDngE |
早报父节点 |
FEISHU_SUMMARY_PARENT |
XunCwlk7JiSTuAkvoKlcq54pnPb |
每日总结父节点 |
通用脚本(CRUD)
初始化 Token
source scripts/init_token.sh
设置 BEARER_TOKEN 环境变量。其他脚本会自动调用。
列节点
python3 scripts/wiki_list.py [parent_node_token]
不传 parent 则列根目录。
创建节点
python3 scripts/wiki_create.py --title "标题" --parent "PARENT_TOKEN" [--obj-type docx]
读取页面
python3 scripts/wiki_read.py --node "NODE_TOKEN"
输出纯文本内容到 stdout。
写入页面
python3 scripts/wiki_write.py --node "NODE_TOKEN" --file content.md
支持 Markdown 转换。
✅ 表格支持:
md_to_blocks.py完整支持 Markdown 表格语法(| ... |),会转换为飞书原生表格 block(31)+ 单元格 block(32),由wiki_write.py自动走 descendant API 创建。直接写表格即可,无需改用列表。 (2026-08-11 更正:旧版文档误写「不支持表格」,已核实源码parse_table()完整实现表头/分隔线/行列构建,特此修正。)
删除页面
python3 scripts/wiki_delete.py --node "NODE_TOKEN"
移到回收站(需 space:document:delete 权限)。
特化脚本
创建早报
python3 scripts/create_digest.py --title "07.21 周二 早报" --content content.md
自动挂到 FEISHU_DIGEST_PARENT 按周分组下。
创建方案(方案库)
python3 scripts/create_plan.py --title "方案标题" --content plan.md
自动挂到「📋 方案库」节点(LjXOwVZkriKmQwkjoixcnrSbnhd);同名节点已存在则跳过不重复创建。
记录踩坑
python3 scripts/create_pitfall.py --title "标题" --file content.md
自动挂到 踩坑记录合集 节点下。
创建每日总结
python3 scripts/create_summary.py --title "07.21 周二 总结" --content summary.md
自动挂到 FEISHU_SUMMARY_PARENT(🌙 每日总结)下。内容精简,仅含当日「晚星今日动态」。
Block 类型速查
- 3=heading1, 4=heading2, 5=heading3
- 2=text, 12=bullet, 22=divider, 14=code
- 写入时支持 Markdown → Block 转换(
scripts/md_to_blocks.py)
早报模板渲染注意事项(踩坑)
project/morning-digest-skill/templates/digest.md 由 scripts/build.py 用 Jinja2 渲染,环境为 trim_blocks=True, lstrip_blocks=True(见 build.py)。因此:
- 别用
{% if %}/{% endif %}块做行内条件(如{% if item.summary %}:{{ item.summary }}{% endif %}):trim_blocks 会把该行末尾的换行一起吃掉,导致下一条目粘连到同一行。 - 改用内联表达式:
{{ ':' ~ item.summary if item.summary else '' }},换行保留、每条独立成行。渲染后务必核对是否有条目挤在一行。
参考
references/auth.md— 鉴权配置完整流程references/block_types.md— Docx Block API 参考references/api_endpoints.md— Feishu API 端点速查