返回顶部
f

feishu-whiteboard-extract飞书白板提取

从飞书白板(Whiteboard)中提取所有图片节点的 file_token,用于后续下载/OCR/归档。文档类补充能力。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
297
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

feishu-whiteboard-extract

Feishu Whiteboard Extract

从飞书白板/画板(whiteboard)里提取所有图片节点对应的 file_token,便于后续把图片下载到本地做 OCR/归档。

定位:文档/资料处理链路的补充能力(不是会话发消息)。

用法

bash
node skills/feishu-whiteboard-extract/extractimages.js id>

说明:当前 SDK 调用路径为 client.board.v1.whiteboardNode.list

输出

脚本输出 JSON:

  • - whiteboardid
  • count
  • images[]:每项包含 nodeid 与 file_token

拿到 file_token 后,可用:

  • - skills/feishu-drive-download/scripts/download.js token> 下载
  • 或用官方 feishudrive 工具下载

标准交付补充:整板全图导出(矢量优先)

  • - 整板全图(整板大图)是标准交付的第二部分
1) 第一部分:逐节点图片提取(extract_images.js,用于下载/OCR) 2) 第二部分:整板全图导出(exportboardsvg.js,用于复核与归档)
  • - 这两部分是互补关系:节点提取便于结构化处理,整板导出保证全局上下文与可视化复查。

整板矢量导出

bash

直接输出到 stdout(优先返回 SVG,若服务端降级则可能返回 PNG/JPG)


node skills/feishu-whiteboard-extract/exportboardsvg.js

输出到文件(会按响应 Content-Type 自动修正扩展名)

node skills/feishu-whiteboard-extract/exportboardsvg.js id> /tmp/boardfull.svg

实现说明:

  • - 调用 OpenAPI:GET /open-apis/board/v1/whiteboards/:whiteboardid/downloadas_image
  • Accept 优先请求 image/svg+xml,并兼容 png/jpeg fallback
  • 若返回 image/svg+xml,保存为 .svg
  • 否则按 content-type 推断扩展名(.png/.jpg/.gif)

归档到知识库附件目录(appendix)

建议将整板全图落盘到交付目录:

bash

单白板交付


node skills/feishu-whiteboard-extract/exportboardsvg.js id> appendix/boardfull.svg

多白板交付(避免覆盖)

node skills/feishu-whiteboard-extract/exportboardsvg.js id> appendix/id>_full.svg

Extraction Playbook(经验/踩坑)

这一节总结了白板链接提取 ID、常见报错定位、以及推荐的端到端工作流

1) whiteboard_id / token 从哪里来?如何从链接中提取?

在飞书里,白板/画板通常以链接形式分享。脚本入参一般需要 whiteboard_id(或你在 SDK/API 里看到的 whiteboard token)。

常见 URL 样式(尽量不依赖域名)

不同租户/环境的域名可能不一样,但路径形态通常类似:

  • - 直接白板链接
- https:///board/ - https:///board/?from=...
  • - 带路由前缀/应用前缀(本质仍然能在路径中找到板子的 token)
- https:///base/board/ - https:///workspace/board/
  • - 分享链接(share)/短链跳转
- https:///board/share/ - https:///s/

经验:能从链接里直接看到的那段看起来像 ID/token的字符串,优先当作候选。

提取方法(实用优先)

  1. 1. 优先从路径段提取
- 把 URL 的 path 按 / 分割,找到 board 或 whiteboard 后面的那一段。
  1. 2. 其次从 query 参数提取
- 少数场景会把 token 放在 ?whiteboard_id=... / ?token=... 之类的参数里。
  1. 3. 遇到 share/短链
- share token 往往 不是 whiteboard_id。 - 处理方式:让用户提供打开后地址栏里的真实白板链接,或在浏览器里完成跳转后再取最终 URL 中的 ID。

建议:让用户直接粘贴浏览器地址栏最终落地的 URL,比转发的分享卡片/短链更稳定。

与 Docx 嵌入白板联动(block_type=43)

当白板是作为 Docx 的嵌入块出现时,feishu_doc.read 可能读到的正文几乎为空。这时最稳定的做法是:

