Real Use Cases When Obsidian Makes More Sense Than Notion

Real Use Cases When Obsidian Makes More Sense Than Notion

1. Creating a new vault and misunderstanding the folder structure

When you first install Obsidian, it asks you to “Create a new vault” — sounds straightforward, until you forget that this is choosing the actual folder on disk. One morning I set it up in a synced Dropbox folder thinking everything would Just Work. But later I noticed half my attachments were missing. Turns out Obsidian had created subfolders that Dropbox’s selective sync ignored. So notes saved — yes. PDFs? Vanished.

The folder you pick needs to contain everything. If it doesn’t exist yet, Obsidian will create it. But if it does exist and already holds files, Obsidian just quietly treats it as your vault — with no confirmation that other plugins or files already there might mess with things. There’s no visible UI warning for possible corruption. You just get a blank graph view, and nothing links.

“The entire graph was empty even though my Markdown files were all right there.”

One fix: start clean, use a dedicated folder, and don’t put your vault within anything like a Git repo or cloud sync folder unless you’ve tested it extensively. And even then, test it again.

2. Why note links sometimes break even inside the same vault

Double square brackets — [[like this]] — should be bulletproof. But Obsidian resolves them relative to current folder and vault settings, which can get weird if you’re using community plugins or moving files via another system. At one point, I built an automation using n8n to append meeting notes into daily pages, only for the links to break every time it created a new file outside the configured folder structure.

The internal link resolver does not refresh if files are moved programmatically from outside. The file appears in the vault, yes, but the graph and backlinks won’t register it until Obsidian reindexes — which can require a manual refresh or just hard-restarting the app. There’s no visual indicator that indexing is incomplete. The note appears, but the link silently doesn’t work.

Interesting bug: if you have two notes with the same name in different folders and try to link one, Obsidian sometimes picks the wrong one silently — especially if you have the “Automatically update internal links” setting turned off. It guesses based on recent use, but doesn’t tell you what path it selected.

3. The subtle behavior of daily note templates with time blocks

I wanted my daily note template to include some pre-set time blocks — headers for 09:00, 10:00, and so on. Pretty basic. I used the templater plugin to insert a snippet like this:

# Daily Note - <% tp.date.now("YYYY-MM-DD") %>

## 09:00

## 10:00

Worked fine for weeks. Then I added a auto-generate script that created daily notes ahead of time each night at midnight. And suddenly?.. my time headers were all showing the wrong date — the day the template was last edited — not when the note was generated.

Undocumented edge case: if you preview and re-save a plugin-generated template file in Obsidian while the app is open, that cached version can carry into other programmatic instances until the app’s cache is completely cleared. No logs, no error — just stale date inserts.

This tripped me up because the templater script had one job — generate with the current date — and it looked like it was succeeding. Wasn’t until I opened the YAML frontmatter that I saw the mismatch.

4. Syncing Obsidian mobile notes and why it still breaks

I’m using Obsidian Sync — paid for it after I got too annoyed with iCloud and its lazy file updates. But syncing between iOS and desktop doesn’t always behave the way you’d expect. First off, there’s no merge conflict warning. If you edit the same note on both devices before sync completes — whoops, one version just wins silently. You’ll find a sync-conflicted copy in your hidden .obsidian folder if you’re lucky enough to check.

There’s a file called sync-conflict-backup that only shows if you’ve enabled hidden folders. The app will not tell you it created them. And the editing timestamps? They’re misleading — the mobile app often tags edits a few seconds before the server finishes confirming sync, so you might think the mobile edit is earlier and overwrite your real one without knowing.

I now only sync manually — yeah, not the dream. I go to Settings → Sync and hit Pause Sync on mobile when I know I’m going completely offline or editing for long stretches. Doesn’t feel adaptive, but avoids the silent overwrites.

5. Making tags useful without turning your vault into tag soup

People love tags, until they have 15 slight variations of the same idea: #meeting, #Meeting, #meetings. Obsidian doesn’t normalize case sensitivity by default, and that’s buried in the settings. Plus, tag auto-complete only shows based on indexed appearance — so if you haven’t used a tag in months, it won’t pop up until you type it in manually.

Useful adjustments to avoid tag overload:

  • Turn on “Ignore case in tag search” in Settings → Appearance (yep, it’s there, not in Tags)
  • Use a prefix convention (like #type/meeting, #status/in-progress) so visual grouping works in the tag pane
  • Don’t use hyphens — they break into separate tokens in the search regex
  • If you’re automating tags, double-check your casing scripts — things like Airtable outputs love title case which wrecks matches
  • Set a recurring weekly query (Dataview or embedded search) to spot any new one-off tags

I had a moment where a hundred tickets were tagged via Zapier from Help Scout using #tickets — except the original template used #Ticket. Two tag folders, no merged visibility. Inconsistency spreads fast.

6. Integrating Obsidian with AI tools without leaking context

I was testing an AI writing workflow that fed daily notes from Obsidian into GPT for brief summaries. Simple shell job — scrape Markdown, chunk it, send off the parts. Until one of the notes included a client full name and phone number. Everything got logged into OpenAI’s token history. Not just prompts — content. I forgot to scrub metadata.

When Obsidian embeds a note using ![[other note]], the content fully carries into export — even if the embedded file was intended to be private. There’s no flag or syntax to mark a note as “do not embed or share”. So if your automation mirrors a folder, everything inside any embedded reference gets pulled too.

Made a quick fix: now everything gets sanitized via a YAML check. If share: false is detected in the frontmatter, my script skips it — including recursively embedded files. Easy enough to add:

---
share: false
---

Still no core Obsidian feature to mark sensitive notes, though. That’d be helpful when scripts are involved.

7. Capturing meeting notes without scrambling your link structure

I wanted to log all Zoom call summaries into a common file with inline embeds to the original daily note. Human habit said: just paste a summary into meeting-log.md. But then backlinks got weird because the context was too light — Obsidian only showed the filename in the backlinks panel, and I couldn’t tell which meeting that link came from without clicking.

So I switched to transcluding full context using this pattern inside meeting-log.md:

## <% tp.date.now("YYYY-MM-DD") %>

![[daily-2024-05-01#Zoom with Jordan]]

That helped — I could now see the full embedded block where it lived originally — but it broke if multiple notes had the same header (“Meeting Notes” is an awful section title if reused). Solution: use custom block anchors via headers like ## 💬 Zoom with Jordan [zoom-jordan-202405] and link to that exact string.

Still messy, but at least now Obsidian’s backlinks point to the exact note section that matters. Feels like stitching a network by hand, but useful once it works reliably.