QianJi Bill Merger
一个供 Codex 使用的账单合并 Skill:把每月的支付宝账单、微信支付账单转换成钱迹(QianJi)可导入文件。
普通用户不需要理解 Python、JSON 或转换脚本。安装 Skill 后,只需准备一份长期复用的钱迹模板;每个月分别放入当月的支付宝和微信账单,再告诉 Codex“帮我合并账单”即可。
推荐用法:让 Codex 完成整个流程
第一步:安装 Skill
在 Codex 中发送:
请从 https://github.com/MeisterZH/qianji-bill-merger 安装 merge-qianji-bills Skill。
Codex 会使用内置的 Skill Installer 安装。安装完成后开启一个新对话,$merge-qianji-bills 就会出现在可用 Skill 中。
python "$env:USERPROFILE\.codex\skills\.system\skill-installer\scripts\install-skill-from-github.py" `
--repo MeisterZH/qianji-bill-merger `
--path . `
--name merge-qianji-bills
</details>
第二步:准备模板和每月账单
钱迹模板只需准备一次,放在所有月份目录的上一级。每个月的支付宝和微信账单分别存放:
bills/
├── QianJi_账单模板.csv
├── 2026-07/
│ ├── 支付宝交易明细.csv
│ └── 微信支付账单.xlsx
└── 2026-08/
├── 支付宝交易明细.csv
└── 微信支付账单.xlsx
文件名和扩展名不要求完全一致,Skill 会根据实际表头识别。每个月份目录只能有一份支付宝和一份微信账单:
- 支付宝导出的完整交易明细
- 微信支付导出的完整账单
上一级的钱迹模板用于提供目标格式和已有分类,也可作为初始重复记录参考。只有钱迹格式或分类发生变化时,才需要重新导出并替换模板。
第三步:让 Codex 合并
在 Codex 中打开本月目录,例如 bills/2026-07,然后发送:
使用
$merge-qianji-bills处理当前目录的支付宝和微信账单,钱迹模板在上一级目录。合并退款,交易关闭不记录,按钱迹已有分类完成归类,检查模板中已经存在的记录,最后生成可导入文件和校验报告。
接下来由 Skill 自动完成:
- 在当前月份目录识别支付宝和微信账单,并在上一级定位钱迹模板
- 核对支付宝和微信声明的交易笔数
- 将部分退款与原消费合并,金额按实际花费计算
- 排除交易关闭、免押下单和全额退款
- 使用钱迹已有分类进行语义归类
- 审阅疑似已经存在于钱迹的记录,避免重复导入
- 生成钱迹导入文件和完整性校验报告
第四步:导入钱迹
Skill 完成后会返回两个文件:
QianJi_合并_2026-07.csv
QianJi_合并_2026-07.csv.validation.json
只有校验报告显示以下结果时,才应把 CSV/XLSX 导入钱迹:
status = PASS
coverage_check = true
refund_aggregation_check = true
classifications_check = true
下个月怎么做
不需要重新开发或修改规则:
- 新建下个月的文件夹
- 只放入新的支付宝和微信账单
- 在 Codex 中发送同一段提示
钱迹模板可以长期复用。如果你在钱迹里新增分类、修改字段,或者希望更新用于判重的历史记录,再重新导出并替换模板即可。
Skill 会遵守的规则
- 每条原始记录必须进入导出账单或明确的排除组,不能静默漏单
- 部分退款只保留一条实际花费记录
- 交易关闭和全额退款不作为消费导入
- 跨账期且无法找到原单的退款保留为退款收入
- 分类和二级分类只能使用钱迹参考账单中已有的值
- 余额宝转出、基金买卖和信用账户还款按转账处理
- 交易对方、商品、支付方式、状态和订单号写入备注
- 疑似重复只提示,不会在未经审阅时自动删除
常见问题
为什么输出条数少于支付宝和微信的总条数?
退款会与原消费合并,关闭交易和确认已存在于钱迹的记录不会再次导入。是否漏单由校验报告的 coverage_check 判断,而不是比较输出行数。
为什么需要钱迹模板?
它提供目标列格式和你的个人分类体系,也能作为初始重复记录参考。没有模板,Skill 无法保证生成结果与你的钱迹账本一致。
Skill 没有被识别怎么办?
安装后开启新对话。确认目录存在:
~/.codex/skills/merge-qianji-bills/SKILL.md
账单会上传到 GitHub 吗?
不会。仓库的 .gitignore 默认排除账单、运行计划和导出文件。仍建议只在自己的电脑和可信 Codex 环境中处理账单。
不使用 Skill 的高级用法
项目也提供独立命令行工具。适合开发者、自动化任务或没有 Codex 的环境。
<details> <summary>展开命令行流程</summary>conda create -n py39 python=3.9
conda run --no-capture-output -n py39 python -m pip install -e . --no-build-isolation
conda run --no-capture-output -n py39 python run.py scan bills/2026-07
conda run --no-capture-output -n py39 python run.py prepare bills/2026-07
conda run --no-capture-output -n py39 python run.py export runs/2026-07
程序默认在月份目录的上一级寻找钱迹模板。模板放在其他位置时使用:
conda run --no-capture-output -n py39 python run.py prepare bills/2026-07 --qianji D:\账单模板\QianJi.csv
一次性接受自动分类建议:
conda run --no-capture-output -n py39 python run.py auto bills/2026-07
自动模式不会调用 Codex,商户语义可能存在歧义,推荐优先使用 Skill 流程。
</details>开发
conda run --no-capture-output -n py39 python -m unittest discover -s tests -v
- Skill 工作流:SKILL.md
- 分类决策契约:references/classification-decisions.md
- 核心转换器:
src/qianji_bill_merger/core.py - 月度工作流:
src/qianji_bill_merger/app.py - License:MIT
微信扫一扫