SkillHub

feishu-file-manager

v1.0.0

飞书云盘文件管理技能。用于读取、下载和管理飞书云盘中的文件。 当用户需要:访问飞书文件、下载文档、读取PDF/Word/PPT文件、分析飞书云盘内容时使用。 核心方法:使用 tenant_access_token 调用 Drive API 下载文件,解析内容返回给用户。

Sourced from ClawHub, Authored by caspian

Installation

Please help me install the skill `feishu-file-manager` from SkillHub official store. npx skills add caspian9/feishu-file-manager

Feishu File Manager | 飞书文件管理器

快速开始

1. 获取凭据

飞书凭据在 ~/.openclaw/openclaw.json 中:

{
  "channels": {
    "feishu": {
      "appId": "cli_xxx",
      "appSecret": "xxx"
    }
  }
}

2. 获取 Token

curl -s -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' 
  -H 'Content-Type: application/json' 
  -d '{"app_id": "cli_xxx", "app_secret": "xxx"}'

返回:{"tenant_access_token": "t-xxx", "expire": 7200, "msg": "ok"}

Token 有效期:约 2 小时,超时后重新获取

3. 访问文件

3.1 从链接提取文件 Token

链接格式 Token 位置
/file/XXXXX XXXXX
/docx/XXXXX XXXXX
/drive/folder/XXXXX XXXXX

3.2 下载文件

curl -s -X GET 'https://open.feishu.cn/open-apis/drive/v1/files/{file_token}/download' 
  -H 'Authorization: Bearer {tenant_access_token}' 
  -o /tmp/filename.ext

3.3 读取内容

文件类型 读取方法
.docx Python unzip 解析 word/document.xml
.pdf pdftotext 或 pdf 工具
.pptx python-pptx 库
.xlsx openpyxl 库

权限清单 | Required Permissions

云盘 Drive

权限 scope 说明
drive:drive 云盘能力总览
drive:file 文件基础操作
drive:file:readonly 只读文件
drive:file:download 下载文件
drive:drive:readonly 只读云盘元信息

文档 Docx

权限 scope 说明
docx:document 文档基础能力
docx:document:readonly 只读文档内容
docx:document:write_only 写入文档

表格 Sheets

权限 scope 说明
sheets:spreadsheet 表格基础能力
sheets:spreadsheet:read 读取表格

多维表格 Bitable

权限 scope 说明
bitable:app 多维表格应用
bitable:app:readonly 只读多维表格

知识库 Wiki

权限 scope 说明
wiki:wiki 知识库基础
wiki:node:read 读取知识库节点

验证方法 | Validation

验证 Token 有效性

curl -s 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' 
  -H 'Content-Type: application/json' 
  -d '{"app_id": "cli_xxx", "app_secret": "xxx"}'
  • 返回 {"msg": "ok"} = 有效
  • 返回 {"msg": "invalid app_id or app_secret"} = 无效

验证文件访问权限

curl -s 'https://open.feishu.cn/open-apis/drive/v1/files/{file_token}' 
  -H 'Authorization: Bearer {token}'
  • 返回文件信息 = 有权限
  • 返回 {"code": 99, "msg": "file not found"} = 无权限或文件不存在

验证文件夹访问

curl -s 'https://open.feishu.cn/open-apis/drive/v1/files?parent_node={folder_token}' 
  -H 'Authorization: Bearer {token}'
  • 返回文件列表 = 有权限
  • 返回空列表可能无权限或文件夹为空

错误处理 | Error Handling

错误码 含义 解决方案
99 文件不存在/无权限 检查 token 或文件是否分享给机器人
404 API 路径错误 检查 API URL
401 Token 过期 重新获取 tenant_access_token
10001 系统错误 稍后重试

文件读取示例

Python 读取 DOCX

from zipfile import ZipFile
import re

def read_docx(filepath):
    with ZipFile(filepath) as z:
        with z.open('word/document.xml') as f:
            content = f.read().decode('utf-8')
            text = re.sub(r'<[^>]+>', '', content)
            return ' '.join(text.split())

读取 PDF

pdftotext file.pdf - | head -100

读取 PPTX

from pptx import Presentation

def read_pptx(filepath):
    prs = Presentation(filepath)
    text = []
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text"):
                text.append(shape.text)
    return 'n'.join(text)

工作流总结

  1. 获取/刷新 token → 调用 auth API
  2. 提取文件 token → 从飞书链接解析
  3. 下载文件 → 调用 drive API
  4. 解析内容 → 根据文件类型选择解析方法
  5. 返回结果 → 给用户

注意事项

  • Token 有时效性(约2小时),长时间操作需刷新
  • 文件必须分享给机器人才能访问
  • 即使文件夹可访问,未分享的文件仍会返回 404
  • 大文件建议先检查文件大小:curl -I .../download 获取 Content-Length