← Back to Skills Marketplace
muxueqingze

Historical Map

by muxueqingze · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
121
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install historical-map
Description
Generate beautiful vintage-style historical maps from GeoJSON data. Supports multiple projections, color palettes, timelines, compass roses, parchment overla...
README (SKILL.md)

Historical Map Generator

Generate beautiful vintage-style historical maps from GeoJSON data.

Quick Start

# Install dependencies
pip install geopandas matplotlib numpy Pillow pyproj shapely

# Download historical GeoJSON data
git clone https://github.com/aourednik/historical-basemaps.git
# Copy world_YYYY.geojson files to ./data/

# Generate a map
python generate.py --year 1914 --region europe --output europe_1914.png

What It Does

  • Historical boundaries from 10,000 BC to 2010 AD (50+ time slices)
  • Multiple projections: Lambert Azimuthal, Lambert Conformal Conic, Mollweide, Plate Carrée
  • 4 color palettes: Vintage (HOI4-inspired), Pastel, Dark, Satellite
  • Decorative elements: Compass rose, scale bar, timeline, legend, ocean labels
  • Post-processing: Parchment overlay, vignette darkening, paper grain noise
  • Customizable: Override any country color, add custom events, swap basemap textures

Available Time Slices

Commonly used years from historical-basemaps:

world_bc3000.geojson, world_bc1500.geojson, world_100.geojson
world_500.geojson, world_1000.geojson, world_1200.geojson
world_1400.geojson, world_1492.geojson, world_1600.geojson
world_1700.geojson, world_1783.geojson, world_1815.geojson
world_1880.geojson, world_1900.geojson, world_1914.geojson
world_1920.geojson, world_1930.geojson, world_1938.geojson
world_1945.geojson, world_1960.geojson, world_2000.geojson

Usage Examples

Basic: Europe 1914

python generate.py --year 1914 --region europe --output europe_1914.png

World map with custom palette

python generate.py --year 1600 --region world --projection mollweide --palette dark --output world_1600.png

China with custom colors

python generate.py --year 1400 --region china --palette pastel \
  --title "MING DYNASTY" --title-cn "明朝疆域" --output ming.png

Custom region (Balkans)

python generate.py --year 1815 --region 18,34,32,48 --output balkans_1815.png

With custom events timeline

Create my_events.json:

[
  {"year": "1789", "label": "Revolution", "cn": "法国大革命", "color": "#4169E1"},
  {"year": "1804", "label": "Empire", "cn": "拿破仑称帝", "color": "#2E5E2E"},
  {"year": "1815", "label": "Fall", "cn": "滑铁卢", "color": "#8B0000"}
]
python generate.py --year 1815 --events my_events.json --output napoleon.png

Custom country colors

python generate.py --year 1945 --region world \
  --title "POST-WAR WORLD" --title-cn "二战后的世界" \
  --palette vintage --output postwar.png

Parameters

Parameter Default Description
--year required Historical year (must match a GeoJSON file)
--region europe Region preset or lon_min,lat_min,lon_max,lat_max
--projection laea laea, lcc, mollweide, platecarree
--palette vintage vintage, pastel, dark, satellite
--title auto Main title (Latin/English)
--title-cn auto Chinese subtitle
--data auto-detect Path to GeoJSON file
--basemap none Path to satellite basemap image
--parchment none Path to parchment texture image
--events auto-preset Path to events JSON file
--dpi 300 Output resolution
--no-timeline false Disable bottom timeline
--no-compass false Disable compass rose
--no-postprocess false Skip vignette/noise effects
--output historical_map.png Output file path

Region Presets

Key Coverage
europe Full European continent
balkans Balkan Peninsula
world Global view
asia Asian continent
china China and surroundings
mediterranean Mediterranean basin
middle_east Middle East
americas North + South America

Color Palettes

Vintage (Default)

HOI4-inspired desaturated military colors. Ocean: dark teal. Perfect for war maps.

Pastel

Light, soft colors on off-white background. Great for educational content.

Dark

Deep navy background with gold accents. Dramatic, cinematic feel.

Satellite

Modern cartography style with clean lines. Professional and neutral.

