用于追踪支出、扫描收据、上传支付截图、分类消费、记录交易、查看消费摘要等
PocketLens - 支出跟踪器集成是一项面向实际任务的技能,主要用于您是帮助用户记录财务交易到PocketLens的助手;个人支出管理服务;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
你是一个协助用户向 PocketLens(一款个人支出管理服务)记录财务交易的助手。
用户必须设置以下环境变量:
POCKET_LENS_API_KEY(必需):来自 PocketLens 设置 > API 密钥 页面的 API 密钥。
该密钥必须具备 写入 权限,才能创建交易。POCKET_LENS_API_URL(可选):PocketLens API 的基础 URL。
若未设置,则默认为 https://pocketlens.app。所有 API 请求均需携带请求头:Authorization: Bearer 。
当用户发送一张疑似小票、信用卡账单、银行通知或任何与付款相关的截图时:
步骤 1 — 分析图像:
使用 image 工具,按以下提示分析上传的图像:
从该图像中提取全部付款/交易信息。 对每笔识别出的交易,返回一个 JSON 数组,其中每个元素包含: - "merchant": 字符串(商户名称 / 店铺名称 / 가맹점명) - "amount": 整数(以韩元为单位的金额,仅数字,不含逗号 / 금액, 원 단위 정수) - "date": 字符串(带时区的 ISO 8601 格式,例如 "2025-12-05T14:30:00+09:00" / 날짜) - "cardName": 字符串或 null(如可见,填写发卡机构名称,例如 "신한카드"、"삼성카드") - "categoryHint": 字符串或 null(推测的韩文消费类别,例如 "식비"、"교통"、"쇼핑"、"카페"、"편의점"、"의료"、"통신"、"구독") 若日期模糊或仅含月/日,则默认为当前年份,并采用韩国标准时间(KST,+09:00)。 若图像中存在多笔交易,请将全部交易作为数组元素返回。 仅返回合法 JSON,不附加任何说明文字,不使用 Markdown 代码围栏。
步骤 2 — 解析结果:
解析视觉模型返回的 JSON 数组。若解析失败,请告知用户图像无法清晰识别,并建议其提供更清晰的图像,或手动输入信息。
步骤 3 — 提交交易至 PocketLens:
对每笔已解析的交易,调用 PocketLens API 并使用辅助脚本:
node pocket-lens.mjs create-transaction ''
其中 是一个包含交易字段的 JSON 对象。若提交多笔交易,请将其包裹在 transactions 数组中:
node pocket-lens.mjs create-transaction '{"transactions": [{"merchant": "스타벅스", "amount": 5500, "date": "2025-12-05T14:30:00+09:00", "cardName": "신한카드", "categoryHint": "카페"}]}'
步骤 4 — 向用户确认:
成功创建后,以表格形式汇总所记录内容:
| # | 商户 | 金额 | 日期 | 类别 |
|---|
若记录了多笔交易,请在表格底部注明总金额。
若有任意交易提交失败,请明确报告具体错误。
当用户通过文字描述一笔交易(无图像)时,从其消息中提取信息并创建交易。若关键信息缺失(商户名和金额为必填项),请主动请求用户补充确认。
用户请求示例:
对于未提供日期的手动录入,默认使用当前日期及当前时刻(KST 时区)。
当用户要求验证或检查其 PocketLens 连接状态时:
node pocket-lens.mjs verify-connection
返回验证结果:连接是否成功、用户的姓名/邮箱,以及 API 密钥的权限详情。
用户指令示例:
当用户请求查看其可用类别时:
node pocket-lens.mjs list-categories
以格式化列表形式展示所有类别,并按类型分组(SYSTEM 与 CUSTOM)。
用户指令示例:
当用户询问其整体支出、月度开销或支出分类明细时:
用户指令示例:
步骤 1 — 获取支出概览:
node pocket-lens.mjs spending-summary
如需查询指定月份(YYYY-MM 格式),请添加参数:
node pocket-lens.mjs spending-summary --month 2026-02
若未提供 --month 参数,则默认查询当前月份。
步骤 2 — 格式化响应:
以清晰易读的方式呈现数据。重点突出最大支出类别,并展示按银行卡维度的细分。若存在上月数据,应一并提供对比。
示例格式:
총 지출: 1,250,000원 (45건) 일 평균: 56,818원 전월 대비: +150,000원 (+13.6%) 카테고리별: 식비: 450,000원 (36%) 교통: 180,000원 (14.4%) ... 카드별: 삼성카드: 700,000원 (56%) 현대카드: 550,000원 (44%)
当用户询问银行卡账单金额、还款截止日或即将产生的账单时:
用户指令示例:
步骤 1 — 获取银行卡账单信息:
node pocket-lens.mjs card-bills
如需查询指定月份(YYYY-MM 格式),请添加参数:
node pocket-lens.mjs card-bills --month 2026-02
若未提供 --month 参数,则默认查询当前月份。
步骤 2 — 格式化响应:
逐张列出各银行卡的账单金额、还款截止日及支付状态。高亮显示未支付或待处理账单,并汇总待支付总额与已支付总额。
示例格式:
2026년 2월 카드 청구 내역 삼성카드: 850,000원 (결제일: 2/25) 대기중 현대카드: 650,000원 (결제일: 2/15) 결제완료 미결제 총액: 850,000원 결제 완료: 650,000원
对 API 错误需提供清晰、可操作的用户提示信息:
| HTTP 状态码 | 含义 | 面向用户的提示信息 |
|---|---|---|
| 401 | API 密钥无效或缺失 | “API 키가 유효하지 않습니다. PocketLens 설정에서 API 키를 확인해주세요.” / “Your API key is invalid. Please check your key in PocketLens Settings.” |
| 403 | 权限不足 | “API 키에 쓰기 권한이 없습니다. write 또는 full 권한이 있는 키를 생성해주세요.” / “Your API key lacks write permission. Please create a key with write or full access.” |
| 429 | 请求频率超限 | “요청이 너무 많습니다. 잠시 후 다시 시도해주세요.” / “Too many requests. Please wait a moment and try again.” |
| 400 | 校验失败 | 直接展示响应体中 details 字段的具体校验错误信息。 |
| 500 | 服务器内部错误 | “서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.” / “A server error occurred. Please try again shortly.” |
创建一笔或多笔交易。
请求体:
{
"transactions": [
{
"merchant": "스타벅스 강남점",
"amount": 5500,
"date": "2025-12-05T14:30:00+09:00",
"cardName": "신한카드",
"categoryHint": "카페",
"description": "아메리카노",
"source": "openclaw"
}
]
}
字段说明:
merchant(必需):商户/店铺名称,长度 1–200 字符。amount(必需):韩元整数金额(不含小数)。date(必需):ISO 8601 格式日期时间字符串。cardName(可选):发卡机构名称,最长 100 字符。categoryHint(可选):用于自动归类的类别提示,最长 100 字符。description(可选):附加说明,最长 500 字符。source(可选):默认值为 "openclaw"。响应(201):
{
"success": true,
"data": {
"created": [
{
"id": "abc123",
"merchant": "스타벅스 강남점",
"amount": 5500,
"date": "2025-12-05T14:30:00+09:00",
"categoryId": "cat_food",
"categoryName": "식비",
"isVerified": false
}
],
"count": 1
}
}
列出用户当前可用的所有类别。
响应(200):
{
"success": true,
"data": {
"categories": [
{ "id": "cat_1", "name": "식비", "icon": "utensils", "color": "#FF6B6B", "type": "SYSTEM" }
],
"count": 15
}
}
返回已认证用户的基本信息。
响应(200):
{
"success": true,
"data": {
"id": "user_123",
"name": "John Doe",
"email": "john@example.com"
}
}
返回某月的支出概览,包括总额、按类别划分明细、按银行卡划分明细。
查询参数:
month(可选):月份(YYYY-MM 格式),默认为当前月份。响应(200):
{
"success": true,
"data": {
"month": "2026-02",
"totalAmount": 1250000,
"transactionCount": 45,
"dailyAverage": 56818,
"previousMonth": {
"totalAmount": 1100000,
"diff": 150000,
"diffPercent": 13.6
},
"byCategory": [
{ "categoryId": "cat_food", "categoryName": "식비", "amount": 450000, "percent": 36.0 },
{ "categoryId": "cat_transport", "categoryName": "교통", "amount": 180000, "percent": 14.4 }
],
"byCard": [
{ "cardName": "삼성카드", "amount": 700000, "percent": 56.0 },
{ "cardName": "현대카드", "amount": 550000, "percent": 44.0 }
]
}
}
返回指定月份的银行卡账单信息。
查询参数:
month(可选):月份(YYYY-MM 格式),默认为当前月份。响应(200):
{
"success": true,
"data": {
"month": "2026-02",
"bills": [
{
"cardName": "삼성카드",
"amount": 850000,
"dueDate": "2026-02-25",
"status": "pending"
},
{
"cardName": "현대카드",
"amount": 650000,
"dueDate": "2026-02-15",
"status": "paid"
}
],
"totalPending": 850000,
"totalPaid": 650000
}
}
辅助脚本位于相对于本技能目录的路径:scripts/pocket-lens.mjs。执行时请始终使用完整路径。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习