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

Подключите AI-агенты к Obsidian через вебхуки

Создайте автоматизированную базу знаний: результаты Claude, GPT и кастомных агентов сохраняются в ваш vault с форматированным markdown и frontmatter

Ваш AI-агент только что провел 20 минут за исследованием темы, анализом кода или обобщением встречи. Он выдал блестящие инсайты, структурированные рекомендации и практические решения. Затем сессия завершилась, и весь этот результат исчез в никуда.

Что если каждый инсайт, сгенерированный AI, автоматически попадал бы в ваше хранилище Obsidian? С тегами, временными метками и связью с вашим существующим графом знаний?

Проблема AI-результатов: генерация с последующей потерей

AI-инструменты вроде Claude, GPT и кастомные агенты становятся все лучше в создании ценных результатов. Обзоры исследований, ревью кода, логи решений, транскрипты встреч, конкурентный анализ. Но эти результаты живут в эфемерных окнах чата или API-ответах, которые исчезают после завершения сессии.

Текущий рабочий процесс выглядит так:

  1. Запустить AI-агент на задаче
  2. Скопировать и вставить результаты в заметки
  3. Вручную добавить контекст, теги, даты
  4. Попытаться вспомнить, где вы это сохранили

Это не масштабируется. Если вы запускаете агенты ежедневно, вы либо тонете в ручном создании заметок, либо теряете ценные AI-результаты.

Функции экспорта существуют, но они неудобны. Дампы обычного текста без структуры. JSON-блобы, которые нужно парсить. PDF-файлы, которые ломают ваш рабочий процесс. Ничто из этого не интегрируется с тем, как вы на самом деле организуете знания.

Почему Obsidian — ваша база знаний AI

Obsidian стал основным инструментом для разработчиков, исследователей и работников умственного труда, которые хотят контроля над своими данными. Вот почему он идеален для захвата результатов работы AI-агентов:

Local-first архитектура. Ваши данные живут в markdown-файлах на вашей машине, а не в чьем-то облаке. Когда AI-агенты отправляют результаты в Obsidian, вы контролируете, куда они идут и кто их видит.

Markdown как универсальный формат. AI-агенты уже выдают текст. Markdown — это текст со структурой. Не нужно конвертации, нет вендор-локина.

Граф связывает все. Когда ваш исследовательский агент упоминает концепт, о котором вы писали месяц назад, Obsidian показывает связь. AI-результаты становятся частью вашего графа знаний, а не изолированными документами.

Теги и поиск, которые масштабируются. Тегируйте AI-результаты по типу агента, теме или проекту. Ищите среди тысяч заметок, сгенерированных агентами, мгновенно.

Плагины расширяют функциональность. Как только AI-результаты попадают в Obsidian, вы можете обрабатывать их через Dataview-запросы, шаблоны или кастомные скрипты.

Как вебхуки связывают AI-агенты и Obsidian

Недостающий элемент — доставка. Как результаты работы AI-агента, выполняющегося в Python, облачной функции или запланированной задаче, попадают в ваше хранилище Obsidian?

Вебхуки решают это. Вот поток:

  1. AI-агент завершает задачу
  2. Агент отправляет HTTP POST с результатами на вебхук-сервер
  3. Сервер доставляет в Obsidian через Server-Sent Events (SSE)
  4. Заметка появляется в хранилище с правильным frontmatter, тегами и расположением папки

Это работает, даже если Obsidian был закрыт, когда агент выполнялся. Сервер ставит доставки в очередь и отправляет их, когда Obsidian переподключается. Подробнее об архитектуре — в руководстве Как работает Obsidian Webhooks.

Техническая реализация использует AES-256-GCM шифрование для данных в транзите и гарантии доставки ровно один раз. Ваши вебхук-ключи аутентифицируют запросы, и вы контролируете, какие агенты могут писать в какие папки.

Кейсы интеграции Obsidian AI: что это дает

Давайте рассмотрим конкретные примеры с реальными JSON-пейлоадами.

Кейс 1: исследовательский агент

Ваш агент исследует "retrieval augmented generation trends 2026" и отправляет структурированные находки:

import requests

def send_research_to_obsidian(topic, summary, sources):
    requests.post("https://your-server/api/webhook/YOUR_KEY", json={
        "filename": f"Research - {topic}",
        "folder": "ai-research",
        "content": f"## Summary\n{summary}\n\n## Sources\n" + "\n".join(f"- {s}" for s in sources),
        "mode": "create",
        "frontmatter": {
            "tags": ["ai-research", "rag"],
            "source": "research-agent",
            "date": "2026-02-26",
            "status": "completed"
        }
    })

