Obsidian Webhooks
Гайды GitHub Войти
EN | RU
← Все гайды

Как работает Obsidian Webhooks

Архитектура, настройка, примеры интеграций — всё на одной странице

Архитектура

Архитектура: Ваш сервис → Сервер → Очередь → Obsidian Plugin → Ваш Vault

"Vault" — хранилище заметок в Obsidian. Папка на вашем диске, где лежат все .md файлы.

1. Ваш сервис — n8n, Make, скрипт или бот отправляет HTTP POST с контентом

2. Сервер — проверяет webhook_key и сохраняет контент в очередь

3. Очередь — хранит данные до 30 дней, даже когда Obsidian закрыт

4. Obsidian Plugin — онлайн: контент приходит через SSE за 1-3 секунды. Был офлайн: заберёт всё при подключении

5. Ваш Vault — плагин создаёт заметку и отправляет подтверждение доставки (ACK). Сервер очищает очередь

Quick Start

От регистрации до первой заметки в vault — 5 минут. Смотрите также: Руководство по установке

01

Зарегистрируйтесь

Проверьте почту → перейдите по ссылке из письма → откройте dashboard. Там два ключа:

  • webhook_key — для отправки контента на сервер
  • client_key — для подключения плагина в Obsidian
02

Установите плагин в Obsidian

1. Скачайте: Download Plugin →

2. Распакуйте в vault:

.obsidian/plugins/obsidian-webhooks/
├── main.js
└── manifest.json

3. Obsidian → Settings → Community plugins → "Obsidian Webhooks" → Enable

4. Settings → Obsidian Webhooks → вставьте client_key → Connect. = подключено

03

Отправьте первый вебхук

Самый быстрый способ проверить — curl:

curl -X POST \
  "https://obsidian-webhooks.khabaroff.studio/webhook/{ваш_webhook_key}?path=inbox/test.md" \
  -H "Content-Type: application/json" \
  -d '{"content": "# Первая заметка\n\nОтправлено через webhook!"}'

Через 1-3 секунды в vault появится заметка inbox/test.md. Больше примеров — в 10 рецептах автоматизации.

Ответ сервера:

200 OK — контент принят и сохранён в очередь

400 Bad Request — не указан параметр path

401 Unauthorized — неверный webhook_key

Два ключа для отправки и получения

webhook_key

Для отправки контента на сервер.

POST https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}?path=inbox/note.md
Content-Type: application/json

{
  "title": "Моя заметка",
  "content": "# Заголовок\n\nТекст",
  "tags": ["inbox", "webhook"]
}

path — куда сохранить в vault (обязательно, query-параметр)

content — тело заметки в Markdown

title, tags, date, ... — попадают в YAML frontmatter

Простой текст записывается как есть, без JSON-парсинга.

client_key

Вставьте в Obsidian: Settings → Obsidian Webhooks → Client Key.

Каждый webhook_key связан с client_key. Контент, отправленный на один, доступен только его паре.

Ключи генерируются криптографически — подобрать невозможно.

Примеры интеграций

Подойдёт любой сервис с HTTP POST. Смотрите 10 готовых рецептов для Zapier, Make, n8n и других.

n8n

1. Новый Workflow → нода "HTTP Request"

2. Method: POST

3. URL: https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}?path=inbox/n8n-note.md

{
  "content": "# Заметка из n8n\n\nДанные из workflow",
  "source": "n8n"
}

Make

1. Новый Scenario → модуль "HTTP" → "Make a request"

2. Method: POST

3. URL: https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}?path=inbox/make-note.md

{
  "content": "# Из Make\n\nТекст",
  "source": "make"
}

Python

import requests

response = requests.post(
    "https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}?path=inbox/script-note.md",
    json={
        "content": "# Заметка\n\nТекст",
        "source": "python"
    }
)
print(response.status_code)  # 200

Telegram-бот

Telegram не шлёт вебхуки на произвольные URL. Нужен бот — простой скрипт, который пересылает сообщения как HTTP POST.

WEBHOOK_URL = "https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}"

def handle_message(update, context):
    text = update.message.text
    requests.post(
        f"{WEBHOOK_URL}?path=inbox/telegram.md",
        json={"content": f"# Telegram\n\n{text}"}
    )

Токен: Telegram → @BotFather → /newbot

cURL

curl -X POST \
  "https://obsidian-webhooks.khabaroff.studio/webhook/{webhook_key}?path=inbox/test.md" \
  -H "Content-Type: application/json" \
  -d '{"content": "# Тест\n\nРаботает!"}'

Dashboard

Ключи, статистика, формат запросов

Ключи и статистика

Ваши webhook_key и client_key с Show/Hide и Copy. Статистика: статус ключа, дата создания, последнее использование, количество событий.

Quick start и формат запросов

Пошаговая инструкция, ссылка на скачивание плагина, пример curl и полная таблица JSON-полей.

Часто задаваемые вопросы

Сервер использует Server-Sent Events (SSE) для мгновенной доставки данных в плагин Obsidian. SSE поддерживает постоянное соединение между плагином и сервером, поэтому новые вебхуки доставляются за 1-3 секунды.

Сервер сохраняет вебхуки в зашифрованной очереди PostgreSQL до 30 дней. Когда вы открываете Obsidian и плагин переподключается, все вебхуки из очереди доставляются автоматически. Данные не теряются.

После того как плагин записывает заметку в vault, он отправляет подтверждение (ACK) серверу. Сервер удаляет вебхук из очереди только после получения ACK. Такая гарантия exactly-once доставки исключает дубликаты и потерю сообщений.

Да. Все данные вебхуков в очереди зашифрованы AES-256-GCM. Соединение между плагином и сервером использует HTTPS (TLS 1.3). Данные payload не попадают в логи или метрики.

Да. Каждый vault получает собственную пару webhook_key и client_key. Контент, отправленный на один ключ, доступен только его парному ключу. Один сервер поддерживает несколько vault с полной изоляцией между ними.