Wuwejův zápisník

Obsidian jako primární úložiště pro blog (a oslava vibecodingu)

10.05.2026 22:21, Wu | o blogu | komentáře -

Dosavadní způsob

schéma generování

Jakým způsobem píšu články pro blog a co k tomu používám jsem tu už popisoval, ale velmi stručně:

  • Rozepsané i hotové články udržuji v aplikaci NoteCase Pro, což je vcelku příjemné multiplatformní úložiště poznámek s jejich hierarchií, základním formátováním apod.
  • Když přijde čas publikace, přesouvám se do složky s blogem, zakládám soubor s příponou „blog“ a edituji ho pomocí jEditu, ve kterém mám nakonfigurovaná makra pro vkládání HTML. Formát souboru je jednoduchý, první dva řádky jsou hlavička; v prvním jsou autor, datum, čas, kategorie a témata, oddělené středníky a čárkami, v druhém titulek článku. Zbytek souboru už je obyčejné HTML.
  • Následuje spuštění generátoru blogu JaStaBar (JAva STAtic Blog generAtoR), ten si na příkaz java net.wuwej.jastabar.Generate -last $BLOGPATH načte všechny články i šablony a ten nejnovější vygeneruje, spolu se všemi dotčenými soubory (homepage, kategorie, předchozí článek atd.).
  • Vygenerované soubory, připravené ve složce update pak pomocí FileZilla nahraju na hosting.

Jak vidno, je to složité, „dřevěné“, ale funkční. Na svoji obranu dodávám, že to vzniklo před dvaceti lety a mám to už tak zažité, že složitost prakticky nevnímám.

Nicméně! S postupným používáním Obsidianu jako skvělého úložiště na informační bázi, deníky, a vlastně cokoliv, jsem si pořád pohrával s myšlenkou opustit první dva kroky, tedy NoteCase a jEdit, články psát rovnou v Obsidianu a z něj je také generovat. Vím, že existují pluginy v Obsidianu, které to umí rovnou, ale asi by se mi obtížně řešila návaznost dosavadních dat, stejný vzhled atd. Nakonec jsem se ale přece jen rozhoupal – k adaptaci vlastního řešení.

Datová struktura v Obsidianu

První bylo rozmyšlení datové struktury v Obsidianu. Markdown pro to má podporu, YAML front matter (se kterým ostatně potom umí Obsidian kouzla díky vlastnosti „Base“), takže jsem vymyslel tohle:

---
blog_title: "Matthew Dicks: Ať vám visí na rtech"
blog_datetime: 2026-03-17T23:00:00
link_to_datetime: 2026-03-16T08:30:00
blog_categories:
- knihy
- výběr z knih
- produktivita
blog_themes:
- rétorika
- storytelling
blog_author: Wu
blog_comments_code: "465464564"

book_author:
- Matthew Dicks
book_title: Ať vám visí na rtech
book_subtitle: Jak zaujmout, přesvědčit a pobavit díky síle storytellingu
book_cover: ../../../knihy8/at_vam_visi_na_rtech.jpg
book_publisher: Jan Melvil Publishing
book_publish_year: "2026"
book_isbn: 978-80-7555-295-2
book_publish_place: Brno
---

A pustil se do úprav JaStaBaru. No, tedy, copak já, v dnešní době? Nainstaloval jsem Visual Studio Code (generátor jsem psal v NetBeans, ale kde je těm konec), do něj Codex od ChatGPT, nejdřív generátor opravil a upravil pro nějakou aktuální javu a pak se pustil do vibecodingu.

Úpravy generátoru

A to bylo vážně zajímavé.

Nejprve pochopitelně zanalyzování a zdokumentování projektu a pak první úpravy. Chtěl jsem přidat nový parser – když najde při prohledávání dat markdown soubor, zpracovat ho do cílové struktury. Pro jednoduchost jsem řešil jen hlavičková data. Za chvíli bylo hotovo a šel jsem se podívat, jak se k tomu Codex postavil. Při pohledu na to, jak z markdownu sestaví do řetězce „legacy“ hlavičku a na tu pustí původní parser, jsem posmutněl.

