用 AI 把每月两小时的报销发票整理,变成两条命令
重复性工作,大概是职场人最熟悉的时间杀手。
整理发票这件事,说起来不大:邮箱里堆着电子发票,PDF、OFD、12306 链接、滴滴行程单、京东那个永远打不开的 xml,每张都要肉眼核对发票号、剔除个人抬头的、按类别在 Excel 里手动录入。熟练之后,每月两小时;不熟练的话,一下午也有可能。
如果我告诉你,这件事可以变成「两条命令 + 每月自动执行」呢?
事情是这样的:某个周五下班前,我盯着邮箱里第 23 封「您的电子发票」,突然意识到这类每月必做、做完毫无成就感的机械活,恰好是 AI 最该接手的事情。于是我对 Claude Code 说了一句「帮我把这事儿自动化掉」,花了大约半小时写脚本。跑完三个月数据:363 封邮件 → 44 张发票 → ¥8,861.69 总额。
本文是一份完整教程,零基础可用。流程就是和 AI 对话,它负责建文件、写脚本、跑测试,你只负责用大白话描述需求。文末附可直接复制的 Prompt,丢进 Claude / DeepSeek 即可运行。
这篇教程适合谁

门槛极低。只要你每月有重复性事务要处理,就值得一读。唯一的技术前提是完成 Claude / Codex / Cursor 等工具的安装——相关教程全网很多,新手建议从 Codex 或 Cursor 开始。
教程结构导览

以下内容按你的实际需求跳转阅读:
- 不了解 AI 工具安装方式:先完成工具安装步骤
- 第一次听说 Skill:从名词解释开始,按顺序阅读
- 想快速理解 Skill 本质:直接阅读「Skill 的本质:就是一个文件夹」
- 担心自己不会写代码:跳转到「你不需要写代码,你是需求提出者」
- 只想直接抄作业:跳转到「可复制的 Prompt」
- 关注邮箱安全:优先阅读「安全红线」
- 想节省 API 费用:阅读「用免费模型也能跑」
核心概念:先把这几个名词弄清楚

- AI Agent / 大模型助手:可以理解为一名「实习生」——会对话、会写代码、会调用外部工具。Claude Code、Codex 均属此类。
- Skill:给这个实习生安装的一个小插件,使其掌握某项具体技能。比如装上「发票技能」后,它就学会了从 QQ 邮箱拉取发票。
- IMAP:邮箱的远程访问协议,可以理解为「程序访问邮箱的入口」。开通后,程序能够像人一样登录并读取邮件。
- 授权码:邮箱密码的替代品。由邮箱生成的专用码,可随时撤销,比直接提供登录密码安全得多。
- Token:大模型的计费单位。约 1.5~2 个 Token 对应 1 个中文字符,读取文档和生成回复均按此计费。
以上名词无需刻意记忆,用到时回来查阅即可。
Skill 的本质:就是一个文件夹

听起来高大上,实际上 Skill 就是硬盘里的一个文件夹。
通常包含两类内容:
说明书(一个文本文件):用通俗语言告诉 AI「这个技能做什么、什么时候用、怎么调用」。
执行工具(若干脚本文件):真正完成具体工作的代码——比如连接邮箱、拉取附件、读取 PDF、写入 Excel。
以「拉取发票」这个 Skill 为例,文件夹里大致有这些东西:
| 文件 | 作用 |
|---|---|
| 说明书 | 告诉 AI:当用户说「拉一下 4 月发票」时,调用这个 Skill |
| 邮件抓取脚本 | 登录邮箱、按日期搜索、下载附件 |
| 链接处理脚本 | 单独处理 12306、滴滴等发链接而非附件的邮件 |
| 部署备忘 | 记录部署步骤和踩过的坑 |
AI 启动时会扫描这些文件夹,把说明书内容加载到上下文中——当你说出「拉一下 4 月发票」,它就知道该调用哪个工具。
因此,「创建一个 Skill」归纳起来只有三步:
- 建一个文件夹(文件夹名即 Skill 名)
- 写一份说明书,用大白话讲清楚「做什么 / 何时用 / 怎么调用」
- 放入执行工具,即真正干活的脚本文件
虽然不同 AI 工具存放 Skill 的目录位置不同,但底层结构完全一致:文件夹 + 说明书 + 工具。理解这一点后,所有操作都能无缝迁移到自己的需求上。
你不需要写代码,你是需求提出者

