我用Claude Code提取航班数据
一个Claude Code会话代替了数小时的行政工作。
AI编程/Vibe Coding 遇到问题需要帮助的,联系微信 ezpoda,免费咨询。
在使用任何工具之前,我想象了手动版本会涉及什么。
打开每封邮件。找到出发航班日期。找到返回日期。记下目的地。将往返航程配对,这些有时在同一个预订中,有时不在。计算缺席天数,记住出发和返回日期不算,只计算中间的完整天数。将其记录到电子表格中。重复。
对于一个充满预订确认邮件的收件箱,每封邮件一两分钟,很容易累积一个多小时或更长时间的细致、容易出错的工作。认知负荷不仅仅是时间,它是为了避免配对错误的航班或转置日期所需的持续注意力。这是一种单次分心就意味着重新开始的任务。
可行。但这并不是我想花费晚上的方式。我相当确定有更好的方式,而且可能是更愉快的方式。
我是一个有点技术性的产品经理,但仍然不是开发人员。如果我自己从头开始编写脚本来做这件事,在这么短的时间内是不可能的。我将不得不花费大量时间学习和查阅事情。使用Claude Code,所有这些都是不必要的。
1、向Claude Code描述问题
对于那些不认识Claude Code的人,它是一个在终端中运行的AI编码助手:一个文本窗口,你直接向计算机输入命令,而不是通过图形界面点击。它是目前可用的几种编码代理之一。其他的在浏览器中运行,最初感觉更熟悉。Claude Code在本地运行,这给了它对你的文件和环境更直接的访问。
你描述你想要构建什么,它编写代码、运行代码、读取错误、修复错误并迭代,所有这些都在一个单一的对话中。它还可以读取文件、搜索网络、运行命令并在整个项目上执行多步骤任务。你不需要知道如何自己编写代码。你可以清楚地描述一个问题。对于简单的任务,你完全可以在没有任何技术背景的情况下走很长的路。对于更复杂的任务,愿意与正在构建的东西参与会有所帮助。如果你询问,Claude Code将解释你不理解的任何内容。
在编写任何代码之前,我通常花几条消息就方法达成一致,这降低了走错方向的风险。我的开场提示是这样的:
我需要从Gmail提取我所有的Ryanair航班数据。我正在申请英国公民身份,需要计算过去五年中我每次离开英国的时间。我想要一个脚本,连接到Gmail,找到自2021年以来我所有的Ryanair预订确认邮件,提取出发日期、返回日期和目的地,将单独的航班归类为完整的行程,按照英国移民局规则计算每个行程的缺席天数,并输出一个干净的CSV,我可以在填写表格时引用。在我们开始编写之前,让我们对方法达成一致。
从那里我们有简短的来回确认几个细节:如何处理往返航班单独预订并落在不同电子邮件中的行程,以及输出格式应该采用什么。一旦我们就方法达成一致,Claude Code编写了整个脚本。
它清晰地规划和构建了解决方案:使用Gmail API直接从Google的服务器读取电子邮件,使用预订参考号将航班归类为行程,并在运行摘要旁边输出结构化的CSV(与电子表格兼容的文件)。
2、连接到Gmail
要以编程方式读取电子邮件,你需要通过Google设置访问凭证,本质上告诉Google你的脚本有权限读取你的收件箱。如果你以前没有做过这件事,Claude Code可以逐步引导你完成,如果自上次有人编写指南以来事情发生了变化,你可以分享你看到的截图,它会适应。涉及的步骤包括创建一个Google Cloud项目、启用Gmail API和下载凭证文件。
在连接完全工作之前,我必须做几处调整,但每次我都能向Claude Code显示错误信息,我们共同工作解决问题。
3、在读取一封邮件之前的三个错误
在连接完全工作之前出现了三个独立的问题。
第一,访问被阻止。我的Gmail地址没有作为测试用户添加到Google Cloud设置中。一旦Claude Code将我指向控制台中的正确位置,就迅速修复了。
第二,第一次真正的连接尝试上出现了身份验证错误。脚本没有以Google期望的方式处理登录流程。Claude Code通过阅读错误信息确定了原因,并重写了那部分。我不需要了解技术细节,只需确认修复是有意义的。
第三,Gmail访问本身没有为项目开启。在Cloud Console中的另一个一键修复,由Claude Code通过阅读错误输出发现。
三个错误,三个修复。这通常就是阻止人们的原因。每个错误都需要你知道在哪里看以及它意味着什么。在这里,我向Claude Code(或任何AI编码工具)展示我正在看到的内容,它告诉我该做什么。
4、另一个波折:找到83封电子邮件,提取0次行程
第一次运行成功连接并找到了所有83封电子邮件。但它返回了零次行程。不是错误。只是没有提取任何内容。在构建任何新事物时,这很常见。AI通常善于读取输出并解决为什么事情不起作用的原因。
我分享了一张真实的Ryanair预订确认邮件的截图。Claude Code阅读了它,并识别了实际电子邮件看起来与解析器所期望的三个具体不匹配。
第一,日期。Ryanair使用两位数的年份格式:23 Dec 25而不是23 Dec 2025。解析器正在搜索不存在的内容。
第二,机场代码。电子邮件将它们用括号包裹:(STN) - (LIS)表示从斯坦斯特德到里斯本。解析器正在查找没有括号的代码。
第三,预订参考标签。Ryanair电子邮件使用Reservation:而不是Booking ref:。
一次修复,一次重新运行:41封预订确认电子邮件被解析(剩余的42封是营销信息和服务通知),提取了18次行程。
两位数的年份值得注意。如果没有截图可供查看,AI可能会花费很长时间追逐那种不匹配。分享实际电子邮件使其立即可见。
4、三个被标记为不匹配的行程
三次行程被标记为不匹配。为15次行程找到了返回航班,但这三次没有。原因是那些行程是作为两个单独的交易预订的,因此往返航班具有不同的预订参考。
修复是一个后备规则:对于任何不匹配的返程航班,找到随后的航班返回到英国机场,无论预订参考如何。所有三次都解决了。
其中一次涉及飞往里斯本并从波尔图返回,作为单独预订,正确识别为单次缺席。
5、结果
找到的行程: 18
总缺席天数: 86
5年限制: 450天
剩余: 364天
剩余是我被允许在英国度过直到达到五年期限之前的天数,然后我申请。
以下是输出看起来像的几个示例行:

