Przejdź do treści
ARDURA Lab
ARDURA Lab
·8 min

Sitemap.xml — jak zgłosić do Google i przyspieszyć crawl [2026]

MG
Marcin Godula

CEO & Founder, ARDURA Lab

Specjalista SEO, GEO i web development z ponad 15-letnim doświadczeniem. Pomaga firmom B2B budować widoczność w wyszukiwarkach klasycznych i AI.

Sitemap.xml to mapa URL-i twojej strony dla Googlebota — pomaga z odkrywaniem, ale NIE gwarantuje indeksacji. W tym tutorialu pokazuję 4 metody zgłoszenia (GSC UI, robots.txt, IndexNow, programowe API), format lastmod, sitemap-index dla dużych stron i 7 najczęstszych błędów technicznych.

TL;DR — Sitemap.xml w Google w 6 punktach

#CoDetale
1. FormatXML, max 50k URLi lub 50 MBgzip OK
2. LokalizacjaNajczęściej /sitemap.xml w rootdowolna ścieżka, declaracja w robots.txt
3. SubmissionGSC → Sitemaps → wpisz URLdrugi: directive Sitemap: w robots.txt
4. LastmodISO 8601 (2026-05-03T20:14:00Z)sygnał świeżości — Google używa
5. Sitemap-indexDla >50k URL-i lub modułowościrekurencyjny — index linkuje do sub-sitemapów
6. LimityURL-e tylko canonical, 200 OK, bez noindexNIE wkładaj 4xx, redirectów, noindex

Zamów audyt SEO → jeśli twoja sitemap zawiera 100+ URL-i, ale Google indeksuje <30% z nich.


Czym jest sitemap.xml

Sitemap to plik XML zawierający listę URL-i strony, które właściciel chce, żeby Googlebot odkrył. To pierwsza warstwa komunikacji z wyszukiwarkami — mówi "tu jest moja strona, oto jej struktura".

Czego sitemap NIE robi

MitRzeczywistość
"Sitemap zaindeksuje moje URL-e"Sitemap pomaga z odkrywaniem, NIE z indeksacją
"Im więcej URL-i w sitemap, tym lepiej dla SEO"Lepiej 100 wartościowych URL-i niż 1000 mieszanych jakości
"Sitemap zwiększa ranking"Sitemap to sygnał neutralny, NIE ranking factor
"Po dodaniu URLu do sitemap Google scrawluje natychmiast"1-30 dni typowo, zależnie od domain authority

Czego sitemap ROBI

  1. Odkrywanie URL-i — Google nie musi crawlować całej strony przez internal links, sitemap podaje URL-e bezpośrednio
  2. Sygnał świeżościlastmod informuje Google, że URL został zaktualizowany
  3. Priorytet (deklaratywny)priority to sugestia (od 0.0 do 1.0), Google traktuje ją jako wskazówkę, nie command
  4. Hreflang dla multilingual — sitemap z xhtml:link dla każdej wersji językowej to najczystszy sposób deklarowania alternates
  5. Diagnostyka w GSC — Sitemaps → status sitemap pokazuje liczbę URL-i submitted vs indexed

4 metody zgłoszenia sitemap

Metoda 1: Google Search Console UI (najczęstsza)

  1. Otwórz search.google.com/search-console
  2. Wybierz property
  3. W lewym menu: Sitemaps
  4. Wpisz URL sitemap (najczęściej /sitemap.xml) i kliknij Submit
  5. Odczekaj 1-7 dni, sprawdź status: "Success" lub "Couldn't fetch"

Plusy: najprostsze. Minusy: manualnie, jednokrotnie. Po pierwszym zgłoszeniu Google sam wraca do sitemap.

Metoda 2: Robots.txt directive (backup)

W pliku robots.txt w root domeny:

User-Agent: *
Allow: /

Sitemap: https://arduralab.com/sitemap.xml
Sitemap: https://arduralab.com/blog-sitemap.xml

Plusy: auto-discovery. Każdy bot (nie tylko Googlebot) może ją znaleźć — Bingbot, ApplebotChatbots, etc. Minusy: sam directive nie jest "submission" — Google sam musi zauważyć robots.txt zmiany.

Metoda 3: Ping endpoint (DEPRECATED — NIE używaj!)

Klasyczna metoda przed 2023:

https://www.google.com/ping?sitemap=https://twoja-domena.pl/sitemap.xml

Status: WYCOFANY w czerwcu 2023. Google ogłosił że ping endpoint został wyłączony. Wciąż widzisz to w starych tutorialach — ignoruj. Używaj GSC UI lub robots.txt directive.

