Turn a Discord Craigbot recording into a dated D&D session recap automatically
Keep a growing campaign archive of NPCs, lore, and loot without manual notetaking
Generate structured JSON summaries that feed into a wiki or other downstream tool
Transcribe and summarize any multi-speaker audio fully offline on an Apple Silicon Mac
Requires an Apple Silicon Mac, a local Ollama install with two Mistral models pulled, and Craigbot recordings as input.
Inkwell is a personal tool for Dungeons and Dragons groups that turns a recording of a play session into a written recap. The author frames it in-character: it is a Royal Scribe that quietly listens, then after each session produces a diary entry covering what happened in the game, plus a set of running notes about the world, the people the party met, enemies fought, and loot collected. The point is to have a campaign archive that grows on its own and is useful for catching up after a missed session, for the DM keeping continuity, or for feeding into other tools as source material. The input is a multi-track audio recording from Discord. The group runs a recording bot called Craigbot during the session, which creates one audio track per speaker. After the session you download the resulting .zip file and drop it into a recordings/ folder, and that is the only trigger for the rest of the pipeline. The pipeline does everything else on one machine. It unpacks the zip and transcribes each speaker's track with mlx-whisper, then interleaves all segments chronologically into one transcript so dialogue flows in real time across speakers. Then it sends that transcript to a local Ollama install: a mistral-nemo 12B model writes the chapter-style diary entry in the Scribe's voice, and a mistral 7B model extracts a structured JSON file with decisions, NPCs, lore, and loot. The pipeline saves a dated recap file and appends new findings to running files for world lore, NPCs, and allies. The original zip is moved to an archive folder and the extracted audio is deleted to reclaim disk space. Because mlx-whisper uses Apple's MLX backend, Inkwell requires an Apple Silicon Mac. It also needs Python 3.9 or newer, the packages in requirements.txt, and Ollama running locally with the two Mistral models pulled. A players.json file maps Discord usernames to character names so the recap only refers to characters, not real names. The code is MIT licensed. Material in the dnd rules folder and the summarizer primer comes from the official D&D System Reference Document 5.2 under a Creative Commons Attribution 4.0 license.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.