This repository contains simple AI tools for Game Masters to author and organize tabletop Campaigns, Adventures, Chapters, Locations, NPCs, and Session Notes.
I hope this tool is valuable to you and your table! If you like it a lot, you can support this work :)
Transforms messy campaign books into organized, searchable, clickable references that help you do things like:
- Find any NPC instantly across all adventures
- See how characters and places change over time
- Track which chapters are optional vs required
- Never miss important story connections again
TL;DR: Turn a 200-page book into linked markdown files you can search and navigate like a wiki and build out as you run your next adventure.
Running campaigns requires knowing EVERYTHING up front, but campaign books are organized like novels - not reference materials. GMs end up re-reading content multiple times and taking extensive notes just to prep for session 1.
This tool reorganizes existing content so you can see both the present AND future of every character, location, and plot thread at a glance.
- Download this project (green
Codebutton →Download ZIP) - Extract it somewhere on your computer
- Ask any AI chat tool: "Scaffold the directory structure in the README for my adventure FOO in campaign BAR", then put your adventure text in the
.rawfolder - Ask any AI chat tool: "Follow the instructions in create-a-chapter.md to organize my content"
For a full setup with specific tools and better prompts, see details below.
- No coding required - Works with any AI chat tool you already use. Just text files and simple prompts.
- Transform text into organized references - Turn messy adventure books into searchable, clickable, structured markdown files you can view offline.
- Game system agnostic - Focuses on story, places, and characters, not rules.
- Organize, don't generate - Restructures your existing content rather than creating new stories or characters.
- Fork/clone this repo
- Open in AI-assisted IDE (VSCode/Cursor/etc)
- Use Obsidian or similar for markdown rendering at the table
- See Use the Tools for example prompts
Since it's just text prompts, build whatever interface you want - you just need local file read/write access.
- Click the green
<> Codebutton at the top of this page →Download ZIP - Extract the folder somewhere on your computer
- Get an AI text editor: Install Visual Studio Code and the GitHub Copilot extension (requires free GitHub account)
- Get a file viewer: Install Obsidian to view your organized content
- Open Obsidian →
Open folder as vault→ Choose your extracted project folder
- Open Obsidian →
That's it! Now you can Use the Tools below.
Quick Links if you get stuck:
Basic workflow:
- Create folders - Ask your AI tool:
Please review the README.md file for this project, and scaffold out my campaign directory structure. I'm running Harried in Hillsfar adventure as part of the Adventurers League campaign. - Add your content - Put your adventure text files in the
.rawfolder (e.g.1-0-introduction.txt,1-1-mission-birth.txt) - Organize chapters - Ask your AI tool:
Review the content of AGENTS.md and instructions/create-a-chapter.md. Follow the instructions EXACTLY to create me a Chapter markdown for the 1-1 Mission Birth of Harried in Hillsfar. SHOW YOUR WORK. - Create NPCs - Ask your AI tool:
Review the content of instructions/create-an-npc.md. Follow the instructions EXACTLY to create me an NPC markdown for Ebenz Farbough. SHOW YOUR WORK.
Why the caps? "EXACTLY" and "SHOW YOUR WORK" help the AI follow instructions carefully and think through each step instead of rushing.
That's it! Review the generated content in Obsidian, make tweaks as needed, and repeat for each chapter/NPC.
├── campaigns # directory of all Campaigns (series of Adventures)
│ └── <CAMPAIGN_NAME> # a specific Campaign's Adventures, NPCs, etc. Unordered; campaigns should be stand-alone.
│ ├── adventures # a directory of all Adventure content
│ │ ├── 1-<ADVENTURE_NAME> # Adventures are prefixed with numbers to preserve ordering
│ │ │ ├── .raw # .raw contains all unmodified/original content for an Adventure, which read like stories; used to render the structured *.md files in the Adventure/Campaign
│ │ │ │ ├── 1-0-<CHAPTER_NAME>.txt
│ │ │ │ ├── 1-1-<CHAPTER_NAME>.txt
│ │ │ │ └── 1-2-<CHAPTER_NAME>.txt
│ │ │ ├── maps # map images used in the Adventure's Chapters
│ │ │ │ └── *
│ │ │ ├── 1-0-<CHAPTER_NAME>.md # Chapters each have their own markdown file, prefixed with numbers to preserve ordering
│ │ │ ├── 1-1-<CHAPTER_NAME>.md
│ │ │ ├── 1-2-<CHAPTER_NAME>.md
│ │ │ └── README.md # the README.md file has any Adventure-level content
│ └── npcs # the NPCs directory has all NPCs at a Campaign level; content is shared across Adventures/Chapters
│ └── <NPC_NAME>.md
├── characters # DMs will put custom content here to track their player characters and organize thier story arcs and homebrew content
│ └── <CHARACTER_NAME>
│ ├── .raw # .raw contains all unmodified content for a Player Character; used to render the *.md files for the Character
│ └── README.md # the README.md file has any Character-level content
├── instructions # Various instructions meant for Agents or LLMs to turn .raw content into *.md files. See AGENTS.md for details.
│ ├── *.md
│ └── templates
│ └── *.md
└── session-notes # DMs will put custom content here to track their various D&D groups and events a particular group experiences compared to the regular, structured content in a given Campaign (e.g. experiences of custom player character story arcs/etc)
└── <GROUP_NAME>
└── notes.md