Tip: Obsidian Headless Sync jako CMS pro web

Ahoj! Rád teď používám poznámkovou aplikaci Obsidian a říkal jsem si, že by bylo pěkné ji používat jako „CMS“ pro některé mé weby. Tedy mít možnost upravovat texty na webech přímo v Obsidianu, na telefonu i na desktopu.

Dřív by to bylo trochu komplikované, ale nedávno Obsidian vydal funkci Headless Sync, která to hodně usnadňuje, protože umožňuje stáhnout obsah z Obsidianu kdekoliv, například na serveru. (Funkce je zatím beta.)

Příprava

Sejf (vault), který chcete takhle používat, musí být synchronizovaný pomocí služby Obsidian Sync. A abyste se k němu ze serveru dostali, potřebujete autentizační token. Abyste ho získali, musíte si – klidně na svém běžném desktopu – nainstalovat CLI aplikaci obsidian-headless:

$ npm install -g obsidian-headless

Získáte tím CLI příkaz ob, přes který se přihlásíte ke svému účtu v Obsidianu:

$ ob login

Po přihlášení dostanete v ~/.obsidian-headless/auth_token token, přes který je pak možné dostat se k datům ze serveru. A ještě k tomu budete potřebovat ID sejfu, které dostanete takhle:

$ ob sync-list-remote 
Vaults:
  3a30f16b0f69ca9a39b19bf6ff9e6562f8810a8d  "Poznámky"  (Europe)

Na serveru

Na serveru musíte nejdřív zase nainstalovat obsidian-headless a nastavit synchronizaci:

$ ob sync-setup --path sejf --vault 3a30f16b0f69ca9a39b19bf6ff9e6562f8810a8d --password e2e_heslo

Kde sejf je lokální adresář, kam se vám data stáhnou, 3a30f16… je ID sejfu a e2e_heslo je heslo, kterým máte sejf zašifrovaný. Pak už můžete spustit synchronizaci:

$ ob sync --path sejf

Tímhle se vám do adresáře sejf stáhnou vaše data z Obsidianu a můžete s nimi dělat, co potřebujete, například je nakrmit do nějakého generátoru statických webů. Dobře se to automatizuje například pomocí GitHub Actions s deploymentem do GitHub Pages.

Kam dál

Zatím nevím, jak automaticky spustit překlad webu po změnách obsahu. Pokud používáte GitHub Actions, jde použít trigger workflow_dispatch a spouštět to ručně. Též jde samozřejmě zařídit, aby se web přeložil třeba co hodinu. Ideální by bylo, kdyby Obsidian přidal nějaký webhook, který dá vědět, když se data v sejfu spustí. Myslím, že zatím nic takového nemají.

Skvělé by bylo, kdyby zjednodušili generování toho autentizačního tokenu a přidali možnost omezit, co s tím tokenem jde dělat – ocenil bych například token jen pro čtení nebo jen pro některý podadresář sejfu.

Používáte už někdo Obsidian takhle jako jednoduché CMS? Jaké jsou vaše zkušenosti?

1 Like

Kolik za to platis? Me to prislo extreme nevyhodny, kdyz jsem to zkoumal a misto toho pouzivam Dropbox. Vyrazne vic za lepsi cenu.

$4 měsíčně za jeden sejf. Ten Headless Sync mě přiměl začít platit, myslím, že to bude dobré workflow a že mně to za ty peníze bude stát. (Předtím jsem používal synchronizaci přes iCloud, ale nefungovala úplně dobře v kombinaci s bases a na serveru si s ní pochopitelně neškrtnu.) Beru ty peníze mimo jiné jako platbu za Obsidian samotný, protože mu fandím.

1 Like

Ja bych strasne chtel, ale kdyz by mi to napsalo neco jako “soubor je moc velkej”, tak bych rozmlatil macbook a to by se mi to subscription prodrazilo.

1 Like

@zoul jakou výhodu vidíš nad Gitem/Markdownem, je to primárně skrz to, že už v tom máš knowledge base nebo je to jiný use case?

Jakože říkám si, jak to vychází v porovnání třeba s klasikou GitHub Pages + Jekyll.

Hlavní výhoda je UX. Jednak pro lidi, co s Gitem nikdy pracovat nebudou, jednak vlastně i kvůli mně – i pro mě je často praktičtější jen otevřít Obsidian a něco tam rychle změnit, než vyrábět commit (zejména na telefonu).

Tu kombinaci GitHub Pages + Jekyll jsme například používali roky v novinách a kdybychom místo editování zdrojového Markdownu přešli na Obsidian, tak bude pro lidi z redakce mnohem jednodušší věci měnit. Například ten vestavěný editor properties (frontmatter) je dobrý.

Navíc když teď má Obsidian bases, dají se v něm docela pěkně měnit i strukturovaná data, která už jsou ve zdrojáku opravdu nepraktická. Zvažuju, že bysme takhle třeba zpřístupnili k editaci seznam epizod podcastu, který máme aktuálně v YAML.

Dohromady to není nic zásadního, ale může to být milý posun v UX. Uvidím, jestli se vyplatí kvůli tomu komplikovat ten celkový setup. (Aktuálně sám váhám, jestli by se mně nevyplatilo spíš zanést ten adresář s podklady pro web do Obsidianu jako samostatný sejf a verzovat + synchronizovat ho normálně v Gitu. Je to nesrovnatelně jednodušší a část těch UX výhod by mně zůstala.)

1 Like

Chápu, to je určitě cool use case a ten setup tomu dodává trošku nový směr! Nicméně jak píšeš na konci, určitě je to komplikace navíc, když můžeš použít Git vault v Obsidianu, že jo. Vím, že hodně lidí teďka frčí na Decap a Jamstack věcech obecně tak, aby měli tu snadnou možnost sunout tam texty a zároveň (v mnoha případech) GUI pro lidi, co se s tím nechtějí moc prát.

1 Like