Diary View

approved

by likemuuxi

This plugin has not been manually reviewed by Obsidian staff. A notebook-style diary view built from your daily notes.

11 stars474 downloadsUpdated 9d ago0BSD

English | 中文

Diary View

Diary View is an Obsidian community plugin that turns your daily notes into a notebook-style diary view. It focuses on a calm reading and writing experience: recent daily notes are shown as pages, the current note can be previewed or edited in place, and small details such as a daily quote and weather icon can be stored directly in each note's frontmatter.

image

Features

  • Open a dedicated diary view from the ribbon icon or the Open diary view command.
  • Browse the latest seven daily notes with a page-like layout and flip animation.
  • Preview rendered Markdown or switch to editing without leaving the diary view.
  • Edit the prompt text at the top of the right page. The text is saved to frontmatter as daily-quote by default.
  • Optionally fetch a daily quote from a user-configured API. The plugin requests it only when a note does not already have the configured quote property, then caches it in frontmatter.
  • Customize the weather icon for a note from frontmatter with daily-weather by default.
  • Replace the default artwork with a note-specific image from frontmatter with daily-image.
  • Preserve daily note frontmatter while editing the body content.
  • Full English and Chinese localization — auto-detects your Obsidian locale, or pick a language in settings.
  • Configurable calendar week — choose whether the week starts on Monday or Sunday.
  • Custom weekend days — select which days are highlighted as weekend in the calendar.

Frontmatter

Diary View reads and writes a few optional frontmatter fields in your daily notes.

---
daily-quote: "Write one sentence that belongs to today."
daily-weather: cloud-sun
daily-image: "https://example.com/photo.jpg"
daily-mood: smile
---

daily-quote is shown in the prompt card at the top of the right page and can be edited directly from the diary view. Clearing the prompt keeps an empty daily-quote value, so an API quote will not overwrite your manual choice on the next render. The quote property name can be changed in settings.

daily-weather stores the weather for the day. Click the weather icon in the page header to open the built-in picker and select an icon. You can also set it manually in frontmatter — the value can be a Lucide icon name (e.g. sun, cloud-rain), or common weather words which are automatically mapped to icons. The weather property name can be changed in settings.

daily-image replaces the default illustration on the left page. The value can be a URL (https://…), a vault-relative path (photos/sunset.jpg), or a wikilink (![[sunset.jpg]]). If this field is empty or missing, Diary View shows the built-in artwork — or, when Use first image as artwork is enabled, the first image found in the note body. The image property name can be changed in settings.

daily-mood stores the selected mood icon for the day. Click the mood area on the left page to open the built-in picker. You can also set it manually in frontmatter using a Lucide icon name or the mood's display description. Custom mood icons can be added in settings. The mood property name can be changed in settings.

Settings

Open Settings → Community plugins → Diary View to configure:

  • Language — Display language for the diary view UI. Auto-detects your Obsidian locale on first use.
  • Start of week — Choose whether the calendar week starts on Monday (default) or Sunday.
  • Weekend days — Select which days are highlighted as weekend in the calendar. Defaults to Saturday and Sunday.
  • Daily note heading — Optional Markdown headings to read and write. Enter multiple headings on separate lines, or separate them with commas or semicolons. The first matching heading is used; if none exist, the first configured heading is created.
  • Quote frontmatter key — Frontmatter property used to read and save the daily quote. Defaults to daily-quote.
  • Daily quote API — Optional URL for a daily quote endpoint. The response can be plain text or JSON using common fields such as hitokoto, quote, content, text, sentence, message, or data.
  • Weather frontmatter key — Frontmatter property used to read the daily weather icon. Defaults to daily-weather.
  • Image frontmatter key — Frontmatter property used to read the diary image URL or path. Defaults to daily-image.
  • Use first image as artwork — When enabled and no image frontmatter is set, the first image in the daily note is used as the diary artwork. When disabled, the default illustration is shown.
  • Mood frontmatter key — Frontmatter property used to read and save the daily mood icon. Defaults to daily-mood.
  • Custom mood icons — Add custom Lucide icon names and descriptions. Icons appear alongside the built-in mood icons in the diary view.

The plugin works offline by default. It only makes network requests when you add a Daily quote API URL.

Daily Notes

Diary View uses Obsidian's daily notes configuration when available:

  • folder decides where notes are stored.
  • format decides the note filename pattern.

If no daily notes configuration is found, Diary View falls back to notes named YYYY-MM-DD.md at the vault root.

Installation

For local development or manual testing, copy these files into:

<Vault>/.obsidian/plugins/diary-view/

Required files:

  • main.js
  • manifest.json
  • styles.css

Then reload Obsidian and enable the plugin in Settings → Community plugins.

Development

Install dependencies:

npm install

Start the development build:

npm run dev

Create a production build:

npm run build

Inspiration

This plugin's notebook mood, diary-first interaction model, and page-turning presentation were inspired by Dear Diary:

Diary View is an Obsidian plugin built around local daily notes and vault frontmatter. It does not depend on Dear Diary at runtime.

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.