Результат в Obsidian:

---
tags: [ai-research, rag]
source: research-agent
date: 2026-02-26
status: completed
---
## Summary
Retrieval augmented generation is shifting toward...

## Sources
- https://arxiv.org/abs/...
- https://www.anthropic.com/research/...

Кейс 2: транскрибер встреч

Аудиофайл → транскрипт через Whisper → структурированные заметки через вебхук:

def process_meeting(audio_path, attendees):
    transcript = whisper_transcribe(audio_path)
    action_items = extract_action_items(transcript)  # GPT-4 call

    requests.post("https://your-server/api/webhook/YOUR_KEY", json={
        "filename": f"Meeting - {datetime.now().strftime('%Y-%m-%d')}",
        "folder": "meetings",
        "content": f"## Attendees\n{', '.join(attendees)}\n\n## Transcript\n{transcript}\n\n## Action Items\n" +
                   "\n".join(f"- [ ] {item}" for item in action_items),
        "mode": "create",
        "frontmatter": {
            "tags": ["meeting"],
            "attendees": attendees,
            "date": datetime.now().isoformat()
        }
    })

Заметка о встрече появляется в вашем хранилище с чекбоксами для action items, поисковым транскриптом и тегами участников.

Кейс 3: агент ревью кода

Агент проверяет pull request и логирует находки:

def review_pr(pr_number, diff):
    review = claude_review_code(diff)  # Claude API call

    requests.post("https://your-server/api/webhook/YOUR_KEY", json={
        "filename": f"PR-{pr_number} Review",
        "folder": "code-reviews",
        "content": f"## Files Changed\n{diff[:500]}...\n\n## Review\n{review['summary']}\n\n## Issues Found\n" +
                   "\n".join(f"- {issue}" for issue in review['issues']),
        "mode": "create",
        "frontmatter": {
            "tags": ["code-review"],
            "pr": pr_number,
            "reviewer": "claude-agent",
            "date": datetime.now().isoformat()
        }
    })

Кейс 4: агент ежедневного дайджеста

Запланированный агент агрегирует новости и обновления каждое утро:

def daily_digest():
    news = fetch_hacker_news_top()
    papers = fetch_arxiv_cs_ai()

    content = "## Tech News\n" + "\n".join(f"- [{n['title']}]({n['url']})" for n in news)
    content += "\n\n## Research Papers\n" + "\n".join(f"- [{p['title']}]({p['url']})" for p in papers)

    requests.post("https://your-server/api/webhook/YOUR_KEY", json={
        "filename": f"Daily Digest - {datetime.now().strftime('%Y-%m-%d')}",
        "folder": "daily",
        "content": content,
        "mode": "create",
        "frontmatter": {
            "tags": ["daily-digest"],
            "date": datetime.now().isoformat()
        }
    })

Кейс 5: логгер решений

Агент принимает решения и логирует рассуждения:

def log_decision(decision, reasoning, alternatives):
    requests.post("https://your-server/api/webhook/YOUR_KEY", json={
        "filename": f"Decision - {decision[:50]}",
        "folder": "decisions",
        "content": f"## Decision\n{decision}\n\n## Reasoning\n{reasoning}\n\n## Alternatives Considered\n" +
                   "\n".join(f"- {alt}" for alt in alternatives),
        "mode": "create",
        "frontmatter": {
            "tags": ["decision-log"],
            "date": datetime.now().isoformat(),
            "status": "proposed"
        }
    })

Построение вашего пайплайна AI → Obsidian

Вот как настроить полную интеграцию:

Шаг 1: настройте вебхук-сервер

Клонируйте и разверните вебхук-сервер. Подробная инструкция — в руководстве по установке Self-Hosted:

git clone https://github.com/khabaroff-studio/obsidian-webhooks-server
cd obsidian-webhooks-server
npm install
npm start

Или используйте хостинг-версию на obsidian-webhooks.khabaroff.studio.

Настройте ваш вебхук-ключ в настройках сервера. Этот ключ аутентифицирует запросы агентов.

Шаг 2: добавьте вызов вебхука в результаты работы агента

В коде вашего агента добавьте функцию, которая отправляет результаты в Obsidian:

import requests
from datetime import datetime

