MH Periodic Notes

unlisted

by MH - Matheus Heidemann

Create and manage daily, weekly, monthly, quarterly, and yearly notes with folders, templates, prefixes, suffixes, and command/API integration.

Updated 1mo ago
View on GitHub

MH Periodic Notes

Summary

MH Periodic Notes is an Obsidian plugin for creating and opening periodic notes: daily, weekly, monthly, quarterly, and yearly. Each note type can have its own folder, template, filename prefix, filename suffix, and enabled state.

The plugin is built from TypeScript source in src/. The root main.js is a generated esbuild bundle for Obsidian installation.

Purpose And Features

  • Create or open the current daily, weekly, monthly, quarterly, or yearly note from commands or the plugin modal.
  • Configure each note type independently.
  • Use optional Markdown templates when new periodic notes are created.
  • Choose whether weekly notes start on Sunday or Monday.
  • Use localized UI text in English or Brazilian Portuguese.
  • Use the exposed window.MhPeriodicNotes API from other plugins, including calendar-style integrations.
  • Install without a separate styles.css; plugin styles are injected by the TypeScript bundle and cleaned up on unload.

How It Works / How To Use

Open the command palette and run Open periodic notes modal. The modal shows one card for each enabled note type. A highlighted card means that period already has a note; selecting it opens the note. A muted card creates the note first, then opens it.

You can also run type-specific commands, such as Create daily note or Create monthly note, when that note type is enabled.

Default filename formats are:

  • Daily: Y2026-M06-D06
  • Weekly: Y2026-M06-W22
  • Monthly: Y2026-M06
  • Quarterly: Y2026-Q2
  • Yearly: Y2026

Folder, prefix, and suffix are applied around the generated name. For example, with folder Periodic notes/Daily, prefix daily-, and suffix -journal, the daily note path becomes:

Periodic notes/Daily/daily-Y2026-M06-D06-journal.md

Templates are optional. Set a template path without or with .md, for example Templates/Daily or Templates/Daily.md. When a note is created, the template content is copied unchanged. The plugin does not require special frontmatter; any YAML frontmatter in your template is preserved as normal Markdown content.

Available settings:

  • Language: English or Portuguese (Brazil).
  • First day of week: Sunday or Monday, used for weekly periods.
  • Enabled: turns each periodic note type on or off.
  • Folder: destination folder for that note type.
  • Template: Markdown file copied into new notes.
  • Prefix: text inserted before the generated period name.
  • Suffix: text inserted after the generated period name.

External plugins can use:

await window.MhPeriodicNotes.createOrOpenNote("daily", new Date());
const path = window.MhPeriodicNotes.getNotePath("weekly", new Date());
const exists = window.MhPeriodicNotes.doesNoteExist("monthly", new Date());

Installation

Build or download the release files, then place them in:

<vault>/.obsidian/plugins/mh-periodic-notes/

Required installation files:

  • main.js
  • manifest.json
  • versions.json
  • locales/en-us.json
  • locales/pt-br.json

Enable MH Periodic Notes from Obsidian settings after copying the files.

Development

Install dependencies:

npm install

Run a watch build while developing:

npm run dev

Run TypeScript validation:

npm run typecheck

Create the production bundle:

npm run build

The build entrypoint is src/main.ts, output is main.js, and obsidian is kept external in the esbuild bundle. Production builds are minified.

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.