Paul Dickson выпустил ролик, в котором показал, как отправлять файлы из n8n в Obsidian с помощью плагина Local REST API. Я же покажу, как отправлять файлы с помощью WebDAV.

Общая схема работы

Алгоритм работы довольно прост:

  1. Из n8n файл отправляется через HTTP-запрос методом PUT на сервер, где настроен WebDAV
  2. Хранилище Obsidian на сервере синхронизируется с локальным хранилищем пользователя через Syncthing

В данной схеме предполагается, что у пользователя есть персональный сервер.

WebDAV с помощью Docker

Как мне кажется, самый простой и легко воспроизводимый способ добавить WebDAV — использовать Docker.

Я предлагаю использовать этот контейнер. Минимально жизнеспособный docker-compose.yml:

services:
  webdav-obsidian:
    image: maltokyo/docker-nginx-webdav
    container_name: webdav-obsidian
    restart: unless-stopped
    environment:
      - USERNAME=username
      - PASSWORD=pass
    ports:
      - "83:80"
    volumes:
      - /path/to/the/vault:/media/data
  • username — имя, которое будет использоваться при аутентификации
  • pass — пароль, который будет использоваться при аутентификации
  • /path/to/the/vault — путь к хранилищу на сервере
    • Чтобы избежать проблем с правами, выполните команду sudo chmod -R a+rwX /path/to/the/vault
    • Эта команда даст всем права на чтение и изменение файлов
    • В общем случае это небезопасно, но для персонального сервера это непринципиально

Доступ к WebDAV будет по адресу http://<your-server-ip>:83. Я бы рекомендовал переадресовать на доменное имя с сертификатом, чтобы можно было обращаться к серверу, например, как к https://webdav.domain.com.

Ноды в n8n

Пример нодов будет для случая, когда отправляется MD-файл. Для других типов файлов подход будет идентичным.

Итак, есть 3 нода:

  • Text
    • Edit Fields
    • В нём формируется текст, который нужно отправить
    • Например, можно добавить сложный frontmatter и ответ ИИ (пример)
  • Text to MD
  • Send to Obsidian
    • HTTP Request node
    • Отправка файла на сервер
    • На скрине файл отправляется в корень хранилища, но можно указать более точный путь

После отправки файла можно, например, добавить нод, который оповестит в Telegram об успешно выполненном процессе.

Вот такой простой способ отправлять файлы в своё хранилище. Если вы знаете, как это можно сделать ещё проще, то расскажите об этом в комментариях.