# Obsidian Plugin Ecosystem - Automation Powerhouses

Obsidian's plugin ecosystem transforms it from a markdown editor into a programmable knowledge system. This reference covers the most automation-capable plugins.

---

## Tier 1: Essential Automation Plugins

### 1. Dataview
**Purpose**: Query your vault like a database.

**What it automates**:
- Dynamic dashboards and indexes
- Task aggregation across notes
- Literature review tables
- Project status boards
- Tag-based reporting
- Inline data calculations

**Query types**:
```dataview
# Table view
TABLE status, due, priority
FROM #project
WHERE status != "done"
SORT due ASC

# List view
LIST file.ctime
FROM #book
WHERE rating >= 4

# Task view
TASK
FROM #task
WHERE !completed AND due < date(today) + dur(7 days)

# Calendar view
CALENDAR file.ctime
FROM #journal
```

**Inline queries**:
```markdown
This project has `= length(this.file.inlinks)` backlinks.
Last modified: `= this.file.mtime`.
```

**JavaScript queries** (`dataviewjs`):
```javascript
dv.table(["File", "Word Count"],
  dv.pages("#writing")
    .map(p => [p.file.link, p.file.size])
)
```

**Key Dataview API objects**:
- `dv.pages("folder/")` - query notes
- `dv.table()`, `dv.list()`, `dv.taskList()` - render views
- `dv.header()`, `dv.paragraph()`, `dv.el()` - render elements
- `dv.span()`, `dv.view()` - custom views
- `dv.current()` - current file
- `dv.date()`, `dv.duration()` - date utilities

**Automation hooks**:
- Auto-refresh on file changes
- Can be triggered by file events
- Works with Templater for dynamic content

---

### 2. Templater
**Purpose**: Dynamic templates with JavaScript and system commands.

**What it automates**:
- Date/time insertion
- File creation with dynamic names
- Prompt-based note generation
- System command execution
- Web content fetching
- Folder-based auto-templating
- Internal variable access

**Core syntax**:
```markdown
---
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
tags: [<% tp.system.suggester("Tag", ["work", "personal", "idea"]) %>]
---

# <% tp.file.title %>

## Context
<% tp.system.clipboard() %>

## Related
- [[<% tp.file.find_tfile("Index").basename %>]]
```

**System commands**:
- `tp.system.prompt("Question", "default")` - Text input prompt
- `tp.system.suggester("Label", ["opt1", "opt2"])` - Dropdown selection
- `tp.system.clipboard()` - Clipboard content
- `tp.system.clipboard_read()` - Read clipboard

**Date/time**:
- `tp.date.now("format")` - Current date
- `tp.date.tomorrow("format")` - Tomorrow
- `tp.date.yesterday("format")` - Yesterday
- `tp.date.weekday("format")` - Current weekday

**File operations**:
- `tp.file.create_new(content, filename, open)` - Create note
- `tp.file.move("path")` - Move file
- `tp.file.rename("name")` - Rename file
- `tp.file.find_tfile("name")` - Find file object
- `tp.file.title` - Current file title
- `tp.file.path` - Current file path

**Web**:
- `tp.web.random_picture("800x600")` - Random image
- `tp.web.daily_quote()` - Quote of the day

**Internal**:
- `tp.frontmatter.key` - Access frontmatter
- `tp.config.target_file` - Target file for templates
- `tp.hooks.on_all_templates_executed(callback)` - Post-template hook

**Folder templates**:
Configure in Templater settings to auto-apply templates when files are created in specific folders.

---

### 3. QuickAdd
**Purpose**: Capture workflows and multi-step macros.

**What it automates**:
- One-click note creation
- Multi-step capture workflows
- Template-driven creation with prompts
- Automatic file organization
- Append/prepend operations
- Macro chains

**Choice types**:
1. **Template Choice**: Create from template with variable substitution
2. **Capture Choice**: Append/prepend to existing note
3. **Macro Choice**: Chain multiple QuickAdd choices
4. **Multi Choice**: Group choices in a menu
5. **Script Choice**: Execute JavaScript

**Typical workflow**:
```
1. Trigger QuickAdd "New Meeting"
2. Prompt: Meeting title
3. Prompt: Attendees
4. Prompt: Date
5. Creates note from "Meeting" template in Meetings/ folder
6. Inserts captured data into template variables
7. Opens the new note
```

**Capture format**:
```
{{VALUE:Title}} - {{DATE:YYYY-MM-DD}} - {{VALUE:Attendees}}
```

---

## Tier 2: Workflow Integration Plugins

### 4. Tasks
**Purpose**: Advanced task management with metadata.

**What it automates**:
- Recurring tasks
- Due date tracking
- Priority management
- Task queries across notes
- Status workflows (custom symbols)
- Dependency tracking

**Task syntax**:
```markdown
- [ ] Task with due date 📅 2026-07-14
- [ ] High priority task ⏫
- [ ] Recurring task 🔁 every day
- [ ] Recurring task 🔁 every week on Sunday
- [ ] Task with start date 🛫 2026-07-10
- [ ] Task with scheduled date ⏳ 2026-07-12
- [ ] Task with completion date ✅ 2026-07-13
- [x] Completed task ✅ 2026-07-14
```

**Query syntax**:
```markdown
```tasks
not done
due before tomorrow
path includes Projects/
sort by due
```
```

**Filters**:
- `done`, `not done`
- `has due date`, `no due date`
- `due before`, `due after`, `due on`
- `starts before`, `starts after`
- `scheduled before`, `scheduled after`
- `happens before`, `happens after`
- `path includes/excludes`
- `filename includes/excludes`
- `heading includes/excludes`
- `description includes/excludes`
- `tag includes/excludes`
- `priority is high/medium/low/none`

---

