Periodic Notes

unlisted

by Mark Ayers (originally by Liam Cain)

Create and manage daily, weekly, monthly, and yearly notes

Updated 3d agoMIT
View on GitHub

Periodic Notes

Create and manage daily, weekly, monthly, and yearly notes in Obsidian. Originally created by Liam Cain.

You probably shouldn't install this

This is personal tooling, not a general-purpose plugin. It is opinionated in ways that only make sense for one person's workflow:

  • Single user. The only known installation is the maintainer's. Breaking changes ship without migration paths (see CHANGELOG.md — 1.3.0 removed the quick switcher and NLDates dependency, 2.0.0 dropped quarter granularity, openAtStartup, legacy migrations, and reset existing settings to defaults).
  • Fork, not upstream. This diverged from liamcain/obsidian-periodic-notes and is not a drop-in replacement. Settings, features, and internal structure have all changed.
  • Svelte 5 + Vite. The calendar sidebar uses Svelte 5 runes. The rest of the plugin uses native Obsidian APIs. There is no compatibility layer for older Obsidian versions.
  • No issue triage for feature requests. Bugs are welcome; feature requests from other users will almost always be closed as out-of-scope.

If you want something similar, the code is MIT-licensed — fork it and adapt. Don't expect upstream to accommodate your workflow.

Features

  • Four granularities — daily, weekly, monthly, yearly — each independently enabled with its own format, folder, and template.
  • Sidebar calendar view. Click any day, week, month, or year to open (or create) that note.
  • Template tokens for date math, including offsets like {{date+1d:YYYY-MM-DD}}.
  • Jump forwards or backwards to the closest existing note at the same granularity.
  • Ribbon icons and full command palette integration.
  • Cmd-click (macOS) / Ctrl-click to open in a split.

Usage

  • Ribbon icons — one per enabled granularity, each opening that granularity's note for the current period. Right-click any of them for a menu of all enabled granularities.
  • Command paletteOpen today's daily note, Jump forwards to closest weekly note, etc. One set of commands per enabled granularity.
  • Calendar sidebar — run Periodic Notes: Show calendar to add it to the right panel. Click a day, week number, month, or year to open or create that note. Right-click for delete/file-menu actions.

Settings

Each granularity is configured independently:

SettingDescription
EnabledTurn this granularity on or off.
FormatMoment.js format string. Defaults: YYYY-MM-DD (day), gggg-[W]ww (week), YYYY-MM (month), YYYY (year).
FolderFolder where these notes live. Nested folders in the format string (e.g. YYYY/MM/YYYY-MM-DD) are supported — a note is matched on the whole path the format renders, so a file must actually sit at that depth to count.
TemplatePath to a template file applied when a new note is created.

Template Tokens

Tokens are replaced when a new note is created from a template.

The sections below are limits, not just groupings. A token listed under one granularity is replaced only in that granularity's notes; anywhere else it is left in the note as literal text. In particular the parameterized {{date:FMT}} and {{time:FMT}} forms are daily-only — a monthly template containing {{date:YYYY}} writes those characters out verbatim. Use {{month:YYYY}} or {{year:YYYY}} instead. The unparameterized {{date}}, {{title}} and {{time}} work everywhere.

All granularities

TokenReplaced with
{{date}}, {{title}}The new note's basename.
{{time}}The current time as HH:mm.

Daily notes

TokenReplaced with
{{yesterday}}, {{tomorrow}}Adjacent day formatted with the daily format.
{{date:FMT}}The note's date, at the current time of day, formatted with FMT.
{{date+1d:YYYY-MM-DD}}The note's date offset by the given amount, formatted. Supports + or -.
{{time+2h:HH:mm}}The current time of day offset by the given amount, formatted.

Weekly notes

TokenReplaced with
{{monday:YYYY-MM-DD}}Monday of the active week, formatted. Same for sundaysaturday. Format is required.

Monthly notes

TokenReplaced with
{{month:MMMM YYYY}}First day of the month, formatted.
{{month-1M:YYYY-MM}}Offset month (previous month here), formatted.

Yearly notes

TokenReplaced with
{{year:YYYY}}First day of the year, formatted.
{{year-1y:YYYY}}Offset year (previous year here), formatted.

Offset units follow Moment.js: y years, M months, w weeks, d days, h hours, m minutes, s seconds.

Alternatives

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.