Obsidian is a writing app for creating knowledge bases. But it is also a great way to take meeting notes and track todos. As a person who needs to do both daily, I have settled on workflows that streamlines and collates information in a way that’s easy to both capture and consume. In this post I will go over my workflows for capturing meeting notes and tracking todos.

Before we start, apart from Obsidian (ofcourse), you will need 3 community plugins – 1. Dataview, 2. Templater, and 3. Meta bind. Setting these up and parsing this post also requires some basic knowledge on how Obsidian templates, the command palette and scripting in Obsidian works. There are several tutorials such as this one, that are good starting points.

My todo workflow

Before I moved to obsidian, I used separate apps for note taking and task management. One big gripe with that approach was managing action items coming out of meetings. I had to manually transfer them to my task management app and set dates for when I plan to work on them. With Obsidian, I wanted to automate that workflow. And not just meeting notes, I wanted to extend the automation to all my notes.

A second, much smaller gripe was the number of clicks it took me to add long form content to my tasks. Typically task management apps are built for adding one-liner tasks and it requires atleast one click to add long form content. For me, that was one additional click over 90% of the time.

And third, I wanted the flexibility to visualize my tasks grouped by when I plan to work on them, or when they are due, or their priority. Flexibility matters!

Visualizing the flow of information

To determine what makes the most sense for me, I created a mental model of how I expect my task management data to flow. Obsidian notes are essentially a collection of flat files connected to each other, so the mental model below uses that fact as a fundamental building block.

I have 3 sources of data I wanted to capture – 1. Tasks coming out of action items from meetings, 2. Tasks coming out of actions I wanted to take while researching on a topic, and 3. Tasks that isn’t #1 or 2. I also wanted to visualize all tasks regardless of where they were created in a single view with backlinks to their origin. And actuate on them from that single view.

The task template

The task template is meant to capture a single task. Since its a note in itself, it can capture any long form content with a succinct title.

Task

<% await tp.file.rename(tp.date.now('YYYY-MM-DD') + " " + tp.file.title) %>

- [ ] [[<% tp.date.now("YYYY-MM-DD") + " " + tp.file.title %>]] #task ⏳ <% tp.date.now("YYYY-MM-DD") %>

There are a few things going on in this template –

<% await tp.file.rename(tp.date.now('YYYY-MM-DD') + " " + tp.file.title) %>

I wanted the title of the file to represent the title for the task. When Obsidian creates a new task note based on this template, it creates it with a default title. I then want to change the title to my task’s title and add a timestamp to it.


- [ ] [[<% tp.date.now("YYYY-MM-DD") + " " + tp.file.title %>]] #task ⏳ <% tp.date.now("YYYY-MM-DD") %>

I also wanted to create a checkbox with the task’s title and a scheduled date so I can plan my daily work.

An important thing here is the #task tag. The visualization code needs a way to find all tasks across all notes. The task tag is the anchor it uses to do so.

If all goes well, a note created from this template should look like this –

Visualizing all tasks

This is the most important part of the puzzle, it collates all the tasks across your vault to a single visualization for you to consume.

Before we get into the code, this is how I have my visualization setup. You will soon find that the code is simple enough to tweak it to set it up on other parameters such as due date or priority.

The New Task button

I used the Meta bind plugin to create the button. Open the command palette (Cmd + P) and type in Meta bind : Open button builder.

  1. Choose a label name to display what you want to call the button.
  2. Add the templaterCreateNote action.
  3. Choose the Task template and a folder where you want to save your tasks.
  4. You may also, optionally, choose a default name for your task file.

Meta bind will generate something like this –

```meta-bind-button
label: New Task
icon: ""
style: default
class: ""
cssStyle: ""
backgroundImage: ""
tooltip: ""
id: ""
hidden: false
actions:
  - type: templaterCreateNote
    templateFile: Templates/Task.md
    folderPath: Research/Obsidian/Tasks
    fileName: NewTask
    openNote: true
    openIfAlreadyExists: false

```

The new task button now should create a new task file in your chosen folder with the task template.

The task list query

```dataview
TASK
FROM #task 
WHERE 
	due
	OR
	scheduled
	AND
	!completed
SORT scheduled ASC
GROUP BY scheduled
```

The task list query uses the Dataview plugin and queries tasks tagged with #task that has either a due date or a scheduled date and is not completed. I group by scheduled date so I can plan my day but you may group it by due date or priority if that makes more sense for your workflow.

And that brings us to the end of my task management workflow.

My meetings workflow

My meetings workflow is a lot simpler than my task management workflow. For every meeting, I wanted a new note where I can capture the names of the attendees, meeting notes and action items. And have a central view of all my meetings and a button to create new meeting notes.

The meeting note template


---
date: <% tp.file.creation_date() %>
type: meeting
summary: " "
---
tags: [[🗣 Meetings MOC]]
Date: [[<% tp.date.now("YYYY-MM-DD-dddd") %>]]
<% await tp.file.rename(tp.date.now("YYYY-MM-DD") + " " + tp.file.title) %>
# [[<% tp.date.now("YYYY-MM-DD") + " " + tp.file.title %>]]

**Attendees**: 


## Notes
-

## Action items
- [ ] #task 

Similar to my task template, I wanted my meeting note template to have a file name representive of the meeting. I also wanted a backlink with the meeting name and date in it. And meeting notes and action items.


---
date: <% tp.file.creation_date() %>
type: meeting
summary: " "
---

This piece of code creates a set of properties with today’s date and a summary. Summary is also displayed on the central view, giving me a quick summary of the meeting.

<% await tp.file.rename(tp.date.now("YYYY-MM-DD") + " " + tp.file.title) %>
# [[<% tp.date.now("YYYY-MM-DD") + " " + tp.file.title %>]]

After the properties, this piece of code creates a backlink with the date and meeting title. In the central view, I would use these backlinks to navigate to this meeting note.

And the rest is self-explanatory.

Visualizing all meetings

The meetings central view is simple – a button to create new meeting notes and a list of existing meeting notes. Each “File” is a meeting note and navigates to the backlink of the individual meeting note.

New meeting button

Similar to the New Task button, I used the Meta bind plugin to create the button. Open the command palette (Cmd + P) and type in Meta bind : Open button builder.

  1. Choose a label name to display what you want to call the button.
  2. Add the templaterCreateNote action.
  3. Choose the Meeting note template and a folder where you want to save your meeting notes.
  4. You may also, optionally, choose a default name for your meeting note file.

Meta bind should generate something like this –

```meta-bind-button
label: New Meeting
icon: ""
style: default
class: ""
cssStyle: ""
backgroundImage: ""
tooltip: ""
id: ""
hidden: false
actions:
  - type: templaterCreateNote
    templateFile: Templates/Meeting Note.md
    folderPath: Research/Obsidian/Meetings
    fileName: NewMeeting
    openNote: true
    openIfAlreadyExists: false

```

The meeting list

I used Dataview queries to list all meeting notes. The query iterates through all meeting notes in the meeting notes folder except the central view note and pulls the creation date and summary properties. It also sorts by the creation date so the newest meeting notes shows up at the top of the list.

```dataview
TABLE file.cday as Created, summary
FROM "Research/Obsidian/Meetings" and -#MOC
SORT file.cday DESC
```

Closing thoughts

Obsidian is exceptionally flexible and hence, powerful. Unlike other notes apps I have used in the past, the ability to use frontmatter and queries enables users to create powerful workflows that has enhanced my productivity quite a bit. I feel I have only scratch it’s surface though, so stay tuned for more productivity tips.

Categorized in:

Productivity,