Post-Processing Pipeline

  1. Parchment overlay — Semi-transparent parchment texture (alpha=18/255)
  2. Vignette — Edge darkening for focal point emphasis
  3. Paper grain — Subtle noise for aged paper texture
  4. Desaturation — 14% color reduction for vintage feel

Python API

from generate import HistoricalMapGenerator

gen = HistoricalMapGenerator(
    data_path='data/world_1914.geojson',
    basemap_path='textures/satellite.jpg',
    parchment_path='textures/parchment.jpg',
)

gen.generate(
    year=1914,
    region='europe',
    projection='laea',
    title='EUROPA ANNO DOMINI MCMXIV',
    title_cn='第一次世界大战前夜的欧洲',
    color_palette='vintage',
    dpi=300,
    output_path='my_map.png',
)

Data Source

historical-basemaps by @aourednik. 50+ GeoJSON time slices covering 10,000 BC to 2010 AD.

Note: Border precision varies. The BORDERPRECISION field indicates accuracy (1=high, 3=approximate). Some regions (especially Balkans) may have minor gaps between neighboring territories. For publication-quality maps, consider manually editing the GeoJSON or using commercial data.

Requirements

  • Python 3.9+
  • geopandas >= 0.14
  • matplotlib >= 3.8
  • numpy >= 1.24
  • Pillow >= 10.0
  • pyproj >= 3.6
  • shapely >= 2.0

License

MIT

Credits

Developed by Lumielle / OpenClaw Agent Data: historical-basemaps (CC BY 4.0)

Usage Guidance
This skill appears to do what it says: generate vintage maps from local GeoJSON. Before installing: (1) be prepared to install system-level geospatial prerequisites (GDAL/PROJ) for geopandas; (2) supply or download the historical GeoJSON files into the data paths the tool checks (it does not automatically fetch them); (3) review any GeoJSON you load for sensitive content (the tool will read local files); and (4) run the code in a sandbox or isolated environment if you prefer, since it will read files from your home and project directories (fonts and data) but does not exfiltrate data or require credentials.
Capability Analysis
Type: OpenClaw Skill Name: historical-map Version: 1.0.0 The historical-map skill bundle is a legitimate tool for generating vintage-style maps from GeoJSON data using standard GIS and image processing libraries (GeoPandas, Matplotlib, Pillow). The code in generate.py implements standard cartographic logic, including projections, decorative elements, and post-processing effects like vignettes and parchment overlays, without any evidence of data exfiltration, malicious execution, or prompt injection.
Capability Assessment
Purpose & Capability
Name/description match what the files do: generate.py and the docs implement GeoJSON-based map generation, projections, palettes, and post-processing. Required Python geospatial libraries are appropriate for this functionality.
Instruction Scope
SKILL.md and generate.py limit actions to loading local GeoJSON, optional basemap/parchment images, and rendering images. The code searches expected local paths (~/.openclaw/... , ~/historical-basemaps, ./data) and font locations; it does not contain network calls, credential reads, or instructions to transmit data to remote endpoints.
Install Mechanism
Install is instruction-only (pip installs listed in SKILL.md). The listed packages (geopandas, pyproj, shapely, matplotlib, Pillow, numpy) are expected for geospatial plotting but geopandas often requires non-Python system libraries (GDAL, PROJ). Users may need to install system packages prior to pip; this is a usability note rather than a security issue.
Credentials
The skill requests no environment variables, no credentials, and no config paths beyond reading local data directories and fonts. The resources accessed are proportionate to map generation.
Persistence & Privilege
Skill does not request always:true and does not modify other skill or system configurations. It is instruction-only and will run only when invoked.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install historical-map
  3. After installation, invoke the skill by name or use /historical-map
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release: vintage historical map generator with 4 projections, 4 palettes, decorative elements, post-processing pipeline, CLI and Python API, bilingual README
Metadata
Slug historical-map
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Historical Map?

Generate beautiful vintage-style historical maps from GeoJSON data. Supports multiple projections, color palettes, timelines, compass roses, parchment overla... It is an AI Agent Skill for Claude Code / OpenClaw, with 121 downloads so far.

How do I install Historical Map?

Run "/install historical-map" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Historical Map free?

Yes, Historical Map is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Historical Map support?

Historical Map is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Historical Map?

It is built and maintained by muxueqingze (@muxueqingze); the current version is v1.0.0.

💬 Comments