LLM Markdown to Obsidian
2026-01-14 10:57:10Claude and I built a small Chrome extension this week. It adds a save button to markdown code blocks in ChatGPT and Claude, so I can dump them straight into my Obsidian vault.
Why
I kept asking Claude/ChatGPT to format things as markdown notes - meeting summaries, code documentation, whatever - and then copy-pasting them into Obsidian manually. It gets boring fast.
What it does
When you're in ChatGPT or Claude and there's a code block with markdown or md as the language, a little purple button appears. Click it, file lands in your vault.
You can add YAML frontmatter at the top of the block and it carries through to the saved file. Title, tags, whatever you want.
The annoying part
Chrome won't let extensions write files wherever they want (fair enough). So there's a workaround: files download to a staging folder, then a macOS LaunchAgent watches that folder and triggers a Shortcut to move them to the actual vault.
Bit of a Rube Goldberg machine but it works and everything stays local.
Stack
- Chrome Extension (Manifest V3)
- Vanilla JavaScript - no React, no build step
- MutationObserver to detect new code blocks as they stream in
- chrome.downloads API with base64 data URLs (service workers can't use Blob)
- macOS LaunchAgent (plist) watching the staging folder
- macOS Shortcuts app to move files to the vault
The service worker restrictions were the main headache. No URL.createObjectURL, no showDirectoryPicker from background scripts. Had to get creative.
Repo
github.com/softrader/ObsidianCaptureBrowserExtension
There's an install script that sets up the folder watcher.