Files
NightStar 3d3dd79df0 Add 39 shared skills from local agent inventory
Sources: ~/.openclaw/skills, ~/.agents/skills, workshop-skills, workspace/skills
2026-09-10 16:54:57 +08:00

122 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: "feishu-wiki-tools"
description: "读写飞书知识库:增删查改节点、写入页面、创建早报、记录踩坑,基于 tenant_access_token。"
metadata:
author: xf
version: "1.0.0"
---
# 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
```bash
source scripts/init_token.sh
```
设置 `BEARER_TOKEN` 环境变量。其他脚本会自动调用。
### 列节点
```bash
python3 scripts/wiki_list.py [parent_node_token]
```
不传 parent 则列根目录。
### 创建节点
```bash
python3 scripts/wiki_create.py --title "标题" --parent "PARENT_TOKEN" [--obj-type docx]
```
### 读取页面
```bash
python3 scripts/wiki_read.py --node "NODE_TOKEN"
```
输出纯文本内容到 stdout。
### 写入页面
```bash
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()` 完整实现表头/分隔线/行列构建,特此修正。)
### 删除页面
```bash
python3 scripts/wiki_delete.py --node "NODE_TOKEN"
```
移到回收站(需 `space:document:delete` 权限)。
## 特化脚本
### 创建早报
```bash
python3 scripts/create_digest.py --title "07.21 周二 早报" --content content.md
```
自动挂到 `FEISHU_DIGEST_PARENT` 按周分组下。
### 创建方案(方案库)
```bash
python3 scripts/create_plan.py --title "方案标题" --content plan.md
```
自动挂到「📋 方案库」节点(`LjXOwVZkriKmQwkjoixcnrSbnhd`);同名节点已存在则跳过不重复创建。
### 记录踩坑
```bash
python3 scripts/create_pitfall.py --title "标题" --file content.md
```
自动挂到 `踩坑记录合集` 节点下。
### 创建每日总结
```bash
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 端点速查