feishu-card-renderer

Polar Sponsor
爱发电 赞助
.NET 9.0

通用飞书互动卡片渲染引擎。用户提供数据源(多维表格/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。不要输出任何其他文字。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习