How I Use the Daily Notes Plugin in Obsidian.md: A Comprehensive Guide

In this tutorial, I share how I use the Daily Notes plugin to help me remember what I have read, found, and watched on a daily basis (I’m a forgetful person). Also included in this article, is a downloadable vault that you can use or incorporate into your own workflow!

Update History

  • 02/24/2022: Added sort file.name desc on the Dataview codes of the log notes so that the most recent Daily Note shows up on the top of the list.
  • 01/09/2022: Corrected some terms under the “Putting It All Together” section. Added a list of signifiers used in the “Reading Log” section.

Table of Contents

What is the Daily Notes Plugin?


An example Daily Note from my vault

Daily Notes is a core plugin in Obsidian that creates a note based on the current date. By default, the plugin creates a date in this format: YYYY-MM-DD although you can change this in the settings.

To create a daily note, click on the calendar icon on the left panel or press Ctrl+P to open the Command Palette and create the note from there.

For more information on Daily Notes, check out the official Obsidian Help vault in the link below:

Daily Notes (Obsidian Help Vault)

Folder Structure of My Daily Notes


The folder structure that I use for the Daily Notes

I use a folder structure to keep all my daily notes in place. All notes relating to it are inside the main folder called Diary.

Here is an explanation for each folder and note as seen in the screenshot:

  • ๐Ÿ“‚ _templates:
    • This is the folder that houses the Daily Note template. I’ve put an underscore so that this folder appears on top of the navigation panel.
  • ๐Ÿ“‚ Diary:
    • This is the main folder containing all the daily notes, index, and log notes.
  • ๐Ÿ“‚ Daily Notes
    • This contains all my daily notes.
  • ๐Ÿ—’๏ธ 00 Daily Notes Hub
    • This is the main index or hub note that I use. Think of it as the homepage for your daily notes.
  • ๐Ÿ—’๏ธ 00 Media Log
    • This is a subpage for the hub note that tracks all the media I read and/or watch listed from a daily note. Think of the log notes as pages in a website (like an about page or contact us page.)
  • ๐Ÿ—’๏ธ 00 New Discoveries Log
    • A subpage that tracks all the new discoveries I found from the daily notes.
  • ๐Ÿ—’๏ธ 00 Ship’s Log
    • A subpage that tracks all life events and progress from my personal projects.
  • ๐Ÿ—’๏ธ 00 Tasks Log
    • A subpage that tracks all tasks listed in the daily notes.
  • ๐Ÿ—’๏ธ 00 Workout Log
    • A subpage that tracks all workouts performed.
๐Ÿ’ก The zeroes (“00”) are just my way to sort the index and log notes so they appear to the top when browsing my vault in file explorer.

Parts of My Daily Note


The two H2 headers on my Daily Note

My Daily Note consists of two H2 headers: New Discoveries and Ship’s Log.

New Discoveries

The New Discoveries H2 header

The New Discoveries header is where I add interesting and noteworthy stuff that I find on the Internet (or somewhere else).

Each new discovery has an emoji that I use as a signifier. Here is an explanation for each signifier:

  • ๐Ÿ’ก = A general new discovery
  • ๐Ÿ“• = Fiction book
  • ๐Ÿ“˜ = Nonfiction book
  • ๐Ÿ—ฟ = Anything related to Obsidian (tips, apps to use in conjuction, codes)
  • ๐Ÿ›  = Tool or resource (useful websites, apps, or software)
  • ๐ŸŽถ = New music
  • ๐Ÿ‹๏ธ = Anything related to fitness
  • ๐ŸŽจ = Anything related to art
๐Ÿ’ก If you are using Windows 10, you can press the Windows key + Period (.) to open up the emoji keyboard. If you are using the mobile version of Obsidian, you can download the Emoji Toolbar community plugin and assign it to a hotkey to bring up a similar emoji menu.

Every new discovery has the NewDiscovery:: inline field included. This lets me track each entry on the 00 New Discoveries Log note.

Ship’s Log

The Ship’s Log H2 header and the six H3 collapsed headers below it

