Conditional Properties

approved

by Diego Eis

Automate frontmatter updates using conditional rules (IF/THEN).

β˜… 16 stars↓ 1,936 downloadsUpdated 2mo ago
View on GitHub

Conditional Properties for Obsidian

Automate your frontmatter with smart IF/THEN rules. Set properties, modify titles, and keep your vault organizedβ€”automatically.

Plugin Interface

Why Use This Plugin?

Stop manually updating properties across hundreds of notes. Define rules once, run everywhere. Perfect for:

  • 🏷️ Auto-tagging notes based on content
  • πŸ“Š Maintaining consistent metadata
  • πŸ”„ Bulk property updates
  • ⏰ Scheduled maintenance
  • 🎯 Targeted scope (latest created/modified notes)

Core Features

🎯 Flexible Conditions

  • 6 operators: exactly, contains, notContains, exists, notExists, isEmpty
  • Property-based: Check any frontmatter property
  • Title-based: Use note titles (H1 or inline) as conditions

⚑ Powerful Actions

  • ADD: Add values without duplicating
  • REMOVE: Remove specific values
  • OVERWRITE: Replace entire property
  • DELETE PROPERTY: Remove property completely
  • CHANGE TITLE: Add prefix/suffix or overwrite with dynamic dates and filenames

πŸŽ›οΈ Smart Execution

  • Run on demand: Entire vault or current file only
  • Scheduled scans: Set intervals (min 5 minutes)
  • Scoped scanning: Latest created, latest modified, or entire vault
  • Configurable count: Process 1-1000 notes at once

πŸ›‘οΈ Safe & Private

  • Only modifies frontmatter (body content preserved)
  • All processing happens locally
  • No data leaves your device

Quick Examples

Auto-tag meetings:

IF property: type = "meeting"
THEN ADD tags: work, important

Archive old projects:

IF property: status = "archived"
THEN REMOVE tags: active, wip

Date-stamp completed tasks:

IF property: status = "done"
THEN Change Title: Add suffix " - {date:DD/MM/YYYY}"

Standardize meeting note titles:

IF title contains: "Meeting"
THEN Change Title: Overwrite to "{date:YYYY-MM-DD} - {filename}"

Result: 2026-01-08 - team-sync

Clean up deprecated data:

IF property: tags = "old-project"
THEN DELETE PROPERTY: legacy_data

Title-based tagging:

IF title contains: "Meeting"
THEN ADD tags: meeting, important

Multiple Actions Per Rule

Combine actions to automate complex workflows:

IF property: project_status = "completed"
THEN:
  - SET status [OVERWRITE]: done
  - ADD tags: archived
  - REMOVE tags: active, wip
  - ADD priority: low

Scan Scopes

Choose what to scan:

  • Latest Created: Process newest notes (default: 15)
  • Latest Modified: Process recently edited notes (default: 15)
  • Entire Vault: Process all notes

Perfect for running rules only on active notes instead of your entire vault.

Operators Reference

OperatorDescriptionExample
exactlyExact matchtype = "meeting"
containsSubstring matchname contains "Diego"
notContainsDoes not containtags notContains "draft"
existsProperty presentstatus exists
notExistsProperty absentreviewed notExists
isEmptyEmpty valuetags isEmpty

Title Actions

Modify note titles dynamically:

  • Prefix: [ARCHIVED] Original Title
  • Suffix: Original Title - {date}
  • Overwrite: Replace entire title with custom text

Available Placeholders

  • {date}: File creation date (default format)
    • Example: {date} β†’ 2026-01-08
  • {date:FORMAT}: Custom date format (moment.js)
    • Example: {date:DD-MM-YYYY} β†’ 08-01-2026
    • Example: {date:YYYY/MM/DD} β†’ 2026/01/08
  • {filename}: Current file basename (without .md)
    • Example: For file meeting-notes.md β†’ meeting-notes

Placeholder Combinations

Placeholders can be combined in any order:

  • {date:YYYY-MM-DD} - {filename} β†’ 2026-01-08 - meeting-notes
  • Meeting {filename} - {date:DD/MM/YY} β†’ Meeting meeting-notes - 08/01/26
  • {filename} β†’ meeting-notes (overwrite with just filename)

Installation

From Community Plugins (Coming Soon)

  1. Settings β†’ Community Plugins β†’ Browse
  2. Search "Conditional Properties"
  3. Install and enable

Manual Installation

  1. Copy folder to .obsidian/plugins/obsidian-conditional-properties
  2. Settings β†’ Community Plugins β†’ Enable "Conditional Properties"

Usage

Run Manually

  • Settings: Conditional Properties β†’ "Run now" button
  • Command Palette: "Run conditional rules on vault"
  • Current file: "Run conditional rules on current file"

Schedule Execution

Settings β†’ Scan interval (minutes) β†’ Set interval (minimum 5)

The plugin runs automatically based on your selected scope.

Roadmap

  • IF/THEN rules engine
  • 6 property operators
  • Multiple actions per rule
  • Title modifications with date placeholders
  • Scheduled scans
  • Scoped execution (latest/entire vault)
  • Current file execution
  • Property existence checks
  • Rename property action
  • Modify note content (beyond frontmatter)
  • Advanced operators (regex, comparison)
  • Compound conditions (AND/OR/NOT)
  • Folder/tag-based scoping

Privacy

All processing happens locally. No data collection, no external requests.

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.