Semantics.rs
Semantics.rs/SEO/Schema markup
Strukturirani podaci

Schema markup: poveži stvarne entitete, ne izmišljaj signal.

JSON-LD daje eksplicitne informacije o sadržaju stranice i može omogućiti određene rich results. Ne garantuje rangiranje, a markup koji nije usklađen sa vidljivim sadržajem može biti ignorisan.

Da li mora da postoji samo jedan script blok?

Schema.org dozvoljava više blokova, a Google može da obradi podržane formate. Jedan kohezivan @graph je ovde izabran kao pravilo održavanja: lakše je pratiti stabilne @id veze i sprečiti duplikate. To nije objavljeni Google ranking zahtev.

Koje čvorove povezujemo?

Tipovi i funkcija
ČvorKada je opravdanTipična veza
OrganizationStvarna organizacija je vidljiva na sajtupublisher, provider
Person/ProfilePageAutor je identifikovan i ima vidljivu biografijuauthor, mainEntity
WebPage/ArticleStranica i članak imaju različite ulogemainEntityOfPage
ServiceUsluga je stvarno opisana i dostupnaprovider, areaServed
BreadcrumbListPostoji jasna hijerarhija URL-aWebPage.breadcrumb
Dijagram JSON-LD grafa: Organization, WebSite, WebPage, Article, Person, BreadcrumbList i ImageObject povezani strelicama publisher, isPartOf, mainEntity, mainEntityOfPage, author, breadcrumb i logo
Isti čvorovi iz tabele, prikazani kao graf — svaka strelica je referenca na stabilan @id, a ne ponovljen objekat.

Koja su tri najvažnija pravila?

  1. Markup opisuje sadržaj stranice na kojoj se nalazi.
  2. Ne dodaj cenu, ocenu, autora, sliku ili identitet koji nisu stvarni i proverljivi.
  3. Validiraj sintaksu Schema Markup Validatorom i podobnost Rich Results Testom za podržane tipove.

Kako izgleda kohezivan graf u praksi?

Umesto da svaki blok ponavlja iste podatke o organizaciji, jedan @graph definiše svaki entitet tačno jednom i sve ostale reference vodi preko stabilnog @id.

Razlika je najlakše vidljiva na primeru. Ovo je čest obrazac koji stvara duplikate:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "publisher": {
    "@type": "Organization",
    "name": "Precise Search SEO",
    "logo": "https://primer.rs/logo.png"
  }
}

Ako se isti objekat ponovi na svakoj stranici, svaka kopija je zaseban, nepovezan opis. Kada se jedan podatak promeni, menjaš ga na svim stranicama i lako propustiš neku. Kohezivna verzija izgleda ovako:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://primer.rs/#organization",
      "name": "Precise Search SEO",
      "url": "https://primer.rs/",
      "logo": { "@id": "https://primer.rs/#logo" }
    },
    {
      "@type": "ImageObject",
      "@id": "https://primer.rs/#logo",
      "contentUrl": "https://primer.rs/logo.png",
      "width": 512,
      "height": 512
    },
    {
      "@type": "Article",
      "@id": "https://primer.rs/tekst/#article",
      "headline": "Naslov teksta",
      "publisher": { "@id": "https://primer.rs/#organization" },
      "mainEntityOfPage": { "@id": "https://primer.rs/tekst/#webpage" }
    }
  ]
}

Organizacija je opisana jednom. Logo je pun ImageObject sa dimenzijama, a ne goli URL. Članak je vezan za stranicu i za izdavača referencom, ne kopijom.

Kako se pišu identifikatori?

@id mora biti apsolutan URL sa fragmentom koji se nikada ne menja. Fragment je naziv uloge, ne naziv sadržaja.

Konvencija imenovanja koju koristimo
EntitetObrazacZašto tako
Organizacijahttps://domen.rs/#organizationPostoji jednom za ceo sajt, pa stoji na korenu
Sajthttps://domen.rs/#websiteIsto, jedan po domenu
Stranicahttps://domen.rs/putanja/#webpageVezan za konkretan URL
Članakhttps://domen.rs/putanja/#articleOdvojen od stranice jer ima drugu ulogu
Slikahttps://domen.rs/putanja/#img-opisSufiks razlikuje više slika na istoj stranici

Fragment ne sme da sadrži datum, verziju ni naslov. #article-2026-avgust se raspada čim se tekst ažurira, a svaka promena @id vrednosti prekida sve reference koje na nju pokazuju.