文件夹里的一切都可以交给 AI 完成。你真正需要做的只有两件事:
提需求:用自然语言描述「我想要什么 / 不想要什么 / 出错了怎么办」,越具体越好。
反馈错误:运行出问题,把现象贴回去(比如「它把日期搞错了」),让 AI 修正。
代码写出来不用全部读懂,看不懂的地方直接问「这段代码在做什么」,AI 会用大白话解释。
需要注意的是:这个 Skill 不是直接照搬就用的。不同公司的报销规则差异很大——
- 有报销系统的公司,只需要「下载发票 + 归档」
- 没系统的公司,需要「提取字段 + 生成 Excel 汇总」
- 自由职业者可能需要按客户分类
- 有些公司要求「超过 500 元的餐饮单独标注」
所以读这篇教程的正确方式,是把它当作参考案例,关注背后的思路和决策过程,然后结合你公司的实际情况,和 AI 一起「聊」出属于你自己的 Skill。文末的 Prompt 也预留了「自行修改」的标注位置。
关键一步:先聊需求,别让 AI 直接动手

很多人犯的错误是:上来就对 AI 说「帮我做一个报销自动化」。结果 AI 埋头写代码,等你反应过来已经推倒重来了一遍。
正确的做法是先聊清楚这四件事:
想要什么:每月生成一份 Excel,按类别汇总金额,直接提交财务。
数据来源:QQ 邮箱里搜索包含「发票」关键字的邮件。
未来可能的变化:哪天可能换 163 邮箱或 Gmail;哪天报销模板可能调整。
需要注意的细节:个人抬头发票不能报销;同一张发票可能同时存在 PDF 和 OFD 两份格式;12306 / 滴滴 / 京东发送的是链接而非附件,需要单独处理。
其中第三条最为关键——「未来会变什么」直接决定了 AI 如何设计代码结构。经验丰富的 AI 会主动建议「拆成两个 Skill:一个负责拉取发票,一个负责整理 Excel」,这样换邮箱时不会影响整理逻辑。
这一步多花十分钟,后续能节省 80% 的返工时间。
调试阶段:AI 写代码、你反馈现象
问题一:QQ 邮箱搜索条件的隐藏 bug
初次运行结果完全失真——明明 4 月只有 100 多封邮件,搜索却返回了 9740 封,几乎把整个收件箱翻了个遍。
将症状描述给 AI 后,它编写了多组不同的搜索条件让我逐一测试,最终定位到一个官方文档未曾提及的问题:QQ 邮箱的搜索语句在外层添加括号时,”截止日期”过滤条件会失效。修正写法后,搜索立即恢复正常。
这类缺乏文档记录的坑,只能靠 AI 逐条尝试来排查。无需深究细节,只要把现象反馈给 AI,它会自行定位问题所在。
问题二:PDF 与 OFD 格式的互斥处理
中国电子发票有个特殊之处:同一张发票会同时生成两种格式——
- PDF 版:面向人工阅读
- OFD 版:国标电子存档(大量软件无法解析)
两个版本发票号完全一致。初版代码用发票号作为唯一标识进行去重,结果所有 PDF 都被 OFD 覆盖,只剩下一堆无法正常查看的文件。
整个排错过程没有手动写一行代码——只需明确表达”我需要什么”,AI 会自行实现。
首次配置:获取邮箱授权码
Skill 创建完成后,首次运行需要完成一项前置操作:从邮箱中取出授权码并填入配置。这一步必须手动完成(AI 无法代你登录 QQ 邮箱),但流程不复杂——AI 会逐步给出指引:
- 在电脑端打开浏览器(注意不是手机端,手机端没有这个入口),访问邮箱 → 设置 → 账户 → 安全
- 向下滚动,找到并开启 IMAP/SMTP 服务(系统会要求发送短信验证)
- 验证通过后,邮箱会生成一串 16 位授权码——这就是连接邮箱的”钥匙”
- 将这串授权码复制,回到 Claude Code 命令行界面直接粘贴,或自行保存到配置文件中(后者更安全)
扩展说明
163 邮箱、Gmail、Outlook 的操作流程基本相同——都是在邮箱设置中寻找”IMAP / 应用专用密码 / 第三方登录”选项,生成一串专供程序使用的授权码。切记:不要将主密码交给任何程序。
粘贴授权码后,AI 会自动将这串密钥写入项目根目录下的 .env 敏感配置文件,同时将这个文件加入代码仓库的忽略清单(防止误传至云端)。这些操作 AI 会自动完成,你只需确认忽略清单已正确配置。
实测数据
经过三个月的完整运行验证:
- 363 封邮件 → 62 封候选 → 44 张唯一发票
- 报销总额:¥8,861.69
日常使用仅需两句话:
- “拉一下 4 月发票” → 发票自动到位
- “整理 4 月发票清单” → Excel 表格生成在桌面待审
安全红线:密钥管理的三条铁律
自动化处理邮箱,本质上是将”邮箱钥匙”交给程序。守住安全只需做到以下三点:
用授权码,不用主密码
QQ、163、Gmail 均支持生成独立的授权码——这是一串可以随时单独撤销的凭证。主密码决不可交给任何程序。
授权码存入专用敏感文件
不要将授权码复制给他人,不要在分享 skill 时附带密钥。正规项目会自动将敏感信息写入 .env 文件并加入 .gitignore 忽略清单。90% 的密钥泄露事件,都源于遗漏了这一步。
授权码≠密码,该走的流程不能省
可直接使用的 Prompt 模板
以下模板可直接复制至 Claude / DeepSeek 或任何支持代码生成的大模型中使用。无需理解任何代码细节——AI 会负责编写、运行和调试。你只需替换下划线部分,运行异常时将现象反馈给 AI。
先讨论需求(不急着写代码,把要实现的目标聊清楚)
我需要每月从邮箱中提取发票、整理成 Excel 报销单,已经手动处理很久了。
希望用半小时搭建一套自动化方案。我们先把需求梳理清楚:
邮箱类型:**__**(QQ / 163 / Gmail / Outlook)
发票主要来源:**__**(示例:滴滴、12306、京东、餐饮店)
期望输出形式:**__**(示例:一份 Excel + 一份 Markdown 清单)
未来可能的变动因素:**__**(示例:更换邮箱、调整报销模板、新增分类)
请帮我完成:
1. 拆分方案建议——如何将可能变动的部分设计为独立模块(例如"今天可能改、明天可能换"的环节彼此解耦)
2. 关键决策点评估——授权码存储方案、任务完成后是否自动触发下一步、链接型邮件如何处理等
3. 潜在风险提示——列出可能遇到的问题
核心功能要求:
- 使用 IMAP 协议连接邮箱,授权码存入敏感配置文件(.env)
- 支持自然语言指令,如"拉一下 4 月发票"
- PDF 与 OFD 两种格式均保留
- 链接型邮件(12306、京东等)尝试自动访问链接抓取 PDF
- 抓取失败的链接,单独列出供手动处理
- 文件按月份分类归档
数据输出要求:
最终输出结构化数据,提取字段如下:
- 发票号
- 开票日期 / 消费日期
- 销售方
- 项目分类(交通 / 餐饮 / 住宿 / 办公用品 / 其他)
- 价税合计
常见场景的自定义修改示例
| 场景 | 修改方式 |
|---|---|
| 公司只需 PDF | 将”两种格式均保留”改为”仅保留 PDF,OFD 直接丢弃” |
| 分类体系更细致 | 按公司财务标准重新定义分类标签 |
| 自由职业、按客户核算 | 在字段列表中增加”客户名称”字段 |
| 有特殊业务规则 | 直接添加至需求说明,如”超过 500 元的餐饮需单独标记” |
AI 生成初版后,运行一次检验效果,将不符合预期的部分反馈给它修改。通常 3-5 轮迭代即可稳定运行。
小结
整个方案的核心逻辑可以概括为三句话:
- 先说清楚要什么——尤其要明确”未来可能变什么”,不要让 AI 盲目动手
- AI 负责执行,你负责反馈——把现象描述清楚,AI 会自我修正
- 安全由你把关——授权码、敏感文件、禁止上传公网,三件事盯紧
投入半小时,月均两小时的手工操作变成两条自然语言指令。省下的时间,去做真正重要的事。
用免费模型也能跑:我换到了 Ling-2.6-flash

44 张发票全部跑完后,我看了眼账单——旗舰模型的 token 消耗确实不小。
这类场景其实没必要上旗舰。我的判断标准很直接:结构化字段抽取 + 固定处理流程 + 无需复杂推理 = 轻量模型完全够用。
于是换成了 Ling-2.6-flash。这是蚂蚁开源的 100B 参数级免费模型,在同量级中处于 SOTA 水平。它专门针对”读文档、调脚本、跑循环”这类 agent 工作流设计,场景契合度很高。
实测结果:
- 准确率:44 张发票字段全部正确,与旗舰模型持平
- 速度:从 3 分 20 秒缩短至 1 分 50 秒
- 成本:¥0
能做到这一点,关键在于发票字段抽取本质上是结构化任务——字段固定、格式有限,对模型的推理发散能力几乎没要求,只需要稳定、快速、按指令老老实实执行。100B 级别的模型足以胜任。
结论:模型选型 = 任务复杂度匹配。 复杂推理交给旗舰,结构化流水线交给轻量模型,并非越贵越好。
建议:首次切换后先用一两张发票小跑验证,确认字段抽取无误再批量处理整月数据,不要直接全量运行。

关注最新 AI 动态,访问我的主页 http://my.arthaskj.top
夜雨聆风