One click · Free

Your Obsidian Vault Is Already a Relationship Map

If you've been worldbuilding in Obsidian, you have spent months writing the hard part — the notes and the [[links]] between them. What you don't have is a way to see who your NPCs are to each other, mark which connections your players don't know about, or share a safe version with your table. Import the vault and you get all three, without rewriting a word.

What the import actually does

Step 1

Every note becomes a node

Each .md file in the vault becomes a node named after the file, with the note body carried across as its description and your tags preserved.

Step 2

Every wikilink becomes a relationship

A [[link]] that resolves to another note in the vault becomes a directional edge from one node to the other. Links to notes that don't exist are counted and shown, not silently discarded.

Step 3

Frontmatter sets the type

A type: field decides whether a note is an NPC, PC, faction, location or abstract. No frontmatter? Your tags are checked next. You can reassign anything in the review step.

What it reads from your notes

You don't need to write your vault this way — this is just what gets recognised if it's there.

In your noteBecomes
type: npc in frontmatterNode typed as an NPC
tags: [faction] or an inline #factionNode typed as a Faction (also: guild, org, organization)
#location, #place, #regionNode typed as a Location
#pc or #playerNode typed as a player character
[[Lady Voss]] in the bodyA directional relationship to that note's node
Any other tagsCarried over as node tags, usable for filtering and colour
Nothing recognisableAn Abstract node you can retype in the review step

What you gain over the graph view

Obsidian's graph view is genuinely lovely and almost useless at the table, for one structural reason: a wikilink has no type. It can tell you the innkeeper and the guard captain are connected. It cannot tell you she's blackmailing him.

Typed, directional, weighted

After import, retype the edges that matter: ally, rival, enemy, family, subordinate, romantic, secret. Set a direction, because trust usually isn't mutual, and a strength you can revise as the campaign erodes it.

Secrets and player-safe sharing

Mark nodes and edges hidden from players, then share a link. The hidden parts are stripped from the payload before the URL exists — something you cannot do with a vault you either share or don't.

Keep using Obsidian

This isn't a migration and it doesn't ask you to leave. The import is read-only and one-way — your vault is never modified — so the sensible workflow is to keep writing long-form prose, lore and session notes where you already write them, and re-import when the cast has grown enough that you want to see the shape of it again.

Once it's in, the rest of the toolkit applies: relationship mapping, faction tracking, and the wider campaign manager.

Frequently asked questions

How does the Obsidian import work?
You point it at your vault folder and it reads every .md file in it. Each note becomes a node named after the file, with the note body as its description. Each [[wikilink]] that resolves to another note in the vault becomes a relationship edge from the linking note to the linked one. Links pointing at notes that don't exist are counted and reported, not silently dropped.
How does it know which notes are NPCs and which are locations?
It checks a `type:` field in your frontmatter first. Failing that, it looks at your tags — npc, pc, player, faction, organization, org, guild, location, place and region all map to a node type. Anything it can't classify becomes an Abstract node, and you can reassign types in the review step before anything is committed.
Do I have to restructure my vault first?
No. It reads whatever you already have. If your vault has no frontmatter and no tags at all, you'll get a correct map of every note and every link with everything typed as Abstract — still useful, and you can retype nodes from the review screen or afterwards in the app.
Is my vault uploaded anywhere?
No. The import runs entirely in your browser using the local file picker. Nothing is sent to a server, no account is created, and the resulting campaign is stored in your browser's local storage like any other.
Does it change or write to my vault?
Never. The import is strictly one-way and read-only. Your vault is untouched, and you can keep using Obsidian exactly as before — many GMs keep writing prose in Obsidian and re-import when the cast has grown.
How is this different from Obsidian's own graph view?
The graph view shows that two notes are linked. It can't show what kind of link it is, in which direction, how strong it is, or hide one from your players — because those aren't things a wikilink records. Import gives you typed, directional, weighted relationships you can then edit, plus a player-safe share view that strips anything you've marked secret.
What are the limits?
Imported edges all arrive as generic 'linked' relationships, because a wikilink genuinely doesn't say more than that — you retype the ones that matter afterwards. Note bodies are truncated at 2,000 characters for the node description. Nested folders are flattened, so two notes with the same filename in different folders will collide.

Part of a complete GM toolkit

The Spider's Web combines an NPC relationship mapper, session planner, initiative tracker, dice roller, and generators into one campaign manager for any tabletop RPG — in person or online. Free, no login required. Your data stays in your browser.

Start your campaign — it's free →