尚未检测到更新。GitHub 发布版本后会显示在这里。
Easy Way to see What Is New
翻译准备中
正在加载完整 README。
查看完整 README ↗Live site: nycgallerytracker.com
A free, interactive map of New York City's art galleries — about 235 of them across all five boroughs — that checks every gallery's website each day and flags the ones that have posted something new. Open it to see what's on near you, plan a gallery walk, or get a weekly email of new shows.
/new-shows/ and sent by email to
subscribers every Monday./galleries/) and walking routes
(/routes/) for planning an afternoon of gallery-hopping.Everything runs on a schedule in GitHub Actions and is served as static files by Netlify. There is no server or database — the data lives in this repo.
GitHub Actions (daily, 12:00 UTC)
scraper.py → checks every gallery site, records which ones changed
validate_data.py → stops the build if any data looks wrong
build_site.py → regenerates every page and sitemap.xml
commit + push → Netlify deploys the update automatically
(Mondays) render_weekly_digest.py → emails the weekly digest
If validation fails, the site keeps the previous day's data rather than publishing bad data.
| File | Purpose |
|---|---|
index.html | The homepage: map, directory, sign-up |
data/galleries.json | The gallery dataset (GeoJSON) plus change-tracking state |
scraper.py | Daily change detection across all gallery sites |
validate_data.py | Sanity checks (e.g. coordinates that don't match the address) |
build_site.py | Runs all the page generators in the right order |
render_*.py | Page generators: gallery cards, area pages, guides, routes, digests |
site_common.py | Shared header, footer, styles and analytics for generated pages |
build_gallery_list.py, fetch_google_places.py | One-off tools used to build the gallery list |
.github/workflows/ | Scheduled scrape/build and manual digest send |
Requires Python 3.11.
pip install -r requirements.txt
python scraper.py # optional — hits every gallery website
python validate_data.py
python build_site.py
python -m http.server 8000 # then open http://localhost:8000
The one-off data tools need API keys in environment variables
(MAPBOX_TOKEN, GOOGLE_PLACES_KEY); sending the digest needs
BUTTONDOWN_API_KEY. None of these are needed to build or view the site.
Python (requests, BeautifulSoup, pandas) · Mapbox GL JS · GitHub Actions · Netlify · Buttondown
Gallery missing, closed, or in the wrong place? Please open an issue.