1) 对 Docx 调用 feishudoc.listblocks
2) 在返回的 blocks 里找到 block_type = 43 的块(whiteboard embed)
3) 从该 block 的 JSON 中取出 whiteboard_id / whiteboard.token(字段名可能因版本不同略有差异)
4) 把这个 token 作为脚本入参执行提取

示例(伪代码/思路):

  • - Docx:
- feishudoc.listblocks(doctoken) → 找到 blocktype == 43 → 复制里面的 whiteboard token
  • - Whiteboard:

bash
node skills/feishu-whiteboard-extract/extractimages.js id> > images.json

典型坑:分享链接里的 share token 不是 whiteboard_id

  • - 表现:用 share token 跑脚本经常 404 / 看起来找不到
  • 修复:用最终落地的白板 URL里的真实 id,或直接从 Docx 的 block_type=43 block 里取 token

拿到 images.json 后,把 images[].file_token 接到下载链路:

bash

下载单个:


node skills/feishu-drive-download/scripts/download.js

批量下载(示例):

jq -r .images[].file_token images.json | while read -r t; do node skills/feishu-drive-download/scripts/download.js $t; done

2) 常见错误与定位

⚠️ 节点图片下载必须用 medias 接口,不是 files 接口!

这是一个高频踩坑点,已实际触发过 403:

接口路径白板节点图
❌ 错误drive/v1/files/{filetoken}/download403 Forbidden
✅ 正确
drive/v1/medias/{file
token}/download | → 200 OK |

白板节点图片的 file_token 属于媒体文件,必须走 medias 端点。
download_media.js 已修复为直接 HTTP 调用(而非 SDK,规避 SDK 内部路由歧义)。
无需用户级 token,tenantaccesstoken 即可下载。

403 / 404(权限 / 分享 / 可见性)

  • - 403 Forbidden:通常是权限不足
- 白板未分享给应用(bot) - 应用未在对应文档/空间有访问权限 - ⚠️ 或者用了 files 端点而不是 medias 端点(见上方)
  • - 404 Not Found:通常是对象不可见/不存在
- whiteboardid 提取错了(拿了 share token 当 whiteboardid) - 目标白板被删除/迁移,或当前凭证无权看到它(有时也会表现为 404)

排查要点:

  • - 先检查是否用了正确的下载端点(medias vs files)。
  • 再确认 whiteboard_id 是否来自最终落地链接
  • 再确认白板(或所在空间/文档)是否已对应用开放访问(见下文权限/授权)。

400(id 格式 / 字段校验)

常见原因:

  • - whiteboard_id 格式不合法(包含多余字符、截断、把整段 URL 当 ID 传入)
  • 请求字段校验失败(比如分页参数、父节点参数等)

排查要点:

  • - 确保传入的是纯 token/id 字符串,而不是 URL。
  • 把脚本日志里请求参数打印到 debug(但不要打印敏感信息),逐项对照 SDK 的参数定义。

method undefined / xxx is not a function(SDK path 版本差异)

这类错误通常不是权限问题,而是 SDK 调用路径/版本差异

  • - 你以为是 client.xxx.yyy.list(),

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 feishu-whiteboard-extract-1776194648 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 feishu-whiteboard-extract-1776194648 技能

通过命令行安装

skillhub install feishu-whiteboard-extract-1776194648

下载

⬇ 下载 feishu-whiteboard-extract v1.0.0(免费)

文件大小: 18.16 KB | 发布时间: 2026-4-15 13:20

v1.0.0 最新 2026-4-15 13:20
feishu-whiteboard-extract v1.0.0

- Initial release: extract all image node file_tokens from Feishu Whiteboard for download/OCR/archiving.
- Includes command-line scripts for both image extraction (`extract_images.js`) and full board SVG export (`export_board_svg.js`).
- Outputs results as structured JSON for easy integration to downstream workflows.
- Provides detailed guidance on obtaining whiteboard_id, dealing with permission issues, and avoiding common mistakes.
- Notes best practices for batch image retrieval, OCR integration, and archiving, plus error diagnostics and security tips.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部