Praktičan vodič kroz tehnički SEO audit uz Semalt (zagrebački kontekst)

Ukratko — za 30 sekundi
  • Većina auditâ su 400-stranični PDF-ovi koje nitko ne obradi. Semaltov output je trijažirana lista rangirana po izgubljenom prometu.
  • 3 kategorije problema čine ~70 % stvarnog gubitka prometa na hrvatskim site-ovima: canonicali, sadržaj samo iz JS-a i hreflang.
  • Site s 4.000 URL-ova (JS-heavy) obiđe se za ~10 minuta. Nalazi se izvoze direktno u Jira/Linear tikete.
  • Recrawl na zahtjev potvrđuje popravke u minutama, ne u sljedećem tjednom skenu.

Tehnički SEO audit je koristan samo ako izvještaj netko doista provede u djelo. Zvuči očito. U praksi, većina alata za audit proizvodi output koji ostane netaknut na nečijem desktopu do sljedeće kvartalne revizije — jer je izvještaj pisan za auditore, ne za programere. Ovo je praktičan vodič kako naš zagrebački tim vodi tehničke audite koristeći Semaltov audit modul.

Zašto standardni audit izvještaji umiru u sandučiću

Dajte zagrebačkom developeru 400-stranični audit PDF s 3.000 flagiranih problema i događa se jedno od dva: ignorira ga u potpunosti, ili odabere pet najlakših stavki, popravi ih u petak popodne i vrati se na produktne tikete. U oba slučaja pravi problemi s prometom ostaju neriješeni. Krivac nije programer — nego format izvještaja. Auditi koji sve stavke tretiraju kao jednako važne proizvode dokument iz kojeg se ne može prioritetizirati.

Koristan audit radi tri stvari koje loš ne radi. Odvaja probleme koji danas gube promet od onih koji bi mogli hipotetski biti problematični. Grupira srodne kvarove po korijenskom uzroku — jedan slomljen template koji utječe na 500 URL-ova je jedan tiket, ne 500. I predstavlja skraćenu listu u obliku koji engineering može provesti u djelo. Semaltov audit modul je 2025. prepisan upravo oko tog okvira.

⚡ Signal prioriteta: u naših zadnjih 15 angažmana u Zagrebu, ~70 % stvarnog gubitka prometa vezano je uz samo tri kategorije problema — slomljene canonicale, sadržaj koji se generira samo kroz JavaScript i hreflang reciprocitet. Sve ostalo skupa čini preostalih 30 %.

Sprint u četiri koraka

1
CRAWL
Usmjerite Semalt na svoju domenu. ~10 min za site s 4K URL-ova.
2
TRIAŽA
Output u 5 kategorija: Kritično → Ozbiljno → Umjereno → Manje → OK.
3
SHIP
Izvoz u Jira/Linear. Programeri procesiraju "tikete", ne "SEO zahtjeve".
4
VERIFIKACIJA
Recrawl na zahtjev potvrđuje popravak u par minuta.

Kako se crawler ponaša ispod haube

Nekoliko detalja koji se u praksi pokažu važnima. Crawler poštuje robots.txt, ali istovremeno prijavi što bi bio našao da pravila nema — pa se odmah vidi je li neko pravilo blokiralo više nego što je autor namjeravao. Brzina obilaska prilagođava se odzivu poslužitelja, tako da audit na skromnom shared hostingu ne obori stranicu usred radnog dana.

Svaki se URL obilazi dvaput: jednom kao sirovi HTML, jednom nakon izvršavanja JavaScripta. Usporedba tih dvaju prolaza je mjesto na kojem ispliva sadržaj koji postoji samo za posjetitelja, ali ne i za indeks. Za stranice rađene na modernim okvirima to je najčešći uzrok razlike između „kod nas izgleda dobro" i „ne rangira se".

Rezultat se ne isporučuje kao PDF nego kao lista koja se može filtrirati i izvesti — jer audit koji završi kao dokument u mailu obično i ostane dokument u mailu.

Semaltov crawler je flota headless Chromium instanci raspoređenih po regionalnim edge lokacijama. EU promet se opslužuje s frankfurtskog POP-a, što je bitno za latency-osjetljivo izvršavanje JavaScripta na hrvatskim stranicama koje su hostane u regiji (T-Com, Iskon, A1 DC-ovi). Poštuje robots.txt, izvršava JavaScript prije parsiranja DOM-a i točno rukuje dijakritikom u hrvatskim slugovima — provjera koju većina zapadnih alata potpuno preskače.

Jedanaest provjera koje prve otvaramo

# Provjera Ozbiljnost Učestalost (HR site-ovi)
1Sitemap vs. indeksirani URL countKritično72 %
2Integritet canonicalaKritično58 %
3Lanci preusmjeravanja > 2Ozbiljno47 %
4Hreflang reciprocitet (HR/EN)Kritično44 %
5Core Web Vitals (real user)Ozbiljno63 %
6JS render vs. HTML diffKritično42 %
7Valjanost structured dataUmjereno80 %
8Slomljeni interni linkoviOzbiljno55 %
9Duplikati title/meta obrascaUmjereno68 %
10Težina slika i format (WebP/AVIF)Ozbiljno81 %
11HTTPS & sigurnosni headeriUmjereno87 %

