通用飞书互动卡片渲染引擎。用户提供数据源(多维表格/docx文档/wiki/口头描述)和目标群聊,自动将结构化数据渲染为飞书 message card 并推送。 解决消息推送到群猴,带有md格式代码问题。 使用示例:(示例内容根据实际使用情况修改) ``` 1. 读取飞书表信息(url:https://acnjpi84uexx.feishu.cn/docx/H9PtdXn7HoeIOrcyaVqnHG)。 2. 整理表中的内容,分析项目运营过程中的风险问题。 3. 调用 feishu-card-rend
飞书互动卡片渲染引擎
功能概述
飞书互动卡片渲染引擎是一项面向实际任务的技能,主要用于模板引擎,不是规则手册;拿到数据 → 选模板 → 填内容 → 推送;
核心要点
- 用户管内容和意图,技能管展示好看;
- 可执行脚本(推荐优先使用);
- build_card.py — 卡片构建;
使用与执行
模板名 : dashboard | comparison | text_analysis | notice;数据格式 见各模板 Python 文件中的 docstring;validat。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
结果检查与注意事项
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
飞书互动卡片渲染引擎
定位
模板引擎,不是规则手册。 拿到数据 → 选模板 → 填内容 → 推送。用户管内容和意图,技能管展示好看。
技能结构
feishu-card-renderer/
├── SKILL.md ← 本文档
├── scripts/
│ ├── build_card.py ← 核心:模板 + 数据 → 卡片 JSON
│ ├── validate_card.py ← 校验:卡片 JSON 合法性检查
│ └── push_card.py ← 封装:输出 message 工具调用参数
└── templates/
├── __init__.py
├── dashboard.py ← 模板 A:数据看板
├── comparison.py ← 模板 B:对比分析
├── text_analysis.py ← 模板 C:文本分析
└── notice.py ← 模板 D:简讯通知
可执行脚本(推荐优先使用)
build_card.py — 卡片构建
# 从 JSON 文件读取数据(推荐,避免 shell 转义问题)
python scripts/build_card.py --template dashboard --data-file ./data.json
# 直接传 JSON 字符串(简单场景)
python scripts/build_card.py --template notice --data '{"title":"通知","body":"内容"}'
# 从 stdin 读取
echo '{"title":"...","rows":[...]}' | python scripts/build_card.py --template dashboard
# 格式化输出
python scripts/build_card.py --template dashboard --data-file ./data.json --pretty
模板名:dashboard | comparison | text_analysis | notice
数据格式见各模板 Python 文件中的 docstring。
validate_card.py — 卡片校验
python scripts/validate_card.py --card-file ./card.json
python scripts/validate_card.py --card '{"schema":"2.0",...}'
cat card.json | python scripts/validate_card.py
校验通过 → {"valid": true, "errors": [], "warnings": []}(exit 0)
校验失败 → {"valid": false, "errors": [...], "warnings": [...]}(exit 1)
校验规则覆盖所有「关键约束」节的踩坑经验,包括:
- note 标签兼容性、date data_type 禁用手法、page_size 范围、options 列格式、markdown heading 禁用等。
push_card.py — 推送封装
python scripts/push_card.py --chat-id oc_xxx --card-file ./card.json
输出标准 message 工具调用 JSON,AI 直接传参即可,无需手动拼 target/channel/card 字段。
推荐工作流
读取数据源 → 结构化数据 → build_card.py → validate_card.py → push_card.py → message 工具
标准调用格式
1. 读取飞书数据源(url: {链接})。
2. {展示意图,描述需求}。
3. 调用 feishu-card-renderer 渲染并推送卡片到群 chat:{chat_id}。
4. 发完卡片后回复 NO_REPLY,不要输出任何其他文字。
| 占位符 | 说明 | 示例 |
|---|---|---|
{链接} |
完整 URL,技能自动识别类型 | /base/...?table=... / /docx/... / /wiki/... |
{展示意图,描述需求} |
想怎么看这批数据(可选) | 「总结问题」「只看未完成」「全量列表」 |
{chat_id} |
目标群 | oc_a48a53d3294b1d821287202ada93e7a0 |
缺参数就问,不猜。
执行流程
确认参数 → 识别来源 → 读取数据 → 选模板 → 构建卡片 → 校验 → 推送 → NO_REPLY
↑ ↑
build_card.py push_card.py
↓
validate_card.py
数据源识别
按 URL 特征自动路由:
| URL 特征 | 数据源 | 读取工具 |
|---|---|---|
/base/{token}?table={id} |
多维表格 | feishu_bitable_list_fields → list_records |
/docx/{token} |
飞书文档 | feishu_doc read(含表格解析) |
/wiki/{token} |
知识库节点 | feishu_wiki get 拿到 obj_token 后同上 |
| 口头描述 | 直接内容 | 结构化后走卡片构建 |
多维表字段自适应(不硬编码列名):按「名称/负责人/状态/分类/优先级/日期/描述」语义匹配。
展示模板
模板 A:数据看板(结构化行数据)
适用:多维表、任务表、统计表等有明确行列的数据
骨架:
header(title) → column_set(概览指标:总数、完成率、待办数等) → hr → table(明细数据) → hr → markdown(一句话结论)
概览指标用 column_set 双栏 / 三栏,纯 markdown 文字,不带复杂格式。
明细用 table 组件,状态列用 options 类型带颜色标签。
模板 B:对比分析
适用:两组或多组数据对比、前后变化、差异分析
骨架:
header(title) → markdown(背景一句话) → hr → table(对比明细:列=对比维度) → hr → markdown(结论)
模板 C:文本分析(非结构化文档)
适用:散文、报告、议论文等无表格的长文
骨架:
header(title) → markdown(核心提炼 2-3 句) → hr → 中间区:有对比用 table,无可提炼为 markdown 块 → hr → markdown(关键引用/佐证) → hr → markdown(作者意图一句话)
模板 D:简讯 / 通知
适用:纯文字消息、公告、提醒
骨架:
header(title) → markdown(正文) → markdown(补充/行动指引)
模板选型原则
| 数据特征 | 模板 |
|---|---|
| 有明确行列、≥3 条同构记录 | A:数据看板 |
| 两组或多组对照 | B:对比分析 |
| 长文本、无表格 | C:文本分析 |
| 纯文字通知 | D:简讯 |
空白数据 → 卡片只放「📊 暂无数据」→ NO_REPLY。
Table 组件格式
{
"schema": "2.0",
"config": { "wide_screen_mode": true },
"header": {
"title": { "tag": "plain_text", "content": "表格标题" }
},
"body": {
"elements": [
{
"tag": "table",
"page_size": 10,
"columns": [
{ "data_type": "text", "display_name": "列名", "name": "col" },
{ "data_type": "options", "display_name": "状态", "name": "status" }
],
"rows": [
{ "col": "值", "status": [{ "color": "green", "text": "已完成" }] }
]
}
]
}
}
要点:
- 必须包含顶层
"schema": "2.0",表格组件放在body.elements中 page_size有效范围为 1 ~ 10(原 1.0 中可设 15 但超出限制会被截断)header_style在 2.0 中不再单独存在,可通过header.title自定义样式
颜色语义:
| 语义 | color |
|---|---|
| 完成/正常 | green |
| 进行中 | blue |
| 待处理 | grey |
| 等待/暂停 | orange |
| 阻塞/失败 | red |
关键约束(来自实测踩坑)
| 做法 | 原因 |
|---|---|
table 优先于 markdown 表格 |
飞书卡片 markdown 不渲染表格 |
column_set 内只用纯文本 |
markdown 表格在 column_set 中管道符原样显示 |
日期不用 date data_type |
实测 400 错误 |
不用 template_id + 变量 |
模板无变量定义,内容会被静默忽略 |
推送用 message + card |
不用外部脚本 |
| 2.0 卡片仅支持飞书客户端 ≥ V7.20 | 低于此版本会显示"请升级客户端" |
markdown 块禁用 # / ## |
飞书卡片 markdown 不支持 heading,## 会原样显示成 ## 文字 |
替代方案:用 **粗体** 或 — 分隔 |
例如 **标题一** 替代 ## 标题一 |
note 标签禁用 |
schema 2.0 不兼容,会 400 错误;用 markdown 块替代 |
推送
message 工具:
action: send
channel: feishu
target: chat:{chat_id}
card: {完整卡片 JSON(2.0 格式)}
推送成功 → NO_REPLY。不要输出任何其他文字。
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习