Journal Utils

approved

by sagersmith8

Mobile wikilink pickers for people, groups, and locations with automatic mention tracking in frontmatter. - This plugin has not been manually reviewed by Obsidian staff.

66 downloadsUpdated 21d agoMIT

Journal Utils

Mobile Obsidian plugin for fast people, group, and location wikilinks while journaling. Built for the mind-palace vault workflow.

Community listing: This README is published on the Journal Utils plugin page. Edits here update what users see on community.obsidian.md (the directory syncs from the repo).

Features

  • Insert person link — picker with people, groups, ghosts, create-new, and convert-to-group
  • Insert location link — locations, shared ghosts, create-new
  • Mention tracking — auto-maintains people: and locations: frontmatter lists on picker insert (deduped, append-only)
  • Group expansion — inserting a group adds its members: to people: (not the group name)
  • Ghost mentions — unresolved wikilinks surfaced for ignore, reclassify, or profile creation
  • Groups — multi-member create flow with person-to-group conversion
  • People migration — one-time command to move flat notes and merge sub-notes into people/{Name}/{Name}.md

Mobile-only: commands register on phone/tablet, not desktop.

Install

Community Plugins (recommended)

Journal Utils is listed in the Obsidian Community directory.

  1. Settings → Community plugins → Turn on community plugins (disable Restricted Mode if prompted).
  2. Browse and search for Journal Utils, or open the listing directly and click Add to Obsidian.
  3. Enable the plugin under Installed plugins.

Updates: Settings → Community plugins → Check for updates.

In-app search: After a plugin passes review, Obsidian typically indexes it for Browse/search within 24 hours. If it does not appear immediately, wait a day, then search again or use the plugin page link. You can also install via URI: obsidian://show-plugin?id=journal-utils.

BRAT (beta / pre-release)

Use BRAT to install from GitHub releases before they propagate, or to test unreleased builds:

  1. Install BRAT from Community Plugins.
  2. Add Beta pluginsagersmith8/obsidian-journal-utils
  3. Enable Journal Utils under Community Plugins.
  4. Check for updates in BRAT when new versions ship.

BRAT pulls manifest.json, main.js, and styles.css from GitHub releases (tag must match manifest.json version).

Release assets include GitHub artifact attestations:

gh attestation verify main.js -R sagersmith8/obsidian-journal-utils
gh attestation verify styles.css -R sagersmith8/obsidian-journal-utils

For plugin authors

New plugins are submitted at community.obsidian.md (not the old obsidian-releases PR flow). See CONTRIBUTING.md for development and release details.

Mobile toolbar setup

  1. Open a note on your phone.
  2. Settings → Mobile → Manage toolbar options
  3. Remove undo/redo if you want the space.
  4. Add:
    • Insert person link (user icon)
    • Insert location link (map-pin icon)

Commands

CommandPurpose
Insert person linkPeople, groups, ghosts, create person, convert to group
Insert location linkLocations, ghosts, create location
Migrate people folder to standard structurePreview + run people/ consolidation

Mention tracking

When you insert a link via the picker commands, Journal Utils can append deduplicated wikilinks to frontmatter:

people:
  - "[[Joy]]"
  - "[[Matt]]"
locations:
  - "[[Charleston]]"
BehaviorDetail
TriggerPicker insert only (not manual typing)
ScopeAny note where the command runs
GroupsMembers expand into people:; body still gets [[GroupName]]
Ghost link-onlyBody link only — no frontmatter
Ghost createCreates profile and updates frontmatter
RemovalAppend-only — deleting body links does not shrink lists
ToggleSettings → Update people/locations frontmatter on insert (default on)
FeedbackBrief toast when list changes; error toast if note YAML is invalid

Works with Obsidian Properties and Dataview (FLATTEN people, contains(people, [[Joy]]), etc.).

Vault structure

people/{Name}/{Name}.md          # person
people/groups/{Name}/{Name}.md   # group (members: frontmatter)
locations/{Name}/{Name}.md       # location

Templates (created automatically if missing):

  • people/template.md
  • people/groups/template.md
  • locations/template.md

Template variables: {{title}}, {{slug}}, {{date}}, {{members}} (groups only).

Ghost mentions

Journal section headings (Gratitude, Goals, etc.) are blocklisted by default. Tap a ghost to ignore, create a profile, convert to group, or create a location.

Migration

Run Migrate people folder once after committing your vault. Review the preview before confirming. Moves flat files like people/Graham.mdpeople/Graham/Graham.md and merges sub-notes into primary files.

Data access

Journal Utils reads and writes notes only in your configured folders (people, people/groups, locations) plus vault-root legacy person notes. It does not enumerate your entire vault.

AccessPurpose
Entity foldersList people, groups, and locations for pickers
Vault root .md filesResolve legacy flat person notes (e.g. Joy.md)
Active noteInsert wikilinks and update people: / locations: frontmatter
metadataCache.unresolvedLinksSurface ghost mentions (no full-vault scan)
Migration commandScan only the people folder for notes to consolidate

All file access stays on your device; nothing is sent to external servers.

Development

See CONTRIBUTING.md for setup, conventions, and how to open a PR.

npm install
npm run dev    # watch build
npm run build  # production build
npm test       # vitest

Desktop mobile emulation (dev console): app.emulateMobile(true) then reload the plugin.

CI runs on every push/PR to main (test + build). Releases are tag-driven — details in CONTRIBUTING.md.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.