Back to skills
SKILL.md
Jinshuju Table
ASecurity通过金数据(Jinshuju,jinshuju.net)MCP 操作用户托管在金数据平台上的数据表格:创建 / 编辑数据表与列(含自动计算的公式列);查询、新增(单条或批量)、更新、批量更新、删除行数据;用上传凭证把本地文件写入附件列;查询账户套餐额度与团队成员。仅在用户操作其金数据数据表时使用——触发信号:提到 金数据表格 / Jinshuju 表格 / 数据表,或要在金数据上建表、加改列、批量维护行数据。不要用于:用代码开发表格系统、处理本地文件或表格(Excel / CSV)、搭建对外收集的表单 / 问卷、图片 / 票据 OCR,以及与金数据平台无关的通用数据处理。
- 417 stars
- 0 votes
- 0 copies
- 16 views
- Added September 8, 2026
Works with
Security analysis
100/100Pro scans all 5 files and shows the line behind each finding
npx -y skills add infometa/workbuddyskills --skill jinshuju-table --agent claude-codeAre you the author of Jinshuju Table?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/infometa-jinshuju-table)---
name: jinshuju-table
slug: jinshuju-table
displayName: 金数据AI表格
description: "通过金数据(Jinshuju,jinshuju.net)MCP 操作用户托管在金数据平台上的数据表格:创建 / 编辑数据表与列(含自动计算的公式列);查询、新增(单条或批量)、更新、批量更新、删除行数据;用上传凭证把本地文件写入附件列;查询账户套餐额度与团队成员。仅在用户操作其金数据数据表时使用——触发信号:提到 金数据表格 / Jinshuju 表格 / 数据表,或要在金数据上建表、加改列、批量维护行数据。不要用于:用代码开发表格系统、处理本地文件或表格(Excel / CSV)、搭建对外收集的表单 / 问卷、图片 / 票据 OCR,以及与金数据平台无关的通用数据处理。"
version: 1.0.0
author: Jinshuju
license: MIT
platforms: [macos, linux, windows]
metadata:
hermes:
tags: [Tables, Database, Data Management, Productivity, 金数据表格]
category: productivity
related_skills: []
---
# 金数据表格(Jinshuju Tables)
金数据(jinshuju.net)的**数据表格**是以「列 + 行」组织的结构化数据表(类似多维表格 / 在线数据库)。通过金数据 MCP,你可以用自然语言完成数据表搭建与行数据管理的全流程,**替代登录后台手动操作**。
数据表格与用于对外收集的「在线表单」是不同产品:数据表用 `create_table` / `edit_table` 建改;行数据(entries)两者共用同一批 entries 工具。本 skill 只处理数据表格。
## When to Use
本 skill **仅处理金数据数据表格(jinshuju.net)** 的表结构与行数据管理,且需满足以下任一**平台信号**才触发:
- 用户明确提到"金数据表格"、"Jinshuju 表格"、"数据表"
- 用户要在金数据上**建数据表、加/改列、增删改查或批量维护行数据**
- 用户要查询本账户的套餐额度、团队成员
> ⚠️ **前置条件**:表格工具需账户开通「新版表格」(billing 侧 `all_new_table_enabled`)。未开通时 `list_tables` 等会报错,说明原因并引导用户在金数据后台开通。
## When NOT to Use
以下场景**不要**用本 skill,直接退出、交给通用能力处理:
- 用代码 / 程序开发表格、数据库系统
- 处理本地文件、Excel / CSV、文档分析
- 搭建对外收集的**表单 / 问卷 / 报名表**(那是金数据表单产品,另有专家 / skill)
- 图片、账单、票据的 OCR / 识别
- 与金数据平台无关的通用数据处理
判断不属于金数据数据表操作时,**不要调用任何 MCP 工具**,按通用能力回答即可。
## Quick Reference
| 场景 | MCP 工具 |
|------|----------|
| 列出数据表 | `list_tables` |
| 查看数据表详情(列结构) | `get_table` |
| 创建数据表 | `create_table` |
| 改表名 / 增删改列 | `edit_table` |
| 列出行数据 | `list_entries`(`form_token` 传表 token) |
| 查看单行 | `get_entry` |
| 新建行(单条) | `create_entry` |
| 批量新建行(一次最多 200 行) | `create_entries` |
| 更新行(单条) | `update_entry` |
| 批量更新行(一次最多 200 行,PATCH) | `patch_entries` |
| 删除行(单条) | `delete_entry` |
| 上传文件写入附件列 | `prepare_entry_attachment_upload` |
| 当前用户信息 | `get_current_user` |
| 当前企业账户/套餐(确认是否开通新版表格) | `get_current_billing_account` |
| 列出团队成员 | `list_account_users` |
## Procedure
### 原则
> ⚠️ **绝不绕过 MCP**:金数据 MCP 工具不可用(未连接 / 授权失败 / 未开通新版表格 / 调用持续报错)时**立即停止**,**禁止**改用浏览器自动化(Playwright 等)、直接调 GraphQL / REST API、curl 或模拟后台操作来替代。正确做法见下方「MCP 不可用时」。
1. **先看再动**:操作未知数据表前,先 `get_table` 拿列结构——每列的 `api_code`、选项列的 `choices[].api_code`。`create_entry` / `update_entry` 的键**必须是列 `api_code`**,传中文列名会被服务端丢弃。
2. **filters 优先**:`list_entries` 支持 `filters=[{field, operator, value}]` 下推过滤,比拉全量再本地筛选快几个数量级。单次上限 50 行,超过用 `next`(serial_number 游标)翻页。
3. **先列再改**:批量操作前先 `list_entries` 拉出命中行展示给用户,**用户确认后**再执行——批量更新用 `patch_entries` 一次提交(≤200/批);删除仍逐行循环 `delete_entry`,每 20 行汇报一次进度。
4. **永不主动开 PUT**:`update_entry` 默认 `is_put=false`(PATCH,只改提供的列)。`is_put=true` 会把未提供列全部清空,只有用户明确说"整行替换"且已列全所有列时才允许,且需二次确认。
5. **脱敏展示**:输出手机号/邮箱默认打码(`138****1234`),除非用户明确要求原文。
6. **不静默吞错**:列类型不支持、套餐限制、权限不足、未开通新版表格的报错原文回显并给出替代方案。
### 典型任务流
**① 新建数据表**
```
1. create_table,传 name + fields(列定义列表)
- 列类型见「支持的列类型」;单选/多选列(RadioButton / CheckBox)传 choices
- 需要跨列自动计算传 FormulaField(公式列)
2. 返回表结构与 token
```
**② 加 / 改列**
```
1. get_table → 记下现有列的 api_code
2. edit_table,用 fields 原子操作:
- add: 新增列(同 create_table 的列定义)
- remove: 传要删列的 api_code 数组(删有数据的列会永久清除该列数据,先确认)
- update: 改列属性,带 api_code 保持 identity
- update_choices: 增删改选项(改名用 update 保留 api_code)
```
**③ 条件查询 / 导出行**
```
1. get_table → 记下列 api_code 和选项 api_code
2. list_entries(form_token 传表 token)用 filters 下推条件(选项列传 api_code 不是 label)
3. next 翻页拿全部数据
4. Markdown 表格展示,表头用 get_table 的列 label,敏感列脱敏
5. 询问用户是否需要生成 CSV artifact
```
**④ 批量更新行**
```
1. get_table → 拿目标列 api_code + 目标选项 api_code
2. list_entries + filters 拉出命中集,展示前 10 行 + 总数
3. 用户确认后,用 patch_entries 一次提交(每行 { serial_number, entry },PATCH 只改提供列,每批 ≤200 自行分批)
4. 读返回的 updated_count + failed_rows(按 serial_number),向用户汇总成功/失败
```
**⑤ 批量导入行**
```
1. get_table → 拿目标列 api_code + 选项 api_code
2. 把每行整理成 { api_code: value } 对象(选项传 api_code)
3. create_entries 一次提交(每批 ≤200,超过自行分批循环)
4. 读返回的 created_count + errors(按下标),向用户汇总成功/失败
注意:不幂等,重复提交会产生重复行;失败后不要整批重发,按 errors 下标只补失败行
```
### 支持的列类型
| 列类型 | 说明 |
|--------|------|
| `TextArea` | 文本 |
| `NumberField` | 数字(显示精度用 `displayPrecision`,不可设存储 `precision`) |
| `DateTimeField` | 日期时间(`precision`:month / day / minute / second) |
| `BooleanField` | 布尔(勾选) |
| `MobileField` | 手机号 |
| `EmailField` | 邮箱 |
| `LinkField` | 链接 |
| `RadioButton` | 单选(传 `choices`) |
| `CheckBox` | 多选(传 `choices`) |
| `AttachmentField` | 附件(上传限制固定,不接受 max_file_quantity / max_size) |
| `FormulaField` | 公式列,自动计算(只读;`formula_display` 控制展示;不可设存储精度) |
### 关键格式规范
**entry payload 的键是列 `api_code`,不是中文列名:**
| 列类型 | 正确值格式 |
|----------|-----------|
| TextArea | 纯字符串 `"备注内容"` |
| MobileField | 纯字符串 `"13812345678"` |
| EmailField | 纯字符串 `"a@b.com"` |
| LinkField | 纯字符串 URL `"https://…"` |
| NumberField | 数字 `123` 或字符串 `"123"` |
| DateTimeField | ISO 字符串 `"2026-05-01 14:30"` |
| BooleanField | 布尔 `true` / `false` |
| RadioButton | 选项 api_code `"status_done"`(不是 label "已完成") |
| CheckBox | api_code 数组 `["tag_a", "tag_b"]` |
| AttachmentField | 上传凭证返回的引用(先 `prepare_entry_attachment_upload`) |
| FormulaField | 只读,写入被忽略 |
**list_entries filters operator 速查:**
| operator | 适用列 | value 形式 |
|----------|----------|-----------|
| `eq` / `ne` | 所有 | 标量 |
| `gt` / `gte` / `lt` / `lte` | 数字、日期 | 标量 |
| `between` | 数字、日期 | `[min, max]` |
| `any_in` / `none_in` | 文本、选项 | 数组 |
| `like` / `not_like` | 文本、选项 | 子串(**不带 % 通配符**) |
| `null` / `not_null` | 所有 | 省略 |
> 特殊字段:`created_at`(创建时间,配 `gte` / `between` 等);`creator_id`(创建者用户 id,**只支持 `eq`**,value 是行返回的 `creator_id` 字符串)——按创建者查行用它。
## Pitfalls
- **entry 键写成中文列名** → 服务端静默丢弃,报 "Entry attributes cannot be empty";键必须是列 `api_code`
- **选项列传 label**(如 `"已完成"`)→ 400 invalid choice;传 `choices[].api_code`
- **`is_put=true` 做部分更新** → 未提供列全部清空;部分更新永远保持默认 `is_put=false`
- **`like` 带 SQL 通配符**(`"张%"` / `"%张%"`)→ 按字面匹配 `%`,永远查不到;直接传 `"张"`
- **`operator` 与列类型不匹配** → 400,错误信息会列出该列可用 operator,照着改
- **简单列值包成对象**(`{"value": "abc"}`)→ 直接传字符串
- **批量新建行循环调 `create_entry`** → 改用 `create_entries` 一次提交(≤200 行/批);它部分成功、按下标返回 `errors`、不幂等(重复调会生成重复行)
- **批量更新行循环调 `update_entry`** → 改用 `patch_entries`(一次 ≤200 行,每行 `{ serial_number, entry }`,PATCH 只改提供列,按 serial_number 返回 `failed_rows`);`delete_entry` 仍无批量版,逐行循环
- **给附件列设上传限制**(`max_file_quantity` / `max_size`)→ 表格附件列限制固定,传了会被拒
- **给数字 / 公式列设 `precision`** → 表格数字 / 公式列不支持存储精度;显示格式用 `displayPrecision`
- **给非日期时间列传 `precision`** → `precision`(month/day/minute/second)仅 `DateTimeField` 可用
- **给 `RadioButton` / `CheckBox` 之外的列传 `choices`** → 仅这两类支持选项,其他列传 choices 无效
- **写入 `FormulaField`** → 公式列只读,写入被忽略;它的值由公式自动算
- **改选项文案用 remove + add** → 会换 api_code,历史数据引用失效;改名用 `fields.update_choices` 的 update(保留 api_code)
- **删列 / 删选项不先确认数据** → 删有数据的列 / 选项会永久清除数据且不可恢复;`fields.remove` / `update_choices.remove` 前先向用户说明影响、确认后再删
- **FormulaField 引用同一请求新增的列** → 新列还没有 api_code,公式里用 `<gd-field data-cid="...">` 引用其 `cid`,不要猜 api_code
- **把 table token 当 entry 定位符** → `get_entry` / `update_entry` / `delete_entry` 靠 **`serial_number`**(整数)定位单行,不是 token
- **限流报错(HTTP 429 / code 14003)把原始 JSON 抛给用户** → 改为告知"接口请求频繁,请等 1–2 分钟后重试",放慢节奏、合并可批量的请求;不要立刻疯狂重试
## Verification
操作完成后确认:
- **创建/编辑数据表**:返回中包含有效表 token 与预期的列结构(列 `api_code`、类型)
- **create_entry**:返回包含 `serial_number`(整数)
- **create_entries**:返回 `created_count` 与提交行数一致,`errors` 为空(有部分失败时按下标核对原因)
- **update_entry**:返回的列值与提交值一致
- **patch_entries**:返回 `updated_count` 与提交行数一致,`failed_rows` 为空(有部分失败时按 serial_number 核对 reason)
- **delete_entry**:后续 `get_entry` 返回 404 或该行不再出现在 `list_entries`
- **批量操作**:向用户汇报"共 N 行,成功 X 行,失败 Y 行"
## MCP 配置
金数据 MCP 端点:`https://jinshuju.net/mcp`(表单与表格共用同一端点)
**方式 A · HTTP Basic(API Key/Secret)**
```bash
echo -n "YOUR_API_KEY:YOUR_API_SECRET" | base64
```
```json
{
"mcpServers": {
"jinshuju-table": {
"url": "https://jinshuju.net/mcp",
"headers": { "Authorization": "Basic <BASE64>" }
}
}
}
```
**方式 B · OAuth 2.0**
```json
{
"mcpServers": {
"jinshuju-table": { "url": "https://jinshuju.net/mcp" }
}
}
```
常见配置错误:漏 `/mcp` 后缀、用 `http://`、`Authorization` 缺 `Basic ` 前缀、用 `command/args`(stdio 写法,金数据是远程 HTTP MCP 不支持)。
### MCP 不可用时
工具未连接 / 授权失败 / 未开通新版表格 / 持续报错时,按顺序降级,**不要**用任何非标方式替代:
1. 告知用户"金数据 MCP 未就绪 / 未开通新版表格",不要假装已完成操作。
2. 对照上面的「常见配置错误」引导排查(端点、`Basic ` 前缀、OAuth 授权等);未开通新版表格的引导用户在后台开通。
3. 仍不行,就给出在金数据后台(jinshuju.net)手动操作的步骤指引。
> 超宽表(几十列)即使 MCP 正常,也建议先 `create_table` 建核心列,再用 `edit_table` 分批补列,降低超长请求被截断 / 超时的风险。
Files in this skill
- SKILL.md
- references/examples.md
- references/guide.md
- references/tools.md
- scripts/setup.py
Attribution
Related skills
View all in development →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.