The Ship’s Log header is where I note down everything I did on a day. These activities are divided into six H3 headers:

  • Tasks Log
  • Happenings
  • Personal Projects Log
  • ReadingLog
  • VideoLog
  • Workout Log

Tasks Log

An example entry on the Tasks Log

Tasks Log is my to-do list. Each entry is written this way:

- [ ] #โ—RemindMe/Life Appointment with so-and-so

I use nested tags to categorize each task whether it’s a task related to this vault or a task to do in real life. If a task is related to a personal project like a blog or video, for example, you can use #RemindMe/BlogName or #RemindMe/VideoChannelName.

Happenings

Two example entries on the Happenings Log

Happenings is where I note down any accomplishments or noteworthy events that happened. You can also use signifiers here like in the New Discovery header to denote a specific event. Each entry has the LifeEvent:: inline field.

- LifeEvent:: Dentist appointment today.

If you are journaling, use <br> at the end of each paragraph so that they don’t break when displayed in the 00 Ships Log note. Here is an example:

- LifeEvent:: I went to the bookstore today and saw a lot of new titles. I bought How to Take Smart Notes and a bunch of manga. <br> I saw a cat on the way home. It is very cute.

When displayed in the 00 Ships Log note, Dataview will add a line break in between the two paragraphs.

The LifeEvent entry on the Ship’s Log note

Personal Projects Log

An example entry on the Personal Projects Log

The Personal Projects Log is where I note the progress and ideas for my personal project (this blog!). Each entry has the PersonalProjects:: inline field.

- PersonalProjects:: โœ๏ธ How I Use the Daily Notes Plugin - Moved to WIP today!

Much like in the New Discoveries, I use signifiers to denote the status of each project:

  • ๐Ÿ’ก = Ideas
  • โœ = Work-in-progress projects
  • ๐Ÿ› ๏ธ = Polishing (i.e. run everything on Grammarly for articles or add post-processing effects for videos)
  • ๐Ÿ“ธ = Adding screenshots in articles
  • โœ… = Published articles
  • โ— = Articles that need to be updated

Reading Log

Example entries from the Reading Log

The Reading Log is where I note down the articles and books I read. Each entry has the ReadingLog:: inline field.

Here is an example of what my Reading Log would usually look like:

- ReadingLog:: โœ… Dragon Ball Z - Finished all volumes!
- ReadingLog:: ๐Ÿ“– One Piece - Chapter 160
- ReadingLog:: โœ๏ธ You Are What You Consume - Interesting article. I should make a literature note out of this.

Here is an explanation for each signifier:

  • โœ… = Finished book
  • ๐Ÿ“– = A “currently reading” book. For manga or comics, you can add the last chapter, volume, or issue that you read.
  • โœ๏ธ = For web articles that I’ve read but still need a literature note.

For audiobooks, I still add them under the Reading Log but use the ListeningLog:: inline field.

Video Log

Example entries from the Video Log

The Video Log works the same way as the Reading Log. Instead of an open book (๐Ÿ“–) emoji as a signifier for currently reading books, I use the TV (๐Ÿ“บ) emoji for currently watching videos. I use the VideoLog:: inline filed for this section.

- VideoLog:: โœ… Did you see that? - Cute cat video
- VideoLog:: โœ๏ธ How to Learn - Need to make literature notes
- VideoLog:: ๐Ÿ“บ The Century of the Self - 0:1:34 timestamp

Workout Log

Example exercises in the Workout Log

The Workout Log is where I note down the workouts I did for the day. I use the WorkoutLog:: inline field and structure each workout like this:

- WorkoutLog:: <br> Deadlift = 4 x 7 (Weight) <br> Lat Pulldown = 3 x10 (Weight) <br> Overhead Press = 3 x 10 (Weight)

Putting It All Together

The Title YAML frontmatter and the Summary inline field that I add at the end of each day.

At the end of each day, I add a Title: YAML frontmatter and a Summary:: inline field describing what happened and other notable things. To add Title: YAML frontmatter, type the following on top of the daily note.

--
Title:
--

These two fields will be displayed in the 00 Daily Notes Hub note.

The Title and Summary as seen in the “00 Daily Notes Hubnote

How I Use the Log Notes


