Geo Story Map

approvedunreviewed

by kywk

Turn Markdown notes into geographic stories with an interactive map and slides.

↓ 89 downloadsUpdated 11d agoMIT

Story Map

Turn coordinate-bearing Markdown notes into paged geographic stories.

One source document and one config render in three places: a standalone React app, the Geo Story Map Obsidian plugin, and a Docusaurus site.

繁體中文 · Docs

Install

WhereHow
ObsidianSettings → Community plugins → Browse → Geo Story Map (listing)
Reactnpm install @story-map/react-story-map react react-dom
Docusaurusnpm install @story-map/remark-story-map react react-dom

Quick start

A StoryMap document is a normal Markdown file with story-map: true frontmatter and one fenced configuration block. Add notes under the noteFolder you name:

---
story-map: true
---

```story-map
title: Chile Trip
map:
  theme: vintage
  center: [-33.4489, -70.6693]
  zoom: 6
noteFolder: Travel/Chile/Places
order: asc
dateField: date-created
```
<!-- Travel/Chile/Places/Santiago.md -->
---
story-map-note: true
title: Santiago
location: [-33.4489, -70.6693]
date-created: 2026-01-15
---

noteFolder finds every note marked story-map-note: true, recursively, and orders them by dateField. Layouts are card, full, and timeline; map themes are auto, light, dark, vintage, cyber, and atlas.

You can also paste a legacy ```leaflet block from the old Obsidian Leaflet plugin and it renders as a plain map, with markers read from a folder — no migration of your notes.

Working on this repository

corepack enable
pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm --filter @story-map/example-react dev   # http://127.0.0.1:5173

Documentation

Start here

GuideWhat it covers
Source syntaxEvery story-map and leaflet block key, and the note frontmatter both read.
Geo Story Map for ObsidianInstall, settings, layouts, note display, AI coordinate lookup.
DocusaurusPublishing stories and legacy maps on a site.
ReactEmbedding <StoryMap /> and <GeoMap /> directly.

Reference and contributor docs

DocumentWhat it covers
SPEC.mdProduct and architecture contract.
docs/architecture.mdImplementation map: packages, data flow, files, APIs.
docs/leaflet-compatibility.mdWhich legacy leaflet keys actually work, and which do not.
AGENTS.mdWorking agreement and definition of done.
RELEASING.mdnpm and Obsidian plugin release steps.
docs/acceptance/Verification evidence.
docs/history/Archived plans. Superseded, not authoritative.

Design rule

react-story-map never imports Obsidian or Docusaurus APIs. Each adapter resolves notes, frontmatter, media and routes into a config before render time, so the renderer has one job and the same code runs in every host.

License

MIT — see LICENSE. Bundled dependency notices accompany the plugin release.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.