Talk Map Tooling
Talk Map Tooling
This repository includes a small toolchain to generate an interactive Leaflet map showing locations of your talks based on the front matter in _talks/*.md.
What it does
- Scrapes the
location:field from each Markdown file in_talks/. - Geocodes locations using Nominatim via
geopy. - Uses
getorgto produce a clustered Leaflet map. - Writes the data and page assets into
talkmap/so the site can serve the map statically.
Outputs (committed to the repo):
talkmap/org-locations.jstalkmap/map.htmltalkmap/leaflet_dist/(Leaflet assets)
Prerequisites
- Windows with Python 3 installed (recommended: Python 3.8+)
- Optional: a virtual environment
- Python packages:
geopy,getorg,requests,pyyaml,jinja2
Install deps (PowerShell):
# from the repo root
py -3 -m venv .venv # optional but recommended
.\.venv\Scripts\Activate.ps1
pip install geopy getorg requests pyyaml jinja2
Generate or update the map
- Ensure your talks are in
_talks/with front matter including alocation:string. - Run the generator from inside
_talks/so relative paths line up (as expected by the script):
Set-Location _talks
python ..\talkmap.py
Set-Location ..
This will (re)create the following:
talkmap\org-locations.jswith geocoded coordinatestalkmap\map.htmlto view the map standalonetalkmap\leaflet_distassets (if missing)
- Commit the updated files so they are served by GitHub Pages:
git add talkmap\org-locations.js talkmap\map.html talkmap\leaflet_dist
Viewing locally
You can open talkmap\map.html directly in a browser, or serve the Jekyll site and link to it:
bundle exec jekyll serve --livereload --config _config.yml,_config.dev.yml
Notes and troubleshooting
- Geocoding is rate-limited. If you have many talks, run the script sparingly and avoid rapid retries.
- If a location isn’t found, try making it more specific (e.g., “City, State, Country”).
- The map assets are static; no runtime API keys are required.
- Licensing: Leaflet and related assets are under their respective licenses included in
talkmap/leaflet_dist. See the main repositoryLICENSEfor the site content license, and Minimal Mistakes/academicpages MIT license.
Updating dependencies
These Python tools are not part of the GitHub Pages build. If you change this tooling or add notebooks (e.g., talkmap.ipynb), commit only the outputs in talkmap/ so the site remains fully static in production.
