卡片是结构化回复:不是一段话,是一组元素——文本、图片、按钮、分组,各占一格。 它比纯文本贵在维护(多一个字段要改两处),换来的是「能点」「有层级」「有边界」。 这一节把同一份数据摆成纯文本和卡片两种,看它们差在哪,也看卡片怎么坏。
上一节讲插件,这一节讲能力层的另一半。插件管「能不能办」,卡片管「办完怎么摆」。 卡片在公众号、飞书这些渠道里很常见。第 8 章(推文)、第 12 章(海报)都会用到。 这一节的重点不是画卡片,是知道卡片的三个坑:占位没填、超长截断、渠道不支持。
一、纯文本的问题
一段纯文本能装的信息有限,而且没有结构。 标题、摘要、时间、链接全混在一起,读的人得自己分辨哪句是重点。 更麻烦的是链接。纯文本里的 URL 在多数渠道里不可点,用户得复制粘贴。 演示里同一份新闻数据,纯文本排出来八十八个字,链接是一串字符,时间混在正文里。
这就是卡片要解决的问题:让每一块东西各就各位。
二、卡片是什么
卡片是一段结构化数据。最外层是一个容器,里面按列或按行放元素。 文本元素放一段字,可以设粗细颜色。图片元素放一张图。按钮元素可以点,点了会回传一个值。 分组元素是布局用的:把几个元素放进一列,让它们竖着排;或者放进一行,让它们横着排。
演示里那张卡是两个列:左边一列三个文本(标题、摘要、时间),右边一列一个按钮(读全文)。 真机上渲染出来是一张带边框的卡,右上角有个可点的按钮。本沙箱没有渲染器,只能把它压成文字看结构。
三、三个坑
坑一,占位没填。 模板里写了 {{title}},绑定的时候忘了给 title 赋值,那个格子就空着。不报错。 坑二,超长截断。 卡片有行数上限。标题写三行,摘要再写三行,纵向就撑满,超出部分变成省略号。 坑三,渠道不支持。 同一种卡片在飞书能显示,在公众号可能显示不出来——公众号只支持文本、图片、 图文这些基础类型。
三个坑里最费时间的是第三个,因为它不在你的配置里,在渠道那一侧。 上线前一定要在真实渠道里看一眼,别只看平台的预览。
四、卡片值不值得做
值得做的情形:要展示列表(三条新闻、四个选项)、要放可点的动作(查看详情、确认下单)、 要分主次(标题大、摘要小)。 不值得做的情形:只有一句话要回。一句话用卡片,等于给一张便条套了个相框。 还有一个成本要算:卡片比纯文本贵在维护。数据多一个字段,模板和变量绑定两处都要改,漏一处就是坑一。
所以简单项目从纯文本开始,等它真的挤了再换卡片。 这也符合第 1 章那条:能用简单方式说清的,别上复杂的。
五、动手 Demo:同一份数据,纯文本与卡片
一份新闻数据:标题、摘要、时间、链接。先排成纯文本,再做成卡片,最后看占位没填会怎样。
CARD = {'type': 'column_set', 'columns': [
{'type': 'column', 'elements': [
{'type': 'text', 'content': '{{title}}'},
{'type': 'text', 'content': '{{desc}}'},
{'type': 'text', 'content': '{{time}}'},
]},
{'type': 'column', 'elements': [
{'type': 'button', 'text': '读全文'},
]},
]}
c = card(CARD, DATA) # 把 {{占位}} 换成值
print(card_text(c)) # 本沙箱没有渲染器,只能压成一行看
实跑输出:
--------------------------------------------------------------------
卡片:同一份数据,三种摆法
--------------------------------------------------------------------
① 纯文本:一行一行排
--------------------------------------------------------------------
国产大模型推理成本一年降了八成
多家厂商在同一周下调接口价格,降价集中在长文本与批量调用。
10 月 31 日 09:20
https://example.com/news/1
合计 88 字。链接不可点,时间跟正文混在一起,标题和摘要分不出层级。
② 卡片:结构化,元素各管一块
--------------------------------------------------------------------
模板里三个 {{占位}},填进三个值。
渲染后压成一行:国产大模型推理成本一年降了八成 多家厂商在同一周下调接口价格,
降价集中在长文本与批量调用。 10 月 31 日 09:20 [读全文]
JSON 体积 296 字符——比纯文本大,但每个格子是谁、能不能点,都是明确的。
③ 占位没填会怎样
--------------------------------------------------------------------
只给 title,其余两个占位留空 → 国产大模型推理成本一年降了八成 [读全文]
不报错,只是两个格子空了。这是卡片的第二条常见故障:模板换了、变量没加。
! 卡片比纯文本贵的地方在「维护」:多一个字段,模板和绑定两处都要改。
①纯文本那段八十八个字,链接是一串字符,时间跟正文混着。读的人得自己分辨哪句是重点。 ②卡片渲染后被压成一行——因为本沙箱没有渲染器。真机上它是一张带边框的卡,右上角有个能点的按钮。 ③注意 JSON 体积:卡片两百九十六字符,纯文本八十八。 贵了三倍多。换来的是「能点」和「分得清层级」。 ④第三段只给 title 一个变量,另外两个占位留空。不报错,只是两个格子空着。这是卡片第一条常见故障。 ⑤最后那句是成本账:多一个字段,模板和绑定两处都要改。所以简单项目先用纯文本。
30 秒实验
- 把你现在的一处纯文本回复改成卡片,看它多了几行配置、多了几个字段。
- 在真实渠道里打开一次,别只看平台预览。渠道不支持的元素会直接消失。
- 数一下你的卡片模板里有几个 {{占位}},再数一下绑定的时候赋了几个值。两边要一样多。
常见误区
- 「卡片比文字高级。」一句话的回复用卡片,等于给便条套相框。信息少的时候纯文本更好读。
- 「平台预览对了就对了。」不同渠道支持的卡片类型不一样。要上线就在真渠道里看。
- 「占位没填会报错。」不报。那个格子就是空的,你得自己看出少了东西。
自测三问(点开对答案)
1. 卡片比纯文本多提供哪三样东西? —— 能点(按钮)、有层级(标题大摘要小)、有边界(每块各占一格)。代价是维护成本。 2. 卡片的三个坑是什么? —— 占位没填、超长截断、渠道不支持。第三个最费时间,因为它不在你的配置里。 3. 什么时候不该用卡片? —— 只有一句话要回的时候。卡片贵在维护,字段一多,模板和绑定两处都要改。卡片会做了,最后一个案例把它用起来:把三条新闻摆成一张卡。 那一节会暴露卡片最容易踩的两个细节——变量是白名单、行数有上限。
- ☐ (本篇完,下一篇 3.5 卡片制作实战案例:最新头条新闻)
相关笔记
- 什么是插件:插件管能不能办
- 如何使用插件:两种接法怎么选
- 🐦 扣子开发 AI Agent · 索引