### 5. Periodic Notes
**Purpose**: Time-based note creation with templates.

**What it automates**:
- Daily notes (with template)
- Weekly reviews
- Monthly summaries
- Quarterly planning
- Yearly retrospectives
- Automatic date-based naming

**Periodic formats**:
| Period | Format Example |
|---|---|
| Daily | `YYYY-MM-DD` |
| Weekly | `gggg-[W]WW` |
| Monthly | `YYYY-MM` |
| Quarterly | `YYYY-[Q]Q` |
| Yearly | `YYYY` |

**Integration**:
- Works with Templater for dynamic templates
- Works with Dataview for periodic queries
- Can trigger QuickAdd captures
- Compatible with Obsidian Git for versioning

---

### 6. Kanban
**Purpose**: Visual kanban boards backed by markdown.

**What it automates**:
- Drag-and-drop task management
- Date-based card properties
- Tag filtering within lanes
- Card templates
- Archive workflows
- Markdown export

**Board format** (saved as `.md`):
```markdown
---
kanban-plugin: board
---

## To Do
- [ ] Card 1
- [ ] Card 2 @{2026-07-14}

## In Progress
- [ ] Card 3 #urgent

## Done
- [x] Card 4
```

**Automation features**:
- Auto-archive completed cards
- Date notifications
- Tag-based color coding
- Time tracking
- Board templates

---

### 7. Obsidian Git
**Purpose**: Version control for your vault.

**What it automates**:
- Auto-commit on file changes
- Periodic push to remote
- Diff viewing
- Backup on vault close
- Commit message templates
- Branch management

**Settings**:
- Commit on save (auto)
- Commit interval (minutes)
- Push on commit
- Backup on quit
- Show diff in status bar

**Commands**:
- Git: Commit all changes
- Git: Push
- Git: Pull
- Git: Create backup (force)
- Git: View file history
- Git: Diff file

---

## Tier 3: Specialized Automation Plugins

### 8. Local REST API
**Purpose**: HTTP API for external tools.

**What it automates**:
- AI agent integration (Claude, ChatGPT)
- n8n/Zapier webhooks
- Custom app integrations
- Headless automation
- MCP (Model Context Protocol) support

**Endpoints**:
- `GET /vault/` - List files
- `GET /vault/{file}` - Read note
- `PUT /vault/{file}` - Create/update
- `DELETE /vault/{file}` - Delete
- `POST /active/` - Open in UI
- `GET /search/` - Search
- `GET /tags/` - List tags
- `POST /commands/{id}` - Execute command
- `GET /periodic/daily` - Daily note

**Authentication**: API key (configured in plugin settings)

---

### 9. Advanced Tables
**Purpose**: Spreadsheet-like table editing.

**What it automates**:
- Formula calculation
- CSV import/export
- Sorting
- Column alignment
- Row/column operations

**Formula syntax**:
```markdown
| Item | Price | Qty | Total |
|------|-------|-----|-------|
| A    | 10    | 2   | 20    |
| B    | 5     | 3   | 15    |
<!-- TBLFM: $4=$2*$3 -->
```

---

### 10. Style Settings
**Purpose**: Theme customization without CSS knowledge.

**What it automates**:
- Toggle visual features
- Color scheme switching
- Layout adjustments
- Font settings
- Quick theme presets

---

### 11. Canvas (Core Plugin)
**Purpose**: Visual workspace.

**What it automates**:
- `.canvas` file generation (JSON)
- Visual mind maps
- Project planning boards
- Relationship diagrams
- Export to PNG/SVG

**Canvas JSON structure**:
```json
{
  "nodes": [
    { "id": "n1", "type": "text", "text": "Node 1", "x": 0, "y": 0, "width": 250, "height": 60 },
    { "id": "n2", "type": "file", "file": "Note.md", "x": 300, "y": 0, "width": 250, "height": 60 }
  ],
  "edges": [
    { "id": "e1", "fromNode": "n1", "fromSide": "right", "toNode": "n2", "toSide": "left" }
  ]
}
```

---

## Plugin Integration Matrix

| Plugin | Dataview | Templater | QuickAdd | Tasks | Periodic Notes | Kanban | Git | REST API |
|---|---|---|---|---|---|---|---|---|
| **Dataview** | - | Inline | Output | Query | Query | Query | - | Query |
| **Templater** | Generate | - | Templates | Dates | Dates | Cards | Messages | - |
| **QuickAdd** | Trigger | Variables | - | Add tasks | Create | Create | Commit | Trigger |
| **Tasks** | Query | Dates | Capture | - | Daily | Board | - | Query |
| **Periodic Notes** | Query | Templates | Capture | Daily | - | - | - | Daily |
| **Kanban** | Query | Cards | Create | Cards | - | - | - | Create |
| **Git** | - | - | - | - | - | - | - | - |
| **REST API** | Query | - | Trigger | Add | Create | Create | - | - |

---

## Plugin Installation

### Via Community Plugins (Recommended)
1. Settings -> Community Plugins -> Turn on (acknowledge warning)
2. Browse -> Search -> Install
3. Enable plugin

### Via BRAT (Beta plugins)
For unreleased plugin versions:
1. Install BRAT plugin
2. Add beta plugin repo URL
3. Install from BRAT

### Manual Installation
1. Download release from GitHub
2. Extract to `.obsidian/plugins/plugin-id/`
3. Enable in Settings

---

## Security Considerations

- Only install plugins from trusted sources (GitHub, official community)
- Review plugin permissions (file system, network, shell)
- Templater's `tp.system.execute()` can run arbitrary shell commands -- use carefully
- Local REST API exposes your vault via HTTP -- use strong API keys and firewall rules
- Disable network plugins when not needed

---

*Plugin availability and features change. Check the Obsidian Community Plugins page for latest versions.*
