iNaturalist Sightings

Simon Willison's Blog / 5/2/2026

💬 OpinionDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

Key Points

  • The author wanted to group their iNaturalist observations from two accounts by when they occurred, and built an app for viewing them in a single page.
  • They created a Python CLI (inaturalist-clumper) that fetches observations and groups (“clumps”) them by default within 2 hours and 5 km of each other.
  • The clumping results are generated by a Git scraping repository (inaturalist-clumps) and published as a clumps.json file on GitHub for easy client-side access via CORS.
  • Using Claude Code for web, they prompted the build of inat-sightings.html that fetches clumps.json and renders all observations with small thumbnail images, showing large images in an HTML modal on click.
  • The workflow combines data scraping, GitHub-hosted JSON, and a lightweight front-end to visualize ecological observations on mobile while camping.
Sponsored by: MongoDB — Join MongoDB.local London 2026 on 7 May to learn how teams move AI from prototype to production.

1st May 2026

A white crowned sparrow singing

I wanted to see my iNaturalist observations - across two separate accounts - grouped by when they occurred. I'm camping this weekend so I built this entirely on my phone using Claude Code for web.

I started by building an inaturalist-clumper Python CLI for fetching and "clumping" observations - by default clumps use observations within 2 hours and 5km of each other.

Then I setup simonw/inaturalist-clumps as a Git scraping repository to run that tool and record the result to clumps.json.

That JSON file is hosted on GitHub, which means it can be fetched by JavaScript using CORS.

Finally I ran this prompt against my simonw/tools repo:

Build inat-sightings.html - an app that does a fetch() against https://raw.githubusercontent.com/simonw/inaturalist-clumps/refs/heads/main/clumps.json and then displays all of the observations on one page using the https://static.inaturalist.org/photos/538073008/small.jpg small.jpg URLs for the thumbnails - with loading=lazy - but when a thumbnail is clicked showing the large.jpg in an HTML modal. Both small and large should include the common species names if available

Posted 1st May 2026 at 7:35 pm

This is a beat by Simon Willison, posted on 1st May 2026.

tools 60 ai 1996 inaturalist 9 generative-ai 1769 llms 1735 claude-code 109

Monthly briefing

Sponsor me for $10/month and get a curated email digest of the month's most important LLM developments.

Pay me to send you less!

Sponsor & subscribe