Koje greške najčešće srećemo?

Česte greške i njihova posledica
GreškaPosledicaIspravka
Markup opisuje sadržaj koji nije vidljiv na straniciGoogle može da ignoriše markup ili primeni meruUkloni sve što korisnik ne vidi
aggregateRating bez stvarnih recenzijaKršenje smernica za strukturirane podatkeIzostavi dok recenzije ne postoje
Isti @id na dve različite straniceDva dokumenta tvrde da su isti entitetVezuj @id za kanonski URL stranice
image kao goli stringGubi se dimenzija, licenca i autorstvoKoristi pun ImageObject čvor
FAQ schema bez vidljivog FAQ-aNeusklađenost markupa i sadržajaOznačavaj samo pitanja koja stvarno stoje na stranici
Više blokova koji opisuju istu organizacijuKonfliktni podaci o istom entitetuSpoji u jedan @graph

Čime se proverava?

  1. Schema Markup Validator za sintaksu i strukturu grafa. Prijavljuje greške koje Google ne mora prijaviti.
  2. Rich Results Test za podobnost konkretnih prikaza. Podobnost nije garancija prikaza.
  3. Izveštaji u Search Console-u za stanje na celom sajtu tokom vremena.
  4. Ručna provera da li svaki podatak u markupu postoji i u vidljivom sadržaju. Ovaj korak alati ne rade umesto tebe.

Redosled je bitan: validator prvi, jer greška u sintaksi znači da ostali alati čitaju nepotpun graf i daju obmanjujuće rezultate.

Koji tipovi se najčešće koriste i kada?

Tip biraš prema onome što stranica stvarno jeste, ne prema tome koji prikaz bi želeo. Pogrešan tip je češći problem od nedostajućeg tipa.

Tipovi koje najčešće implementiramo
TipKada je opravdanObavezno uz njega
LocalBusinessPostoji fizička lokacija koju posetilac može da poseti ili pozoveaddress, telephone, openingHoursSpecification
ProductKonkretan proizvod sa cenom i dostupnošćuoffers sa price, priceCurrency, availability
ServiceUsluga koja se pruža, bez inventara i zalihaprovider, areaServed, serviceType
HowToPostupak sa jasnim koracima koje korisnik izvodistep kao niz HowToStep čvorova
EventDogađaj sa datumom i mestomstartDate, location, eventAttendanceMode
JobPostingAktivan oglas za posaodatePosted, validThrough, hiringOrganization
DatasetSkup podataka koji se može preuzeti ili pretraživatidistribution, license, creator

Najčešća greška u ovoj tabeli je Product na stranici koja opisuje uslugu. Ako nema zaliha, isporuke ni povraćaja, to je Service. Druga česta greška je LocalBusiness na sajtu bez fizičke lokacije — agregator ili onlajn usluga tu ne pripadaju.

Kako se entitet povezuje sa spoljnim izvorima?

sameAs povezuje tvoj entitet sa njegovim opisom na izvorima koje pretraživač već poznaje. To je najdirektniji način da kažeš „ovaj entitet je onaj entitet“, umesto da se osloniš na podudaranje imena.

Podudaranje po imenu je nepouzdano. „Precise Search SEO“ je jedinstveno, ali „Novi Taxi“ ili „Delta“ nisu. Kada postoji stabilan spoljni identifikator, veza prestaje da bude pogađanje.

{
  "@type": "Organization",
  "@id": "https://primer.rs/#organization",
  "name": "Primer d.o.o.",
  "sameAs": [
    "https://www.wikidata.org/wiki/Q00000000",
    "https://sr.wikipedia.org/wiki/Primer",
    "https://www.linkedin.com/company/primer",
    "https://www.crunchbase.com/organization/primer"
  ]
}
Koji izvori nose koliko težine
IzvorUloga
WikidataNajjači, jer je mašinski čitljiv i ima stabilan identifikator
WikipediaJak, ali zavisi od uređivačkih kriterijuma za značajnost
Zvanični registri i bazeKorisni za pravna lica; potvrđuju postojanje entiteta
Profili na društvenim mrežamaSlabiji, ali korisni kada jačih izvora nema

Ograničenje: sameAs ne stvara entitet u Google Knowledge Graph-u i ne garantuje panel. On povezuje ono što već postoji. Navođenje profila koji ne pripada tvojoj organizaciji je netačan podatak, ne prečica.

