Как работает Obsidian Webhooks
Архитектура, настройка, примеры интеграций — всё на одной странице
Архитектура
"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 минут. Смотрите также: Руководство по установке
Зарегистрируйтесь
Проверьте почту → перейдите по ссылке из письма → откройте dashboard. Там два ключа:
- •
webhook_key— для отправки контента на сервер - •
client_key— для подключения плагина в Obsidian
Установите плагин в 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. ● = подключено
Отправьте первый вебхук
Самый быстрый способ проверить — 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 с полной изоляцией между ними.
Другие гайды
Как получать данные в Obsidian
Полное руководство по получению данных из внешних сервисов через вебхуки.
12 минSelf-Hosted: руководство по установке
Пошаговый туториал по настройке собственного webhook-сервера с Docker.
18 мин10 рецептов автоматизации
Готовые рецепты вебхуков для Zapier, Make, n8n, IFTTT с JSON-конфигурациями.
11 минAI-агенты и Obsidian
Интеграция Claude, GPT и кастомных агентов с базой знаний через вебхуки.
14 минREST API vs Webhooks
Сравнение: когда использовать Local REST API, а когда Webhooks Server.
12 минУстановить Obsidian Webhooks
Скачайте последний релиз плагина и сервера.
Скачать →