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ě:
java net.wuwej.jastabar.Generate -last $BLOGPATHnač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.).
updatepak 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í.
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.
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.
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.
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).
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.




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.