Za autore važi isto načelo, ali sa dodatnom obavezom: Person čvor ima smisla samo kada autor ima vidljivu biografiju na sajtu i proverljivo prisustvo van njega. Na ovom sajtu smo iz tog razloga uklonili Person čvor i sve atribucije vezali za organizaciju — jedan proverljiv entitet je jači od dva slaba.

Šta kada isti entitet postoji na više domena?

Jedan entitet mora imati jedan primarni @id, na domenu koji je njegov kanonski dom. Ostali domeni ga referenciraju tim istim identifikatorom umesto da definišu sopstvenu kopiju.

Situacija je česta: agencija ima sajt, klijentski projekat, i profil na platformi treće strane. Ako svaki od njih definiše sopstveni Organization čvor sa sopstvenim @id, nastaju tri entiteta umesto jednog.

// Na sekundarnom domenu — referenca, ne nova definicija
{
  "@type": "WebPage",
  "@id": "https://drugi-domen.rs/stranica/#webpage",
  "publisher": { "@id": "https://primarni-domen.rs/#organization" }
}

Uz to, oba domena treba da navedu jedan drugog u sameAs listi primarnog entiteta. Time je veza dvosmerna i ne oslanja se na to da pretraživač sam poveže dva imena.

Manje poznati tipovi koje vredi znati

Tipovi za posebne slučajeve
Tip ili svojstvoČemu služiNapomena
speakableOznačava delove teksta pogodne za glasovno čitanjeGoogle ga podržava ograničeno i uglavnom za vesti; ne očekuj širok efekat
ImageObject sa licensePodobnost za oznaku licenciranja u Google ImagesTraži i acquireLicensePage
QAPageStranica sa jednim pitanjem i korisničkim odgovorimaNije isto što i FAQPage; meša se najčešće
ItemListUređena lista stranica ili proizvodaPozicije moraju biti uzastopne, bez rupa
WebSite sa potentialActionPrijava pretrage unutar sajtaPrikaz je u potpunosti na Google-u

Razlika između FAQPage i QAPage je česta greška. FAQPage je za pitanja na koja odgovara vlasnik sajta. QAPage je za stranicu sa jednim korisničkim pitanjem i više korisničkih odgovora, kakav je forum. Upotreba pogrešnog tipa znači da markup opisuje nešto što stranica nije.

Redosled implementacije na novom sajtu

  1. Organizacija i sajt. Dva čvora sa stabilnim @id na korenu domena. Sve ostalo se kasnije vezuje za njih.
  2. Logo kao pun ImageObject sa dimenzijama, ne kao string.
  3. Stranica i članak po dokumentu, sa mainEntityOfPage vezom u oba smera.
  4. Putanja kao BreadcrumbList sa uzastopnim pozicijama.
  5. Tip specifičan za posaoService, Product ili LocalBusiness, tek kada su prethodna četiri stabilna.
  6. sameAs veze na kraju, kada spoljni profili stvarno postoje.
  7. FAQ i slike samo tamo gde vidljiv sadržaj postoji.

Redosled nije proizvoljan. Svaki korak referencira prethodni, pa preskakanje znači da ćeš kasnije menjati @id vrednosti — a svaka takva promena prekida veze koje na njih pokazuju.

Česta pitanja

Da li schema markup podiže poziciju?

Google ga koristi da bolje razume sadržaj i za podobnost određenih rich-result prikaza. Podobnost nije garancija prikaza, a direktan ranking efekat nije dokumentovan.

Šta se dešava ako markup opisuje nešto što nije vidljivo na stranici?

Google može da ignoriše takav markup, a u ozbiljnijim slučajevima da primeni ručnu meru. Pravilo je da svaki podatak u markupu postoji i u vidljivom sadržaju.

Da li smem da dodam aggregateRating ako nemam recenzije?

Ne. Ocena bez stvarnih, proverljivih recenzija krši Google smernice za strukturirane podatke. Izostavi taj čvor dok recenzije ne postoje.

Koliko script blokova sme da bude na stranici?

Schema.org dozvoljava više blokova i Google ih obrađuje. Jedan kohezivan @graph je naš izbor zbog održavanja — lakše je pratiti @id veze i sprečiti duplikate.

Primarni izvori: Google uvod u structured data, opšte smernice i Schema.org.