Metoda 4: IndexNow (Bing/Yandex, Google testuje)

IndexNow to push-based protokół:

POST https://api.indexnow.org/indexnow
Content-Type: application/json

{
  "host": "twoja-domena.pl",
  "key": "abc123def456",
  "urlList": [
    "https://twoja-domena.pl/blog/post-1",
    "https://twoja-domena.pl/blog/post-2"
  ]
}

Wymaga pliku https://twoja-domena.pl/abc123def456.txt z zawartością abc123def456 (autoryzacja przez plik).

Status: Bing + Yandex pełna obsługa. Cloudflare ma natywną integrację (Cloudflare Apps). Google testuje, status na 2026: niezadeklarowane wsparcie. Praktyka: używaj komplementarnie do sitemap dla Bing.


Format sitemap.xml — przykład

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://arduralab.com/blog/seo-roadmap-2026-2027</loc>
    <lastmod>2026-05-01T10:30:00+02:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="pl" href="https://arduralab.com/blog/seo-roadmap-2026-2027"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://arduralab.com/en/blog/seo-roadmap-2026-2027"/>
  </url>
</urlset>

Pola — co liczy się dla Google

PoleCzy używane?Notatka
loc✅ ZAWSZEURL canonical, 200 OK
lastmod✅ TAKGoogle używa do crawl scheduling
changefreq⚠️ LimitGoogle traktuje jako wskazówkę, nie hard rule
priority⚠️ LimitGoogle ignoruje od 2017 (oficjalnie)
xhtml:link✅ TAKHreflang — najczystsza metoda

Wniosek praktyczny: loc + lastmod + ewentualnie xhtml:link dla hreflang. Pomijaj changefreq i priority — generujesz tylko noise.


Sitemap-index dla dużych stron

Limity standardowego sitemap

  • 50 000 URL-i max
  • 50 MB max (przed kompresją gzip — z gzip można 200+ MB)

Struktura sitemap-index

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://arduralab.com/sitemap-blog.xml</loc>
    <lastmod>2026-05-03</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://arduralab.com/sitemap-services.xml</loc>
    <lastmod>2026-05-01</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://arduralab.com/sitemap-glossary.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
</sitemapindex>

Kiedy używać sitemap-index

  • ✅ >50k URL-i (forced)
  • ✅ Multi-section strony (blog, sklep, słownik) — modularność ułatwia debug
  • ✅ E-commerce z wieloma kategoriami — osobne sitemap per kategoria
  • ❌ Mała strona <500 URL-i — niepotrzebna abstraction

Sitemap-index w Next.js / Astro

Większość frameworków auto-generuje sitemap-index przy build:

  • Next.js 16: built-in sitemap.ts z generateSitemaps exports → multiple sub-sitemaps
  • Astro 5: @astrojs/sitemap integration auto-tworzy index dla >5k URL-i

7 najczęstszych błędów (i jak naprawić)

1. URL-e z noindex w sitemap

Problem: Sitemap mówi "to ważne", noindex mówi "nie indeksuj". Sprzeczny sygnał, Google ignoruje.

Fix: Filtr w generatorze sitemap — wykluczaj URL-e z noindex w <meta name="robots">. Sprawdź przez curl -s URL | grep "noindex".

2. URL-e 4xx/5xx w sitemap

Problem: Sitemap zawiera URL-e zwracające 404 (usunięte), 410 (gone) lub 500.

Fix: Pre-deploy validator — sprawdza status HTTP każdego URL-u w sitemap. Skrypt:

while read url; do
  status=$(curl -o /dev/null -s -w "%{http_code}" "$url")
  echo "$status $url"
