Krótka odpowiedź
Strona gotowa na agentów AI robi trzy rzeczy. Agenci AI mogą do niej dotrzeć. Mogą ją czytać bez przedzierania się przez menu, banery i skrypty. A tam, gdzie ma to sens, mogą wywoływać kilka zadeklarowanych narzędzi zamiast zgadywać, który przycisk nacisnąć.
Wszystkie trzy elementy wdrożyliśmy w dardo.studio na początku października 2026 roku. Oto co uruchomiliśmy i w jakim stopniu główne platformy AI dokumentują korzystanie z tego, według sprawdzenia na działającej stronie z 8 października 2026 roku.
Wnioski są mniej ekscytujące niż w większości list kontrolnych „AI-ready”. Największe znaczenie mają najstarsze warstwy: dostęp dla robotów i czysty, semantyczny HTML. Kopie w markdownie i llms.txt to tanie udogodnienia. MCP, A2A i WebMCP to prawdziwe protokoły z działającymi klientami, ale żadna z dokumentacji robotów, które cytujemy, od OpenAI, Anthropic, Perplexity czy Google, nie opisuje tego, by ich asystenci sami znajdowali narzędzia strony.
Zacznij od dostępu: robots.txt i warstwa brzegowa
Nasz plik robots.txt powtarza jedną grupę reguł dla agenta domyślnego (*) oraz dla każdego wymienionego z nazwy robota wyszukiwarek AI i narzędzia pobierającego strony na żądanie użytkownika:
User-agent: OAI-SearchBot
Allow: /
Disallow: /api/
Content-Signal: search=yes, ai-input=yesTe same reguły obowiązują ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User i Bingbot. Zamknięty jest tylko /api/.
Roboty wyszukiwarek i roboty do trenowania to osobne rzeczy
Najwwięksi gracze dokumentują dziś osobne tokeny dla wyszukiwania i dla trenowania:
- OpenAI. OAI-SearchBot pokazuje strony w wyszukiwarce ChatGPT. Strony, które go blokują, nie trafiają do odpowiedzi wyszukiwarki ChatGPT, choć nadal mogą pojawiać się jako zwykłe linki nawigacyjne. GPTBot zbiera dane treningowe. (roboty OpenAI)
- Anthropic. Claude-SearchBot indeksuje na potrzeby wyszukiwania, ClaudeBot zbiera dane treningowe, a Claude-User pobiera strony, gdy ktoś o coś pyta Claude’a. (roboty Anthropic)
- Perplexity. PerplexityBot wyświetla strony i linkuje do nich w wynikach Perplexity i nie służy do trenowania modeli bazowych. (roboty Perplexity)
- Google. Google-Extended to token kontrolny dla trenowania Gemini i dla uziemiania odpowiedzi w innych produktach Google. Nie wpływa na uwzględnianie ani pozycję w Wyszukiwarce Google. (typowe roboty Google)
Narzędzia pobierające strony na żądanie użytkownika działają inaczej. OpenAI zastrzega, że robots.txt może nie obowiązywać ChatGPT-User, bo te żądania wywołuje człowiek. Perplexity-User i narzędzia Google uruchamiane przez użytkownika zazwyczaj go ignorują. Takie narzędzia działają w imieniu jednej osoby w czasie rzeczywistym; tam, gdzie blokada działa, przeważnie uniemożliwia asystentowi tej osoby przeczytanie Twojej strony.
Nasz plik nie wymienia robotów do trenowania, więc podlegają one regule * i mają dostęp. To decyzja biznesowa, a dostawcy opisują ją jako osobną kontrolę: zablokowanie GPTBot lub ClaudeBot to nie to samo, co rezygnacja z ich indeksów wyszukiwania.
Content Signals: jedna linijka, żadnych zobowiązań
Linijka Content-Signal pochodzi z Content Signals Policy Cloudflare, która wymienia trzy zastosowania: search, ai-input (przekazywanie treści modelowi w momencie odpowiedzi) i ai-train. Pomijamy ai-train, co według tej polityki ani nie zezwala na takie użycie, ani go nie ogranicza. Cloudflare podkreśla, że sygnały wyrażają preferencje, niczego nie blokują i mogą być ignorowane. Żadna z cytowanych tu stron o robotach ich nie wspomina. Kosztuje to jedną linijkę; na razie niczego się nie spodziewaj.
Sprawdzaj warstwę brzegową, nie tylko plik
robots.txt określa politykę, ale o wszystkim decyduje Twój CDN. Podczas testu 2 października Browser Integrity Check Cloudflare odpowiadał kodem 403 na domyślnego klienta HTTP Pythona (Python-urllib) i na libwww-perl, mimo że robots.txt pozwalał na wszystko. Skrypty pisane przez agentów programistycznych często używają biblioteki standardowej Pythona bez zmian.
Dodaliśmy regułę konfiguracji Cloudflare, która wyłącza z blokady żądania GET i HEAD dla treści publicznych; /api/ nadal zwraca 403. Ten sam przegląd wykazał, że nasze pliki .txt nie miały ustawionego kodowania, przez co niektórzy klienci czytali „Bogotá” jako „Bogotá”. Wystarczył jeden nagłówek: charset=utf-8.
Testuj prawdziwymi żądaniami pod każdym user agentem. To pokazuje, że nic nie blokuje danej nazwy, ale nie dowodzi, że odwiedził nas prawdziwy robot.
Prosty, semantyczny HTML: warstwa, od której zależy każdy agent
Przewodnik Google po optymalizacji pod AI opisuje agentów przeglądarkowych, którzy analizują zrzuty ekranu, badają DOM i interpretują drzewo dostępności. Odsyła właścicieli stron do wskazówek web.dev dotyczących stron przyjaznych agentom, które w większości sprowadzają się do pracy nad dostępnością: używaj <button> i <a> zamiast ostylowanych <div>ów, powiąż każdą etykietę z jej polem i dopilnuj, by układ nie przesuwał się pod zrzutem ekranu.
Na dardo.studio każda strona ma jeden element <main> i opisane landmarki <nav>. Przełączniki menu i motywu to prawdziwe przyciski, które informują o swoim stanie przez aria-expanded i aria-pressed, a zamknięte menu są inert. Każde pole formularza kontaktowego znajduje się wewnątrz swojego elementu <label>, co nadaje mu dostępną nazwę. web.dev zaleca atrybut for; objęcie pola etykietą działa tak samo.
To już dziś pomaga użytkownikom czytników ekranu, a to wystarczający powód.
Czysta kopia w markdownie każdej strony
Agenci płacą za każdy przeczytany token, a wyrenderowana strona niesie ze sobą nawigację, baner cookies, skrypty i grafiki dekoracyjne. Przed tą pracą żądanie naszych stron z nagłówkiem Accept: text/markdown zwracało to wszystko jako HTML.
Teraz etap budowania zapisuje plik index.md obok każdej indeksowalnej strony. Zaczyna się od front matter (tytuł, opis, kanoniczny adres URL, język, wersja w drugim języku i data aktualizacji), a potem zawiera treść z elementu <main> bez skryptów, przycisków, obrazów dekoracyjnych i spisu treści na stronie. Odpowiedzi z FAQ zostają. Formularze zamieniają się w listę pól i opcji, dzięki czemu agent może powiedzieć użytkownikowi, o co pyta nasz formularz kontaktowy, bez jego uruchamiania.
Kopię można pobrać na trzy sposoby:
- Wyślij nagłówek
Accept: text/markdownna zwykły adres URL. Takie odpowiedzi zawierająVary: Accept, więc pamięci podręczne przechowują obie wersje osobno. - Poproś o plik:
/en/services/seo/index.md. - Dodaj
.mddo ścieżki strony (/en/services/seo.md). Dla adresów kończących się ukośnikiem propozycja llms.txt używaindex.md, czyli formy powyżej.
Każda strona HTML wskazuje też swoją kopię za pomocą <link rel="alternate" type="text/markdown">.
Wskazujemy wyszukiwarkom z powrotem wersję HTML
Z poradnika Google wynika, że może on skanować i indeksować wiele typów plików poza HTML, bez traktowania ich w szczególny sposób. Kopia w markdownie mogłaby konkurować z własną stroną, dlatego każda odpowiedź markdown wskazuje stronę HTML jako kanoniczną:
$ curl -sI https://dardo.studio/en/services/seo/index.md
content-type: text/markdown; charset=utf-8
link: <https://dardo.studio/en/services/seo/>; rel="canonical", ...Kto czyta te kopie? Cloudflare stworzył Markdown for Agents, aby konwertować HTML na brzegu sieci dla żądań preferujących markdown, co sugeruje, że agenci o niego proszą. Nie podaje jednak, którzy klienci wysyłają ten nagłówek, a my również nie mamy zweryfikowanej listy. Jeśli korzystasz z funkcji Cloudflare, doda ona Content-Signal: ai-train=yes, search=yes, ai-input=yes, chyba że Twój serwer źródłowy ustawia własny. Nasze kopie generujemy podczas budowania, aby dokładnie odpowiadały stronie.
llms.txt: przydatny indeks bez wpływu na wyszukiwanie
llms.txt to propozycja Jeremy'ego Howarda, opublikowana po raz pierwszy we wrześniu 2024 r. i wciąż otwarta na uwagi społeczności: plik markdown pod adresem /llms.txt z nazwą witryny, krótkim streszczeniem i listami linków, które mogą się przydać agentowi.
Nasz, pod adresami /llms.txt i /es/llms.txt, jest generowany z tych samych danych co strony, więc nie może się z nimi rozjechać. Podaje fakty o studiu (Bogotá, założone w 2026 r., zespół trzech osób, sposób wyceny projektów, drogi kontaktu), wymienia usługi i realizacje oraz wyjaśnia, jak pobrać kopie w markdownie. llms-full.txt zawiera pełny tekst stron studia, usług, realizacji i kontaktu.
Jedna linijka wskazuje firmy o podobnych nazwach, które nie są nami. Gdy sprawdzaliśmy 2 października, to one prowadziły w wynikach wyszukiwania dla „dardo studio”. Ta linijka może być najprzydatniejsza w całym pliku.
Stan rzeczy, wprost:
- Google twierdzi, że llms.txt nie jest potrzebny, by pojawiać się w Wyszukiwarce ani funkcjach AI, że Wyszukiwarka go ignoruje, a posiadanie go ani nie pomaga, ani nie szkodzi.
- OpenAI, Anthropic i Perplexity nie podają w dokumentacji swoich robotów, że ich boty czytają pliki llms.txt innych witryn. Własne serwisy z dokumentacją OpenAI, Anthropic i Perplexity publikują taki plik, z myślą o agentach czytających ich dokumentację.
Warto go mieć, jeśli jest generowany i dokładny. Pomaga agentom programistycznym i narzędziom, które go szukają. Nie jest dźwignią widoczności.
Narzędzia, które agenci mogą wywoływać: MCP, A2A i katalog API
Opublikowaliśmy dwa narzędzia tylko do odczytu:
list_serviceszwraca nasze opublikowane usługi, ich zakres, rezultaty i adresy źródłowe po angielsku lub hiszpańsku, filtrowane opcjonalnym słowem kluczowym.get_project_briefzwraca pytania, na które warto odpowiedzieć przed kontaktem z nami, oraz zlokalizowany link kontaktowy dla danej usługi.
Jedna implementacja stoi za kilkoma punktami wejścia:
| Punkt wejścia | Adres w dardo.studio | Standard i status |
|---|---|---|
| Serwer MCP | /mcp, karta pod /.well-known/mcp/server-card.json | MCP Streamable HTTP; karta serwera to wstępna propozycja |
| Agent A2A | /a2a, karta pod /.well-known/agent-card.json | A2A 1.0, JSON-RPC |
| Punkt końcowy JSON | /agent/services.json, opisany w OpenAPI | Zwykły HTTP |
| Katalog API | /.well-known/api-catalog | RFC 9727, ścieżka standaryzacji IETF |
Każda odpowiedź HTML i markdown wysyła nagłówek Link wskazujący katalog, indeks umiejętności agentów i obie karty, więc z każdej strony można dojść do reszty.
Zasady projektowe, które byśmy powtórzyli
- Tylko do odczytu i publiczne. Narzędzia MCP deklarują
readOnlyHint: truei czytają ten sam opublikowany katalog co HTML, bez bazy danych w tle.get_project_briefniczego nie wysyła, nie rezerwuje ani nie wycenia; człowiek przegląda i wysyła. - Ograniczone dane wejściowe. Treść żądań jest ograniczona do 8 KiB, sprawdzamy nagłówki
Originz przeglądarki (wymaga tego specyfikacja MCP), a wywołania mają własny limit szybkości. - Bez stanu. Agent A2A odpowiada natychmiast, nie przechowuje zadań, ma wyłączone strumieniowanie i nie pobiera plików ani adresów URL, które mu wysłano.
- Jasne zasady. /auth.md mówi, że nie są potrzebne żadne dane uwierzytelniające oraz że odczyt danych publicznych nie upoważnia do wysłania wiadomości ani dokonania płatności.
Coś też pominęliśmy. Skanery gotowości sprawdzają protokoły handlowe i wykrywanie OAuth. Niczego nie sprzedajemy przez kasę i nie chronimy żadnych zasobów, więc publikowanie tego opisywałoby możliwości, które nie istnieją.
Kto dziś korzysta z tych narzędzi: klienci MCP, które ktoś połączył z /mcp, oraz klienci A2A, którym podano naszą kartę. Dla studia wartość jest skromna: precyzyjna odpowiedź na pytanie „czym zajmuje się Dardo i co warto im wysłać?”. Dla witryny z danymi na żywo, o które ludzie pytają, takimi jak stan magazynowy, dostępność czy dokumentacja produktu, argumenty są mocniejsze. Agenci, którzy zapisują dane, potrzebują uwierzytelniania i etapów weryfikacji; to już praca z zakresu automatyzacji AI.
WebMCP: te same narzędzia w przeglądarce
WebMCP pozwala stronie rejestrować narzędzia, które może wywoływać agent AI w przeglądarce. To Draft Community Group Report grupy W3C Web Machine Learning Community Group i zastrzega, że nie jest standardem W3C. Według web.dev jest aktywnie rozwijany, może się zmienić i można go wypróbować w Chrome w ramach origin trial.
Nasze strony rejestrują te same dwa narzędzia przez document.modelContext (lub navigator.modelContext w starszych wersjach zapoznawczych). Bez tego API przeglądarka nie uruchamia niczego dodatkowego. Ponieważ narzędzia już istniały, zajęło to około 40 linijek. Traktuj to jako eksperyment.
Każda warstwa i czy warto się nią zajmować
| Warstwa | Co to jest | Kto z tego dziś korzysta | Czy warto? |
|---|---|---|---|
| Semantyczny HTML i opisane formularze | Prawdziwe przyciski, linki, landmarki i etykiety | Przeglądarki, technologie asystujące i agenci przeglądarkowi | Tak. Zacznij od tego |
| robots.txt dla wyszukiwarek i agentów użytkownika | Reguły dla poszczególnych crawlerów, które oddzielają wyszukiwanie od trenowania | OpenAI, Anthropic, Perplexity i Google opisują swoje tokeny w dokumentacji | Tak. Potem przetestuj na poziomie CDN |
| Content Signals | Preferencje search, ai-input, ai-train w robots.txt | Żadna z firm AI, które sprawdziliśmy, nie opisuje ich przestrzegania | Jedna linijka. Niczego nie oczekuj |
| Kopie w markdownie z nagłówkami canonical | Czysta wersja tekstowa każdej strony | Agenci, którzy żądają markdownu; brak opublikowanej listy, którzy to | Tak, z nagłówkiem canonical |
| llms.txt i llms-full.txt | Wyselekcjonowany indeks i pełny tekst dla agentów | Google Search go ignoruje; żadna dokumentacja crawlerów nie twierdzi, że go czyta | Zostaw, jeśli jest generowany. To nie jest dźwignia widoczności |
| Serwer MCP (tylko do odczytu) | Zadeklarowane narzędzia, które agenci mogą wywoływać | Klienci MCP, które ktoś podłącza | Tylko jeśli są dane lub akcje warte wywołania |
| Karta agenta A2A | Maszynowo czytelny opis agenta | Klienci A2A, którym ją wskazano | Spekulacyjne dla większości stron |
| Katalog API (RFC 9727) | Jedna standardowa lista Twoich publicznych API | Narzędzia, które jej szukają | Tanie, jeśli już masz API |
| WebMCP | Narzędzia rejestrowane przez stronę w przeglądarce | Chrome, w ramach origin trial | Eksperyment |
Co zbudowalibyśmy ponownie
Po kolei: semantyczny HTML, przetestowany dostęp dla crawlerów, kopie w markdownie z nagłówkami canonical, generowany llms.txt, a narzędzia tylko wtedy, gdy jest coś wartego wywołania. Potem mierz. Logi serwera pokazują, którzy agenci pobierają kopie markdown lub wywołują /mcp. Pobranie to nie cytowanie, a nic z tego nie gwarantuje, że system AI wspomni o Tobie.
Gotowość na agentów to część naszej pracy nad optymalizacją pod wyszukiwanie AI, obok treści i pomiarów, które decydują, czy odpowiedzi AI Cię cytują. Aby wdrożyć to na swojej stronie, opowiedz nam o projekcie.
