Obsidian URI — это пользовательский протокол URI, поддерживаемый Obsidian, который позволяет запускать различные действия, такие как открытие заметки или создание заметки. Obsidian URI обеспечивает автоматизацию и межпрограммные рабочие процессы.
## Формат URI
URI Obsidian используют следующий формат:
```
obsidian://action?param1=value¶m2=value
```
Параметр `action` — это действие, которое вы хотите выполнить. Доступные действия включают:
- `open` — открыть заметку.
- `new` — создать или дополнить существующую заметку.
- `daily` — создать или открыть ежедневную заметку.
- `unique` — создать новую уникальную заметку.
- `search` — открыть поиск.
- `choose-vault` — открыть менеджер хранилищ.
> [!warning] Кодирование
> Убедитесь, что ваши значения правильно закодированы в URI. Например, символы косой черты `/` должны быть закодированы как `%2F`, а пробелы — как `%20`.
>
> Это особенно важно, поскольку неправильно закодированный «зарезервированный» символ может нарушить интерпретацию URI. [Подробности см. здесь](https://en.wikipedia.org/wiki/Percent-encoding).
## Открытие заметки
Действие `open` открывает хранилище Obsidian или файл в этом хранилище.
### Примеры
- `obsidian://open?vault=my%20vault`
Открывает хранилище `my vault`. Если хранилище уже открыто, фокусируется на его окне.
- `obsidian://open?vault=ef6ca3e3b524d22f`
Открывает хранилище с идентификатором `ef6ca3e3b524d22f`.
- `obsidian://open?vault=my%20vault&file=my%20note`
Открывает заметку `my note.md` в хранилище `my vault`, если файл существует.
- `obsidian://open?path=%2Fhome%2Fuser%2Fmy%20vault%2Fpath%2Fto%2Fmy%20note`
Будет искать любое хранилище, содержащее путь `/home/user/my vault/path/to/my note`. Затем остальная часть пути передаётся в параметр `file`. Например, если хранилище существует по пути `/home/user/my vault`, то это будет эквивалентно параметру `file`, установленному как `path/to/my note`.
> [!tip] Открытие заголовка или блока
> С правильной кодировкой URI вы можете перейти к заголовку или блоку внутри заметки. `Note%23Heading` перейдёт к заголовку «Heading», тогда как `Note%23%5EBlock` перейдёт к блоку «Block».
### Параметры
- `vault` — может быть либо именем хранилища, либо идентификатором хранилища[^1].
- `file` — может быть либо именем файла, либо путём от корня хранилища к указанному файлу. Если расширение файла — `md`, расширение можно опустить.
- `path` — абсолютный путь к файлу в файловой системе.
- Использование этого параметра переопределяет как `vault`, так и `file`.
- Приложение будет искать наиболее подходящее хранилище, содержащее указанный путь к файлу.
- Затем остальная часть пути заменяет параметр `file`.
- `prepend` — добавит содержимое в начало файла и попытается объединить свойства.
- `append` — добавит содержимое в конец файла и также попытается объединить свойства.
- `paneType` (необязательно) — определяет, где заметка будет открыта в интерфейсе.
- если не указан, заменяется последняя активная вкладка.
- `paneType=tab` — открыть в новой вкладке.
- `paneType=split` — открыть в новой группе вкладок.
- `paneType=window` — открыть во всплывающем окне (только для десктопа).
## Создание заметки
Действие `new` создаёт новую заметку в хранилище, при необходимости с определённым содержимым.
### Примеры
- `obsidian://new?vault=my%20vault&name=my%20note`
Открывает хранилище `my vault` и создаёт новую заметку с именем `my note`.
- `obsidian://new?vault=my%20vault&file=path%2Fto%2Fmy%20note`
Открывает хранилище `my vault` и создаёт новую заметку по пути `path/to/my note`.
### Параметры
- `vault` — может быть либо именем хранилища, либо идентификатором хранилища[^1]. Аналогично действию `open`.
- `name` — имя создаваемого файла. Если указано, расположение файла будет выбрано на основе ваших настроек «Место для новых заметок по умолчанию».
- `file` — абсолютный путь внутри хранилища, включая имя. Переопределяет `name`, если указан.
- `path` — глобальный абсолютный путь. Работает аналогично параметру `path` в действии `open`, переопределяя как `vault`, так и `file`.
- `paneType` (необязательно) — определяет, где заметка будет открыта в интерфейсе. Аналогично действию `open`.
- `content` (необязательно) — содержимое заметки.
- `clipboard` (необязательно) — использовать содержимое буфера обмена вместо указания `content`.
- `silent` (необязательно) — включите этот параметр, если не хотите открывать новую заметку.
- `append` (необязательно) — включите этот параметр для добавления к существующему файлу, если он существует.
- `overwrite` (необязательно) — перезаписать существующий файл, если он существует, но только если `append` не установлен.
- `x-success` (необязательно) — см. [[#Использование параметров x-callback-url]].
## Создание или открытие ежедневной заметки
Действие `daily` создаёт или открывает вашу ежедневную заметку. Плагин [[Ежедневные заметки]] должен быть включён.
### Примеры
- `obsidian://daily?vault=my%20vault`
Открывает хранилище `my vault` и создаёт или открывает ежедневную заметку.
### Параметры
Действие `daily` принимает те же параметры, что и действие `new`.
## Уникальная заметка
Действие `unique` создаёт новую уникальную заметку в хранилище. Плагин [[Plugins/Создатель уникальных заметок|Создатель уникальных заметок]] должен быть включён.
### Примеры
- `obsidian://unique?vault=my%20vault`
Открывает хранилище `my vault` и создаёт новую уникальную заметку.
- - `obsidian://unique?vault=my%20vault&content=Hello%20World`
Открывает хранилище `my vault` и создаёт новую уникальную заметку с содержимым `Hello World`.
### Параметры
- `vault` — может быть либо именем хранилища, либо идентификатором хранилища[^1]. Аналогично действию `open`.
- `paneType` (необязательно) — определяет, где заметка будет открыта в интерфейсе. Аналогично действию `open`.
- `content` (необязательно) — содержимое заметки.
- `clipboard` (необязательно) — использовать содержимое буфера обмена вместо указания `content`.
- `x-success` (необязательно) — см. [[#Использование параметров x-callback-url]].
## Открытие поиска
Действие `search` открывает [[Поиск]] в указанном хранилище и при необходимости выполняет поисковый запрос.
### Примеры
- `obsidian://search?vault=my%20vault`
Открывает хранилище `my vault` и открывает [[Поиск]].
- `obsidian://search?vault=my%20vault&query=Obsidian`
Открывает хранилище `my vault`, открывает [[Поиск]] и выполняет поиск по запросу `Obsidian`.
### Параметры
- `vault` — может быть либо именем хранилища, либо идентификатором хранилища[^1]. Аналогично действию `open`.
- `query` (необязательно) — поисковый запрос для выполнения.
## Открытие менеджера хранилищ
Действие `choose-vault` открывает [[Управление хранилищами|менеджер хранилищ]].
### Примеры
- `obsidian://choose-vault`
## Интеграция с Hook
Это действие Obsidian URI предназначено для использования с [Hook](https://hookproductivity.com/).
### Пример
`obsidian://hook-get-address`
### Параметры
- `vault` (необязательно) — может быть либо именем хранилища, либо идентификатором хранилища[^1]. Если не указан, будет использоваться текущее или последнее активное хранилище.
- `x-success` (необязательно) — см. [[#Использование параметров x-callback-url]].
- `x-error` (необязательно) — см. [[#Использование параметров x-callback-url]].
Если `x-success` определён, этот API будет использовать его как x-callback-url. В противном случае в буфер обмена будет скопирована Markdown-ссылка на текущую активную заметку в виде URL `obsidian://open`.
## Использование параметров x-callback-url
Некоторые конечные точки принимают параметры x-callback-url: `x-success` и `x-error`. Когда они указаны, Obsidian передаёт следующее в обратный вызов `x-success`:
- `name` — имя файла без расширения.
- `url` — URI `obsidian://` для этого файла.
- `file` (только для десктопа) — URL `file://` для этого файла.
Например, если Obsidian получит
`obsidian://.....x-success=myapp://x-callback-url`, ответом будет `myapp://x-callback-url?name=...&url=obsidian%3A%2F%2Fopen...&file=file%3A%2F%2F...`
## Сокращённые форматы
В дополнение к форматам выше, доступны два «сокращённых» формата для открытия хранилищ и файлов:
1. `obsidian://vault/my vault/my note` эквивалентно `obsidian://open?vault=my%20vault&file=my%20note`.
2. `obsidian:///absolute/path/to/my note` эквивалентно `obsidian://open?path=%2Fabsolute%2Fpath%2Fto%2Fmy%20note`.
## Устранение неполадок
### Регистрация Obsidian URI
На Windows и macOS достаточно один раз запустить приложение, чтобы зарегистрировать протокол Obsidian URI на вашем компьютере.
На Linux этот процесс значительно сложнее:
1. Убедитесь, что вы создали файл `obsidian.desktop`. [Подробности см. здесь](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files).
2. Убедитесь, что ваш desktop-файл указывает поле `Exec` как `Exec=executable %u`. Параметр `%u` используется для передачи URI `obsidian://` в приложение.
3. Если вы используете установщик AppImage, вам может потребоваться распаковать его с помощью `Obsidian-x.y.z.AppImage --appimage-extract`. Затем убедитесь, что директива `Exec` указывает на распакованный исполняемый файл.
[^1]: Идентификатор хранилища — это случайный 16-символьный код, присвоенный хранилищу, например `ef6ca3e3b524d22f`. Этот идентификатор уникален для каждой папки на вашем компьютере. Идентификатор можно найти, открыв переключатель хранилищ и нажав «Скопировать ID хранилища» в контекстном меню нужного хранилища.