obsidian-publishing
Как сотрудник публикует note из Obsidian
Этот документ описывает путь редактора: что делает сотрудник и что потом происходит на сервере.
Главное правило
Сотрудник открывает в Obsidian только vault:
<slug>-vault/
Например:
obsidian-duck-guide-vault/
Не нужно открывать весь git repo как Obsidian vault.
Где сотрудник пишет заметки
Внутри vault:
<slug>-vault/
Картинки можно хранить там же, например:
<slug>-vault/foto/
Как опубликовать заметку
Обычный путь:
1. Открыть note в Obsidian.
2. Нажать Cmd+P.
3. Найти команду Digital Garden plugin для публикации текущей note.
4. Запустить публикацию.
5. Plugin отправит опубликованную версию в GitHub garden repo.
После публикации заметка должна оказаться здесь:
src/site/notes/
Именно эту папку читает duck-garden-engine.
Как выглядит опубликованная заметка
Минимально:
---
dg-publish: true
---
# Название заметки
Digital Garden plugin может сохранить frontmatter как JSON. Это нормально:
---
{"dg-publish":true,"dg-note-properties":{}}
---
# Example
Главная страница
Сотрудник не должен вручную писать:
dg-permalink: /
Для главной страницы лучше иметь подготовленную Home note с:
dg-home: true
или:
tags:
- gardenEntry
Тогда engine сам даст ей URL:
/
Обычные URL заметок
Если файл:
src/site/notes/Guides/First Note.md
то URL будет:
/guides/first-note/
То есть сотруднику не нужно руками задавать permalink для каждой страницы.
Что происходит после Cmd+P
Obsidian note
-> Digital Garden plugin
-> src/site/notes в garden repo
-> git push в GitHub
-> systemd timer на сервере видит новый commit
-> pull-and-rebuild.sh подтягивает origin/main
-> npm/docker build запускает duck-garden build
-> dist/ обновляется
-> Caddy отдаёт dist/
-> nginx отдаёт публичный домен
Если заметка не появилась
Проверить по порядку:
1. Есть ли note в GitHub в src/site/notes?
2. Есть ли dg-publish: true?
3. Запустился ли timer/service на сервере?
4. Есть ли ошибка в deploy.log?
5. Появилась ли страница в dist/?
Команды для сервера:
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl status <slug>
./gardenctl logs <slug>
tail -n 200 /home/supervisor/leonid_projects/obsidians/<slug>/logs/deploy.log
Подробнее: debug runbook.