Files
2026-06-27 15:12:40 +08:00

355 lines
11 KiB
Markdown

# Obsidian Reminder Notifier
Obsidian Reminder Notifier is an Obsidian plugin for creating reminders from notes, the command palette, editor selection, or the left ribbon. It can send notifications through local Obsidian notices, Telegram, ntfy, Discord webhooks, or generic webhooks.
> Reminder delivery works while Obsidian is running. If Obsidian is closed at the due time, pending reminders are checked when Obsidian starts again.
## English
### Features
- Create reminders from the command palette.
- Create reminders from selected text in the editor context menu.
- Create reminders from the left ribbon button.
- Show active, sent, completed, failed, and snoozed reminders.
- Scan the current note or the whole vault for `@remind(...)` syntax.
- Send reminders through local Obsidian notices, Telegram, ntfy, Discord, or generic webhooks.
- Configure notification providers from built-in templates.
### Installation
#### Manual installation
1. Download or build the plugin files.
2. Create this folder inside your vault:
```text
<your-vault>/.obsidian/plugins/reminder-notifier/
```
3. Copy these files into that folder:
```text
manifest.json
main.js
styles.css
```
4. Restart Obsidian or reload plugins.
5. Open `Settings -> Community plugins`.
6. Disable Safe mode if needed.
7. Enable `Reminder Notifier`.
#### Build from source
```bash
npm install
npm run build
```
After the build, copy `manifest.json`, `main.js`, and `styles.css` into your vault plugin folder.
### Usage
#### Create a reminder from the UI
Use any of these entry points:
- left ribbon button `Create reminder`;
- command palette command `Create reminder`;
- editor right-click menu item `Create reminder`;
- command palette command `Create reminder from selected text`.
The create dialog contains:
- reminder text input;
- year dropdown;
- month dropdown;
- day dropdown;
- hour dropdown;
- minute dropdown;
- optional details field;
- optional channels field.
Leave the channels field empty to send through every enabled provider. Enter provider IDs or provider types separated by commas to target specific providers, for example:
```text
ntfy
telegram, ntfy
discord
```
#### Show reminders
Use any of these entry points:
- left ribbon button `Show reminders`;
- editor right-click menu item `Show reminders`;
- command palette command `Show active reminders`;
- command palette command `Show all reminders`.
The list lets you snooze a reminder for 15 minutes, mark it done, or delete it.
#### Markdown syntax
```md
- [ ] Call the doctor @remind(2026-07-01 10:00)
- [ ] Check server @remind(2026-07-01 09:00, ntfy)
- [ ] Take a break @remind(+2h, local)
- [ ] Weekly planning @remind(next monday 14:30, telegram, ntfy)
- [ ] Standup @remind(2026-07-01 09:00, ntfy, daily)
```
If no channel is provided, scanned reminders are sent through all enabled notification providers.
Frontmatter is supported:
```yaml
---
reminder:
at: 2026-07-01 10:00
title: Call the doctor
notify:
- telegram
- ntfy
---
```
Reminder code blocks are supported:
````
```reminder
title: Make a backup
at: 2026-07-01 23:00
notify: ntfy
priority: high
repeat: weekly
```
````
After adding reminders to notes, run `Scan current note for reminders` or `Scan vault for reminders`.
### Provider setup
Open `Settings -> Reminder Notifier`.
#### ntfy
1. Click `Add provider`.
2. Choose `ntfy.sh`.
3. Enable the provider.
4. Set the topic in the JSON config:
```json
{
"serverUrl": "https://ntfy.sh",
"topic": "my-obsidian-reminders",
"token": "",
"priority": 3,
"tags": ["calendar", "obsidian"]
}
```
5. Click `Test notification`.
For self-hosted ntfy, change `serverUrl` and set `token` if your server requires authentication.
#### Telegram
1. Create a bot with BotFather.
2. Add the Telegram provider from the template.
3. Enable it.
4. Set `botToken` and `chatId`.
5. Click `Test notification`.
#### Webhook and Discord
Use the webhook templates for Discord, Slack-compatible tools, Make, n8n, Home Assistant, or custom services. Webhook methods are limited to `POST`, `PUT`, and `PATCH`.
### Troubleshooting
- If a test notification works but a note reminder does not arrive, run `Scan current note for reminders` after editing the note.
- Check `Show all reminders` for failed reminders and error messages.
- Make sure the provider is enabled in settings.
- Make sure the reminder due time is in the future when created.
- Obsidian must be running for reminders to be delivered at the exact due time.
## Русский
### Возможности
- Создание напоминаний из командной палитры.
- Создание напоминаний из выделенного текста через меню правой кнопки мыши.
- Создание напоминаний через кнопку в левой панели Obsidian.
- Просмотр активных, отправленных, выполненных, отложенных и ошибочных напоминаний.
- Сканирование текущей заметки или всего vault по синтаксису `@remind(...)`.
- Отправка уведомлений через локальные уведомления Obsidian, Telegram, ntfy, Discord или универсальный webhook.
- Настройка провайдеров из готовых шаблонов.
### Установка
#### Ручная установка
1. Скачайте или соберите файлы плагина.
2. Создайте папку внутри вашего vault:
```text
<ваш-vault>/.obsidian/plugins/reminder-notifier/
```
3. Скопируйте туда файлы:
```text
manifest.json
main.js
styles.css
```
4. Перезапустите Obsidian или перезагрузите плагины.
5. Откройте `Settings -> Community plugins`.
6. При необходимости отключите Safe mode.
7. Включите `Reminder Notifier`.
#### Сборка из исходников
```bash
npm install
npm run build
```
После сборки скопируйте `manifest.json`, `main.js` и `styles.css` в папку плагина внутри vault.
### Использование
#### Создание напоминания из интерфейса
Доступные способы:
- кнопка `Create reminder` в левой панели;
- команда `Create reminder` в командной палитре;
- пункт `Create reminder` в меню правой кнопки мыши в редакторе;
- команда `Create reminder from selected text`.
В окне создания есть:
- поле для текста напоминания;
- выпадающий список года;
- выпадающий список месяца;
- выпадающий список дня;
- выпадающий список часа;
- выпадающий список минут;
- дополнительное поле описания;
- поле каналов уведомлений.
Если поле каналов оставить пустым, уведомление будет отправлено во все включённые провайдеры. Если нужно отправить только в конкретные каналы, укажите ID или типы провайдеров через запятую:
```text
ntfy
telegram, ntfy
discord
```
#### Просмотр напоминаний
Доступные способы:
- кнопка `Show reminders` в левой панели;
- пункт `Show reminders` в меню правой кнопки мыши;
- команда `Show active reminders`;
- команда `Show all reminders`.
В списке можно отложить напоминание на 15 минут, отметить выполненным или удалить.
#### Синтаксис в Markdown
```md
- [ ] Позвонить врачу @remind(2026-07-01 10:00)
- [ ] Проверить сервер @remind(2026-07-01 09:00, ntfy)
- [ ] Сделать перерыв @remind(+2h, local)
- [ ] Планирование недели @remind(next monday 14:30, telegram, ntfy)
- [ ] Стендап @remind(2026-07-01 09:00, ntfy, daily)
```
Если канал не указан, найденное в заметке напоминание отправляется во все включённые провайдеры уведомлений.
Поддерживается frontmatter:
```yaml
---
reminder:
at: 2026-07-01 10:00
title: Позвонить врачу
notify:
- telegram
- ntfy
---
```
Поддерживаются code blocks:
````
```reminder
title: Сделать бэкап
at: 2026-07-01 23:00
notify: ntfy
priority: high
repeat: weekly
```
````
После добавления напоминаний в заметки запустите `Scan current note for reminders` или `Scan vault for reminders`.
### Настройка провайдеров
Откройте `Settings -> Reminder Notifier`.
#### ntfy
1. Нажмите `Add provider`.
2. Выберите `ntfy.sh`.
3. Включите провайдер.
4. Укажите topic в JSON-конфиге:
```json
{
"serverUrl": "https://ntfy.sh",
"topic": "my-obsidian-reminders",
"token": "",
"priority": 3,
"tags": ["calendar", "obsidian"]
}
```
5. Нажмите `Test notification`.
Для self-hosted ntfy измените `serverUrl` и заполните `token`, если сервер требует авторизацию.
#### Telegram
1. Создайте бота через BotFather.
2. Добавьте Telegram-провайдер из шаблона.
3. Включите его.
4. Укажите `botToken` и `chatId`.
5. Нажмите `Test notification`.
#### Webhook и Discord
Webhook-шаблоны можно использовать для Discord, Slack-совместимых сервисов, Make, n8n, Home Assistant и других HTTP-интеграций. Разрешённые методы webhook: `POST`, `PUT`, `PATCH`.
### Если уведомление не пришло
- Если тестовое уведомление работает, а напоминание из заметки не пришло, запустите `Scan current note for reminders` после изменения заметки.
- Откройте `Show all reminders` и проверьте статус и текст ошибки.
- Убедитесь, что нужный провайдер включён.
- Убедитесь, что время напоминания было в будущем при создании.
- Для точной отправки в заданное время Obsidian должен быть открыт.
## Development
```bash
npm install
npm run build
```
The generated production bundle is `main.js`.