V dalším kole jsem ho přesvědčil, ať udělá pro markdown potomka PostArticle, který bude mít svoji parsovací metodu. Tak jak se to v OOP dělá. Dělalo. Před dvaceti lety. Codex to poslušně udělal – a já začal přemýšlet, jak ale potom vyřeším aktualizaci článku, což je speciální typ hlavičky. Když už mám instanci PostArticle, těžko ho změním na LinkToArticle…

Takže jsem se vrátil k parseru mimo datovou strukturu, koneckonců pattern s oddělením dat do POJO objektů je taky osvědčený a nejspíš modernější, ale bez toho mezikroku s výrobou legacy hlavičky – rovnou plnit data.

Pak se mi začalo zdát obtížné to celé psát a parsovat z markdownu, řešit obrázky a jejich kopírování, a úplně všechno jsem zahodil. Místo toho jsem se přiklonil k myšlence z obsidianových stránek udělat konvertor do mého formátu .blog včetně HTML. A pro jistotu v pythonu, který neumím.

Všimněte si, že jsem se v podstatě tiše vrátil k té na začátku zavržené variantě. Codex byl vizionář. Co je ovšem důležitější – kdybych to měl dělat ručně, asi bych kód nezahodil třikrát a určitě by mi to netrvalo třikrát půl hodiny.

Finální verze

Samozřejmě jsem trochu zabojoval s pythonem, jeho .venv, trápil mě sandbox flatpaku, kde jsem původně měl VS Code, ale vývoj byla radost. Postupně jsem přidával další a další typy obsahu a jejich konverzi do HTML (citace, obrázky, speciální stylování, archiv mastodonu apod.), až to bylo všechno hotovo.

Tam, kde jsem dřív postupně psal, byť s makry, na různá místa autora (do hlavičky, do citačního záznamu), název knihy (do hlavičky, co citačního záznamu, do alt u obrázku obálky, do odkazů na databáze knih), a samozřejmě každou citaci, odstavec atd. atd., teď jen vyplním data v hlavičce a článek rovnou píšu s formátováním.

Konvertor je commandline nástroj, dostane dva parametry (zdroj a cíl), případně si vystačí s jedním parametrem a cílový soubor zapíše do stejného adresáře jako je zdroj. Takže by se samozřejmě hodilo ho spouštět rovnou z Obsidianu, nad otevřeným souborem.

Spouštění z Obsidianu

Obsidian má pluginy na všechno, takže i na spouštění skriptů, plugin se jmenuje „Shell Commands“. Ale jak mám Obsidian ve flatpaku, dlouho se mi nedařilo zajistit, aby ten skript na disku našel a spustil. Po dlouhých poradách s AI jsem dospěl k závěru, že musím spouštět pomocí flatpak-spawn, který zajistí „vyskočení“ ze sandboxu do systému. Nakonfiguroval jsem si to v pluginu jako příkaz „převést na blog“.

flatpak-spawn --host "/\[cesta]]/blog-pytools-workspace/.venv/bin/md2blog" --force {{file_path:absolute}}

Ovšem aby Obsidian mohl příkaz zavolat, musí mít právo komunikovat se sběrnicí session ("session bus“). Sice nevím, co to je, ale nastavil jsem to v aplikaci Flatseal (viz Nástroje pro práci s flatpakem).

Flatseal – nastavení session bus

Taky jsem tam povoloval přístup na systémové souboru (aby viděl python) a uživatelské soubory (aby mohl ke skriptům).

Pak už stačilo jenom otevřít paletu příkazů, ten svůj najít a kliknout. Obsidian si ho zapamatuje a od příště ho nabízí jako první.

Celý proces generování blogu má sice pořád stejný počet kroků, ale editace/publikace je neskonale rychlejší. V jEditu už žádné úpravy dělat nepotřebuju, nanejvýš zkontroluju výsledné html.

Vibecoding je zázrak.

12345
1778444460000

Hodnocení hvězdičkami používá jako prevenci
opakovaného kliknutí anonymní cookie.
Pokud s tím nesouhlasíte, neklikejte.
Další podrobnosti k cookies zde.

Informace

Kontakt

Vyhledávání

Kategorie

Archiv

STRÁNKY ARCHIVOVÁNY NÁRODNÍ KNIHOVNOU ČR

CBDB.cz – Databáze knih a spisovatelů, knihy online