The Log Notes in the navigation panel

The Log Notes are the notes that will display all the inline fields from your daily note. All Log Notes use the Dataview plugin to display the content, except for the Tasks Log which uses the Tasks plugin.

โ— If the notes are not showing up in the log note, restart Obsidian.

Media Log

The Media Log with the Listening Log header

The Media Log is the note that will display all the notes containing the ReadingLog, ListeningLog, and VideoLog inline fields.

To display them, add the following Dataview codes to the Media Log note:

โ— When copy-pasting the codes in Obsidian, remove the spaces in between the three backticks (` ` `).

ListeningLog Dataview Code

` ` `dataview
table ListeningLog as “Log”
from “Diary/Daily Notes”
where contains(ListeningLog, “”)
sort file.name desc
` ` `

ReadingLog Dataview Code

` ` `dataview
table ReadingLog as “Log”
from “Diary/Daily Notes”
where contains(ReadingLog, “”)
sort file.name desc
` ` `

VideoLog Dataview Code

` ` `dataview
table VideoLog as “Log”
from “Diary/Daily Notes”
where contains(VideoLog, “”)
sort file.name desc
` ` `

Here is a line-by-line explanation:

  • table ListeningLog as "Log"
    • This tells the Dataview plugin to create a table displaying the ListeningLog YAML field as “Log” on the table.
  • from "Diary/Daily Notes/"
    • This tells the Dataview plugin to specifically display from the Daily Notes folder.
  • where contains(ListeningLog, "")
    • This tells the Dataview plugin to only display the notes that have theย ListeningLogย inline field. You can change this field toย ReadingLogย andย VideoLogย to display those.
  • sort file.name desc
    • This tells the Dataview plugin to sort the files in descending order.

New Discoveries Log

The New Discoveries Log and the list

This log will display all the NewDiscovery:: inline field from the daily notes.
The Dataview code to display this is similar to the Media Log but replace ListeningLog with NewDiscovery .

Here is the Dataview code to display the inline field.

` ` `dataview
table NewDiscovery as “Log”
from “Diary/Daily Notes”
where contains(NewDiscovery, “”)
sort file.name desc
` ` `

Ship’s Log

The Ship’s Log and its entries. Some entries are removed for privacy

The Ship’s Log is used to display all LifeEvent:: and PersonalProjects:: inline fields. The Dataview code used is similar to the above log notes. You only need to change the inline field in the where code.

LifeEvent Dataview Code

` ` `dataview
table LifeEvent as “Log”
from “Diary/Daily Notes”
where contains(LifeEvent, “”)
sort file.name desc
` ` `

PersonalProjects Dataview Code

` ` `dataview
table PersonalProjects as “Log”
from “Diary/Daily Notes”
where contains(PersonalProjects, “”)
sort file.name desc
` ` `

Workout Log

The Workout Log along with a sample entry

The Workout Log is where I keep a record of all the workout I did on a specific day. It will display all daily notes that have the WorkoutLog:: inline field.

Here is the Dataview code used to display it:

` ` `dataview
table WorkoutLog as “Log”
from “Diary/Daily Notes”
where contains(WorkoutLog, “”)
sort file.name desc
` ` `

Tasks Log

The Tasks Log and an example entry

This is the note that collects all pending tasks from your Daily Notes. Here is the Tasks code to display them:

` ` `tasks
not done
description includes /Work
path includes Diary/Daily Notes
` ` `

Here is a line-by-line explanation:

  • not done
    • This tells the Tasks plugin to display tasks that are not completed.
  • description includes /Work
    • If you use nested tags such as RemindMe/Work for example, the Tasks plugin will only display tasks that have that tag. Remove this line of code if you don’t use nested tags.
  • path includes Diary/Daily Notes
    • This tells the Tasks plugin to specifically display tasks from the Daily Notes folder.

How I Use the Daily Notes Hub


The Daily Notes hub displays all notes from the current week. The “null” means that I haven’t added the Title and Summary of the daily note.

The Daily Notes Hub note is the index note that links all the log notes. In addition, it also includes the title and summary of notes from this week as well as the list of all daily notes.

Display this Week’s Daily Notes

To display the notes of this week, add the following Dataview code:

` ` `dataview
TABLE WITHOUT ID link(file.link, " ") + "<strong>" + Title + "</strong><br>" + Summary + "<br>" + file.link AS Entries
FROM "Diary/Daily Notes"
SORT file.name desc
LIMIT 7
` ` `

Here is a line-by-line explanation:

  • TABLE WITHOUT ID link(file.link, " ")
    • This tells Dataview plugin to create a table without the link to the note. By default, the plugin creates the note on the left column while the right column is used for the YAML fields.
  • + "<strong>" + Title + "</strong><br>"
    • This tells Dataview plugin to display the Daily Note’s Title in bold. The <br> adds a line break for the next YAML field.
  • + Summary + "<br>" +
    • This display the Daily Note’s Summary below the Title. Another <br> adds a line break for the next field.
  • + file.link AS Entries
    • This displays the name of the Daily Note and its link below the Summary. It will also name the Dataview table as “Entries”
  • SORT file.name desc
    • This tells the Dataview plugin to sort the files in descending order.
  • LIMIT 7
    • This tells the Dataview plugin to limit the number of displayed contents to seven.
๐Ÿ’ก The plus (+) sign at the end of each code acts as a space in between.

Display All Daily Notes

If you want to display all your daily notes in descending order, remove the LIMIT 7 from the Dataview code:

` ` `dataview
TABLE WITHOUT ID link(file.link, " ") + "<strong>" + Title + "</strong><br>" + Summary + "<br>" + file.link AS Entries
FROM "Diary/Daily Notes"
SORT file.name desc
` ` `

Display Daily Notes within a Certain Date

If you want to display your daily notes within a certain range, such as all notes from 2021, add WHERE file.day >= date(2021-01-01) AND file.day <=date(2021-12-31) on the Dataview code:

` ` `dataview
TABLE WITHOUT ID link(file.link, " ") + "<strong>" + Title + "</strong><br>" + Summary + "<br>" + file.link AS Entries
FROM "Diary/Daily Notes"
WHERE file.day >= date(2021-01-01) AND file.day <=date(2021-12-31) SORT file.name desc
` ` `

This code will tell the Dataview plugin to only display notes from January 01, 2021 to December 31, 2021.

Optional Features


Add Lines on a Dataview Table

Add a white line separating each Dataview entry using a CSS Snippet

If you want to add a line in between each entry on a Dataview table, you can use the following CSS Snippet:

.table-view-table tr {
    border-bottom: 1px solid;
}
๐Ÿ’กIf you want to change the thickness of the lines, change the number on the border-bottom field. I use 0.5px on my vault as an example.

To add this to Obsidian, open Notepad and copy-paste the snippet. Save the document as a .css file and move it to the snippets folder (Vault Name -> .obsidian -> snippets).

If the snippets folder is missing, go to your Settings and select Appearance. Under CSS Snippets, click on the folder icon for Obsidian to create the snippets folder automatically.

Click on the folder icon if the snippets folder is missing

After adding it to the snippets folder, open Settings in Obsidian and select Appearance. Under CSS Snippets, click on the refresh icon to reload the snippets and click the toggle to enable it.

Add a Dynamic Previous/Next Daily Note Navigator

The Dynamic Previous/Next Feature in Reading Mode

If you want to add a navigator that lets you click on the previous and next daily note, you can add a specific DataviewJS code on your daily note.

You can find the code on the link below:

Dynamic Previous/Next Daily Note Navigator

Add a Read Later and Watch Later Tracker

The Read Later tracker

You can use the Tasks plugin to create a Read Later and Watch Later tracker on the Tasks Log.

To do this, add the following entries on a Daily Note:

- [ ] #WatchLater Obsidian Flight School: The Walkthrough
- [ ] #ReadLater Habits vs. Goals

On the Tasks Log note, add the following code:

` ` `tasks
not done
description includes WatchLater
path includes Diary/Daily Notes
` ` `

The description includes WatchLater code tells the Task plugin to specifically display tasks that have the WatchLater tag. Replace the WatchLater tag with the ReadLater tag to display those instead.

Download the Sample Vault


The sample vault containing all the files and folders

I’ve created a sample vault that you can play around with and test this workflow for yourself! You can find it in this Github link. The vault has the Dataview and Tasks plugins installed, as well as all optional features.

To download and open the vault in Obsidian, follow the instructions below:

  1. Click on this Github link to take you to the download link.
  2. Select the latest version of the DailyNotes.zip file and download it to your computer.
  3. Unzip the file.
  4. On Obsidian, click on the vault icon and press the Open button.
  5. Select the Daily Notes folder to open it as a vault in Obsidian.

Credits


32 comments

  1. Thanks for the great effort and the option to load your vault. Iโ€™m new to Obsidian and was looking for a system that gives me an overall view and with your idea Iโ€™m happy.

    Liked by 1 person

  2. Love this! I’ve also added a “Syntax and Examples” note to the “Daily Notes” section so I can go back and refer to it. Might be useful to include in your example vault.

    Liked by 1 person

      1. Quick Follow Up: I have been trying to implement a single text file for my Daily Log; however, I don’t know if it’s possible for Dataview to give me the results chronologically. In this use case, the date in the Daily Log would be a header, but I don’t know how I could generate a Dataview table which would pull the header date rather than the file (which would therefore allow me to sort by date within the file). Essentially, I would need Dataview to see each log (e.g., AcademiaLog::, WorkLog::, etc.) as nested under each header (e.g., 2022-02-08), and then return those results back to me in the table view for each log in chronological order. If this is too convoluted or isn’t making sense, please disregard my question! (different account, same person, can’t seem to log back into my WordPress)

        Like

      2. Hi Benjamin, I think it’s possible to pull the header date when using a single text file for the Daily Log. But for this case, we will be using Obsidian’s query feature to do so.

        Go to the search bar in Obsidian and type the following:
        file:Daily-Log-File section:(“#2022-02-08”)

        This code will tell Obsidian to search for the “# 2022-02-08” header on your single text file called Daily-Log-File. If you want to narrow it down further (such as filtering for the AcademiaLog entries), you can type this:
        file:Daily-Log-File section:(“#2022-02-08” /^- AcademiaLog/)

        If you want to “save” these queries and not put them in the search bar all the time, you can put this on any note. (Don’t forget to put the three backticks on this code)
        query
        file:Daily-Log-File section:("#2022-02-08" /^- AcademiaLog::/)

        You might want check out Jamie Rubin’s guide on setting up a single text file for Daily Logs here, this is where I found the code to filter each header: https://jamierubin.net/2022/01/25/practically-paperless-with-obsidian-episode-15-daily-notes-as-an-index-to-my-life/

        Liked by 1 person

  3. Hi! I downloaded your vault to try it out, but I can’t get inline fields to be displayed in the hubs. It always says Dataview: Query returned 0 results. Doesn’t even work with your sample notes, so I guess the problem is in Dataview settings. I’m sure it’s something stupid, but I’m new to this and I can’t sort it out ๐Ÿ˜ฆ

    Liked by 1 person

    1. Hmmm that’s weird. Have you tried the following?
      1. Go to the Settings (the gear icon on the bottom left corner) and click Community Plugins. 2. Scroll down to the Installed Plugins and click Dataview.
      3. Press Disable and Uninstall. Then press Install and Enable to reinstall the plugin.

      I think a similar thing happened to my vault before and reinstalling the Dataview plugin fixed it. I hope this works out for you!

      You can also get help from the official forums here: https://forum.obsidian.md/c/get-help/19

      Like

    1. Sorry for this unappealing comment, I actually needed some help with the dataview, so i composed a long message which unfortunately was not posted and showed me an error. I thought comments were disabled for this post and hence put up a test comment just to confirm and to my embarrassment it did. Apologies again. I still need some help though with the dataview plugin ๐Ÿ™‚

      Like

      1. Hi Prague, no worries about it! I think the comments on this post need to be manually approved before they show up in the comments section. I’ll have to change it in the settings.

        Anyway, is there anything I can help with the Dataview plugin? You can reply in here and I’ll do my best to help out!

        Like

      2. Thank you so much.
        I found your article through reddit and it instantly inspired me to track my workout routine using dataview. But i wanted to track little bit differently than what you have mentioned in this article.
        I have a template setup for my daily note and basically this is how i am annotating the data in my daily note. i believe, question is how do I correlate a data set using dataview.
        Progression-Week:: 1
        Progression-Day:: 2
        Muscle-group:: Chest
        – Exercise:: Bench Press
        – Weight:: 50 (Kgs)
        – Reps:: 12
        – Sets:: 4
        – Exercise:: Dumbbell fly
        – Weight:: 50 (Kgs)
        – Reps:: 12
        – Sets:: 4
        Muscle-group:: Shoulder
        – Exercise:: Arnold Press
        – Weight:: 20 (Kgs)
        – Reps:: 12
        – Sets:: 4
        – Exercise:: Dumbbell lateral raise
        – Weight:: 15 (Kgs)
        – Reps:: 12
        – Sets:: 4

        So this is my setup and i have bunch of other muscle-group and exercises listed in the same daily note but those will not have the weights and sets and reps details, for example on a chest day – i will mention chest day only and the remaining muscle group will be empty.
        Problem is I want to see a table which will show me data week on week basis using the progression-week field to track my progressive overload.
        So my query below is not fetching any results that’s because i understood that the above nesting or pseudo grouping does not work like that. Any help or suggestion on how to annotate this data would be so much helpful for me, Many thanks for your time and patience.

        TABLE WITHOUT ID Progression-week AS “Week”, Muscle-group AS “Muscle group”, Exercise AS “Exercise name” FROM “03. Daily Notes” WHERE Progression-week >= 1 AND Muscle-group = Chest
        FLATTEN Exercise

        Regards,
        Prague

        Liked by 1 person

      3. Hi Prague, thank you for sharing how you log your workout routine. It helps me understand what you’re trying to achieve in your workflow.

        Based on your setup, we’ll have to change the way how you input the exercises listed since Dataview cannot differentiate if the Weight, Reps, and Set fall under a specific nested inline code like Exercise:: Bench Press or Exercise:: Dumbbell Fly. What will happen is that Dataview will display the code for Weight like this for example: “50 (Kgs), 50 (Kgs), 20 (Kgs)”.

        I’m going to recreate your workflow in a test vault in my free time and see if it will display the values you needed to see. I’ll reply within this week or two hopefully.

        Like

      4. Thatโ€™s so kind of you, thank you so much for your time.
        I am also trying out few ways of capturing data, keeping in mind the minimal manual effort of inputting data. I do believe the issue is definitely with how i am annotating. Hopefully there is a way. Thanks again.

        Like

      5. Hi Prague, I have found a way to display each inline code that you have set up on your workflow. You can find the test vault that I used in this Github link (download the .zip file and open the folder as a vault in Obsidian).

        Please check out the instructions on the home page of the test vault and let me know if it works!

        Like

      6. This is so wholesome, thank you mate for your kind gesture towards a total internet stranger. Appreciate it much.
        This annotation definitely works, i was playing with something similar too. But the dataview query is what looks unfamiliar to me at a first glance, but i will get my head around it.
        Have a great day/week/month/year ahead, incase we donโ€™t interact again, though you have my email and if you want to continue occasional conversation over email – that would be good too. Thanks again mate.

        Cheers,
        Prague

        Liked by 1 person

  4. Hy, many thanks for the excellent tutorial. Is the navigation on top of the daily note a plugin? (previous โ€“ today โ€“ next)

    Like

  5. Hello, I am having a problem where some of the tables, say, the LifeEvents table fills out with null values. Dataview will recognize there is a “LifeEvent:: xyz” somewhere in a daily note and add a row for it, but it will actually show as null. This happenns with a couple of the tables, but the code is exactly the same as in the ones that work.
    Im wondering if you have any input on this.

    Like

    1. Glad to hear that you got the problem sorted out! I think this type of error happens when Dataview is still loading the values from the YAML frontmatter. I usually fix this by closing and reopening Obsidian, it works for both the desktop and mobile versions.

      Like

Leave a comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website with WordPress.com
Get started
%d bloggers like this: