Marginalia
pendingby Open Open
A lightweight status bar plugin to display random quotes from Hitokoto or custom lists.
Marginalia
Utilizing the marginal space of your screen to provide unexpected inspiration for writers.
Marginalia is a lightweight, immersive status bar plugin for Obsidian. It utilizes the status bar space at the bottom of the screen to display quotes, aphorisms, or fragments of inspiration from the "Hitokoto" API, the "Quotable" API (with ZenQuotes fallback), or a custom quote library.
Table of Contents
- β¨ Features
- π₯ Installation
- π Privacy & Network
- βοΈ Configuration
- π οΈ Development
- π License
- π€ Contribution & Contact
- π Changelog
β¨ Features
- π Multiple Data Sources: Supports "Hitokoto" API, "Quotable" API (with ZenQuotes fallback), and local custom lists.
- π Auto Refresh: Configurable auto-refresh interval (1-60 minutes) to keep inspiration flowing.
- π Category Selection: Supports filtering for specific types of sentences such as Anime, Literature, Philosophy, Poetry, etc.
- π Private Library: Supports adding and managing your own collection of excerpts.
- π±οΈ Minimalist Interaction: Hover to view the source, click to refresh immediately, and right-click to copy.
- π± Cross-Platform: Perfectly adapted for both Desktop and Mobile UIs.
Feature Demo
- Local Custom List Mode

- "Hitokoto" API Mode

- Right-click to Copy

π₯ Installation
Method 1: Install using BRAT Plugin (Recommended for testing)
Before approval in the official store, it is recommended to use the BRAT plugin for installation:
- Search for and install BRAT in the Obsidian Community Plugins market.
- Open BRAT settings and click
Add Beta plugin. - Enter the repository URL:
https://github.com/OpeNopEn2007/obsidian-marginalia - Click
Add Plugin.
Method 2: Install from Obsidian Community Plugins
Note: The plugin is currently under official review. Once approved, you can search for and install it directly.
- Open Obsidian Settings -> Community Plugins.
- Turn off "Restricted mode".
- Click "Browse" and search for
Marginalia. - Click Install and Enable.
Method 3: Manual Installation
- Download the latest
main.js,manifest.json, andstyles.cssfrom the GitHub Releases page. - Place the files into the
.obsidian/plugins/marginalia/folder. - Restart Obsidian and enable the plugin.
π Privacy & Network
Network Access Statement
- When using Hitokoto API as the data source, the plugin periodically accesses
https://v1.hitokoto.cn/to fetch random quotes. - When using Quotable API as the data source, the plugin accesses
https://api.quotable.io/random(and falls back tohttps://zenquotes.io/api/randomfrom ZenQuotes if needed). - When using Local Custom List, the plugin does not generate any network requests.
Privacy Commitment
- No User Data Collection: The plugin does not collect, store, or transmit any personal information or usage data.
- No User Tracking: The plugin does not track any user actions or preferences.
- Transparent Data Usage: All network requests are solely for fetching public quote content and do not contain any user identification information.
Offline Support
Even in a completely offline environment, the plugin works normally; simply switch the data source to "Local Custom List".
βοΈ Configuration
1. Data Source Settings
- "Hitokoto" API: Fetches random quotes via the internet.
- "Quotable" API: Fetches random quotes via the internet (with ZenQuotes fallback).
- Local Custom List: Displays locally configured content only, available offline.
2. "Hitokoto" Category Reference
| Code | Category | Code | Category | Code | Category |
|---|---|---|---|---|---|
| a | Anime | e | Original | i | Poetry |
| b | Manga | f | Internet | j | Netease Cloud |
| c | Game | g | Other | k | Philosophy |
| d | Literature | h | Film & TV | l | Clever/Witty |
3. Custom Quote Format
Supports plain text or text with a source, one per line:
Here is the quote content
Here is the quote content | Here is the author/source
π οΈ Development
If you are a developer or want to modify the source code yourself, please refer to the following process.
Environment Requirements
- Node.js 16+
- npm or yarn
Quick Start
- Clone the repository and install dependencies:
git clone https://github.com/OpeNopEn2007/obsidian-marginalia.git
cd obsidian-marginalia
npm install
- Configure Auto-Deployment Environment (Optional): This project supports automatically syncing the built plugin to your Obsidian test vault during development.
- Copy the
.env.examplefile in the root directory and rename it to.env. - Modify
OBSIDIAN_VAULT_PATHin the.envfile to the absolute path of your local Obsidian plugins directory.
# .env Example
OBSIDIAN_VAULT_PATH=D:\Vault\MyTestVault\.obsidian\plugins\marginalia
- Note: The
.envfile is ignored by git, so your path privacy will not be uploaded.
- Start Development Mode:
npm run dev
At this point, modifying the code will automatically trigger a recompile (and sync to your test vault). You can see the effect in Obsidian by running the command Reload app without saving.
- Build Production Version:
npm run build
The build artifacts will be output to the ./marginalia directory.
Project Structure
Marginalia/
βββ src/
β βββ services/ # Quote services and local quote manager
β β βββ hitokoto.ts # Hitokoto API (with category support)
β β βββ quotable.ts # Quotable API (with ZenQuotes fallback)
β β βββ quoteManager.ts # Local custom quote parsing + randomization
β βββ ui/
β β βββ statusBar.ts # Status bar UI component
β βββ main.ts # Plugin entry point
β βββ settings.ts # Settings panel logic
βββ esbuild.config.mjs # Build configuration (includes auto-deployment logic)
βββ .env.example # Environment variable example
βββ manifest.json # Plugin manifest file
π License
MIT License. Copyright (c) 2025 Open Open.
π€ Contribution & Contact
Issues for bug reports and Pull Requests for code contributions are welcome!
- Author: Open Open
- GitHub: OpeNopEn2007
π Changelog
v1.1.0
- β¨ New Feature: Added "Quotable" API as a new data source (with ZenQuotes fallback).
- βοΈ Settings: Added data source selection (Hitokoto / Quotable / Local Custom List).
- π Locale: Improved default data source selection based on UI language (Chinese β Hitokoto, others β Quotable).
- π Docs: Updated README network statement and project structure.
v1.0.0.5
- π Fix: Fixed the
mainfield in themanifestfile.
v1.0.0.4
- β¨ New Feature: Implemented a brand new floating Tooltip with smooth fade-in/out animations.
- π¨ UI Optimization: Replaced status bar Emojis with Obsidian native Lucide icons for a more unified visual style.
- π Fix: Fixed Hitokoto API request parameter format errors.
- β‘ Performance: Added Debounce processing to input boxes in the settings panel to avoid frequent refreshing.
v1.0.0.3
- π§ Engineering: Refactored build scripts to support automatic file distribution to specified directories.
- π Network: Optimized URL parameter construction logic to comply with RESTful specifications.
v1.0.0.2
- β‘ Algorithm Optimization: Fixed random repetition logic to ensure the same quote is not returned twice in a row.
- π‘οΈ Protection Mechanism: Added extra protection for the API; automatically retries if content is repeated.
- π¨ UI Purification: Removed Emojis from prompt messages, returning to a pure text minimalist style.
v1.0.0.1
- π UI Refinement: Optimized status bar hover tooltip logic to only display the source attribute.
v1.0.0.0
- π¨ Build Optimization: Modified build scripts to implement automated folder distribution build flow.
- π Documentation: Updated author information, officially signed as Open Open.
v1.0.0
- π Initial Release.
- Supports Hitokoto API and local custom lists.
- Supports auto-refresh (1-60 minutes) and manual click refresh.
- Supports right-click to copy.
- Supports multiple Hitokoto category selections.
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.