odpisane pytanie, uratowana sprzedażczat bez banera cookiescały zespół bez limituodpowiadasz ze slacka albo z naszej apki

/blog / dowody

naszą stronę czytają agenci

· pisze kuba · 4 min czytania

Okno terminala na jasnym tle z wpisanym llms.txt, zza górnej krawędzi wygląda kot Spookata i puszcza oko.

Część ludzi, którzy szukają widgetu czatu, nigdy nie przeczyta naszej strony głównej. Przeczyta ją ich agent. Dostaje polecenie „dodaj czat do mojej strony”, pobiera kilka URL-i i albo znajduje, czego potrzebuje, albo idzie do następnego narzędzia. Dlatego spookat.com jest zbudowany do czytania przez agentów tak samo jak przez ludzi, a wszystko poniżej działa i da się sprawdzić curlem.

llms.txt: cały manual w jednym pliku

/llms.txt to cały manual produktu jako zwykły markdown: instalacja, konfiguracja, Slack i Discord, webhooki, API do odpowiedzi, MCP, partnerzy. 27 września 2026 ważył 28,8 kb. Na końcu jest lista wszystkich opublikowanych wpisów z bloga po angielsku z linkiem do ich wersji w markdownie.

Strony /docs są przetłumaczone na 12 języków dla ludzi. llms.txt zostaje po angielsku, tak samo jak bloki kodu, prompty i nazwy narzędzi w przetłumaczonych docsach, bo to agenci kopiują i odpalają. Test wywala build, jeśli tłumaczenie ruszy którąkolwiek z tych rzeczy.

każda strona jako markdown

Poproś dowolną stronę na spookat.com o markdown, a dostaniesz markdown:

curl -H "Accept: text/markdown" https://spookat.com/pricing/

Dostajesz główną treść strony jako czysty markdown, bez nawigacji, stopki i przycisków. Build zapisuje markdownowego bliźniaka każdej strony i to on przychodzi, kiedy request o niego prosi. Wpisy na blogu mają też własny URL .md i to do nich linkuje llms.txt.

Strona główna do każdej odpowiedzi dokleja nagłówek Link, który wskazuje /llms.txt (rel="describedby") i /docs/ (rel="service-doc"), więc agent, który patrzy tylko w nagłówki, i tak znajdzie manual.

auth.md: jak agent wchodzi do środka

/auth.md to strona pisana dla agentów, a nie dla ludzi. Tłumaczy trzy drogi:

  1. Klient MCP, przy którym człowiek siedzi przy przeglądarce, loguje się przez OAuth. Człowiek wybiera strony i zakres uprawnień.
  2. Człowiek, który ma już konto, daje agentowi klucz.
  3. Jeszcze nie ma konta: agent sam rejestruje stronę, dostaje snippet do wklejenia i link do przejęcia dla swojego człowieka.

Ta trzecia to nietypowa część. Agent może postawić Spookata na stronie od początku do końca, a potem jego człowiek klika jeden link, żeby ją przejąć. Zanim ktoś ją przejmie, widget mówi, że jeszcze nikt nie odpowiada. I cokolwiek agent robi, płaci zawsze człowiek: agent może zacząć zmianę planu, ale dostaje z powrotem tylko link do płatności dla człowieka.

openapi i katalog api

API do odpowiedzi jest opisane w /openapi.json, OpenAPI 3.1, a test pilnuje, żeby zgadzało się z serwerem. /.well-known/api-catalog idzie za RFC 9727 i w jednym małym JSON-ie wymienia API, jego specyfikację, docsy i health check. Agent, który zna ten standard, znajdzie wszystko z jednego well-known URL-a.

karta serwera MCP

Spookat ma zdalny serwer MCP pod https://api.spookat.com/mcp. Agenci łączą się z nim, żeby czytać czaty i odpowiadać, zostawiać notatki wewnętrzne, przekazać czat człowiekowi, zmienić wygląd widgetu i podpiąć Slacka albo Discorda. /.well-known/mcp/server-card.json go opisuje: nazwa, transport, gdzie się uwierzytelnić, gdzie jest manual. Rejestry i skanery, które szukają serwerów MCP, znajdą go bez wypełniania żadnego formularza.

Dodanie go do Claude Code to jedna linijka:

claude mcp add --transport http spookat https://api.spookat.com/mcp

WebMCP: sama strona ma narzędzia

Przeglądarki zaczynają pozwalać stronom podawać narzędzia agentowi, który w nich działa. Na spookat.com, jeśli przeglądarka to wspiera, strona rejestruje narzędzia do czytania serwisu i do postawienia czatu:

  • search_docs: przeszukuje manual i zwraca pasujące sekcje jako markdown
  • read_page: czyta dowolną stronę spookat.com jako markdown
  • open_page: pokazuje człowiekowi stronę w języku, w którym czyta serwis
  • join_waitlist: zapisuje człowieka na waitlistę, tylko za jego zgodą, na stronach z formularzem waitlisty
  • register_site: rejestruje domenę człowieka, bez konta, i zwraca snippet do instalacji oraz link do przejęcia strony
  • narzędzia do setupu (set_style, set_accent, publish i reszta), te same co na serwerze MCP, bez podpinania kanału i płacenia
  • claim_site: przekazuje stronę człowiekowi, który przejmuje ją jednym kliknięciem

Jeśli przeglądarka tego nie wspiera, nic się nie dzieje i nic się nie ładuje.

robots.txt mówi tak

Nasz /robots.txt zaprasza crawlery i mówi to już w pierwszej linijce. Wyszukiwarki, asystenci AI i ci, którzy trenują modele: wszyscy mile widziani. Oprócz domyślnej grupy wymienia z nazwy 23 crawlery AI (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot, CCBot i inne), żeby jakiś ostrzejszy default po drodze nie odczytał ciszy jako „nie”. Jedyna zamknięta ścieżka to /u/, nasze proxy analityki, w którym nie ma nic do czytania.

Nasz CDN ma własne przełączniki do blokowania crawlerów AI. Trzymamy je wszystkie wyłączone, łącznie z tym, który przepisuje ci robots.txt po swojemu.

po co to

Bo „dodaj czat do mojej strony” to coraz częściej zdanie wpisane do agenta, a nie do wyszukiwarki. Jeśli agent przeczyta nasz manual jednym requestem, wklei widget ze snippetu i sprawdzi go bez człowieka klikającego po dashboardzie, wybierze narzędzie, które pozwoliło mu skończyć robotę.

To też po prostu lepsza strona. Markdownowe bliźniaki to najszybszy sposób na czytanie naszych docsów, także dla ludzi, a manual, który mieści się w jednym pliku, wymusza zwięzłość.

Jesteśmy z tego dumni. Dla agenta większość stron SaaS to ściana JavaScriptu. Nasza podaje mu manual, specyfikację API, serwer MCP i sposób, żeby sam się zapisał, wszystko z URL-i, które możesz sprawdzić od razu.

Daj swojemu agentowi spookat.com/llms.txt i każ mu dodać czat do twojej strony. Potem odpal trial, do którego cię wyśle.

podoba się? zapisz się na listę.

zaproszenia wysyłamy małymi partiami. gdy przyjdzie twoje: 14 dni za darmo, bez karty.

piszemy tylko w sprawie zaproszenia i startu. możesz to wyłączyć w każdej chwili. prywatność