360 Secure SkillHub
360 安全技能中心

Pantry Tracker

核心功能:解析杂货订单邮件,将商品存入Supabase并计算保质期,支持手动/批量添加、标记使用/丢弃,生成库存概览和每日到期摘要。典型场景:监控杂货库存、查看临期食品、减少食物浪费、获取晨间新鲜度汇总。需配合邮件工具使用,通过CLI或定时任务触发,输出库存状态、到期提醒等内容。

madebydia
madebydia
热度 52.14
最近更新 2026-05-11 17:34:28
分类:生活依赖:代码执行 / 读写文件 / 第三方 API应用场景:购物 / 任务管理 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add pantry-tracker
Metadata
name
pantry-tracker
description
Track grocery purchases and monitor food freshness using Supabase. Use when monitoring grocery orders, checking what food is expiring, logging pantry items, getting morning freshness summaries, or managing food waste. Email scanning is done by the agent using its existing email skill (e.g. gog for Gmail) — this skill does not access email directly or require email credentials.
requires
{"env":[{"name":"SUPABASE_URL","description":"Supabase project URL (e.g. https://xxx.supabase.co)","required":true},{"name":"SUPABASE_KEY","description":"Supabase anon key (NOT service role key). Safe for client-side use.","required":true}]}

Pantry Tracker

Track grocery items from purchase to plate (or trash). Parses grocery order emails, stores items in Supabase with estimated expiry dates, and sends daily summaries of what needs eating.

Setup

1. Supabase

Create a Supabase project and run the schema in references/supabase-schema.sql in the SQL editor.

Store credentials as env vars:

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key

Use the anon key (not the service role key). The anon key is safe for client-side use and sufficient for all pantry operations. Never use the service role key — it bypasses Row Level Security.

2. Cron Jobs

Set up two cron jobs in OpenClaw:

Email scanner (every 2-4 hours): Use the agent's existing email tool (e.g. gog for Gmail, or whatever email skill is installed) to search for grocery order confirmations. This skill does NOT access email directly — the agent reads email through its own authenticated tools, then passes parsed items to the pantry CLI.

Search email for recent grocery orders (Whole Foods, Instacart, Amazon Fresh, Costco, Walmart). Parse item names and quantities. For each item, look up shelf life in references/shelf-life.md and calculate expires_at from today. Write items to a JSON array and run: python3 scripts/pantry.py bulk-add /tmp/pantry-items.json

Morning summary (daily, e.g. 7am):

Run: python3 scripts/pantry.py summary
If output is not "PANTRY_OK", send the summary to the user.

CLI Reference

All commands: python3 scripts/pantry.py <command>

Command Description
add <name> -c <category> -q <qty> -e <days> Add single item
bulk-add <file.json> Add items from JSON (email parse output)
expiring [--days N] Show items expiring within N days (default 3)
status Full pantry overview by category
use <name> Mark item as used
toss <name> Mark item as tossed/wasted
refresh Auto-update statuses (fresh → use-soon → expired)
summary Morning summary for cron (outputs PANTRY_OK if nothing urgent)

Bulk-add JSON format

[
  {
    "name": "Strawberries",
    "category": "produce",
    "quantity": "1 lb",
    "expires_days": 5,
    "source": "whole-foods",
    "order_id": "111-1234567"
  }
]

Email Parsing Guide

When scanning grocery emails, extract:

  1. Item name — normalize to common name (e.g., "Org Strawberries 1lb" → "Strawberries")
  2. Quantity — preserve as-is from email ("2 lbs", "1 bunch", "6 ct")
  3. Category — assign: produce, dairy, meat, bakery, pantry, frozen, other
  4. Shelf life — look up in references/shelf-life.md. If not listed, estimate conservatively.
  5. Source — which store (whole-foods, instacart, costco, etc.)

Supported email patterns

  • Whole Foods / Amazon Fresh: Subject contains "Your delivery" or "order delivered"
  • Instacart: Subject contains "delivery complete" or "order receipt"
  • Costco: Subject contains "order confirmation"
  • Walmart: Subject contains "delivery confirmed"

Search email for these patterns. Parse the item list from the email body. When in doubt about an item's category or shelf life, use conservative estimates.

Manual Usage

Users can also say things like:

  • "Add chicken breast to the pantry, expires in 2 days"
  • "What's expiring soon?"
  • "Mark the strawberries as used"
  • "I tossed the leftover salmon"
  • "What's in my pantry right now?"

Map these to the appropriate CLI commands.