Implementing GTD in Obsidian

· 4 min read
obsidian gtd productivity tasks

What We’re Building

A full GTD (Getting Things Done) implementation in Obsidian. Capture, clarify, organise, reflect, engage-all in plain text.

Prerequisites

  • Obsidian
  • Tasks plugin
  • Dataview plugin
  • Templater plugin (optional)

The Approach

  1. Set up the GTD lists
  2. Create project structure
  3. Build weekly review
  4. Configure contexts
  5. Automate captures

Step 1: GTD Lists Structure

vault/
├── GTD/
│   ├── 📥 Inbox.md
│   ├── 📋 Next Actions.md
│   ├── ⏳ Waiting For.md
│   ├── 📅 Calendar.md
│   ├── 💭 Someday Maybe.md
│   └── 📁 Reference.md
├── Projects/
│   └── [Active projects]
├── Areas/
│   └── [Areas of responsibility]
└── Archive/
    └── [Completed projects]

Step 2: Inbox

Keep capture frictionless:

# 📥 Inbox

Dump everything here. Process daily.

## Captures
-
-
-

---

## Processing Checklist
For each item ask:
1. What is it?
2. Is it actionable?
   - No > Trash, Someday/Maybe, or Reference
   - Yes > What's the next action?
3. Will it take less than 2 minutes?
   - Yes > Do it now
   - No > Defer or delegate
4. Is it a project (multiple steps)?
   - Yes > Create project note, add to Next Actions
   - No > Add to Next Actions

Step 3: Next Actions with Contexts

# 📋 Next Actions

## @computer
```tasks
not done
tags include #next
tags include #computer
group by project

@phone

not done
tags include #next
tags include #phone

@errands

not done
tags include #next
tags include #errands

@home

not done
tags include #next
tags include #home

@office

not done
tags include #next
tags include #office

@anywhere

not done
tags include #next
tags include #anywhere

## Step 4: Project Template

```markdown
---
type: project
status: active
area: Work
created: {{date:YYYY-MM-DD}}
due:
---

# {{title}}

## Outcome
What does "done" look like?

## Why
Why does this matter?

## Next Actions
- [ ] #next #computer First concrete action

## Project Tasks
- [ ]
- [ ]
- [ ]

## Notes

## Reference
-

---

## Log
### {{date:YYYY-MM-DD}}
Started project.

Step 5: Waiting For

# ⏳ Waiting For

```tasks
not done
tags include #waiting
sort by due

Add New

  • #waiting Person/thing I’m waiting for ⏫ 📅 {{date:YYYY-MM-DD}}

Format: - [ ] #waiting [What] from [Who] since [date]


## Step 6: Weekly Review Dashboard

```markdown
# 🔄 Weekly Review - {{date:YYYY-MM-DD}}

## Get Clear

### Inbox Zero
- [ ] Process physical inbox
- [ ] Process digital inbox
- [ ] Process Obsidian Inbox

### Collect Loose Papers
- [ ] Desk cleared
- [ ] Wallet receipts
- [ ] Notes from meetings

### Empty Your Head
What's on your mind that isn't captured?

---

## Get Current

### Review Next Actions
```tasks
not done
tags include #next
  • Are these still the right next actions?
  • Delete completed items
  • Add new next actions for stalled projects

Review Waiting For

not done
tags include #waiting
  • Follow up on overdue items
  • Remove completed items

Review Projects

  • Each project has a next action
  • Move completed projects to Archive

Review Someday/Maybe

  • Anything to activate?
  • Anything to delete?

Review Calendar

  • Next 2 weeks clear?
  • Any prep needed?

Get Creative

New Projects

Any new outcomes to commit to?

Someday/Maybe Additions

Ideas to capture for later?


Checklist Complete

  • All lists reviewed
  • All projects have next actions
  • Inbox is empty

## Step 7: Someday/Maybe

```markdown
# 💭 Someday Maybe

Ideas I might pursue later. Review weekly.

## Projects I Might Do
- Learn Japanese
- Build a shed
- Start a podcast

## Places I Might Go
- Japan
- Iceland
- New Zealand

## Things I Might Buy
- Standing desk
- Mirrorless camera
- Electric bike

## Skills I Might Learn
- Piano
- Woodworking
- Public speaking

---

## Review Date: {{date:YYYY-MM-DD}}

Step 8: Quick Capture Hotkey

Templater script for instant capture:

const thought = await tp.system.prompt("Quick capture:");
if (thought) {
  const inbox = app.vault.getAbstractFileByPath("GTD/📥 Inbox.md");
  const content = await app.vault.read(inbox);
  const newContent = content.replace(
    "## Captures\n",
    `## Captures\n- ${thought}\n`
  );
  await app.vault.modify(inbox, newContent);
}

Assign to a hotkey like Cmd+Shift+I.

Step 9: Daily Dashboard

# Today - {{date:YYYY-MM-DD, dddd}}

## Calendar
What's scheduled today?

## Focus
What's the one thing that matters most?

## Next Actions Available
```tasks
not done
tags include #next
tags include #anywhere OR tags include #computer
limit 10

Waiting For (Overdue)

not done
tags include #waiting
due before today

End of Day

  • Inbox processed
  • Tomorrow planned

## The Result

- Trusted capture system
- Clear next actions by context
- Projects always moving forward
- Weekly review keeps it current
- Nothing falls through the cracks

## What I'd Do Differently

Keep project notes simpler. I overengineered early projects with too many sections. Now each project just needs: outcome, why, next actions, notes.


*GTD isn't about the tool, it's about the habit. Obsidian just makes the habit sustainable because your data isn't locked in.*

Available for rescue and re-platforming work

I take over platforms that already exist and are in trouble. Node, TypeScript, React and Laravel, mostly in regulated or high-traffic environments. If something needs rescuing, re-platforming or finishing, my full history is on the CV.

Related Posts

Comments