How My Azeroth Life is made: from a WoW addon to a podcast A developer at Nine Point Labs built My Azeroth Life, a World of Warcraft blog and podcast generated from gameplay data by a custom addon called StoryTracker. The addon logs in-game events such as quests, deaths, loot and reputation changes to disk on logout or /reload, after which a companion script extracts new events per character and an AI agent drafts posts in the voice of a fictional Chronicler; the developer reviews every post before publishing via folderblog, and Claude Code later scripts episodes that ElevenLabs voices and ffmpeg mixes. I play World of Warcraft most evenings, and for the last few weeks the game has been keeping a blog about it. Now that blog has a podcast too. My Azeroth Life https://myazerothlife.com/ tells the stories of my characters, and the My Azeroth Life podcast https://myazerothlife.com/podcast/ turns those stories into narrated episodes with music and sound effects. Both are published by folderblog https://folderblog.ninepointlabs.com , the small blog engine I make here at Nine Point Labs. I want to be upfront about one thing: AI does the writing and the narration. What makes it mine is that every story starts from something I actually did in the game, and I read every post and listen to every episode before it goes live. Here is how the pieces fit together. World of Warcraft, with the StoryTracker addon | log out or /reload: the addon saves its notes v Companion script: one file of new events per character | every morning v AI writes a draft post in the Chronicler's voice - drafts/ | I read it and move it to posts/ v folderblog publishes it to myazerothlife.com | v Claude writes a script, ElevenLabs voices it, ffmpeg mixes it | I listen, then say yes v folderblog publishes the episode: audio on Cloudflare R2, a podcast feed It starts with StoryTracker, a WoW addon I wrote. It listens for game events and keeps a record of each session: quests accepted and turned in, zones and subzones, levels gained, deaths where, and what did it , rare and better loot, reputation changes, dungeon bosses, profession skill-ups, gold earned and spent, notable kills, groups and guilds, and when I logged in and out. WoW only lets an addon write to disk when you log out or type /reload , so the notes land in the addon’s saved file at the end of a session. There is a version for each game, and both are free on GitHub: StoryTracker for WoW Forever https://github.com/ninepointlabs/wow-storytracker-addon and StoryTracker for Retail https://github.com/ninepointlabs/wow-storytracker-addon-retail . A small companion script reads that saved file, compares it with what it has already seen, and writes one JSON file per character with only the new events. It also notes which game the character is in, based on which WoW folder the file came from, so Retail and Forever never get mixed up. Every morning a scheduled job looks for those files. When it finds one, an AI agent reads the events along with a voice guide and writes a post as the Chronicler: a weathered scribe who has followed adventurers across Azeroth for decades. The guide asks for a little elevation when a moment earns it, a little grit when something goes wrong, and a dry smirk the rest of the time. One of its rules is to turn game events into world events, so a level-up reads less like a number going up and more like a character getting tougher after surviving things that should have killed them. The draft is saved into the blog’s drafts/ folder, tagged with the game version, the character and their class. Then I read it, all of it. If it is right, I move it into posts/ , and that is the whole publishing step. folderblog runs quietly in the background and watches ~/Blogs , where every folder is its own blog. Moving the file into posts/ is enough. A few seconds later the post is built and live on GitHub Pages at myazerothlife.com, with no commit and no deploy command. These are the folderblog features the blog leans on: drafts/ shows up in folderblog preview on my own machine and never on the live site. AGENTS.md that explains them to coding agents. The parchment look on My Azeroth Life was mostly built by Claude from that file. folderblog check blog.toml . Once there are enough posts, Claude Code on my workstation turns them into an audio episode. It writes a script from the posts, split into chapters, with notes for the background ambience, the sound effects, and how each line should be performed. Each character gets their own narrator, made with ElevenLabs voice design and then kept for good. Laotou, a Pandaren monk and healer, is told by an elderly lorewalker over a pot of tea, slow and wry. Burrly, a Kul Tiran warrior, is told by an old sea captain in a Boralus tavern, faster and louder, because most of his story is him running at things. Once a character has a narrator, that voice stays theirs. The rest of the work goes like this: intense or dryly instead of reading them aloud. Names it gets wrong are respelled only in the text sent to the voice, so “Laotou” goes in as “Lau-toe” and the script keeps the real spelling. Every piece of music and every effect is saved to a shared library and reused, so each one is only paid for once. The podcast is part of the same blog folder. folderblog podcast on added a podcast/ folder, and each episode is a folder inside it with its show notes, the MP3 and a chapters file. From that, folderblog builds: folderblog podcast setup walked me through connecting R2 once. When an episode is published, folderblog uploads the audio first, checks that it is really online, and only then updates the site and feed, so the feed never points at a missing file. folderblog also has an MCP server, so an agent can set up a draft episode, write its notes and chapters, check it, and publish it only after you say yes. From here on there is one show a week for each game. The Retail show comes out on Sunday nights. The Forever show comes out on Monday nights, starting after WoW Forever launches on November 4. Both go in the same feed, tagged by game, and each covers every character who had an adventure that week, with a short transition between them. If nobody played that version, there is simply no show that week. https://myazerothlife.com/podcast/feed.xml If you have a folder of writing that you’d like to turn into a blog, or a blog that you’d like to turn into a podcast, folderblog https://folderblog.ninepointlabs.com is free and runs on Linux. And if you listen to an episode, I’d love to hear what you think. Originally posted on blog.ninepointlabs.com https://blog.ninepointlabs.com/2026/10/how-my-azeroth-life-is-made/ .