Tri provjere u koje se stvarno isplati zaroniti

Tri od njih razlažemo u sljedećem poglavlju jer se na njima gubi najviše prometa. Ostale su kraće, ali ih ne preskačemo:

  • Sitemap vs. stvarna indeksacija. Najkorisnija rana provjera: slaže li se broj URL-ova u XML sitemapu s onim što Google stvarno drži u indeksu i s onim što crawler nađe. Nesklad na tri strane odmah pokaže o kojoj je vrsti problema riječ — sitemap koji zaostaje za sadržajem, stranice koje se ne indeksiraju, ili URL-ovi koje nitko nije htio objaviti.
  • Lanci preusmjeravanja. Jedan 301 je u redu. Tri skoka su skupa. Pet je bug. Prikaz lanaca kao stabla zvuči kao trivijalnost dok ne vidite petlju koja uključuje tri poddomene i staru migraciju s www na bez-www.
  • Hreflang reciprocitet. Za stranice koje poslužuju hrvatsko i englesko tržište, hreflang je tihi ubojica međunarodnih pozicija. Provjera mora biti dvosmjerna: ne samo pokazuje li HR stranica na EN, nego pokazuje li EN natrag na HR, i vraćaju li obje adrese status 200. Jednosmjerni hreflang Google jednostavno ignorira.
  • Core Web Vitals iz stvarnih mjerenja. Gdje postoji dovoljno prometa, uzimaju se terenski podaci stvarnih posjetitelja, a ne samo sintetički Lighthouse test. Razlika je velika na hrvatskim mobilnim mrežama izvan centra grada.
  • Valjanost strukturiranih podataka. Nije pitanje samo „ima li JSON-LD" nego „prolazi li specifikaciju i uvjete za rich results". Stranica može imati formalno ispravnu schemu koja ipak nije prihvatljiva za prikaz u rezultatima.
  • Slomljeni interni linkovi, po mjestu. Očito, ali se preskače. Razlikuje se link slomljen u navigaciji — vidljiv na svakoj stranici, visok prioritet — od onog u starom članku iz bloga.
  • Duplikati naslova i opisa, grupirani po obrascu. Umjesto sirovog broja, duplikati se grupiraju. Ako četrdeset stranica proizvoda dijeli isti naslov, to je jedan tiket („predložak ne ubacuje naziv proizvoda"), a ne četrdeset.
  • Težina slika i moderni formati. Slike ostaju najčešći uzrok lošeg LCP-a na hrvatskim SME stranicama. Izvještaj daje ukupnu težinu, udio u WebP/AVIF formatu i popis konkretnih datoteka koje najviše koštaju.
  • HTTPS i sigurnosni headeri. Nije faktor rangiranja u klasičnom smislu, ali jest pitanje povjerenja: HSTS, CSP i upozorenja o miješanom sadržaju izlaze ovdje.

Integritet canonicala — problem koji se krije na vidiku

Svaka stranica trebala bi deklarirati točno jedan canonical URL koji pokazuje na stvarno indeksabilnu verziju. Četiri obrasca kvara česta su na hrvatskim site-ovima: canonical nedostaje, pokazuje na 404, pokazuje na redirect lanac, ili prelazi protocol/subdomain granicu (HTTPS stranice koje canonicaliziraju na HTTP verzije). Zadnja je najčešća posljedica migracija s WordPress-a na headless setup — ljudsko oko je ne vidi, ali Google se ponaša kao da je nema.

JS render diff — tihi ubojica modernog site-a

Moderne React/Vue/Next.js stranice često isporučuju prazan HTML skelet u prvom crawl-u i popune sadržaj tek nakon JS izvršavanja. Googlebot renderira JS na odgođenom drugom prolazu — što znači da svježi sadržaj (nova pravna klauzula, nova akcijska cijena) ulazi u indeks kasnije. Semaltov audit obilazi svaki URL dvaput (sirovi HTML pa renderirani) i flagira sve što se pojavljuje samo u drugom prolazu.

Hreflang reciprocitet — zamka multi-region setupa

Za site-ove koji poslužuju hrvatsku i englesku verziju (ili HR/EN/DE), hreflang greške tiho koštaju rejtinga u sekundarnim tržištima. Semaltova provjera je dvosmjerna — ne samo je li vaša HR stranica deklarirala EN alternate, nego provjerava reciprocira li EN stranica. Slomljeni reciprocitet je hreflang kvar #1 na hrvatskim multi-language site-ovima.

Predaja outputa engineeringu

Gap između "napravili smo audit" i "popravci su isporučeni" mjesto je gdje se većina angažmana raspada. Semalt to zatvara s tri paralelna izvoza: CSV za SEO tim, Jira/Linear tiket batch za engineering, i plain-text executive summary za klijenta. Svaki tiket sadrži: pogođene URL-ove, reprodukcijske korake, predloženi fix, procijenjeni traffic-at-risk, i linkan diff view koji točno pokazuje što je crawler vidio.

Petlja recrawl-and-verify

Isporučiti popravak bez potvrde da je landao — tako "popravljene" bugove tiho vraćate u sljedećem deploy-u. Semalt podržava on-demand recrawl specifičnih URL-ova — ne čekate sljedeći puni tjedni obilazak. Push canonical fix-a, klik na "verify", potvrda unutar dvije minute da crawler sada vidi očekivanu vrijednost.

Predaudit checklist

robots.txt dozvoljava crawler user-agent
Semalt IP-ovi whitelistani u WAF-u (Cloudflare, ZgSecurity)
Search Console povezana (HR + EN property)
GA4 povezan za oba stream-a
Crawl rate postavljen (10 rps default)
A/B eksperimenti isključeni za crawler UA

“Na hrvatskim site-ovima najčešće se propušta canonical koji pokazuje na URL koji je sam blokiran u robots.txt ili označen noindex. Google slijedi canonical, nailazi na stranicu koju ne može indeksirati, i izbacuje obje iz indeksa.”

— iz našeg internog audit playbook-a
🎯 Ključni take-away

"Popravljen" problem koji nije re-verificiran vratit će se u sljedećem deploy-u. Uska recrawl petlja pretvara SEO iz projekta u disciplinu.

Što audit ne pokriva

Semaltov audit je alat na razini stranice i site-a. Nije analizator server logova — enterprise crawl-budget rad i dalje zahtijeva namjenski log analyser. Ne zamjenjuje ručnu QA kritičnih user journey-a, posebno checkout flow-ova s hrvatskim IBAN validacijom. I ne auditira zasebno AMP verziju.

Česta pitanja

Hvata li audit promjene sadržaja koji ubacuje JavaScript?

Hvata, ali s ogradom koja je bitna: snima stanje renderiranog sadržaja u trenutku obilaska. Ako se vaš JavaScript ponaša različito ovisno o A/B eksperimentu ili o tome je li posjetitelj prijavljen, audit vidi jednu konkretnu varijantu. Za stranice na kojima se testira više varijanti istovremeno vrijedi pokrenuti obilazak zasebno za svaku, ili barem provjeriti koju je varijantu crawler dobio prije nego što se nalaz proglasi bugom.

Koliko dugo traje da se nalazi pretvore u stvarne popravke?

Ovisi gotovo isključivo o tome tko ih preuzima. Kad nalazi odu izravno u Jira ili Linear s prioritetom izračunatim po ugroženom prometu, kod naših zagrebačkih klijenata prvi krug kritičnih stavki bude zatvoren u dva do tri tjedna. Kad audit završi kao PDF u privitku, prosjek je — po iskustvu — nikad. Razlika nije u kvaliteti nalaza nego u tome je li netko imenovan kao vlasnik svake stavke.

Koliko često raditi recrawl?

Puni site: tjedno za aktivno mijenjajuće (portal, e-commerce katalog), dvotjedno za stabilan brand site. Target recrawl nakon popravka: odmah pa još jednom nakon 48 sati kad se cache stabilizira.

Kakav crawl rate je siguran?

Semalt default je ~5 rps. Za normalan site iza Cloudflare WAF-a, 10–15 rps je sigurno i 2–3× brže. Za site-ove iza agresivne bot mitigacije (bankarski, zdravstveni sektor, neke portale iz Sesveta), whitelistirajte crawler IP raspon.

Rukuje li audit ispravno hrvatskim dijakritikom?

Da. Slugovi s "č/ć/š/ž/đ", URL enkoding, i Arial/Roboto font subsetting za latin-ext — sve se validira. Gdje zapadni alati tretiraju hrvatski kao nečitljiv ili tiho preskaču, Semalt renderira i analizira ispravno.

Kako se nose s nalazima koje ne možemo popraviti?

Označite ih kao "accepted risk" s pisanim opravdanjem. Nalaz ostaje u izvještaju kako bi budući tim znao da je razmatran, ali pada iz aktivnog work-queue-a.

Koja se provjera najviše propušta na hrvatskim site-ovima?

Konzistentno: canonical koji pokazuje na non-indeksabilan URL. Skoro nijedan drugi audit alat ne odvaja to od generičkih canonical upozorenja.

Pokretanje na vlastitom site-u

Audit modul je dostupan u besplatnoj razini Semalta za jednu domenu. Prijavite se i usmjerite ga na svoju početnu. U roku od petnaest minuta imat ćete prioritetiziranu listu onoga što stvarno gubite prometa. Hoćete li to popraviti sami, prepustiti razvojnom timu ili pozvati nas u zagrebački remediation sprint — drugo pitanje. Dijagnoza je nužan prvi korak.

Poanta je disciplina

Dobar tehnički audit nije jednokratni događaj. To je navika. Naši zagrebački klijenti dobivaju puni recrawl tjedno, diff izvještaj mjesečno i state-of-the-site pregled kvartalno. Taj ritam — koji je omogućen tim što jedna platforma radi u pozadini — sprječava tiho gomilanje tehničkog duga između marketinških kampanja.