done < <(curl -s https://twoja-domena.pl/sitemap.xml | grep -oP '(?<=<loc>)[^<]+')

3. Stale lastmod (zawsze ten sam)

Problem: lastmod jest aktualizowany przy każdym deployu na ten sam timestamp dla wszystkich URL-i, mimo że tylko 5 zostało zmienionych.

Fix: Lastmod per URL z prawdziwym czasem ostatniej zmiany contentu. Frameworki: Next.js → git log --format=%aI -1 -- file.mdx, Astro → import.meta.glob z eager + filesystem mtime.

4. Sitemap >50 MB bez gzip

Problem: Plik się dziurawi, Google odmawia parsowania.

Fix: Skompresuj do sitemap.xml.gz (Cloudflare/CDN robi auto). Zrestartuj sub-sitemapy do <50k URL-i.

5. Brak hreflang w sitemap multilingual

Problem: Strona PL+EN, ale każdy URL ma własny sitemap entry bez xhtml:link — Google nie wie, że są wersjami siebie.

Fix: Każdy URL w sitemap musi mieć xhtml:link dla każdej wersji językowej (włącznie z self-reference). Generator sitemap musi to robić.

6. Linki canonical sprzeczne z sitemap

Problem: Sitemap zawiera URL_A, ale strona ma <link rel="canonical" href="URL_B">. Google ufa canonical, ignoruje sitemap entry.

Fix: Sitemap zawsze zawiera canonical URL — nie variant. Audyt: curl -s URL | grep canonical — porównaj z URL w sitemap.

7. Sitemap nie odświeża się przy deploy

Problem: Sitemap jest cache'owany 24h+ przez CDN. Po deployu nowych blogów Google widzi stary sitemap.

Fix: Cache control header dla sitemap = max-age=300 (5 min). Cloudflare: Page Rules → URL pattern */sitemap* → Cache Level: Bypass.


Jak monitorować skuteczność sitemap

W GSC Sitemaps tab

  • Discovered — Google zauważył sitemap (czas: 1-7 dni)
  • Submitted — Google przyjął URLe z sitemap do crawl queue
  • Indexed (osobno w Coverage) — ile URLi z sitemap faktycznie zaindeksowane

Hard truth: dla świeżych domen typowo 10-30% URLi z sitemap zostaje zindeksowane w pierwszym kwartale. Dla domen z DR 30+ — 60-80%.

W GSC Coverage Report

  • Submitted and indexed — sitemap się sprawdza
  • Submitted, currently not indexed — Google zauważył ale zdecydował nie indeksować (najczęstszy stan dla nowych domen)
  • Discovered, currently not indexed — Google znalazł ale jeszcze nie scrawlował (crawl budget issue)

Jeśli >50% URL-i wpada w "Discovered, not indexed" — masz crawl budget problem. Rozważ Indexing API jako force-crawl.


FAQ — najczęstsze pytania

Czy mogę mieć kilka sitemap dla tej samej property?

Tak. Możesz zgłosić wiele sitemap niezależnie — sitemap.xml, blog-sitemap.xml, news-sitemap.xml. Najprościej jednak — sitemap-index linkujący do wszystkich. Limit per property w GSC: 500 sitemap.

Co z <image:image> i <video:video>?

Specjalne extensions sitemap dla obrazów i video. Używaj jeśli masz dużo unikalnego image content (e-commerce, gallery sites) lub video. Dla typowego bloga — opcjonalne, mały impact.

Czy sitemap zastępuje sitemap.xml dla AI crawlerów?

Nie. AI crawlerzy (GPTBot, ClaudeBot, PerplexityBot) używają llms.txt i llms-full.txt jako swojego "sitemap". Sitemap.xml + llms.txt to komplementarne — pierwszy dla wyszukiwarek, drugi dla LLM-ów.

Jak długo trzymać 301 redirecty w sitemap?

Krótko (1-3 mies.). Po deployu nowych URL-i, dodaj 301 source URLs do sitemap, żeby Google szybko zauważył redirect. Po 1-3 mies. usuń je — niepotrzebne wpisy zaśmiecają.

Czy sitemap musi być statyczny czy może być generowany dynamicznie?

Może być dynamiczny (np. Next.js sitemap.ts, Astro plugin), ale ważne: musi być cacheable + stabilne. Nie generuj różnej treści za każdym requestem (Google wykryje i ignoruje).

Co to jest priority i czy ją używać?

priority w sitemap (0.0-1.0) to wartość deklaratywna. Google ogłosił w 2017, że ignoruje to pole. Pozostaw default (0.5) lub usuń całkiem.


Co dalej

  1. Sprawdź swoją sitemap terazcurl -s https://twoja-domena.pl/sitemap.xml | head -20 i policz URL-e: curl -s ... | grep -c "<loc>"
  2. Audyt 7 błędów — przejdź checklist powyżej i napraw każdy znaleziony
  3. Zgłoś przez GSC jeśli jeszcze nie zgłoszone
  4. Czytaj dalej:

Zamów audyt SEO

Sitemap zawiera 100+ URL-i, ale Google indeksuje <30% z nich? Zamów audyt SEO → — sprawdzimy 7 najczęstszych przyczyn (canonical, noindex, thin content, crawl budget) i wdrożymy strategię force-indexowania.

Pojęcia z tego artykułu

Potrzebujesz pomocy z tym tematem?

Zamów bezpłatny audyt i dowiedz się, jak możemy pomóc Twojej firmie rosnąć w internecie.

Bezpłatna wycena