The workflow
One recording in, one finished session note out. Here's every stage of the pipeline, in the order you'll meet them.
Upload
Craig ZIP
Label
who's who
Transcribe
on-device
Summarize
your LLM
Export
Obsidian MD
Before you start
- You've installed the app.
- You've set up an LLM in Settings and the Test passed.
- You have a Craig Bot recording downloaded — the multi-track ZIP, ideally with one track per player.
0 · Record with Craig
During your session, Craig records each person in your Discord voice channel to their own audio track. When the session ends, download the recording and choose the multi-track download (one file per speaker) — that's what gives the cleanest transcripts, since each track is one voice.
1 · Create a campaign
Open the Library
The Library is your shelf of campaigns. A seeded Example campaign is there to poke at.
New campaign
Give it a name (e.g. "The Sunless Citadel"). Everything — sessions, the Codex, exports — is scoped per campaign.
2 · Start a session & upload
New session
Inside the campaign, start a new session. The session number is suggested automatically.
Drop in the Craig ZIP
Upload the recording. Chronicle Keeper unpacks the tracks and lists them.
3 · Label the speakers
Each track gets a name so the transcript and summary know who said what. Type the player's name (or character) next to each track. This takes a minute and pays off in a far more readable write-up.
Label with the names you want to read in the notes. If your group thinks in character names, use those; the summary will follow your lead.
4 · Transcribe
Hit Transcribe. The first time, the speech model downloads once (a few hundred MB). After that, every track is transcribed locally — no audio leaves your machine, no internet needed.
- Engine: native Parakeet TDT v3, several× realtime on CPU.
- Languages: 25 European languages including German.
- No diarization: because Craig gives one track per speaker, it's just clean speech-to-text per person.
Roughly a fraction of the session's real length on a typical laptop CPU — a 3-hour session transcribes in well under an hour, often much less. A faster CPU is faster; no GPU is required.
5 · Summarize
With transcripts ready, generate the summary using your chosen LLM. Chronicle Keeper builds a structured prompt and — crucially — injects your campaign's Codex so the model corrects names the transcriber mangled. The result is a clean recap: what happened, who did what, decisions, loose threads.
Read it over. The summary is yours to copy, tweak, or regenerate. Chronicle Keeper deliberately stays out of in-app editing — your vault is the place to polish.
Bonus · Story-so-far recap
Need to remind the table what happened last time? The recap stitches your past summaries into a short "previously on…" for the campaign — handy to read aloud at the start of a session.
6 · Export
Export the finished note as Markdown with Obsidian frontmatter (YAML at the top with campaign, session number, date, players). Paste it into your vault or save the file. You can export the full transcript alongside the summary if you want the raw record too.
Where everything lives
State persists in a local SQLite database in your app-data folder — sessions, tracks, speaker labels, transcripts, summaries and the Codex all live there. There are no scattered loose files to manage, and nothing is uploaded unless you explicitly turn on sync.