# Obsidian - Data Conversion with ChatGPT ![[images/Obsidian-Data-Conversion-with-ChatGPT.webp]] [Watch on YouTube](https://www.youtube.com/watch?v=DotLenq_Muk) · 30:31 · Josh Plunkett · 2023-01-30 > [!info] Written from the video's English automatic captions (fetched with yt-dlp on the first try) plus 1080p video frames, using the creator's chapter list as section anchors. Creature, item, and tool names are taken from what's on screen where the captions garble them (for example "Orc Scrapper" for "bulk Scrapper" and "Pf2eTools" for "pf2e tools"). ChatGPT's interface and behaviour are as they were in January 2023. ## Outline ### 0:00 - Obsidian TTRPG overview - **0:00 - Tonight's fun.** After the series intro, Josh says the community has been getting **Pathfinder Second Edition** data into Obsidian, and has built a PF2e layout for the **TTRPG statblock** plugin. He opens one to show it off: dice rolling built in, and rule terms linked to the rule notes in your own system ("looks like I need to create a few more rules"). - **0:50 - The scary part.** Switch to edit mode and the statblock is a wall of what he believes is YAML. He imported the whole **Bestiary** (the "B series") automatically, which was easy, but adding one more monster by hand is the problem people were asking about online. ![[images/Obsidian-Data-Conversion-with-ChatGPT-t0045.webp]] *His PF2eYouTubeVault in Obsidian v1.1.12: an Untitled 2 note rendering a Wight (Creature 4, NE Medium Undead, Chilling Touch, Create Spawn, Life Drain; Source Bestiary page 271) beside the imported Aasimar-Redeemer note (Creature 5) with its encounter table and Launch button, and the Bestiary folder (Adamantine-Golem through Ankhrav) in the sidebar.* ### 1:20 - Manual data conversion - **1:20 - Where the data comes from.** He says there is an official answer that's "much better than what I'm about to show you." The data comes from **Pf2eTools** (search "pf2e tools"). To find its GitHub source, go to the **Homebrew manager**, choose **Browse Source Repository**, and step back up to the parent repository where all the JSON files live. - **2:15 - The official converter.** Pf2eTools has a **Text Converter**: paste a statblock on the left, set the right source in **Converter Settings**, then click **Parse** for one monster or **Parse and Add** for several. That produces JSON you download and then run through the homebrew converter. ![[images/Obsidian-Data-Conversion-with-ChatGPT-t0150.webp]] *The Pf2eTools Text Converter (pf2etools.com/textconverter.html) with a Kobold Warrior (Creature -1) pasted into Input, an empty Output pane, and the Help, Converter Settings, Parse, Parse and Add, and Enable Editing buttons. Tabs show ChatGPT, Manage Homebrew, and the Pf2eTools data folder on GitHub.* - **2:55 - Quite a few steps.** For lots of monsters he would use this method, and says it's "probably the easier way," but this video is about ChatGPT. ### 3:18 - Introduction to ChatGPT - **3:18 - What it is.** Everyone's talking about **ChatGPT**, the new AI chatbot. He says it was trained up to 2021 and seems to be learning now that it's open to the public. - **3:35 - A warning.** Be careful what you paste in, because you're giving it to the AI. Don't put in work data, sensitive data, or customer information, since you don't know what's being done with it. - **4:00 - Say hi.** He asks "hi, who are you?" ChatGPT answers that it's a language model from OpenAI, and that it can answer questions, generate text, hold conversations, summarise, and translate. It can be slow depending on the time of day because so many people are using it. ![[images/Obsidian-Data-Conversion-with-ChatGPT-t0300.webp]] *His "Obsidian.md TTRPG Format" chat: asked about "the Obsidian.md TTRPG Statblock Template for Pathfinder 2e," ChatGPT confidently lists generic fields (Name, Alignment, Type, Size, AC, HP, Speed, Ability Scores, Skills, Saves, Immunities, Weaknesses, Resistances, Attacks), followed by his request to convert a Troll (Creature 5, CE Large Giant Troll). The sidebar lists his other chats, including PF2E Monster Markdown Template and DnD 5e Adventure Help.* - **4:45 - First attempt.** Asked whether it knows the Obsidian.md TTRPG statblock template, it says yes and lists a format that's wrong. Asked to convert a monster anyway, it produces YAML that's close to the original Pf2eTools JSON layout, so it already has some idea of the structure. ### 5:53 - Training the AI model - **5:20 - Feed it a template.** In a longer chat he introduced himself as using Obsidian.md to manage monsters for a TTRPG campaign, pasted a working example of his markdown template, and asked it to remember the format. It said it understood, then converted his next monster into a different format anyway. - **6:00 - Correct it.** He told it "this is not correct, you've not followed the syntax," and pasted one complete monster as the corrected version. Its output dropped the `---` lines around the front matter. He thinks ChatGPT renders its replies as markdown, so those lines vanish, the same way pasting code into Discord behaves. - **6:55 - The Wight.** It stopped partway, then converted his example monster back into its own format. Only when he asked it to convert the **Wight** he'd given it earlier did it remember and produce the right layout. - **7:35 - Paste and clean up.** He copies the reply into a new note with **Ctrl+Shift+V**, adds the front matter, statblock, and encounter fences, and deletes the stray **Copy code** text that comes from ChatGPT's code-block button. - **8:50 - Nearly there.** The statblock renders with HP and Chilling Touch, and he sends it into combat. A health mismatch (45 vs 52) turns out to be a separate duplicate-monster issue, not ChatGPT. An "invalid YAML" error is fixed with one missing character. ### 10:05 - Generating monster blocks - **9:35 - The Troll.** Given a **Troll**, it went back to the wrong format again, and kept doing so after he told it off. He changed approach: he labelled the correct template "the obsidian pf2e template for future reference" to give it something to remember. - **10:30 - Long notes stop.** It now uses the dashes and the statblock. He notices it stops on very long replies, which he puts down to it being a free tool for now. Asking it to continue brought back the wrong format, until on another try it put everything into one statblock, which he likes. - **11:15 - Front matter back.** He points out the missing front matter, pastes the template again, and it returns a **Web Lurker** with front matter and statblock. - **11:50 - Test it blind.** He pastes the Web Lurker into a note without having tried it before recording. The front matter and statblock are there and Health is present. The end of the statblock and its closing syntax were dropped, so he adds them and removes the Copy code text again. - **13:00 - Side by side.** He compares it with the PDF: Creature 3, medium aberration, Perception +10 with darkvision, dice included, the Spider Speak language, Acrobatics and Athletics +9, Web Lurker Venom, Web Trap, and the attacks. It even fills in a source he doesn't think he gave it, presumably from its own knowledge. "That's a perfectly usable statblock right there." ![[images/Obsidian-Data-Conversion-with-ChatGPT-t0790.webp]] *The rendered Web Lurker statblock (Creature 3, NE Medium Aberration; Web Lurker Venom DC 19 Fortitude, Web Trap Escape DC 20; AC 19, HP 45; Speed 25 feet, Climb 25 feet; Fangs, Claw, and Web strikes; Source B1) next to the original entry in Game Masters Guide.pdf open in Adobe Acrobat Reader.* ### 13:59 - Refining the conversion - **14:00 - Same duplicate bug.** The combat tracker shows the duplicate-monster problem again. He's heard a bestiary-related fix is coming. - **14:12 - Another test.** He skips an **Owlbear** because it's long ("the longer it is, the more chances there are of failing"). He asks it to convert the next monster using the template he'd named after himself, and it uses the wrong one again: "you never know what it's gonna do." - **15:40 - Tell it off.** Several rounds of correction fail. "It'd be a lot easier and a lot cooler if this would actually just spit out the right format every single time." - **16:40 - The trick.** He changes the prompt: paste the monster **and** the template in the same message, "can you please convert this monster to this data format." The **Orc Scrapper** (Creature 0) comes back right, tags included. - **17:40 - Why it matters.** It could replace 20 minutes of careful manual conversion. He wishes you could feed it Excel spreadsheets or a PDF table ("this is game changing"). ### 18:20 - Creating new creatures - **18:35 - Into Obsidian.** He copies the result over, ends the statblock after the source line (which always seems to come last), deletes the Copy code text, "and voila, we have a stat block." - **19:45 - Twice in a row?** A **Goblin Commando** comes back with the front matter missing and the statblock out of format ("it's not perfect"). He wonders if America waking up is slowing it down. With the monster-plus-template prompt again it works, down to the right action icons. - **22:05 - The method.** "Convert this monster to this format, just do two pastes, off you go." It also gets the action icons right. - **22:45 - Beyond conversion.** You can also ask it to describe a blacksmith NPC, their family, and what they sell: "game changing for Dungeon Masters." ### 23:24 - Converting magic items - **23:15 - A magic item.** From the vault's Items folder he picks a small artifact as the template, then asks it to convert the **Sparrow Token** to that format. ![[images/Obsidian-Data-Conversion-with-ChatGPT-t1460.webp]] *ChatGPT mid-reply: the end of the Final Blade artifact he used as the template (Activate, Effect, Destruction), then a freshly formatted Sparrow Token with the tag `#pf2e/item/level_3`, Consumable and Conjuration traits, Usage 1 hand (Interact), Activate 1 minute, and the message-carrying sparrow effect.* - **24:20 - Not terrible.** He thinks the result may even be better than his own notes. It misreads the activation slightly (treating "up to one minute" of message as a one-minute activation), but pasted into a note it looks good. "Chat GPT, can you please convert this to this" seems to work really well, and the cleanup is quick. ### 25:54 - Generating NPC shops - **25:40 - A shop on demand.** In a separate chat he'd set up as a D&D adventure helper, he asks for a small shop his players walk into: who runs it, what they sell and for how much, and something unique, with the items formatted as a list. - **27:00 - Fizzwick's shop.** ChatGPT invents a gnome alchemist, Fizzwick, who inherited the shop from his alchemist grandfather, plus a priced list of potions and the shop's quirk: an ever-changing experimental stock and a willingness to barter for rare ingredients. ![[images/Obsidian-Data-Conversion-with-ChatGPT-t1700.webp]] *The shop pasted into an Untitled 3 note: Fizzwick the gnome alchemist and his stock (Healing Potion 50 gp, Invisibility Potion 100 gp, Love Potion 75 gp, Fire Resistance Potion 75 gp, Alchemist's Fire 25 gp per flask), with the Wight note on the left and the Web Lurker in the right sidebar. The vault tree shows Mechanics > Items > Artifacts (Final Blade, Sphere of Annihilation).* - **28:00 - Saved time.** He might use it in his own game and says it saved him about 15 minutes of writing. He hasn't checked whether the prices are right. ### 28:40 - Conclusion and community - **28:40 - Plugin wish.** He's waiting for someone to bring ChatGPT into Obsidian as a plugin. The **Text Generator** plugin already uses OpenAI for AI text in Obsidian, but as far as he knows it can't use ChatGPT yet. - **29:10 - Verdict.** Yes, it can do the conversions. It isn't perfect and needs some training, but you can keep a chat going and it should keep getting better and faster. Let him know what you use it for. - **29:50 - Wrap-up.** Like and subscribe. Patrons get his private Discord, where members talk about Obsidian.md, play with AI in their notes, and share NPCs and stories. ## Things mentioned ### AI tools - **ChatGPT** (OpenAI, free research preview, "ChatGPT Jan 9 Version" on screen): the chatbot used for every conversion. His chats include Obsidian.md TTRPG Format, PF2E Monster Markdown Template, and DnD 5e Adventure Help. - Prompting tips from the video: - Paste the monster **and** the target template in the same message ("convert this monster to this format"). This was the most reliable method. - Naming a template for later recall helped a little but wasn't dependable. - Avoid very long statblocks, because replies get cut off. - Expect cleanup: delete the **Copy code** text, restore the `---` front matter lines, and close the statblock code fence. - Don't paste work, sensitive, or customer data. - **Text Generator** (Obsidian community plugin): already uses OpenAI to generate text in notes, but couldn't use ChatGPT at the time ### Obsidian tools - **TTRPG Statblocks plugin** (Fantasy Statblocks) with the community-built Pathfinder 2e layout: rendered statblocks with dice rolls and linked rule terms - **Initiative Tracker** encounter blocks: the encounter table with the Launch button used to send monsters into combat. A duplicate-monster HP bug shows up here, unrelated to ChatGPT. - **YAML front matter** and `statblock` code blocks (the Orc Scrapper output shows `statblock: true`, `columns: 2`, and `forcecolumns: true`) - **Ctrl+Shift+V**: paste as plain text - His **PF2eYouTubeVault**: folders such as Mechanics (Bestiary, Items > Artifacts, Rules, Sources, Spells_Rituals, Traits), Party, World, Z_Conversion_Tools, zz_Attachments, and zz_Templates ### Pathfinder 2e data and tools - **Pf2eTools** (pf2etools.com): the source of the vault's PF2e data, its **Homebrew manager** with **Browse Source Repository**, the JSON data on GitHub, and the **Text Converter** (Converter Settings, Parse, Parse and Add) plus the homebrew converter - **Pathfinder Bestiary** ("B series"), imported in bulk - **Game Masters Guide.pdf**, a Paizo PDF open in **Adobe Acrobat Reader** for the Web Lurker comparison ### Creatures and items converted - **Wight** (Creature 4) - **Troll** (Creature 5) - **Web Lurker** (Creature 3) - **Owlbear**: skipped for being too long - **Goblin Pyro**: shown in an encounter table in the chat - **Orc Scrapper** (Creature 0) - **Goblin Commando** - **Kobold Warrior** (Creature -1): the Pf2eTools Text Converter example - **Aasimar Redeemer** (Creature 5): an imported Bestiary note shown at the start - **Sparrow Token** (level 3 consumable), converted using the **Final Blade** artifact as the template ### Generated content - **Fizzwick**, a gnome alchemist shopkeeper, and his shop's stock: Healing Potion (50 gp), Invisibility Potion (100 gp), Love Potion (75 gp), Fire Resistance Potion (75 gp), Alchemist's Fire (25 gp per flask) - A blacksmith NPC with family and wares, suggested as another prompt idea ### Links - [ChatGPT announcement (OpenAI blog)](https://openai.com/blog/chatgpt/) - [Obsidian](https://obsidian.md/) - [Official Obsidian Discord](https://discord.gg/obsidianmd) - [Obsidian TTRPG Users Facebook group](https://www.facebook.com/groups/obsidianttrpgusers) - [Josh's Patreon](https://www.patreon.com/JPlunkett) - [Pf2eTools Text Converter](https://pf2etools.com/textconverter.html) ### Free vs paid (quick) - Free: Obsidian, the statblock and initiative plugins, Pf2eTools and its converters, and ChatGPT's research preview (as of January 2023) - Paid: Paizo's Pathfinder books and PDFs, OpenAI API use through plugins like Text Generator, and Josh's Patreon (tutorial vault, private Discord, and support) ## Bios - **Josh Plunkett**: Australian game master and YouTuber behind the "Obsidian for Tabletop RPGs" tutorials, ObsidianTTRPGTutorials.com, and a Patreon that gives members his tutorial vault, a private Discord, and personal support. At the time of this video he was moving his campaigns to Pathfinder Second Edition and building a PF2e vault from Pf2eTools data. - **OpenAI**: The US AI company that released ChatGPT as a free research preview in November 2022. It also offers the paid API that plugins such as Text Generator use. - **Paizo**: The US publisher of Pathfinder and Starfinder, whose Bestiary and other books provide the creatures and items converted here. - **Jeremy Valentine** (valentine195 on GitHub): Developer of the Fantasy Statblocks (TTRPG Statblocks) and Initiative Tracker community plugins that render the statblocks and run the encounters in this video. - **Noureddine Haouari** (nhaouari on GitHub): Developer of the Text Generator plugin, which brings OpenAI text generation into Obsidian.