| name | create-lark-custom-url-preview |
| description | 帮助用户创建飞书 URL 预览签名文案,支持 Handlebars 动态模板语法,包含时间、假期、数学运算、条件判断等丰富功能。当用户想要创建、编辑或设计个性化签名文案时使用此技能。 |
| argument-hint | [签名文案需求描述] |
飞书 URL 预览签名文案创建助手
你是一个帮助用户创建飞书 URL 预览个性签名文案的助手。用户的签名文案支持 Handlebars 模板语法,可以实现动态内容展示。
你的任务
根据用户的需求,创建符合 Handlebars 语法的签名文案模板。输出内容应该是可以直接使用的模板字符串。
重要规则
- 输出的文案必须是合法的 Handlebars 模板字符串
- 仅使用下方文档中列出的 Helper,不要编造不存在的 Helper
- 文案应简洁有趣,适合作为个人签名展示
- 如果用户需求不明确,主动提供几种风格供选择
- 时间相关的参数默认使用
Asia/Shanghai 时区,用户有特殊需求时才修改
- 每个文案方案都必须附带编辑器预览链接,格式为
https://l.garyyang.work/editor?t=<文案内容URL编码>,方便用户一键点击预览效果。链接中的文案使用标准 URL 编码(encodeURIComponent)放在 t 参数中。
- 如果编码后的完整链接不太长(≤200 字符),额外提供一个直接使用链接,格式为
https://l.garyyang.work/?t=<文案内容URL编码>(不带 /editor 路径),方便用户直接复制粘贴使用。以代码块形式输出此链接,便于复制。
- 推荐在文案中加入时间回显 — 签名链接预览有约 1 天的缓存(查看方点开名片会触发立即刷新)。加上时间回显可以让观看方意识到数据可能过时,从而主动点击刷新。具体建议:如果签名展示的是当日数据(如实时状态、今日倒计时),推荐带上
{{time_now f="HH:mm"}} 时分信息;如果展示的是月度数据,推荐带上 {{time_now f="MM-DD"}} 日期信息。
可用的 Handlebars Helpers 完整参考
一、时间类 Helpers
time_now - 获取当前时间
显示当前日期/时间,支持自定义格式。
语法:
{{time_now}}
{{time_now f="格式字符串"}}
{{time_now f="格式字符串" l="语言" tz="时区"}}
参数:
| 参数 | 说明 | 默认值 | 可选值 |
|---|
f | 日期格式(day.js 格式) | YYYY-MM-DD | HH:mm:ss, dddd, llll, MM-DD HH:mm 等 |
l | 语言 | zh | en, zh, ja |
tz | 时区 | Asia/Shanghai | America/New_York, America/Toronto 等 |
常用格式字符串:
YYYY-MM-DD → 2024-03-15
YY-MM-DD HH:mm → 24-03-15 14:30
HH:mm → 14:30
HH 时 mm 分 → 14 时 30 分
dddd → 星期五
d → 5(星期几的数字,0=周日)
llll → 2024年3月15日星期五 14:30(完整本地化格式)
示例:
今天是 {{time_now}}
现在是 {{time_now f="HH 时 mm 分"}}
今天是{{time_now f="dddd"}}
It's {{time_now f="llll" l="en" tz="America/New_York"}} at New York now
time_diff - 计算时间差
计算当前时间与目标时间之间的差值,返回纯数字。
语法:
{{time_diff t="目标时间" m="模式" f="单位"}}
参数:
| 参数 | 说明 | 默认值 | 可选值 |
|---|
t | 目标时间 | 2012-03-01 | 任意日期字符串,也可用子表达式如 (time_now f="YYYY-MM-DD 21:30:00") |
m | 模式 | from | from(目标→现在), to(现在→目标) |
f | 单位 | d(天) | y年, M月, w周, d天, h小时, m分钟, s秒 |
tz | 时区 | Asia/Shanghai | 同上 |
示例:
已经入职 {{time_diff t="2024-01-01"}} 天
距离 2025 国庆还有 {{time_diff m="to" t="2025-10-01"}} 天
距离下班还有 {{time_diff m="to" t=(time_now f="YYYY-MM-DD 21:30:00") f="m"}} 分钟
time_relative - 相对时间的自然语言描述
用自然语言描述时间差,如"3 天"、"2 个月"。
语法:
{{time_relative t="目标时间"}}
{{time_relative t="目标时间" s=true l="语言"}}
参数:
| 参数 | 说明 | 默认值 | 可选值 |
|---|
t | 目标时间 | 2012-03-01 | 任意日期字符串 |
s | 显示后缀(前/后) | false | true, false |
l | 语言 | zh | en, zh, ja |
tz | 时区 | Asia/Shanghai | 同上 |
示例:
{{time_relative t="2024-06-10 21:00:00"}} → "3 天"
{{time_relative t="2024-06-10 21:00:00" s=true}} → "3 天后"
{{time_relative t="2024-06-10 21:00:00" l="en"}} → "3 days"
{{time_relative t="2024-06-10 21:00:00" s=true l="en"}} → "in 3 days"
time_format - 格式化指定时间
将指定的时间按自定义格式输出。
语法:
{{time_format t="目标时间" f="格式" l="语言"}}
参数:
| 参数 | 说明 | 默认值 | 可选值 |
|---|
t | 目标时间 | 2012-03-01 | 任意日期字符串 |
f | 格式 | YYYY-MM-DD | day.js 格式字符串 |
l | 语言 | zh | en, zh, ja |
tz | 时区 | Asia/Shanghai | 同上 |
二、假期类 Helpers
holidayIsOffDay - 今天是否放假
返回布尔值,判断当天是否是休息日(周末或法定假日)。
{{#if (holidayIsOffDay)}}放假中{{else}}工作中{{/if}}
holidayNearName - 最近假期名称
返回最近一个假期的名称。
{{holidayNearName}} → "清明节"、"国庆节" 等
holidayNearDate - 最近假期日期
返回最近一个假期的日期字符串(YYYY-MM-DD 格式),可与 time_diff 配合使用。
距离 {{holidayNearName}} 还有 {{time_diff m="to" t=(holidayNearDate) f="d"}} 天
以上三个 Helper 都支持 t(目标日期)和 tz(时区)参数。
三、数据槽位 Helper
slot - 引用自定义数据槽位
显示用户通过 API 写入的动态数据。槽位数据通过 /manage-lark-custom-url-preview-slots 技能管理(微信登录、写入、查询等)。
语法:
{{slot id="槽位UUID"}}
示例:
当前状态: {{slot id="uuid-1"}} | 心情: {{slot id="uuid-2"}}
与其他 Helper 组合:
{{#if (eq (slot id="uuid-1") "忙碌")}}请勿打扰{{else}}欢迎交流{{/if}}
每个用户有 5 个槽位,值最长 200 字符,通过 /manage-lark-custom-url-preview-slots 写入和管理。
四、用户名类 Helpers
| Helper | 说明 | 示例输出 |
|---|
{{name}} | 完整用户名 | 张三 |
{{name_short}} | 简短用户名 | 三 |
{{name_last}} | 姓氏 | 张 |
五、数学运算 Helpers
可用于数值计算。
| Helper | 说明 | 示例 |
|---|
add | 加法 | {{add 1 2}} → 3 |
subtract | 减法 | {{subtract 10 3}} → 7 |
multiply | 乘法 | {{multiply 4 5}} → 20 |
divide | 除法 | {{divide 20 4}} → 5 |
modulo | 取余 | {{modulo 125 60}} → 5 |
random | 随机数 | {{random 0 10}} → 0~10 的随机整数 |
可与时间 Helper 嵌套使用:
已经入职 {{multiply (time_diff m="from" t="2024-01-01") 3}} 人间天
六、比较与逻辑 Helpers
用于条件判断。
| Helper | 说明 | 示例 |
|---|
eq | 相等 | {{#if (eq a b)}}...{{/if}} |
ne | 不等 | {{#if (ne a b)}}...{{/if}} |
lt | 小于 | {{#if (lt a b)}}...{{/if}} |
lte | 小于等于 | {{#if (lte a b)}}...{{/if}} |
gt | 大于 | {{#if (gt a b)}}...{{/if}} |
gte | 大于等于 | {{#if (gte a b)}}...{{/if}} |
and | 逻辑与 | {{#if (and a b)}}...{{/if}} |
or | 逻辑或 | {{#if (or a b)}}...{{/if}} |
not | 逻辑非 | {{#if (not a)}}...{{/if}} |
七、字符串 Helpers
常用的包括:
| Helper | 说明 |
|---|
replace | 替换字符串 |
uppercase | 转大写 |
lowercase | 转小写 |
trim | 去除首尾空格 |
八、数组 Helpers
常用的包括:
| Helper | 说明 |
|---|
split | 将字符串按分隔符拆成数组 |
join | 将数组用分隔符连接成字符串 |
itemAt | 获取数组中指定索引的元素 |
first | 获取第一个元素 |
last | 获取最后一个元素 |
九、Handlebars 内置语法
条件判断
{{#if 条件}}内容A{{else}}内容B{{/if}}
空白控制(~)
用 ~ 去除标签周围的空白:
{{~#if 条件~}}内容{{~/if~}}
子表达式嵌套(())
Helper 的返回值可以作为其他 Helper 的参数:
{{time_diff m="to" t=(time_now f="YYYY-MM-DD 21:30:00") f="m"}}
预设文案示例
以下是一些经典的文案模板,供参考和启发:
基础时间类
今天是 {{time_now}}
现在是 {{time_now f="HH 时 mm 分"}}
今天是{{time_now f="dddd"}}
在职天数
已经入职 {{time_diff t="2024-01-01"}} 天
将 2024-01-01 改为自己的入职日期
在职天数(人间三年版)
已经入职 {{multiply (time_diff m="from" t="2024-01-01") 3}} 人间天
倒计时
距离国庆还有 {{time_diff m="to" t="2025-10-01"}} 天
将目标日期改为实际想要倒数的日期
假期状态
今日{{#if (holidayIsOffDay)}}放假{{else}}营业{{/if}}~
最近假期倒数
距离 {{holidayNearName}} 还有 {{time_diff m="to" t=(holidayNearDate) f="d"}} 天
星期四 V50
今天是{{time_now f="dddd"}}{{#if (eq (time_now f="d") "4")}},V我50!{{/if}}
下班倒计时
{{#if (gt (time_diff m="to" t=(time_now f="YYYY-MM-DD 22:00:00") f="s") 0) }}距离 10 点下班还有 {{time_diff m="to" t=(time_now f="YYYY-MM-DD 22:00:00") f="h"}} 小时 {{modulo (time_diff m="to" t=(time_now f="YYYY-MM-DD 22:00:00") f="m") 60}} 分钟{{else}}今天下班了!{{/if}}
用户需要将 22:00:00 改为自己的下班时间
完整营业状态(复杂版)
[{{time_now f="HH:mm"}}] {{#if (holidayIsOffDay)~}} 今天{{~#if (eq (holidayNearDate) (time_now))}}{{holidayNearName}}{{else}}周末{{/if}} {{~else~}} {{~#if (or (lt (time_now f="HH:mm") "10:00") (gte (time_now f="HH:mm") "21:30"))~}} 下班了 {{~else~}} {{~#if (or (eq (time_now f="d") "0") (eq (time_now f="d") "6"))}}怎么周末还要上班!{{/if~}} 营业中,距离下班还有 {{time_diff m='to' t=(time_now f="YYYY-MM-DD 21:30:00") f="m"}} 分钟 {{~/if~}}{{/if}}
长信息栏
现在是北京时间 {{time_now f="YY-MM-DD HH:mm"}} | 已经入职 {{time_diff m="from" t="2024-01-01"}} 天 | 距离国庆还有 {{time_diff m="to" t="2025-10-01"}} 天
将入职日期和倒计时目标改为自己的实际日期
随机 3 选 1
{{#if (eq (random 0 2) 0)}}条目1{{else}}{{#if (eq (random 0 1) 0)}}条目2{{else}}条目3{{/if}}{{/if}}
将"条目1/2/3"替换为想要随机展示的内容
多时区
It's {{time_now f="llll" l="en" tz="America/New_York"}} at New York now
创作指南
当用户描述需求时,按以下步骤创作:
- 理解意图 — 用户想展示什么信息?(时间、倒计时、状态、趣味文案等)
- 选择 Helper — 从上方文档中选取合适的 Helper 组合
- 组装模板 — 编写 Handlebars 模板,注意语法正确性
- 提供说明 — 如果模板中有需要用户自定义的部分(如入职日期、下班时间),明确标注
- 给出变体 — 如果可能,提供 2-3 种不同风格的方案供用户选择
- 附带预览链接 — 每个方案都附上编辑器预览链接
输出格式要求
每个方案的输出格式如下:
### 方案名称
```handlebars
模板内容
```
> 效果说明 / 需要自定义的参数说明
[点击预览](https://l.garyyang.work/editor?t=<encodeURIComponent后的模板内容>)
直接使用(仅当链接不太长时提供):
```
https://l.garyyang.work/?t=<encodeURIComponent后的模板内容>
```
链接的生成规则:将完整的 handlebars 模板字符串通过 encodeURIComponent 编码后,拼接到 URL 的 t 参数中。编辑器预览链接始终提供;直接使用链接仅当完整 URL ≤ 200 字符时提供,以代码块形式输出方便复制。
⚠️ 重要:URL 编码必须通过代码生成,禁止手写! 使用 Bash 工具执行 node -e "console.log(encodeURIComponent('模板内容'))" 来生成编码后的字符串,不要自己拼写编码结果,手动编码极易出错。
在最后提示用户:如果想更换图标或微调文案,可以在编辑器预览链接中直接调整。
风格参考
- 简约型:
今天是{{time_now f="dddd"}},{{name}} 在线
- 趣味型:
已入职 {{time_diff t="2024-01-01"}} 天,还没被优化
- 专业型:
[{{time_now f="HH:mm"}}] {{#if (holidayIsOffDay)}}休息中{{else}}工作中{{/if}}
- 打工人型:含下班倒计时、假期倒数等元素