Ten blog to folder plików markdown
Za tym blogiem nie stoi żaden CMS ani baza danych. Każdy wpis to plik markdown w tym samym repozytorium co kod LiteTMS, więc publikacja wpisu wygląda dokładnie tak jak wydanie nowej funkcji: commit i deploy.
Chcieliśmy zrobić to inaczej niż większość firm, dlatego w tym wpisie pokazujemy cały mechanizm, łącznie ze źródłem strony, którą właśnie czytasz.
Jak to robią wszyscy inni
Typowy firmowy blog stoi na pełnym systemie CMS. Baza danych, panel administracyjny, konta użytkowników, wtyczki i szablon, którego nikt do końca nie rozumie. Cała ta maszyneria istnieje po to, żeby zespół redaktorów mógł publikować bez dotykania kodu.
My nie mamy zespołu redaktorów, a w repozytorium kodu i tak siedzimy cały dzień. Więc maszynerię pominęliśmy. Każdy dodatkowy system trzeba aktualizować, backupować i zabezpieczać. Folderu z plikami tekstowymi nie trzeba.
Jak wygląda plik wpisu
Poniżej przycięta kopia nagłówka tego konkretnego wpisu i zarys treści:
---
title: Ten blog to folder plików markdown
slug: why-this-blog-has-no-cms
locale: pl
description: Za blogiem LiteTMS nie stoi żaden CMS. Każdy wpis to...
date: 2026-07-15
category: technology
tags: markdown, blog, aieo, engineering
draft: false
---
Pierwszy akapit odpowiada na tytuł samodzielnie, bo to właśnie jego
cytują wyszukiwarki i asystenci AI.
## Nagłówek sekcji
Zwykły markdown. Nic egzotycznego.
## FAQ
### Czy ta próbka pokazuje sekcję FAQ?
Tak. Każda linia ### to dosłowne pytanie z odpowiedzią zaraz pod spodem.
Blok na górze to płaska lista par klucz i wartość. Pod spodem jest zwykły markdown, renderowany standardową biblioteką. Jeden plik na język: ten wpis istnieje jako plik .pl.md i .en.md o tej samej nazwie, a wersję polską piszemy od zera po polsku zamiast tłumaczyć maszynowo.
Sekcja ## FAQ na końcu próbki to prawdziwa konwencja, nie ozdobnik. Każde pytanie brzmi tak, jak człowiek wpisałby je w wyszukiwarkę, a build zamienia te pary w dane strukturalne, które wyszukiwarki potrafią pokazać jako rozszerzone wyniki. Żywy przykład masz na dole tej strony.
Walidator zamiast panelu redakcyjnego
Zanim cokolwiek trafi na produkcję, skrypt builda czyta każdy plik wpisu i sprawdza go ze schematem. Opis musi mieć od 80 do 170 znaków. Kategoria musi być jedną z pięciu dozwolonych wartości. Data musi być prawdziwą datą kalendarzową, a slug musi zgadzać się z nazwą pliku.
Potem skrypt zapisuje jeden plik indeksu z metadanymi wszystkich wpisów i tylko ten plik czyta strona. Lista wpisów kosztuje tyle samo przy pięciuset wpisach, co przy pięciu.
Ten sam skrypt odpala się w CI przy każdym pushu. Jeśli wpis jest niepoprawny albo ktoś zapomniał przebudować indeks, build pada i nic się nie wdraża. Zepsuta treść nie ma jak dojechać na produkcję, bo produkcja dostaje wyłącznie to, co przeszło walidator.
Po co komu markdown
Markdown wygrał z powodów zupełnie niemodnych. Plik markdown przeczytasz w każdym edytorze tekstu, z narzędziami albo bez. Diffuje się linia po linii, więc wpis przechodzi przegląd dokładnie tak jak kod: widać, które zdanie się zmieniło. No i jest najtańszym możliwym formatem do wciągnięcia przez asystenta AI, a to z miesiąca na miesiąc znaczy coraz więcej.
Właśnie dlatego każdy wpis serwujemy na trzy sposoby. Strona, którą czytasz, to wersja HTML. Dopisz .md do adresu w przeglądarce, a dostaniesz surowy plik źródłowy, bajt w bajt taki, jaki leży w repozytorium, serwowany jako czysty markdown. A każdy język ma swój kanał RSS dla czytników i agregatorów.
Jest też maszynowy katalog wszystkich opublikowanych wpisów pod adresem /blog/index.md, a plik llms.txt tej strony kieruje na niego crawlery AI. Nic z tego nie robi duplikatów w wyszukiwarkach, bo surowe pliki niosą nagłówek noindex i link kanoniczny z powrotem do strony HTML.
Co z tego masz jako czytelnik
Nic z powyższego nie jest funkcją produktu. To decyzja o tym, jak prowadzimy własne publikowanie, i pasuje do obietnicy z pierwszego wpisu: żadnych wymyślonych liczb i tekst, który możesz sprawdzić u źródła. Sam LiteTMS jest zbudowany na tym samym upodobaniu do prostych, przejrzystych mechanizmów. Jeśli chcesz się rozejrzeć, rejestracja jest darmowa.
Częste pytania
- Czy mogę przeczytać wpis z bloga LiteTMS jako zwykły markdown?
- Tak. Dopisz .md do adresu dowolnego wpisu, a strona przekieruje cię do surowego pliku źródłowego serwowanego jako czysty markdown. Katalog wszystkich opublikowanych wpisów znajdziesz pod /blog/index.md.
- Dlaczego blog LiteTMS nie ma CMS-a?
- Bo CMS byłby drugim systemem do łatania i zabezpieczania, a publikują tu wyłącznie osoby pracujące na co dzień w repozytorium produktu. Pliki markdown plus walidator w CI robią tę samą robotę przy dużo mniejszym utrzymaniu.
- Czy pisanie pod asystentów AI nie psuje tekstu dla ludzi?
- Nie. Struktura, którą nagradzają asystenci, czyli konkretny pierwszy akapit, opisowe nagłówki i dosłowne pytania z krótkimi odpowiedziami, to ta sama struktura, dzięki której artykuł dobrze się skanuje wzrokiem. Surowy markdown to osobny format, więc artykuł, który czytasz, pozostaje zwykłym artykułem.