包含航班、目的地、日期和在英国外总天数示例的表格
行程5是一个多城市的示例:飞往里斯本,从波尔图返回,作为两次交易预订,正确解析为单次十天的缺席。行程8跨越了新年,于2024年1月1日返回,在两个日历年中正确计算了九天。
所有18次行程都解决了。一个CSV文件,准备好与我的电子邮件确认进行交叉引用。整个会话花费的时间比手动处理前二十封电子邮件要少。
6、这意味着什么
像这样的任务已经存在工具,包括AI驱动的工具。如果你想要托管解决方案,你可能会找到一个。但如果你更喜欢精确地为你的问题构建一些东西,或者不想添加另一个订阅,像Claude Code这样的工具是一个令人信服的替代品,而且进入障碍比过去更低。
对于开发人员来说,这种工具是一个重要的倍增器:他们可以比以前更快地构建、跨更多语言和API。对于那些不是开发人员但愿意与正在构建的东西参与的人来说,它打开了一类以前无法获得的工作。你不需要了解像OAuth这样的东西(让第三方脚本安全访问你的Google账户的身份验证协议),然后你就可以开始。你可以在进行过程中学习你需要了解的东西,Claude Code解释你询问的任何内容。
我认为这不是作为任何东西的替代品最有用,而是作为达到原本不会发生的情况的一种方式。
这个问题的范围有所帮助。这是一个定义明确、包含的问题:特定的电子邮件格式、清晰的输出要求、单一的数据源。它快速且直接。
如果你愿意花时间理解正在构建什么,即使在表面层面上,也会产生回报。询问解释、仔细检查输出、学习何时使用第二个模型或手动检查:这些习惯比你的技术知识的深入程度更重要。你参与得越多,你可以构建的越多。
7、想要自己做吗?
对于非技术读者,我希望这作为现在可能发生的事情的具体示例:一个真实的、具体的行政问题,通过一次对话解决,在一个晚上内完成。
该脚本可在 github.com/UXVal92/gmail-flight-extractor 作为起点使用并根据需要调整,或者把它交给你的AI编码助手审查和修改。
原文链接: How I Used Claude Code to Extract Five Years of Flight Data from Gmail
汇智网翻译整理,转载请标明出处