makecindy / makecindy/cindy

功能建议:新增飞书多维表(Bitable)数据读取能力,CDP 无法读取 canvas 渲染的表格数据

Open
#2,335 1 comment 0 reactions 0 assignees View on GitHub
feature
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: 板栗
**客户端版本**: 0.1.38

---

## 使用场景

编织项目(短视频 IP 运营)需要读取飞书多维表里已填好的运营数据(任务排期表的【运营】看板、【带货效果】看板等)来做周复盘。用户已在飞书填好数据,但 Cindy 无法读取。

## 现象

飞书多维表(Bitable)的表格数据用 canvas 渲染,通过 CDP 读取 DOM 拿不到单元格文本。

尝试过的方法均失败:
1. CDP DOM 读取(.bitable-cell / .grid-cell / [data-record-id] 等选择器全部为空)
2. 飞书内部 API:/space/api/bitable/datasource/list 返回 403 或 Failed to fetch;record 相关端点 404
3. Accessibility tree(canvas 不暴露表格数据)
4. 键盘模拟 Cmd+A/Cmd+C(无法选中 canvas grid 内容)
5. bitableStore JS 对象(只暴露表名和元数据)
6. IndexedDB(只有队列和版本号)
7. 飞书 Open API(跨域被拦截,需要 tenant access token,本机没有)

## 诉求

希望 Cindy 新增飞书多维表数据读取能力,包括但不限于:
- 通过飞书 Open API(或 MCP 集成)直接读取多维表记录数据
- 或提供更好的 CDP/浏览器解析方案读取 canvas 渲染的表格内容
- 读取文档(docx)的完整正文(目前 docx 正文懒渲染,innerText 只能读到视口部分)

## 建议方案

1. 集成飞书开放平台 API(读取 bitable 记录),需要用户授权 app_token;
2. 或增强 CDP 方案:识别飞书 bitable 的 canvas 渲染,通过截图 OCR 或前端 API 读取;
3. 或提供飞书 MCP 插件,支持读取多维表记录与 docx 正文。

## 影响

编织项目周复盘依赖读取飞书里的运营数据。当前只能靠截图或用户手动导出数据,无法自动读取,严重影响自动化复盘流程。

## 复现

1. 打开飞书多维表(如 https://my.feishu.cn/wiki/Vnxww0MSEif8WNkEu5LcEccWnBe)
2. 尝试通过 CDP/DOM 读取表格数据
3. 表格数据在 canvas 中,DOM 选择器全部为空,无法读取
---
**版本区域**: CN
**OS**: darwin arm64 (24.2.0)
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

The issue names no files or tests, so start by tracing Cindy’s existing CDP/browser data-reading path. Compare the Feishu Open API and MCP authorization requirements with the canvas limitation, then define acceptance checks for authorized Bitable record reads and complete docx text retrieval.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.