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.