def send_to_obsidian(title, content, tags, folder="ai-logs"):
    """Send AI agent output to Obsidian via webhook."""
    payload = {
        "filename": title,
        "folder": folder,
        "content": content,
        "mode": "create",
        "frontmatter": {
            "tags": tags,
            "source": "ai-agent",
            "date": datetime.now().isoformat()
        }
    }

    response = requests.post(
        "https://your-server/api/webhook/YOUR_WEBHOOK_KEY",
        json=payload,
        headers={"Content-Type": "application/json"}
    )

    return response.status_code == 200

Вызывайте эту функцию всякий раз, когда ваш агент создает результат:

# In your agent code
result = run_agent_task(task)
send_to_obsidian(
    title=f"Agent Run - {task['name']}",
    content=result['summary'],
    tags=["ai", "agent-output"],
    folder="agent-logs"
)

Шаг 3: определите структуру папок хранилища

Организуйте AI-результаты с четкой иерархией папок:

obsidian-vault/
├── ai-research/       # Research agent outputs
├── meetings/          # Transcribed meetings
├── code-reviews/      # Code review findings
├── daily/             # Daily digests
├── decisions/         # Decision logs
└── agent-logs/        # General agent outputs

Каждая папка получает специфичные теги и поля frontmatter. Это упрощает фильтрацию и запросы.

Шаг 4: подключите AI-результаты к существующим знаниям

Используйте функции Obsidian для интеграции AI-результатов:

Backlinks: ссылайтесь на существующие заметки в AI-сгенерированном контенте. Если ваш исследовательский агент находит что-то о "retrieval augmented generation", сделайте ссылку на вашу существующую заметку [[RAG]].

Теги: используйте согласованные теги для заметок, созданных человеком и AI. #ai-research применяется как к вашим ручным исследовательским заметкам, так и к результатам агентов.

Dataview-запросы: создайте дашборд-заметки, которые агрегируют AI-результаты:

TABLE tags, source, date
FROM "ai-research"
WHERE source = "research-agent"
SORT date DESC
LIMIT 10

Граф: наблюдайте, как AI-результаты связываются с вашим графом знаний. Заметки, сгенерированные агентами, становятся узлами, которые связаны с концептами, проектами и решениями.

Автоматизация Obsidian AI: продвинутые паттерны

Как только базовый пайплайн работает, вы можете строить более сложные рабочие процессы. Больше примеров автоматизации — в 10 рецептах автоматизации.

Режим append для продолжающихся задач: используйте "mode": "append" для добавления к существующим заметкам. Ежедневный standup-агент добавляет к сегодняшней заметке вместо создания дубликатов.

Условная доставка: агент решает, стоит ли сохранять результат. Результаты с низкой уверенностью не замусоривают ваше хранилище.

Маршрутизация с несколькими хранилищами: разные агенты пишут в разные хранилища Obsidian. Рабочие проекты — в рабочее хранилище, личные исследования — в личное хранилище.

Пакетная обработка: ставьте несколько результатов агентов в очередь и доставляйте их вместе. Снижает шум уведомлений.

Форматирование на основе шаблонов: храните markdown-шаблоны в вашем хранилище, ссылайтесь на них в вебхук-вызовах. Обеспечивает согласованную структуру заметок.

Приватность и безопасность: ваши данные остаются вашими

Подход с вебхуками держит ваши данные под контролем:

AES-256-GCM шифрование: данные зашифрованы в транзите между агентом и сервером, сервером и Obsidian.

Опция самостоятельного хостинга: запускайте вебхук-сервер на вашей собственной инфраструктуре. Никакая третья сторона не видит ваши AI-результаты. Подробности — в руководстве по Self-Hosted установке.

Аутентификация через вебхук-ключ: только агенты с вашим ключом могут писать в ваше хранилище.

Local-first хранение: Obsidian хранит все как markdown-файлы на вашей машине. Нет зависимости от облака.

Audit trail: сервер логирует все доставки. Вы можете видеть точно, что было отправлено и когда.

Это важно для чувствительных AI-результатов. Ревью кода с проприетарным кодом, исследования конфиденциальных тем, транскрипты встреч с приватными обсуждениями. Все остается под вашим контролем.

Интеграция Obsidian Claude и другие AI-инструменты

Подход с вебхуками работает с любым AI-инструментом, который может отправлять HTTP-запросы:

Claude API: используйте API Anthropic в вашем агенте, отправляйте результаты через вебхук.

OpenAI GPT: тот же паттерн. API-вызов → обработка результатов → доставка через вебхук.

