Simon Willison手机上用Claude Code为博客添加野生动物观察功能

Simon Willison用手机上的Claude Code为博客开发了iNaturalist观察记录整合功能
知名开发者Simon Willison使用Claude Code网页版,在手机上为个人博客开发了野生动物观察记录(Sightings)功能。该功能基于博客已有的Beats内容聚合系统扩展,将iNaturalist上超过十年的观察数据深度整合到博客中,支持首页展示、日期归档和站内搜索。这一案例展示了AI编程工具突破设备限制、降低个人网站开发门槛的实际价值。
背景:技术博主的自然观察之旅
Simon Willison——知名开发者、Datasette 创始人——最近入手了一台 Canon R6 Mark II 相机,开始大量拍摄鸟类和野生动物照片。他将最佳作品分享到自然观察平台 iNaturalist 上,并萌生了一个想法:为什么不把这些观察记录也整合到自己的博客中?
Simon Willison 是 Django 框架的联合创始人之一,后来创建了 Datasette——一个将 SQLite 数据库即时转化为可交互 API 和数据浏览界面的开源工具。Datasette 的设计哲学强调数据的可探索性和发布便利性,这与他将外部平台数据整合到博客的思路一脉相承。Simon 同时也是 LLM(大语言模型)工具生态的活跃开发者,他开发的 llm 命令行工具和相关插件体系,使得开发者可以在终端中便捷地调用各种 AI 模型。
iNaturalist 本身是由加州科学院和国家地理学会联合运营的全球性公民科学平台,拥有超过 1.5 亿条观察记录。用户上传野生动植物照片后,平台会通过计算机视觉模型提供物种识别建议,再由社区专家进行验证。经过社区确认的「研究级」观察数据会被纳入全球生物多样性信息网络(GBIF),供科研机构使用。该平台提供完善的 API 接口,支持按用户、地理位置、物种分类等维度查询数据,这正是 Simon 能够将数据拉取到博客中的技术基础。
于是,他用 Claude Code 的网页版,直接在手机上完成了这个功能的开发。
功能实现:从原型到正式上线
快速原型验证
Simon 在前一天(5月1日)已经完成了一个成功的原型验证(inat-sightings),证明了从 iNaturalist 拉取数据并展示在博客上的可行性。基于这个原型,他决定将其正式集成到博客系统中。
基于 Beats 系统的扩展
这个功能并非从零开始构建,而是作为他此前开发的 Beats 系统的扩展。Beats 是 Simon 博客中用于聚合外部内容的机制——一种内容联合分发(syndication)框架。新增的「Sightings」(观察记录)成为了这个系统中的又一种内容类型。
内容联合分发是早期互联网的核心理念之一,RSS(Really Simple Syndication)和 Atom 协议允许用户订阅和聚合来自不同来源的内容。Simon 的 Beats 系统延续了这一传统:它本质上是一个内容聚合引擎,将散布在 Mastodon、GitHub、iNaturalist 等平台上的活动统一拉取、存储并展示在个人博客中。这种架构遵循 IndieWeb 运动倡导的 POSSE(Publish on your Own Site, Syndicate Elsewhere)原则——先在自己的站点发布,再分发到其他平台,或反向将外部内容回收到个人站点。
从他公开的 GitHub PR #668 可以看到完整的代码变更和提示词(prompt),这本身也是一个值得参考的 AI 辅助编程案例。
深度整合而非简单嵌入
有意思的是,这些观察记录并非简单地嵌入一个 iframe 或外部链接。它们与博客的其他内容形式享有同等待遇:
- 首页展示:观察记录会出现在博客首页的内容流中
- 日期归档:按日期归档页面中可以浏览到这些记录
- 站内搜索:观察记录被纳入全站搜索索引
这意味着当你在 Simon 的博客中搜索「lemur」(狐猴),你会看到他 2019 年在马达加斯加拍摄的狐猴照片——他回溯导入了超过十年的 iNaturalist 观察数据。
技术亮点:手机上用 Claude Code 完成开发
这个案例中最引人注目的细节是:整个功能是在手机上使用 Claude Code for web 完成的。
Claude Code 最初以命令行工具(CLI)形式发布,运行在终端环境中,能够直接读写文件系统、执行命令、操作 Git 仓库。2025 年推出的网页版将这一能力带入浏览器环境,用户无需本地安装即可通过对话方式驱动代码生成、修改和提交。它与 GitHub 深度集成,可以直接创建 Pull Request。这意味着开发者在任何有浏览器的设备上——包括手机——都能完成从代码编写到提交审查的完整工作流,突破了传统开发对桌面 IDE 的依赖。
这展示了当前 AI 辅助编程工具的一个重要趋势——开发不再局限于传统的桌面 IDE 环境。传统软件开发高度依赖大屏幕、键盘快捷键和复杂的 IDE 功能(代码补全、调试器、文件树导航等)。手机屏幕的物理限制使得直接在移动端编写代码几乎不可行。但 AI 编程助手改变了交互范式:开发者不再需要逐行敲代码,而是通过自然语言描述意图,由 AI 生成完整的代码变更。这将编程的瓶颈从「打字和导航」转移到了「思考和表达」,而后者并不依赖大屏幕。
对于像 Simon 这样熟悉自己代码库的开发者来说,借助 AI 编程助手,即使在移动设备上也能完成有意义的功能开发。关键在于开发者对系统架构的理解和对需求的清晰表达——这些认知层面的工作不受设备形态限制。
从截图来看,最终的 Sightings 页面设计简洁实用:支持搜索和筛选,每条记录包含时间、物种名称和照片缩略图,还提供了 RSS 订阅功能。208 条记录分 7 页展示,涵盖了从啄木鸟、鱼鹰到西部篱蜥等多种物种。
更大的图景:AI 时代个人网站的复兴
这个小项目折射出几个值得关注的趋势:
AI 正在降低个人网站的维护成本。 过去,将外部平台数据整合到个人博客需要相当的开发投入——理解 API 文档、编写数据同步逻辑、设计数据模型、构建前端模板、处理分页和搜索索引。现在,借助 Claude Code 这样的 AI 编程助手,一个下午甚至更短的时间就能完成。AI 承担了大量样板代码的编写和技术细节的处理,开发者只需专注于架构决策和产品设计。
内容聚合回归个人掌控。 在社交媒体平台主导内容分发的时代,Simon 选择将自己散落在各平台的内容重新汇聚到个人博客,这是对「拥有自己数据」理念的实践。当平台关闭、改变政策或限制 API 访问时,那些只存在于平台上的内容可能永久丢失。将数据回收到自己控制的基础设施上,是一种数字自主权的体现。
AI 辅助编程的真实日常用例。 相比那些宏大的 AI 编程叙事——自动生成完整应用、替代软件工程师——这种「用 Claude Code 在手机上给自己博客加个功能」的场景,或许更能代表 AI 编程工具的日常价值。它不是替代开发者,而是放大开发者的能力,让他们在碎片化时间、受限设备上也能推进项目。
Simon Willison 一直是 AI 工具的深度使用者和观察者,他的每一个小项目往往都能折射出工具能力的真实边界。这次的 Sightings 功能虽然不大,但清晰地展示了 Claude Code 在实际项目中的可用性——包括在手机这样的受限环境下。
核心要点
- Simon Willison 使用 Claude Code 网页版在手机上为博客开发了野生动物观察记录(Sightings)功能
- 该功能基于其博客的 Beats 内容联合分发系统扩展,观察记录与博客其他内容深度整合,支持首页展示、日期归档和站内搜索
- 回溯导入了超过十年的 iNaturalist 观察数据,实现了跨平台内容的个人聚合
- 案例展示了 AI 编程工具在移动端和实际项目中的可用性,降低了个人网站功能开发的门槛
相关推荐
产品体验Qoder vs Cursor实测对比:同样20美金谁更强?
实测对比Qoder和Cursor两款AI IDE,从Agent自主修复能力、人工沟通次数、架构决策等维度评测。Qoder仅需2次沟通完成任务,Cursor需8次。详细分析两者差异,帮你选择最适合的AI编程工具。
产品体验Cursor云Agent演示:打通软件开发全链路瓶颈
深度解析Cursor云Agent最新Demo,展示如何通过云端虚拟机、自动测试产物和全链路控制平面,系统性消除软件开发生命周期中的人类瓶颈,让Agent自主运行、人按需介入。
产品体验Cursor 3.0深度解析:多Agent并行、Design Mode与Best-of-N模型对比
Cursor 3.0正式发布,从AI辅助编程工具进化为Agent舰队指挥中心。本文详解多智能体并行、Design Mode可视化编辑、Best-of-N多模型择优等核心功能,解读AI编程新范式。