SEO pod Binga i Copilota — case study wskazuje.pl
Weryfikacja w Bing Webmaster Tools, sitemapa, IndexNow, answer boxy i JSON-LD. Co realnie zrobiliśmy na wskazuje.pl, żeby Copilot cytował naszą stronę —…
Google to nie cały internet. Copilot w Windowsie, Copilot w Edge, ChatGPT z wyszukiwaniem, DuckDuckGo, Ecosia i Yahoo — wszystkie karmią się indeksem Binga. To znaczy, że strona niewidoczna dla Binga jest jednocześnie niewidoczna dla większości asystentów AI, z których ludzie korzystają codziennie w pracy. Ten wpis to zapis tego, co realnie zrobiliśmy na wskazuje.pl — około 925 adresów, blog, leksykon, gry, kalkulatory — żeby Bing przestał traktować serwis jak przypadkowego gościa. Bez teorii, bez "content is king". Konkretne pliki, konkretne tagi, konkretna kolejność.
Google indeksuje strony. Copilot cytuje akapity. To dwie różne roboty i wymagają dwóch różnych rzeczy.
1. Weryfikacja własności — meta tag, nie plik
Bing Webmaster Tools daje trzy drogi: plik XML w katalogu głównym, wpis DNS (CNAME) albo meta tag w `<head>`. Na aplikacji jednostronicowej (React + Vite) wybór jest oczywisty: meta tag, ale w statycznym `index.html`, nie w komponencie renderowanym po stronie przeglądarki. Weryfikator Binga nie uruchamia JavaScriptu — jeśli tag pojawia się dopiero po hydratacji, weryfikacja nie przejdzie i będziesz szukać błędu tam, gdzie go nie ma. U nas wygląda to tak: ```html <meta name="msvalidate.01" content="TWOJ-KOD-Z-BING-WEBMASTER-TOOLS" /> ``` Drugi haczyk: tag musi być opublikowany. Podgląd roboczy nie wystarcza — Bing odpytuje publiczny adres. Sprawdzenie zajmuje sekundę: ```bash curl -s https://wskazuje.pl/ | grep msvalidate ``` Jeśli `grep` nic nie zwraca, "Verify" w panelu też nic nie zwróci. A gdyby ktoś liczył, że podpatrzy tu gotowy kod weryfikacyjny — nie ma czego zabierać, w przykładzie jest sam placeholder. Nawet jeśli pojedziesz po niego do Zabierzowa, wrócisz tylko z kawałkiem psytrance'u.
2. Sitemapa: jedna indeksowa, dwanaście tematycznych
Bing przyjmuje sitemap index — plik, który wskazuje inne sitemapy. Na wskazuje.pl mamy jedną główną i dwanaście tematycznych: strony, muzyka, wideo, blog, news, horoskop, akademia, gry, wskrzeszalnia, pisownia, leksykon, sennik. Dlaczego rozbicie ma sens, a nie jest fanaberią: - Diagnostyka — w raporcie widać, że np. leksykon ma 96 % zaindeksowanych adresów, a gry 40 %. Przy jednym pliku widzisz tylko uśrednioną liczbę i nic z niej nie wynika. - Limity — jedna sitemapa to maks. 50 000 adresów i 50 MB. Blog rośnie najszybciej, więc lepiej, żeby rósł osobno. - Częstotliwość — Bing chętniej wraca do map, które faktycznie się zmieniają. W panelu zgłasza się tylko `https://wskazuje.pl/sitemap.xml`. Podmapy Bing odczyta sam. Dodatkowo wszystkie trzynaście adresów wymieniamy w `robots.txt` dyrektywami `Sitemap:` — to działa również dla silników, które nie mają panelu (Seznam, Yep).
3. IndexNow — indeksowanie bez czekania
Najbardziej niedoceniany protokół w SEO. IndexNow to jedno żądanie POST, którym mówisz: "te adresy się zmieniły". Powiadamia jednocześnie Bing, Yandex, Seznam, Naver i Yep — Google go nie obsługuje, ale to nie ten mecz. Jak to zrobiliśmy: 1. Wygenerowany klucz (32 znaki hex) leży jako plik tekstowy w katalogu głównym: `https://wskazuje.pl/<KLUCZ>.txt`, a jego zawartość to ten sam klucz. To całe uwierzytelnienie. 2. Skrypt `scripts/ping-indexnow.mjs` czyta wszystkie pliki `public/sitemap-*.xml` i wysyła listę adresów na `https://api.indexnow.org/IndexNow`. 3. Skrypt jest wpięty w komendę builda produkcyjnego, po prerenderze. Każda publikacja = automatyczne powiadomienie o ~925 adresach. W buildach roboczych ping jest pomijany, żeby nie zaśmiecać kolejki. Efekt: nowy wpis trafia do kolejki Binga w kilkanaście sekund od publikacji, zamiast czekać na kolejną wizytę robota (u nas historycznie 4–11 dni).
4. Answer box — to, co Copilot faktycznie cytuje
Tu jest cała różnica między SEO klasycznym a optymalizacją pod asystenta. Wyszukiwarka linkuje do strony. Copilot wycina akapit i podaje go jako odpowiedź, z przypisem. Żeby dało się coś wyciąć, musi to być samodzielny kawałek tekstu — zrozumiały bez dwóch akapitów wcześniej. Standard, który wprowadziliśmy w każdym poważnym wpisie: - H2 sformułowane jak pytanie użytkownika — "Co to jest KSeF i kogo dotyczy?", a nie "KSeF — wprowadzenie". - 40–60 słów odpowiedzi. Krócej to slogan, dłużej — model utnie w losowym miejscu. - 3–4 punkty z konkretem: liczbą, datą, progiem, kwotą. - Data "stan na …" — asystenci wyraźnie preferują treści z widoczną datą aktualizacji. - Zero odwołań w stylu "jak pisaliśmy wyżej" — cytowany fragment tego kontekstu nie zabierze. Technicznie blok jest osobnym polem w danych wpisu i renderuje się jako `<section id="krotka-odpowiedz">` nad ledem, a nie jest doklejany do treści. Dzięki temu ten sam tekst trafia do JSON-LD jako `speakable` i jako `abstract`.
5. JSON-LD: Article, BreadcrumbList, FAQPage, speakable
Bing czyta dane strukturalne dosłowniej niż Google — jeśli opiszesz treść poprawnie, częściej trafia do odpowiedzi asystenta. Nasz zestaw na wpis: - `Article` — `headline`, `datePublished`, `dateModified`, `author` (z linkiem do strony autorskiej), `image`, `abstract`. - `BreadcrumbList` — trzy poziomy: Blog → kategoria → tytuł. Bing pokazuje okruszki w wynikach częściej niż Google. - `FAQPage` — generowany automatycznie z bloków pytań w treści, bez podwójnego wpisywania tekstu. - `SpeakableSpecification` — wskazuje selektor CSS z "krótką odpowiedzią". To dosłownie mówi asystentowi: ten fragment nadaje się do przeczytania na głos. Ważne: JSON-LD generujemy z tych samych pól, z których renderujemy tekst. Ręcznie pisane dane strukturalne zawsze w końcu rozjeżdżają się z treścią — a rozjazd to sygnał spamu.
6. robots.txt otwarty na boty AI
Domyślne konfiguracje coraz częściej blokują roboty modeli językowych. To decyzja biznesowa i dla wydawcy prasowego bywa słuszna. Dla serwisu, który chce być cytowany, jest samobójcza. Nasz `robots.txt` ma osobne, przepuszczające reguły dla: `Bingbot`, `YandexBot` (z dyrektywą `Host:`), `SeznamBot`, `Yeti`, `DuckDuckBot`, `Applebot` oraz dla botów AI: `GPTBot`, `OAI-SearchBot`, `ChatGPT-User`, `PerplexityBot`, `ClaudeBot`, `Claude-SearchBot`, `Google-Extended`, `Google-CloudVertexBot`, `meta-externalagent`, `Amazonbot`, `MistralAI-User`, `DeepSeekBot`, `YouBot`. Zamknięte zostały wyłącznie strefy techniczne: `/admin`, `/auth`, `/unsubscribe`. Dodatkowo wystawiamy mapę treści dla modeli (`/llms.txt`) oraz kanały `feed.xml` i `feed.json` — tanie w utrzymaniu, a bywają jedyną drogą, którą mniejszy bot w ogóle znajdzie nowy tekst.
7. Czego Bing nie wybaczy
Lista rzeczy, które w Google przechodzą bokiem, a w Bingu kosztują widoczność: - Tytuły i opisy generowane po stronie przeglądarki. Bez prerenderu Bing zobaczy jeden tytuł na cały serwis. My prerenderujemy wszystkie trasy do statycznego HTML-a przy buildzie — to był największy pojedynczy zysk. - Duplikaty canonical. Każda trasa musi wskazywać sama na siebie. Canonical wskazujący na stronę główną kasuje podstronę z indeksu. - Wolne obrazy. Bing waży Core Web Vitals bardziej dosłownie; okładki idą jako WebP w rozmiarze docelowym, z `loading="lazy"` poza pierwszym ekranem. - Treść bez daty. Asystenci odrzucają fragmenty, których nie potrafią umiejscowić w czasie. - Sieroty w strukturze linków. Strona bez linków wewnętrznych bywa w sitemapie i mimo to nie zostaje zaindeksowana. Automatyczny audyt linków chodzi u nas po ~3800 odnośnikach i pilnuje zera błędów 404.
8. Kolejność, w której to robić
Gdyby ktoś chciał powtórzyć to na swojej stronie, sensowna kolejność jest taka: 1. Prerender albo renderowanie po stronie serwera — bez tego reszta jest kosmetyką. 2. Meta weryfikacyjne w statycznym `<head>` + publikacja. 3. "Verify" w Bing Webmaster Tools. 4. Zgłoszenie sitemapy indeksowej. 5. IndexNow w skrypcie builda. 6. Answer boxy w kilkunastu najważniejszych tekstach — nie we wszystkich naraz, zacznij od tych z realnym ruchem. 7. JSON-LD generowany z danych, nie z ręki. 8. Ręczne zgłoszenie 10–15 kluczowych adresów (URL Submission ma dzienny limit; nie warto go wyczerpywać na wszystkim). Punkty 1–5 to jedno popołudnie. Punkty 6–8 to praca ciągła. Pierwsze zmiany w raporcie widać zwykle po 7–14 dniach — indeks Binga jest po prostu wolniejszy od Google i nie da się tego przyspieszyć niczym poza IndexNow.
Psychologiczny twist
Najciekawsze w tej robocie jest to, że optymalizacja pod asystenta AI wymusza uczciwość. Pod klasyczną wyszukiwarkę opłacało się rozwlekać tekst, bo dłuższy artykuł łatwiej upychał frazy. Model językowy nie ma z czego wyciąć odpowiedzi, jeśli odpowiedzi w tekście nie ma — a rozwodnione dwa tysiące słów bez jednego konkretnego zdania są dla niego bezużyteczne. Innymi słowy: format, który wygrywa u Copilota, to dokładnie ten sam format, który szanuje czas czytającego. Pierwszy raz od lat premiowanie treści i premiowanie pozycji idą w tę samą stronę.
Chcesz zobaczyć te zasady w praktyce? Najkrótsze odpowiedzi na trudne tematy trzymamy w leksykonie pojęć, a policzalne konkrety w kalkulatorach. A jeśli wolisz posłuchać, niż czytać — muzyka DJ Kamila gra dalej.