iNaturalist Sightings
Tool: iNaturalist Sightings (https://tools.simonwillison.net/inat-sightings)
I wanted to see my iNaturalist (https://www.inaturalist.org) 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 (https://github.com/simonw/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 (https://github.com/simonw/inaturalist-clumps) as a Git scraping (https://simonwillison.net/series/git-scraping/) repository to run that tool and record the result to clumps.json (https://github.com/simonw/inaturalist-clumps/blob/main/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 (https://github.com/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
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
Tags: tools (https://simonwillison.net/tags/tools), claude-code (https://simonwillison.net/tags/claude-code), inaturalist (https://simonwillison.net/tags/inaturalist), generative-ai (https://simonwillison.net/tags/generative-ai), ai (https://simonwillison.net/tags/ai), llms (https://simonwillison.net/tags/llms)
Write a comment