shelflife

日用品保质期管理。基于飞书多维表格,支持快速录入、查询、删除商品保质期信息。 首次使用自动初始化多维表格和定时过期提醒。 触发词:保质期、过期、临期、查保质期、还有多久过期。 也匹配:"加个xxx"、"录入xxx"、"删除xxx"等简短指令。 注意:当用户仅提到"保质期"一词时也应触发此技能。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "shelflife" with this command: npx skills add haoxingyao/shelflife

日用品保质期管理

配置

配置文件路径:~/.openclaw/workspace/skills/shelflife/config.json

首次使用时读取此文件,如果 initialized 为 false 或 app_token 为空,则执行自动初始化流程

{
  "bitable": {
    "app_token": "",
    "table_id": "",
    "initialized": false
  },
  "cron": {
    "reminder_job_id": ""
  }
}

首次使用 - 自动初始化

config.jsoninitialized 为 false 或 app_token 为空时,在用户首次触发保质期相关操作前自动执行

步骤 1:创建多维表格

调用 feishu_bitable_app create,创建名为 "日用品保质期管理" 的多维表格。

步骤 2:创建数据表及字段

调用 feishu_bitable_app_table create,创建表 "商品列表",一次性定义所有字段:

字段名类型说明
商品名称文本(1)主键,必填
生产日期日期(5)可选
保质期截止日期(5)录入时必填
有效期时长文本(1)如"12个月",可选
剩余天数数字(2)公式自动计算
状态单选(3)公式自动计算:正常/即将过期/已过期
已用完复选框(7)默认 false
标签单选(3)食品/罐装/日用品/洗护用品

字段定义(create 时传入的 fields 数组):

商品名称: type=1 (文本)
生产日期: type=5 (日期)
保质期截止: type=5 (日期)
有效期时长: type=1 (文本)
已用完: type=7 (复选框)
标签: type=3 (单选), property.options=["食品","罐装","日用品","洗护用品"]

注意: 剩余天数和状态两个字段依赖公式,多维表格 API 不支持直接创建公式字段,需在表格创建后通过 feishu_bitable_app_table_field create 补充:

  • 剩余天数:数字类型,公式为 DATETIME_DIFF(保质期截止, TODAY(), "day")
  • 状态:单选类型,公式逻辑:
    • 剩余天数 ≤ 0 → "已过期"
    • 剩余天数 ≤ 30 → "即将过期"
    • 其他 → "正常"
    • 选项:["正常", "即将过期", "已过期"]

实际操作: 由于多维表格字段 API 对公式字段的支持有限,如果无法通过 API 创建公式字段,则退化为由 agent 在每次操作时手动计算剩余天数和状态字段。此时字段类型仍为数字和单选,但不设置公式,而是在录入/查询时由 agent 计算。

推荐方案: 先尝试创建公式字段,如果 API 不支持则手动计算。在 SKILL 使用中统一按"agent 计算"方式处理,保持兼容。

步骤 3:创建视图

调用 feishu_bitable_app_table_view create:

  • 默认视图(表格已有):按剩余天数升序排列
  • 新增视图 "临期提醒":grid 类型,筛选状态为"即将过期"或"已过期"且已用完为 false 的记录

步骤 4:更新配置文件

将 app_token 和 table_id 写入 config.json,设置 initialized=true。使用 edit 工具更新文件。

步骤 5:创建定时过期提醒

调用 cron add,创建每日定时检查任务:

{
  "name": "保质期过期提醒",
  "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
  "payload": {
    "kind": "agentTurn",
    "message": "执行保质期过期提醒检查:读取 config.json 获取多维表格信息,查询所有「状态」为「即将过期」或「已过期」且「已用完」为 false 的商品记录。如果有,整理成简洁列表通过飞书发送给当前用户(从消息上下文获取 SenderId);如果没有,静默结束不发消息。config.json 路径:~/.openclaw/workspace/skills/shelflife/config.json"
  },
  "sessionTarget": "isolated",
  "delivery": { "mode": "none" }
}

将返回的 jobId 写入 config.json 的 cron.reminder_job_id。

步骤 6:转移所有权

多维表格创建后,将所有权转移给当前用户(从消息上下文获取 SenderId)。

