Przejdź do treści
barteq.eu

Post

Agenci AI czytają sieć i nikt im tego nie ułatwia

2 minuty czytania 481 słów

Agent AI wchodzi na stronę tak samo jak przeglądarka: wysyła żądanie HTTP i odbiera odpowiedź. Przeglądarka renderuje widok dla człowieka. Agent musi wyłuskać treść z gąszczu znaczników. Nad zachowaniem zewnętrznego agenta nikt nie ma pełnej kontroli, więc liczy się to, co maszyna naprawdę dostaje do przetworzenia. A większość serwisów odpowiada jej: „radź sobie sama”.

Strona dla ludzi ma nawigację, stopkę, baner cookies, skrypty analityczne i polecane artykuły. Strona dla agenta potrzebuje czystego tekstu. Nie trzeba dwóch serwisów, wystarczy wskazać maszynie, że wariant istnieje. To nie ciekawostka techniczna, tylko baza: czyste, maszynowe źródło treści daje fundament pod automatyzację publikacji, precyzyjne SEO i powtarzalny pakiet, który można zaoferować jako usługę.

Trzy nagłówki HTTP

Wymianę formatów załatwia content negotiation oparta na standardowych nagłówkach HTTP.

Pierwszy to Vary: Accept. Informuje pamięć podręczną, że odpowiedź zależy od nagłówka Accept, więc serwer pośredniczący nie może podać wersji HTML klientowi, który prosił o markdown.

Drugi to Content-Type: text/markdown w odpowiedzi tekstowej. Markdown ma własny typ MIME, dlatego nie stosuje się tutaj text/plain ani application/octet-stream.

Trzeci to Link: …; rel="alternate". Działa identycznie jak odnośnik do kanału RSS, przekazując klientowi bezpośredni adres alternatywnego wariantu zasobu.

W praktyce wygląda to tak:

GET /blog/agenci-ai-czytaja-siec/ HTTP/1.1
Accept: text/markdown
HTTP/1.1 200 OK
Content-Type: text/markdown; charset=utf-8
Vary: Accept
Link: </blog/agenci-ai-czytaja-siec.md>; rel="alternate"; type="text/markdown"
X-Robots-Tag: noindex

Nagłówek X-Robots-Tag: noindex ma jasny cel. Wariant markdown ma być publicznie dostępny, ale nie powinien konkurować z wersją HTML w indeksie wyszukiwarki. Dla agenta to żaden problem, bo analizuje nagłówki zamiast polegać na samym indeksie.

Maszynowy opis serwisu

Skąd agent ma wiedzieć, jak odpytać stronę? Rozwiązaniem jest plik manifestu w katalogu głównym serwera. Nazywa się llms.txt i znajduje się w tym samym miejscu, w którym od lat umieszcza się robots.txt.

Rysunek ołówkiem: mały robot zaglądający przez bramę do ogrodu, obok tabliczka z adresem llms.txt
Mały robot czyta tabliczkę przy bramie: wariant dla maszyn jest zwykle obok tego dla ludzi.

W moim wydaniu ten plik zawiera:

  • jednozdaniowy opis bloga z informacją, że publikuję pod pseudonimem,
  • listę najnowszych wpisów z linkami HTML oraz odnośnikami .md,
  • zestawienie metod pobierania treści: HTML, bezpośredni plik .md, negocjacja nagłówkiem Accept, pełny zrzut oraz sitemap,
  • sekcję z uwagami, w tym zastrzeżenie, że treść ma charakter edukacyjny i nie jest zaproszeniem do testowania cudzych systemów.

Jeden plik definiuje pełną strukturę. Agent nie musi zgadywać konwencji ani testować kilku adresów URL w poszukiwaniu działającego wariantu.

Sprawdź to w pięć sekund

# wariant dla ludzi
curl -sI https://barteq.eu/blog/agenci-ai-czytaja-siec/ | grep -i vary

# wariant dla agentów
curl -s -H 'Accept: text/markdown' \
  https://barteq.eu/blog/agenci-ai-czytaja-siec/ | head -5

# bezpośredni adres, bez negocjacji
curl -sI https://barteq.eu/blog/agenci-ai-czytaja-siec.md | grep -i content-type

# manifest
curl -s https://barteq.eu/llms.txt | head -20

Cztery komendy weryfikują konfigurację. Jeżeli trzecie zapytanie zwraca HTML, wariant maszynowy nie został poprawnie wystawiony.

Jedno źródło, dwa opakowania

Częstym błędem jest trzymanie HTML w bazie danych i konwertowanie go do markdownu w locie. Prowadzi to do dwóch generatorów i niespójnych wersji tekstu.

Moje podejście odwraca ten schemat: markdown jest źródłem, a HTML pochodną renderowaną jednorazowo przy publikacji. Wariant .md to dokładnie ten sam plik, z którego powstał HTML, serwowany bajt w bajt. Nie ma czego rozjeżdżać, bo nie ma drugiego generatora.

Fundament pod dalsze narzędzia

Gdy agent nie musi parsować HTML, cytuje precyzyjnie, bez gubienia fragmentów przez wplecione menu, zużywa mniej tokenów i rzadziej generuje błędy interpretacji.

Dla autora to przewidywalny proces. Raz skonfigurowany wariant maszynowy eliminuje rozbieżności między tym, co widzi wyszukiwarka, a tym, co pobiera robot. Obie strony dostają te same dane w dostosowanym formacie. Taki układ to gotowa baza pod automatyczną dystrybucję treści, pozycjonowanie i powtarzalną architekturę, którą przenosisz do kolejnych projektów.

Poprawki: