[控场AI]
教程攻略· 3 分钟阅读· 1,833 字

iNaturalist观察记录聚合展示:用手机在帐篷里搞定全链路开发

iNaturalist观察记录聚合展示:用手机在帐篷里搞定全链路开发
收听播客对话
0:005:33

iNaturalist观察记录聚合展示:用手机在帐篷里搞定全链路开发

露营的时候别人在烤棉花糖,Simon Willison在用手机写代码——这大概就是程序员和大自然和解的方式。最近他分享了一个iNaturalist观察记录聚合展示项目,从Python CLI工具到自动化数据管道再到前端页面,全程在露营期间用手机完成。

为什么要做这个项目

Simon有两个iNaturalist账号,上面积累了大量的自然观察记录。他想把这些记录按时间和地点分组展示——比如某天下午在某个公园拍的所有动植物归到一起,形成一个完整的「观察日记」效果。

需求听起来简单,但有意思的是他选择在露营期间完成整个项目。别人露营是为了远离科技,他露营是为了证明科技已经无处可逃。用Claude Code for web在手机上撸代码,这是什么?赛博游牧民族的日常。

构建inaturalist-clumper:Python CLI聚类工具

项目的第一步是开发一个叫inaturalist-clumper的Python命令行工具,专门用来获取和聚类iNaturalist的观察记录。

聚类规则很直觉:2小时内且5公里范围内的观察记录自动归为一组。这个逻辑简直就是在用算法还原你那天下午的散步路线——你在湖边拍了只鸟,十分钟后在树丛里拍了朵花,半小时后在草地上拍了只虫子,它们自然属于同一次「出行」。

工具名叫「clumper」(聚块器),命名朴实无华,但功能精准得像个生态学家的GPS日记本。Python CLI工具永远是Simon的瑞士军刀第一把刀。

Git Scraping:把GitHub当免费数据管道

数据采集这块,Simon又祭出了他的招牌操作——Git Scraping。

他创建了一个simonw/inaturalist-clumps仓库,利用GitHub Actions定期运行上面那个CLI工具,把结果保存为clumps.json文件。这意味着:

  • GitHub Actions充当免费的定时任务服务器
  • GitHub仓库充当免费的数据库
  • GitHub托管的JSON文件天然支持CORS,前端JavaScript可以直接fetch

Git Scraping自动化数据采集流程

这操作就像是发现酒店的免费早餐可以打包带走当午餐和晚餐一样——合规,但让人佩服其厚脸皮的创造力。微软看到这种用法大概在默默计算带宽成本。

Claude Code生成前端展示页面

最后一步是前端展示。Simon通过一段自然语言prompt让Claude Code生成了inat-sightings.html页面,功能包括:

  • 从GitHub获取clumps.json数据
  • 使用lazy loading展示缩略图(不会一次性加载几百张图片把手机卡死)
  • 点击缩略图在HTML modal中查看大图
  • 每张图片标注物种的常见名称

这已经不是「让AI帮忙写代码」了,这是「口述需求文档然后AI交付成品」。一段prompt出来,lazy loading、modal大图预览、物种名称标注一应俱全。

整个项目从后端CLI到数据管道到前端展示,全链路一个人在帐篷里用手机搞定。这让那些需要三个团队开两周站会才能上线一个feature的公司情何以堪。

技术栈总结

环节技术方案
数据获取与聚类Python CLI (inaturalist-clumper)
自动化调度GitHub Actions (Git Scraping)
数据存储与分发GitHub仓库 JSON文件
前端展示纯HTML/JS,Claude Code生成
开发环境手机 + Claude Code for web

当你的露营装备清单里「手机」比「帐篷」更重要时,你就知道这个人不是在亲近自然,而是在用自然当素材喂养他的下一个开源项目。

项目地址:iNaturalist Sightings

#iNaturalist观察记录#Git Scraping自动化#Claude Code开发#Python CLI工具#GitHub Actions数据管道
分享:

相关推荐