Open-source модели: запускайте Llama, Mistral или другие модели локально, отправляйте результаты в Obsidian.

Langchain-агенты: добавьте вебхук-вызов к agent callbacks или шагу финального результата.

n8n/Zapier рабочие процессы: используйте вебхук как финальный шаг в автоматизации. AI обрабатывает данные, вебхук доставляет в Obsidian. Смотрите готовые рецепты.

Кастомные агенты: любой код, который делает HTTP-запросы, работает. Python, JavaScript, Go, Rust. Язык не имеет значения.

Пример с Claude:

import anthropic
import requests

def claude_research_to_obsidian(topic):
    client = anthropic.Anthropic(api_key="YOUR_KEY")

    message = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=2000,
        messages=[{
            "role": "user",
            "content": f"Research {topic} and provide a structured summary with key points and sources."
        }]
    )

    send_to_obsidian(
        title=f"Claude Research - {topic}",
        content=message.content[0].text,
        tags=["claude", "ai-research"],
        folder="ai-research"
    )

Начало работы: разверните вашу первую интеграцию AI → Obsidian

Готовы автоматизировать захват AI-знаний? Вот ваш чеклист:

  1. Настройте вебхук-сервер: посетите github.com/khabaroff-studio/obsidian-webhooks-server и следуйте гайду по настройке
  2. Установите Obsidian-плагин: получите компаньон-плагин из community plugins Obsidian (поиск "Webhooks")
  3. Протестируйте доставку: отправьте тестовый вебхук с помощью curl:
    curl -X POST https://your-server/api/webhook/YOUR_KEY \
      -H "Content-Type: application/json" \
      -d '{"filename":"Test Note","folder":"tests","content":"# Hello from AI","mode":"create"}'
  4. Интегрируйте с вашим агентом: добавьте вызов вебхука в код вашего AI-агента
  5. Определите структуру папок: создайте папки в вашем хранилище для разных типов агентов
  6. Начните захватывать: запустите вашего агента, наблюдайте, как результаты появляются в Obsidian

Полный гайд по настройке с опциями конфигурации и траблшутингом доступен на obsidian-webhooks.khabaroff.studio. Также смотрите руководство по получению данных в Obsidian.

Будущее AI-управления знаниями

AI-агенты становятся более способными. Они будут работать дольше, принимать больше решений, генерировать больше инсайтов. Вопрос не в том, использовать ли AI-агенты, а в том, как захватывать их результаты, не утопая в неструктурированных данных.

Интеграция Obsidian AI через вебхуки дает вам структурированные, поисковые, взаимосвязанные AI-результаты. Каждый запуск агента строит вашу базу знаний вместо того, чтобы исчезать в истории чата.

Ваши AI-агенты должны работать на ваш граф знаний, а не против него. Начните с одного агента, одного вебхука, одной папки в Obsidian. Затем масштабируйте по мере добавления агентов и рабочих процессов.

Код в open source. Вебхук-сервер можно хостить самостоятельно. Ваши данные остаются вашими. Постройте AI-пайплайн знаний, который вам действительно нужен.

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

Любой фреймворк, способный делать HTTP POST-запросы. Langchain, LlamaIndex, AutoGPT, CrewAI и кастомные Python-скрипты работают одинаково. Добавьте requests.post() в колбек или финальный шаг обработки результатов агента.

Да, вебхук принимает JSON с полями frontmatter, где вы можете передавать массивы, объекты и метаданные. Например, список участников встречи, теги проектов или nested структуры данных сохраняются в YAML frontmatter заметки.

Используйте уникальные имена файлов с временными метками или идентификаторами задач. Например, f"Research - {topic} - {datetime.now().isoformat()}" или f"PR-{pr_number} Review". Сервер создаст новый файл, если имя уже существует.

Да, вы можете отправить несколько вебхуков последовательно, и сервер поставит их в очередь. Все заметки будут доставлены в Obsidian в одной SSE-сессии при следующем подключении плагина, что снижает количество уведомлений.

Нет, вебхуки работают только в направлении агент → Obsidian (push-модель). Для чтения заметок агентом используйте плагин Local REST API, который предоставляет GET-endpoints для программного доступа к контенту хранилища. Подробнее о разнице подходов — в руководстве REST API vs Webhooks.

Начните с одного агента и одного вебхука. Разверните сервер за 10 минут, подключите плагин — и каждый AI-инсайт автоматически станет частью вашего графа знаний.