初始化完成提示

告知用户:"✅ 保质期管理已初始化完成!已创建多维表格并设置每日 9:00 自动过期提醒。"

字段结构

字段名类型说明
商品名称文本(1)主键,必填
生产日期日期(5)可选
保质期截止日期(5)录入时必填
有效期时长文本(1)如"12个月",可选
剩余天数数字(2)由 agent 计算填入
状态单选(3)由 agent 计算填入:正常/即将过期/已过期
已用完复选框(7)默认 false
标签单选(3)食品/罐装/日用品/洗护用品,可选

操作流程

前置检查

每次执行操作前:

  1. 读取 config.json
  2. 如果 initialized 为 false 或 app_token 为空 → 执行自动初始化流程
  3. 从 config.json 获取 app_token 和 table_id

Agent 计算规则

在录入、查询时,agent 需要计算并填入剩余天数状态字段:

  • 剩余天数 = 保质期截止日期 - 今天(天数)
  • 状态
    • 剩余天数 ≤ 0 → "已过期"
    • 剩余天数 ≤ 30 → "即将过期"
    • 其他 → "正常"

录入商品

用户说"添加xxx"、"录入xxx"、"加个xxx"时:

  1. 从用户输入提取:商品名称、保质期截止日期、标签(可选)、生产日期(可选)、有效期时长(可选)
  2. 如果用户只给了商品名和保质期时长(如"12个月"),自动计算截止日期
  3. 调用 feishu_bitable_app_table_recordcreate,写入字段:
    • 商品名称、保质期截止、标签、生产日期、有效期时长
    • 剩余天数:计算今天到截止日的天数差
    • 状态:根据剩余天数判断
  4. 日期格式传毫秒时间戳(number 类型)
  5. 录入成功后简要确认

查询

查所有: 用户说"看一下"、"列表"、"都有什么" → list action,sort 按剩余天数升序排列

查临期/过期: 用户说"快过期的"、"临期"、"已过期" → list + filter,状态 is "即将过期" 或 "已过期",且已用完 is false

查具体商品: 用户说"xxx还有多久" → list + filter 商品名称 contains 关键词

标记用完

当收到飞书卡片按钮回调(action: shelflife_used)或用户说"用完xxx"、"吃完xxx"时:

  1. 获取 record_id(从回调 value 中)或通过商品名称查询
  2. update action 将「已用完」设为 true
  3. 简要确认:"已标记 xxx 为已用完"

删除

用户说"删除xxx"、"去掉xxx"时:

  1. 先查询确认是哪条记录
  2. delete action 删除
  3. 简要确认

手动触发过期检查

用户说"检查过期"、"过期提醒"时:

  • 直接查询多维表格中状态为"即将过期"或"已过期"且已用完为 false 的记录
  • 整理列表展示给用户

注意事项

  • 日期写入时使用毫秒时间戳(number),不要用字符串
  • 剩余天数和状态由 agent 在录入时计算填入,不是表格公式
  • 如果用户输入信息不全,主动询问缺失的必填项(商品名称 + 保质期截止日期/时长)
  • 每日 9:00 定时检查由 cron 任务自动执行,agent 在 isolated session 中运行

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

微信读书 AI 阅读助手

微信读书 AI 阅读助手 - 扫码登录、阅读进度跟踪、章节内容存档、AI 对话

Registry SourceRecently Updated
General

SS Requirements to Teambition

从 SaleSmartly 客服会话中自动采集带标签的对话,经 AI 分析提取需求,创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词:SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客...

Registry SourceRecently Updated
General

国际形势分析智能体

专业中立的现代国际形势分析智能体,聚焦2020年至今全球地缘政治、大国关系、国际经济、安全格局、热点冲突、全球治理六大领域。基于权威信源输出严谨、客观、结构化分析。触发词:国际形势分析、地缘政治、大国关系、中美关系、俄乌冲突、台海局势、南海问题、全球安全、国际经济格局、全球治理。支持全景分析、专题深度分析、热点事...

Registry SourceRecently Updated
General

PlantUML

Generate UML diagrams (use case, class, sequence, activity, state, component, deployment, object, timing, and more) using PlantUML. Use when the user asks to...

Registry SourceRecently Updated