Create and populate Feishu (Lark) Bitable (multidimensional tables) with automated cleanup. Use when the user needs to: 1. Create a new Bitable from scratch...
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install feishu-bitable-creator或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install feishu-bitable-creator⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/feishu-bitable-creator/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: feishu-bitable-creator description: | Create and populate Feishu (Lark) Bitable (multidimensional tables) with automated cleanup. Use when the user needs to: 1. Create a new Bitable from scratch with clean structure (no placeholder rows/columns) 2. Batch create fields and records in a Bitable 3. Convert structured data into a Bitable format 4. Create data tables for research, comparison, or tracking purposes
Automatically handles: empty placeholder row cleanup, default column removal, intelligent primary field naming, and batch record creation. metadata: openclaw: requires: config: ["channels.feishu.appId", "channels.feishu.appSecret"] emoji: 📊 ---
Creates clean, ready-to-use Feishu Bitable tables with automatic cleanup and data population.
This skill requires a pre-configured Feishu (Lark) integration via OpenClaw's channel system. It does not accept API keys directly from the user.
~/.openclaw/openclaw.json:```json { "channels": { "feishu": { "enabled": true, "appId": "cli_xxxxxxxxxxxxxxxx", "appSecret": "your-app-secret" } } } ```
addBitableAdmin() function requires the owner's explicit user_id obtained from the conversation context, ensuring consent.Your Feishu app must have these permissions granted:
| Permission | Purpose | |------------|---------| | bitable:app | Create and manage Bitable apps | | drive:permission:manage | Add users as admins to documents | | drive:drive:read | Read drive contents |
user_id from conversation context — the agent cannot arbitrarily add unknown users.Before using this skill, ensure your OpenClaw host admin has:
~/.openclaw/openclaw.jsonFor detailed setup, see: https://docs.openclaw.ai/channels/feishu
Problem with default Bitable creation:
This skill solves these issues:
// 1. Create table (auto-cleans placeholder rows & default columns)
const table = await feishu_bitable_create_app({ name: "项目名称清单" });
// Returns: { app_token, url, table_id, primary_field_name, cleaned_placeholder_rows, cleaned_default_fields }
// 2. Add owner as admin (REQUIRED - get user_id from conversation context)
await addBitableAdmin({
app_token: table.app_token,
user_id: "ou_xxxxxxxxxxxxxxxx" // Get from conversation context or Feishu user profile
});
// 3. Create RICH fields with tags/categories (建议根据场景选择)
// 参考 "Designing Rich Fields" 章节,选择适合的维度字段
// 4. Add records with complete tag information
await feishu_bitable_create_record({
app_token: table.app_token,
table_id: table.table_id,
fields: {
[table.primary_field_name]: "项目A",
"标签": ["AI", "开源"], // MultiSelect for filtering
"分类": "技术", // SingleSelect for grouping
"状态": "进行中", // SingleSelect for workflow
"优先级": "高" // SingleSelect for sorting
}
});
return table.url;
💡 核心建议: 为了让多维表格真正发挥作用,建议设计丰富的标签/分类字段,但根据实际场景灵活选择。
根据数据类型,考虑添加以下维度字段:
| 数据场景 | 建议字段 | 用途 | |---------|---------|------| | 项目管理 | 状态、优先级、负责人、截止日期 | 追踪进展,分配任务 | | 研究/调研 | 分类、标签、来源、评分 | 归类信息,评估价值 | | 产品/功能 | 模块、优先级、状态、负责人 | 产品规划,迭代管理 | | 客户/用户 | 类型、阶段、标签、负责人 | 客户分层,跟进管理 | | 竞品分析 | 分类、评分、标签、来源 | 对比分析,筛选查看 |
| 字段名 | 类型 | 适用场景 | |--------|------|---------| | 标签 | MultiSelect | 一个项目可属于多个类别,用于交叉筛选 | | 分类 | SingleSelect | 一级分类,用于分组统计 | | 状态 | SingleSelect | 有明确流转阶段,如待办→进行中→完成 | | 优先级 | SingleSelect | 需要排序或区分重要性 | | 负责人 | User | 需要分配到人 | | 日期 | DateTime | 有时间节点要求 | | 评分 | Number | 需要量化评估 | | 来源 | SingleSelect | 需要追踪信息出处 |
示例1:开源大模型研究
const fields = [
{ name: "模型名称", type: 1 },
{ name: "开发团队", type: 1 },
{ name: "参数量", type: 1 },
// 维度字段(根据数据特点选择)
{ name: "技术标签", type: 4 }, // ["MoE", "多语言", "代码", "轻量级"]
{ name: "地区", type: 3 }, // "美国"/"中国"/"欧洲"
{ name: "模型类型", type: 3 }, // "通用"/"代码"/"推理"
{ name: "适用场景", type: 4 }, // ["企业部署", "端侧运行", "科研"]
{ name: "开源协议", type: 3 }, // "Apache-2.0"/"MIT"
{ name: "发布日期", type: 5 },
{ name: "特点描述", type: 1 }
];
示例2:工作任务清单
const fields = [
{ name: "任务名称", type: 1 },
{ name: "描述", type: 1 },
// 维度字段
{ name: "分类", type: 3 }, // "技术"/"产品"/"运营"
{ name: "状态", type: 3 }, // "待办"/"进行中"/"已完成"
{ name: "优先级", type: 3 }, // "P0"/"P1"/"P2"
{ name: "负责人", type: 11 }, // @username
{ name: "截止日期", type: 5 },
{ name: "标签", type: 4 } // ["紧急", "重要", "外部依赖"]
];
设计完字段后,问自己:
如果以上问题都有明确答案,说明字段设计合理!
// 创建表格
const table = await feishu_bitable_create_app({ name: "全球开源大模型TOP10" });
// 添加管理员
await addBitableAdmin({ app_token: table.app_token, user_id: bossUserId });
// 创建丰富的字段(带标签/分类)
const fields = [
{ name: "排名", type: 2 }, // Number
{ name: "模型名称", type: 1 }, // Text
{ name: "开发团队", type: 1 }, // Text
{ name: "参数量", type: 1 }, // Text
{ name: "标签", type: 4, property: { options: [ // MultiSelect
{ name: "MoE" }, { name: "多语言" }, { name: "代码" },
{ name: "轻量级" }, { name: "推理优化" }, { name: "国产" }
]}},
{ name: "地区", type: 3, property: { options: [ // SingleSelect
{ name: "美国" }, { name: "中国" }, { name: "欧洲" },
{ name: "中东" }, { name: "其他" }
]}},
{ name: "类型", type: 3, property: { options: [ // SingleSelect
{ name: "通用模型" }, { name: "代码模型" }, { name: "推理模型" }
]}},
{ name: "开源协议", type: 3, property: { options: [ // SingleSelect
{ name: "Apache-2.0" }, { name: "MIT" }, { name: "Llama License" },
{ name: "Qwen License" }
]}},
{ name: "GitHub星标", type: 2 }, // Number
{ name: "发布日期", type: 5 }, // DateTime
{ name: "特点", type: 1 }, // Text
{ name: "适用场景", type: 4, property: { options: [ // MultiSelect
{ name: "企业部署" }, { name: "端侧运行" }, { name: "科学研究" },
{ name: "商业应用" }, { name: "教育学习" }
]}}
];
for (const field of fields) {
await feishu_bitable_create_field({
app_token: table.app_token,
table_id: table.table_id,
field_name: field.name,
field_type: field.type,
property: field.property
});
}
// 添加带完整标签的数据
await feishu_bitable_create_record({
app_token: table.app_token,
table_id: table.table_id,
fields: {
[table.primary_field_name]: "Llama 3",
"模型名称": "Llama 3",
"排名": 1,
"开发团队": "Meta",
"参数量": "8B/70B/400B",
"标签": ["多语言"],
"地区": "美国",
"类型": "通用模型",
"开源协议": "Llama License",
"GitHub星标": 50000,
"发布日期": 1713398400000, // 2024-04-18
"特点": "开源模型领导者,性能对标GPT-4",
"适用场景": ["企业部署", "商业应用", "科学研究"]
}
});
IMPORTANT: Tool creates table but does NOT add permissions. You must add the owner as admin manually.
/**
* Add a user as admin to a Bitable table
* @param app_token - The Bitable app token
* @param user_id - The user's open_id (from conversation context)
*/
async function addBitableAdmin({ app_token, user_id }) {
const token = await getTenantAccessToken();
const response = await fetch(
`https://open.feishu.cn/open-apis/drive/v1/permissions/${app_token}/members/batch_create?type=bitable`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
members: [{
member_type: 'openid',
member_id: user_id,
perm: 'full_access'
}]
})
}
);
const result = await response.json();
if (result.code === 0) {
console.log('✅ Successfully added owner as admin');
return result.data;
} else {
throw new Error(result.msg);
}
}
bitable:app - Manage Bitable appsdrive:permission:manage - Manage document permissions| Table name contains | Primary field becomes | |---------------------|----------------------| | "项目" | "项目名称" | | "研究" | "研究名称" | | "测试" | "测试项" | | "数据" | "数据项" | | "任务" | "任务名称" | | "记录" | "记录项" | | Other (≤6 chars) | Use table name as-is | | Other (>6 chars) | First 4 chars + "..." |
| Type ID | Name | Use For | |---------|------|---------| | 1 | Text | Names, descriptions | | 2 | Number | Counts, amounts | | 3 | SingleSelect | Status, priority | | 4 | MultiSelect | Tags, features | | 5 | DateTime | Dates, deadlines | | 7 | Checkbox | Done/Incomplete | | 11 | User | Assignees |
async function createBitableForBoss({ tableName, records, bossUserId }) {
// 1. Create table
const table = await feishu_bitable_create_app({ name: tableName });
// 2. Add owner as admin
await addBitableAdmin({
app_token: table.app_token,
user_id: bossUserId
});
// 3. Create RICH fields with tags/categories (关键!)
const fields = [
{ name: "排名", type: 2 },
{ name: "名称", type: 1 },
{ name: "标签", type: 4 }, // MultiSelect - 最关键!
{ name: "分类", type: 3 }, // SingleSelect
{ name: "状态", type: 3 }, // SingleSelect
{ name: "优先级", type: 3 }, // SingleSelect
{ name: "负责人", type: 11 }, // User
{ name: "来源", type: 3 }, // SingleSelect
{ name: "评分", type: 2 }, // Number
{ name: "日期", type: 5 }, // DateTime
{ name: "描述", type: 1 } // Text
];
for (const field of fields) {
await feishu_bitable_create_field({
app_token: table.app_token,
table_id: table.table_id,
field_name: field.name,
field_type: field.type
});
}
// 4. Add records with complete tags
for (const record of records) {
await feishu_bitable_create_record({
app_token: table.app_token,
table_id: table.table_id,
fields: {
[table.primary_field_name]: record.name,
"名称": record.name,
"标签": record.tags, // 必填!
"分类": record.category, // 必填!
"状态": record.status || "待处理",
"优先级": record.priority || "中",
"来源": record.source || "搜索",
"描述": record.description
}
});
}
return {
url: table.url,
message: `✅ Table created with rich tags: ${table.url}`
};
}
// Usage
const result = await createBitableForBoss({
tableName: "AI开源项目研究",
records: [
{
name: "AutoGPT",
tags: ["AI代理", "自动化", "热门"], // MultiSelect
category: "智能体", // SingleSelect
priority: "高",
source: "GitHub",
description: "自主递归任务执行AI代理"
}
],
bossUserId: "ou_xxxxxxxxxxxxxxxx" // Replace with actual user's open_id
});
{ name: "GitHub星标", type: 2 }, { name: "使用场景", type: 4 } ], records: [{ "AI框架对比": "AutoGPT", "框架名称": "AutoGPT", "GitHub星标": 157000, "使用场景": ["自动化", "研究"] }], bossUserId: "ou_xxxxxxxxxxxxxxxx" // Replace with actual user's open_id });
## Tips
1. **设计丰富的标签字段**: 为了让多维表格发挥作用,建议根据数据特点添加标签、分类、状态等维度字段(参考 "Designing Rich Fields" 章节)
2. **根据场景选择字段**: 不同数据类型需要不同的维度字段,如项目管理需要"状态",研究调研需要"来源",灵活设计
3. **先想怎么用**: 设计字段前先思考用户会如何筛选/分组/排序数据
4. **Multi-select values**: Pass as array: `["标签A", "标签B"]`
5. **User ID**: Get from conversation context (e.g., `ou_xxxxxxxxxxxxxxxx`)
6. **Cleanup verified**: Tool returns `cleaned_placeholder_rows` and `cleaned_default_fields`
7. **Field order**: Create fields first, then add records
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| FieldNameNotFound | Wrong primary field name | Check `primary_field_name` in result |
| 400 Bad Request | Invalid field type/value | Verify field_type ID |
| Permission Denied | Missing `drive:permission:manage` | Check app permissions |
| User Not Found | Wrong user_id format | Use `openid` type |
## Output Format
✅ Table "项目名称" created successfully!
🔗 URL: https://my.feishu.cn/base/xxxxxxxxxxxxx 🧹 Cleanup: 10 placeholder rows, 4 default columns deleted 👤 Owner: Added as admin (full_access) 📊 Records: X records added 📝 Fields: 名称, 标签, 分类, 状态, 优先级, 负责人, 日期, 描述 💡 Tip: 建议添加标签/分类/状态等维度字段,让表格支持多维筛选和分组
**设计检查建议**:
- 是否可以根据标签交叉筛选数据?
- 是否可以按分类分组查看?
- 是否可以按状态/优先级排序?
- 数据收集时这些字段是否容易获取?
如果以上问题都有答案,说明字段设计合理!
- ✅ 优先级 (SingleSelect) - for sorting安装 Feishu Bitable Creator 后,可以对 AI 说这些话来触发它
Send a Slack message to the #engineering channel about the deployment
Formats and sends the message with relevant context, tagging the right people
Summarize all unread messages in my inbox from today
Reads messages across connected channels and returns a prioritized summary
Draft a reply to this customer complaint and send it for review
Writes an empathetic, professional response and routes it to the approval queue
将技能文件夹放到 ~/.claude/skills/feishu-bitable-creator/ 目录(个人级,所有项目可用),或 .claude/skills/feishu-bitable-creator/(项目级)。重启 AI 客户端后,用 /feishu-bitable-creator 主动调用,或让 AI 根据上下文自动发现并使用。
Feishu Bitable Creator 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Feishu Bitable Creator 可免费安装使用。请查阅仓库了解许可证信息。
Create and populate Feishu (Lark) Bitable (multidimensional tables) with automated cleanup. Use when the user needs to: 1. Create a new Bitable from scratch...
Feishu Bitable Creator 属于「Communication」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。