Resources
1Install
npx skillscat add shiqkuangsan/oh-my-daily-skills/personal-expense-receipt Install via the SkillsCat registry.
SKILL.md
AI 订阅报销统计
识别收据和发票,自动计算报销金额,智能选择最优发票组合,输出统计报告和报销备注。
参数
| 参数 | 必填 | 说明 |
|---|---|---|
| 收据目录 | 是 | 包含收据文件(PDF/PNG)的目录 |
| 发票目录 | 否 | 包含发票文件的目录,默认为收据目录的同级 发票 目录 |
| USD 汇率 | 否 | USD/CNY 汇率,未提供则自动获取 |
| TRY 汇率 | 否 | TRY/CNY 汇率,未提供则自动获取 |
示例:
报销统计 /path/to/原始收据 美元汇率 6.937 土耳其汇率 0.1595
目录结构
{月份目录}/
原始收据/ ← 收据文件 + 收据统计 md
发票/ ← 发票文件 + 发票统计 md支持的币种
| 币种 | 符号 | 格式 |
|---|---|---|
| 美元 USD | $ | $20.00 |
| 土耳其里拉 TRY | ₺ | ₺499,99(逗号是小数点) |
工作流程
1. 获取汇率
优先使用用户指定汇率,否则运行脚本自动获取:
python3 scripts/get_exchange_rates.py汇率获取失败时使用默认值:USD=6.957, TRY=0.160
2. 识别收据
- 列出收据目录下所有
.pdf和.png文件 - 使用 Read 工具逐个读取
- 支持产品:Cursor、Claude、ChatGPT、Windsurf、OpenRouter、Trae、Apple 等
识别字段:
| 字段 | 来源 |
|---|---|
| 人员 | Customer Name / Bill to / 文件名中的人名 |
| 产品 | 订阅产品名称 |
| 金额 | 原始金额和币种 |
| 日期 | Receipt Date / Date paid / Invoice Date |
去重规则:同一人员 + 同一日期 + 同一金额 = 同一笔交易(Invoice 和 Receipt 只计一次)
3. 识别发票
- 列出发票目录下所有
.pdf文件 - 使用 Read 工具逐个读取
- 识别:发票号码、类型(餐饮/加油等)、销售方、价税合计金额(含税)、开票日期
4. 智能发票匹配
计算收据报销总额(RMB),然后从发票中选择最优组合:
选择策略(发票多余时):
- 按开票日期从旧到新排序
- 同日期的按金额从小到大排序
- 依次累加,直到总额 >= 报销总额
- 未选中的发票标注为"多余"
结果判定:
- 发票总额 >= 报销总额 → 够用,输出选中的发票
- 发票总额 < 报销总额 → 不够,提示差额
5. 输出统计
5.1 收据统计(写入收据目录)
文件名:{年}年{月}月AI订阅报销统计.md
# {年}年{月}月 AI 订阅报销统计
> 汇率:USD/CNY = {rate_usd},TRY/CNY = {rate_try}
## 收据明细
| 文件 | 人员 | 产品 | 金额 | RMB | 日期 |
| ---- | ---- | ---- | ---- | --- | ---- |
## 按人汇总
| 人员 | 原始金额 | RMB |
| ---- | -------- | --- |
## 汇总
| 币种 | 金额 | RMB |
| ---- | ---- | --- |
**总计:¥{total} RMB({n}人)**5.2 发票统计(写入发票目录)
文件名:{年}年{月}月报销发票统计.md
# {年}年{月}月 报销发票统计
## 选用发票
| 文件 | 类型 | 销售方 | 价税合计 | 开票日期 |
| ---- | ---- | ------ | -------- | -------- |
**发票合计:¥{invoice_total}**
## 多余发票(未使用)
| 文件 | 类型 | 价税合计 | 开票日期 |
| ---- | ---- | -------- | -------- |
(无多余发票时省略此节)
## 对比
| 项目 | 金额 |
| -------- | -------------------- |
| 报销总额 | ¥{receipt_total} |
| 发票总额 | ¥{invoice_total} |
| 差额 | ¥{diff}(多余/不足) |6. 生成报销备注
输出一段可直接复制的备注文本:
餐饮票+油票,附件是 {产品列表} 等 AI 工具的收据,根据当前美元汇率 {rate_usd},土耳其里拉汇率 {rate_try},计算总计 {usd_total} 刀 + {try_total} 里拉 折合约 {rmb_total} 元人民币。- 产品列表:从收据中提取的去重产品名,如 Cursor、Claude、Windsurf、ChatGPT、OpenRouter
- 如果只有 USD 没有 TRY,则省略里拉部分
注意事项
- 金额保留 2 位小数
- 土耳其里拉:₺499,99 = 499.99(逗号是小数点)
- 发票金额统一使用价税合计(含税金额)
- 无法识别的收据/发票标注"无法识别"并提醒用户