Zach Norgaard238 downloadsD&D session toolkit: create typed campaign notes (NPCs, sessions, adventure logs, locations, PCs) with wikilink cross-references, roll on dice tables, and generate tables and session recaps with AI.
Tabletop Role-Playing Game (TTRPG) note toolkit for Obsidian.
Note types and templates are defined in a config file at your vault root. By default, several note types are included: NPC, Session, Adventure Log, Location, PC, and Table.
The config specifies which sub-folder (ex. NPCs) new notes will be created in, keys for front matter fields, and the default note content. Much like a note template.
To create a new note of a defined type, use the command palette. Every note type defined in your config file generates a prompt like "Azer: New NPC". After selecting, a pop-up appears requiring a note name and a campaign (defaulting to the currently active campaign). Fill it out and hit enter. That's it!
Every note type is defined in a single azer.yaml file at the root of your vault.
It's created for you the first time the plugin loads.
Edit it in any text editor to add, change, or remove types:
- id: faction # required, kebab-case, unique
label: Faction # optional; defaults to a Title-Cased id
folder: Factions # optional; defaults to the id
fields: # optional
- key: leader # scalar field (default "")
- key: goals
list: true # list field (default [])
body: | # optional starter body
## Overview
## Members
Changes take effect after you reload Obsidian (or toggle the plugin off and
on).
Deleting the whole azer.yaml re-seeds the built-in defaults on the next reload.
[!NOTE]
azer.yamlisn't a Markdown note. If you have a YAML-editor community plugin it opens in-app; otherwise Obsidian hands it to your system's default editor.
Balancing ranges and probabilities across a random table is annoying, especially when using a multi-dice table (ex. 4d6). Azer enables creation of random tables with standard dice, dice pools, and weighted outcomes.
To make a random table, create a fenced code block whose info string is azer-table.
Inside the block:
die: dN — optional; sets the die to one of d4, d6, d8, d10, d12, d20, d100.
Omit it to default to d20.
You can also roll a pool 2d6, 3d10.Nx (e.g. 3x Goblin ambush) to weight it.
You can include [[wikilinks]] as results as well.Azer gives every entry at least one die face, then shares the remaining faces out in proportion to the weights.
Write this:
```azer-table
die: d20
4x Shipments going missing
No fish near lighthouse
```
And Azer renders:
| Roll (d20) | Result |
|---|---|
| 1–15 | Shipments going missing |
| 16–20 | No fish near lighthouse |
As a convenience, Azer provides an Insert backlinks table command which adds a table of backlinks to the current note sorted by Azer note type.
By default, this same table is included in NPC, PC, and Location notes.
The two AI commands — Generate table (AI) and Recap recent sessions (AI) — call the Anthropic API with your own key. You supply the key; usage is billed to your Anthropic account.
When you run one of these commands, Azer sends text over the network to Anthropic's API: for Generate table, the prompt you type; for Recap recent sessions, each selected Adventure Log's title, date field, and body (with the frontmatter block removed).
Both commands also send Azer's fixed instructions for the task.
Nothing is sent unless you run one of these commands, and no other vault data — frontmatter, note paths, or other notes — is transmitted.
Create one in the Anthropic Console. See Anthropic's Get started guide for account setup and billing.
Settings → Community plugins → Azer → Anthropic API key, then paste the key.
claude-opus-4-8, 4096 output tokens).Run an AI command without a key set and Azer just tells you to add one — nothing is sent.
See CONTRIBUTING.md