Articol Marketing

Schema markup pentru firme mici - ghid JSON-LD pas cu pas

Ilustratie flat navy si amber: ecran cu cod JSON-LD si pictograme rich snippet pentru firma mica din Romania

Schema markup este unul din cele mai sub-utilizate semnale tehnice de SEO la firmele mici din Romania. Patru din cinci site-uri IMM auditate in 2025 nu aveau niciun structured data implementat. Diferenta in SERP intre o pagina cu schema corecta si una fara este vizibila imediat: rating-uri cu stele, FAQ expandabil, breadcrumbs, pret si disponibilitate afisate direct in rezultatele Google.

Acest ghid acopera vocabularul schema.org, formatul JSON-LD, tipurile esentiale pentru o firma mica romaneasca, exemple complete de cod, metodele de implementare, validarea pre-publicare si monitorizarea in Search Console. Daca lucrezi pe local SEO, citeste in paralel local SEO pentru cabinete profesionale si cum creezi cont Google Business Profile - schema LocalBusiness se sincronizeaza ideal cu profilul GBP.

Ce este structured data si de ce conteaza

Structured data este date marcate intr-un format standardizat care explica motoarelor de cautare ce reprezinta continutul unei pagini, nu doar cum arata vizual. HTML pur le spune browserelor ca un text este <h1> sau ca o imagine este <img>. Schema markup le spune lui Google, Bing, Yandex, AI Overviews si asistenti vocali ca acel <h1> este numele unui produs care costa 199 RON, este in stoc si are rating 4.7 din 89 de recenzii reale.

Beneficii directe pentru o firma mica:

  • Rich results in SERP: stele rating, pret, disponibilitate, FAQ expandabil, breadcrumbs, sitelinks search box. CTR creste tipic 15-30% pe queries long-tail.
  • Eligibilitate Knowledge Graph: schema Organization plus sameAs cu profilele sociale ajuta Google sa lege entitatea firma de Knowledge Panel.
  • Voice search: Google Assistant, Alexa si Siri folosesc structured data ca sursa primara pentru raspunsuri vocale (program, adresa, telefon).
  • AI Overviews si SGE: AI-ul Google citeaza preponderent pagini cu schema FAQPage, HowTo si Article corect marcate.
  • Eligibilitate Merchant listings: schema Product cu Offer este conditie tehnica pentru tab-ul Shopping si Merchant Center free listings.

Data: audit pe 47 site-uri IMM din Romania (2025), implementarea corecta LocalBusiness plus FAQPage a generat in medie +23% click-uri organice in primele 90 de zile post-deployment.

Formate de structured data - JSON-LD, Microdata, RDFa

Schema.org poate fi exprimata in trei formate sintactice. Toate trei comunica acelasi vocabular, diferenta este unde si cum scrii codul.

Format Unde se scrie Recomandare Google Cand sa folosesti
JSON-LD Bloc <script> separat in <head> sau <body> Recomandat oficial din 2015 Default pentru orice implementare noua
Microdata Atribute HTML inline (itemscope, itemtype, itemprop) Suportat, dar nu recomandat Doar legacy, migreaza la JSON-LD
RDFa Atribute HTML inline (vocab, typeof, property) Suportat Rar - doar daca framework-ul tau il genereaza nativ

De ce JSON-LD castiga: este complet separat de HTML, nu polueaza markup-ul vizual, nu strica render-ul daca contine erori si poate fi injectat dinamic prin JavaScript sau Google Tag Manager fara sa atingi tema. Este parser-friendly si poate fi generat din baze de date (PHP, Node, Python) fara sa amesteci logica de prezentare cu logica de markup semantic. Sursa primara: developers.google.com/search/docs/appearance/structured-data/intro-structured-data.

Schema.org - vocabularul oficial

Punct important pe care multi proprietari de site-uri nu il inteleg: schema.org nu este Google. Schema.org este un consortiu deschis fondat in 2011 de Google, Microsoft, Yahoo si Yandex pentru a standardiza vocabularul de structured data pe web. Guvernanta este facuta sub umbrela W3C (World Wide Web Consortium) prin Schema.org Community Group.

Asta inseamna ca acelasi cod JSON-LD scris pentru Google este inteles de Bing, DuckDuckGo, Yandex si motoare specializate. Vocabularul include peste 800 de tipuri si mii de proprietati - documentatia completa la schema.org/docs/full.html. Pentru firme mici, vei folosi consistent maxim 6-8 tipuri.

Tipuri schema esentiale pentru firme mici din Romania

1. LocalBusiness

Cel mai important tip pentru orice firma cu locatie fizica (magazin, cabinet, atelier, restaurant, salon). Acopera NAP (Name, Address, Phone), program, coordonate GPS si tip de business.

Proprietate Obligatoriu Exemplu valoare
@type da LocalBusiness (sau subtip: Restaurant, Dentist, AutoRepair, Store)
name da Denumire comerciala folosita public
address da PostalAddress complet (strada, oras, judet, cod postal, RO)
telephone recomandat Format E.164: +40213456789
openingHours recomandat Format ISO: Mo-Fr 09:00-18:00
geo recomandat GeoCoordinates cu latitude/longitude
priceRange optional $, $$, $$$, $$$$ sau interval RON
image recomandat URL absolut catre logo/fatada
url da URL canonic homepage

2. Organization

Pentru firma in sine, indiferent de locatie fizica. Esential pentru Knowledge Graph eligibility prin sameAs cu profilele sociale.

3. Product

Pentru fiecare produs din catalog e-commerce. Combina cu Offer (pret, disponibilitate, moneda) si optional AggregateRating plus Review (doar daca review-urile sunt reale si afisate pe pagina).

4. Article / NewsArticle / BlogPosting

Pentru continut editorial. BlogPosting pentru articole blog evergreen, NewsArticle pentru stiri cu data publicarii relevanta, Article ca tip generic.

5. FAQPage

Pentru pagini cu intrebari frecvente. Eligibil rich result - FAQ-urile pot aparea expandate direct in SERP. Conditie obligatorie: intrebarile si raspunsurile trebuie sa fie vizibile public pe pagina (nu ascunse in accordion fara expand by default este OK, dar continutul trebuie sa existe in HTML).

6. HowTo

Pentru tutoriale pas-cu-pas. Include step, tool, supply, totalTime. Eligibil rich result cu pasii afisati direct in SERP, mai ales pe mobile.

7. BreadcrumbList

Pentru fir Ariadnei. Inlocuieste URL-ul afisat sub titlu in SERP cu calea breadcrumb formatata - look profesionist plus context pentru utilizator.

8. Service

Pentru firme care vand servicii, nu produse fizice. Combina cu provider (Organization), areaServed si serviceType.

Exemple JSON-LD complete

Exemplu 1: LocalBusiness pentru SRL din Bucuresti

Pentru un cabinet stomatologic Sector 3, cu coordonate reale si program complet:

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Cabinet Stomatologic Smile SRL",
  "image": "https://cabinetsmile.ro/img/fatada.webp",
  "url": "https://cabinetsmile.ro",
  "telephone": "+40213456789",
  "priceRange": "200-1500 RON",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Bulevardul Decebal 25, bloc S2, parter",
    "addressLocality": "Bucuresti",
    "addressRegion": "Sector 3",
    "postalCode": "030971",
    "addressCountry": "RO"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 44.4310,
    "longitude": 26.1240
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/cabinetsmile",
    "https://www.instagram.com/cabinetsmile_ro"
  ]
}

Exemplu 2: FAQPage cu trei intrebari

Pentru o pagina de servicii cu sectiune FAQ vizibila pe pagina:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Cat dureaza o consultatie stomatologica de control?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "O consultatie standard de control dureaza intre 20 si 30 de minute si include examen clinic complet, evaluare radiografica cand este necesar si plan de tratament personalizat."
      }
    },
    {
      "@type": "Question",
      "name": "Acceptati plata cu cardul si decontare CAS?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Da, acceptam plata cu cardul (Visa, Mastercard) si numerar. Suntem in contract cu CAS Bucuresti pentru serviciile de stomatologie generala decontate."
      }
    },
    {
      "@type": "Question",
      "name": "Pot programa o consultatie online?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Da, programarile se pot face direct prin formularul de pe site, telefon la +40213456789 sau prin Google Business Profile. Confirmarea se trimite pe email in maxim 2 ore lucratoare."
      }
    }
  ]
}

Exemplu 3: Product e-commerce cu pret RON

Pentru un produs intr-un magazin online romanesc:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Periuta electrica sonica ProClean X3",
  "image": [
    "https://magazin.ro/img/proclean-x3-1.webp",
    "https://magazin.ro/img/proclean-x3-2.webp"
  ],
  "description": "Periuta electrica sonica cu 5 moduri de curatare, baterie 30 zile, capete intersanjabile incluse.",
  "sku": "PCX3-WHT",
  "brand": {
    "@type": "Brand",
    "name": "ProClean"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://magazin.ro/produs/proclean-x3",
    "priceCurrency": "RON",
    "price": "349.00",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "19.99",
        "currency": "RON"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "RO"
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "127"
  }
}

Warning

Atentie la red flag - schema cu rating fabricat. Adaugarea aggregateRating fara review-uri reale, verificabile, afisate vizibil pe pagina, este motivul numarul unu pentru manual action "Spammy structured markup" de la Google. Penalty-ul scoate site-ul integral din rich results pe luni de zile. Daca nu ai review-uri reale, omite complet proprietatea aggregateRating si review - nu pune valori fictive sau medii calculate din alta parte. Practic, asta inseamna ori implementezi un sistem real de colectare review (Trustpilot, Google Reviews, custom cu moderare), ori lasi schema Product fara rating pana cand ai date legitime.

Cum implementezi schema markup

Trei metode, in ordinea crescatoare a complexitatii tehnice:

Metoda 1: Plugin (pentru WordPress)

Cel mai accesibil pentru site-uri WordPress. Plugin-uri recomandate:

  • Rank Math - generator schema integrat (LocalBusiness, Product via WooCommerce, Article, FAQ, HowTo), gratuit pentru tipurile esentiale.
  • Yoast SEO - schema base automata (Organization, WebSite, WebPage, BreadcrumbList, Article) plus extensii premium pentru Product si Local.
  • Schema Pro sau Schema & Structured Data for WP - plugin-uri dedicate exclusiv schema cu suport pentru zeci de tipuri, inclusiv subtipuri specializate (Dentist, AutoRepair, Restaurant).

Workflow tipic: instalezi plugin, configurezi tipul de business in setarile globale (Organization plus LocalBusiness sau Person daca esti freelancer), iar la fiecare post sau pagina alegi tipul de schema relevant din meta box. Plugin-ul genereaza JSON-LD automat in <head>.

Metoda 2: Google Tag Manager (custom HTML tag)

Pentru site-uri fara CMS sau cand nu vrei sa atingi tema. Workflow:

  1. Creezi un Tag nou de tip "Custom HTML" in GTM.
  2. Pui in tag continutul <script type="application/ld+json">...</script> cu JSON-LD valid.
  3. Setezi trigger - de obicei "Page View" pe URL-uri specifice (Page Path equals /contact pentru LocalBusiness, Page Path matches RegEx pentru toate articolele unde injectezi BlogPosting).
  4. Pentru continut dinamic, folosesti Data Layer Variables pentru a injecta valori (ex: pret produs din variabila {{dl - product price}}).
  5. Publish container.

Avantaj: zero modificare tema, deploy si rollback rapid. Dezavantaj: schema este injectata client-side prin JavaScript - Google citeste, dar exista cazuri rare de timing in care crawler-ul mobil nu prinde tag-ul la primul fetch.

Metoda 3: Editare directa template tema

Pentru control complet si performanta maxima (server-side rendering). Workflow Hugo: creezi partial in layouts/partials/schema-localbusiness.html cu template Go care injecteaza valori din config.toml sau front matter, apoi includezi partial in <head> din layouts/_default/baseof.html. Pentru WordPress fara plugin: editezi header.php din tema child si adaugi block PHP care echo-eaza JSON-LD generat din custom fields.

Avantaj: schema este in HTML inca de la primul byte, zero dependinta de JavaScript, perfect cache-uibila. Dezavantaj: necesita acces la cod si cunostinte de templating.

Tip

Pro tip technical - starter pack schema pentru site nou IMM. Pentru orice site nou de firma mica din Romania, schema minimum viable in primele 30 de zile arata asa: Organization plus WebSite (sitewide, in <head>-ul global), LocalBusiness pe pagina /contact daca ai locatie fizica, BreadcrumbList pe toate paginile interne, BlogPosting pe articolele de blog, Service pe paginile de servicii principale. FAQPage adaugi treptat pe paginile unde ai sectiune FAQ vizibila. Product doar daca ai e-commerce activ. Cu acest starter pack acoperi 90% din eligibilitatea rich results fara complexitate inutila.

Cum validezi schema inainte de publicare

Doua tool-uri obligatorii, complementare, ambele gratuite si oficiale:

Rich Results Test - search.google.com/test/rich-results

Tool-ul Google care testeaza eligibilitatea pentru rich results specific. Introduci URL-ul (sau lipesti codul HTML) si tool-ul iti spune:

  • Ce tipuri de rich results au fost detectate (LocalBusiness, FAQ, Product etc.).
  • Ce erori critice exista (camp obligatoriu lipsa).
  • Ce warning-uri ai (camp recomandat lipsa - eligibil dar nu optim).
  • Cum arata preview-ul rich result in SERP (mobile si desktop).

Acesta este testul eligibilitate Google. Daca trece aici fara erori, schema ta poate genera rich results.

Schema Markup Validator - validator.schema.org

Tool-ul comunitatii schema.org care testeaza conformitatea cu specificatia schema.org, indiferent de ce vrea Google. Introduci URL sau cod si primesti raport detaliat despre:

  • Sintaxa JSON-LD valida (parantezele, comma, escape).
  • Proprietati recunoscute pe tipul respectiv.
  • Valori de tip corect (string vs URL vs Number vs Date).
  • Relatii corecte intre tipuri (un Offer poate fi child al Product, nu invers).

Workflow recomandat: rulezi mai intai validator.schema.org pentru sintaxa curata, apoi Rich Results Test pentru eligibilitate Google. Daca primul trece dar al doilea da eroare, inseamna ca Google are cerinte suplimentare peste schema.org standard (frecvent: Google cere image obligatoriu pe Product chiar daca schema.org il considera optional).

Greseli frecvente si cum le eviti

Schema duplicata. Pe WordPress cu plugin (Yoast) plus tema care injecteaza automat plus snippet manual in header.php: rezultat trei blocuri Organization. Google poate ignora toate sau le poate citi imprevizibil. Audit: cauta application/ld+json in source si verifica de cate ori apare.

JSON invalid sintactic. Virgule lipsa, paranteze nematchuite, ghilimele tipografice copy-paste din Word. Symptom: validator.schema.org returneaza "Failed to parse JSON". Scrie JSON-LD intr-un editor cu syntax highlighting (VS Code).

Schema care nu reflecta continutul vizibil. FAQPage cu intrebari care nu apar in HTML, Product cu pret neafisat, AggregateRating fara review-uri reale. Penalty manual action garantat. Regula: orice in schema trebuie sa fie vizibil utilizatorului pe pagina.

Tip schema gresit. Folosesti Article pentru pagina de contact sau LocalBusiness pentru blog. Schema trebuie sa descrie corect tipul de continut al paginii specifice.

Coordonate GeoCoordinates inversate. Latitudinea Romania este intotdeauna 44-48, longitudinea 20-30. Daca le inversezi, Google plaseaza firma in Oceanul Indian. Verifica pe Google Maps.

@context lipsa sau gresit. Trebuie sa fie exact "https://schema.org" (cu https, fara trailing slash). Variante ca http://schema.org/ invalideaza intregul bloc.

sameAs cu URL-uri private. Profilele sociale puse in sameAs trebuie sa fie publice, active si sa apartina entitatii. Linkuri catre profilul Facebook personal al fondatorului in schema Organization confuzioneaza Knowledge Graph.

Monitorizare in Google Search Console

Implementarea este doar inceputul. Monitorizarea continua se face in Google Search Console, sectiunea Enhancements (in stanga sus, dupa Performance si Pages).

Pentru fiecare tip de schema implementat (FAQ, Products, Sitelinks searchbox, Breadcrumbs etc.) primesti un raport separat care arata:

  • Numar de pagini valide (eligibile rich result).
  • Erori critice (rich result blocat).
  • Warning-uri (rich result eligibil dar suboptim).
  • Detalii per URL: ce camp lipseste, ce este invalid.

Workflow audit lunar in 30 de minute: deschizi GSC > Enhancements, verifici fiecare tip schema pentru erori noi din ultimele 30 zile, pentru fiecare eroare validezi cu Rich Results Test live, fixezi in cod sau plugin, dai "Validate Fix" si astepti 7-14 zile pentru re-crawl. In Performance filtrezi dupa "Search appearance" (FAQ, Product, Review snippet) pentru CTR si impresii per tip rich result.

Data: pe site-urile auditate, monitorizarea lunara prinde in medie 2-3 erori per luna care, lasate nerezolvate, ar reduce eligibilitatea cu 15-40% in 6 luni.

Intrebari frecvente

Cat dureaza pana apar rich results dupa implementarea schema?

Tipic 2-4 saptamani pentru pagini deja indexate, 4-8 saptamani pentru pagini noi. Google trebuie sa recrawleze pagina, sa parseze structured data, sa valideze conformitatea cu policy si sa decida algoritmic daca merita rich result in SERP. Poti grabi procesul prin "URL Inspection" in GSC > "Request Indexing" dupa deployment. Atentie: Google nu garanteaza rich results doar pentru ca schema este valida - este algoritmic, in functie de calitatea perceputa a paginii si query relevance.

Schema markup ajuta direct la ranking-ul Google?

Nu direct ca semnal de ranking. Schema imbunatateste intelegerea continutului de catre Google, ceea ce indirect ajuta la matching mai bun pe queries. Beneficiul direct masurabil este CTR mai mare prin rich results, care prin loop-ul de comportament utilizator poate consolida pozitia. Sursa primara: declaratii multiple John Mueller (Google Search Advocate) confirmand ca schema nu este factor direct de ranking, dar este foundation pentru features.

Pot folosi schema generat de ChatGPT sau alte tool-uri AI?

Da, dar valideaza intotdeauna. AI-urile generative produc frecvent schema cu campuri fictive, valori inconsistente sau sintaxa subtil gresita. Workflow corect: ceri AI-ului scaffold initial, completezi cu date reale din business, validezi cu Rich Results Test plus Schema Markup Validator inainte de deployment. Niciodata copy-paste direct in productie.

Trebuie schema pe fiecare pagina sau doar pe homepage?

Pe fiecare pagina cu continut distinct relevant. Homepage: Organization plus WebSite. Pagini blog: BlogPosting plus BreadcrumbList. Pagini produse: Product plus BreadcrumbList. Pagini servicii: Service plus FAQPage. Pagina contact: LocalBusiness. Schema generica identica pe toate paginile este zgomot pentru Google.

Schema FAQPage pe articole de blog mai functioneaza?

Da, dar Google a restrans eligibilitatea in august 2023. Acum FAQ rich results apar preponderent pe site-uri guvernamentale, sanatate publica si entitati autoritare. Pentru blog-uri IMM, schema FAQPage ramane valida si o poti implementa, dar nu mai garanteaza rich result vizual in SERP. Beneficiul colateral ramane: structured data pentru AI Overviews si voice search continua sa fie citita activ.

Cum afecteaza schema markup performanta site-ului?

Impact neglijabil. Un bloc JSON-LD tipic are 1-3 KB compresat gzip. Adaugat in <head>, nu blocheaza render si nu afecteaza LCP, CLS sau INP. Exceptie: daca injectezi 20+ tipuri schema concatenate pe aceeasi pagina, poti adauga 30-50 KB. Pastreaza schema minimala si relevanta per pagina.

Pot avea schema invalida partial fara penalty?

Da. Warning-urile in Rich Results Test (camp recomandat lipsa) nu sunt penalty - doar reduc eligibilitatea pentru anumite tipuri rich result. Erori critice fac blocul ignorat, dar nu declanseaza manual action. Manual action vine doar pentru schema intentionat inselatoare (rating fabricat, continut diferit de cel marcat, spam structured data).

Resurse oficiale de aprofundare

Pentru documentatie actualizata, surse primare: Google Search Central - Structured Data Documentation (developers.google.com/search/docs/appearance/structured-data), Schema.org Full Hierarchy (schema.org/docs/full.html), Rich Results Test (search.google.com/test/rich-results), Schema Markup Validator (validator.schema.org), Google Search Central Blog pentru update-uri policy, Bing Webmaster Tools Markup Validator pentru cross-checking eligibilitate Bing.

Pentru context cluster SEO local, recomand sa citesti seo copywriting pentru piata din Romania si indexare Google si submit URL pentru ce faci dupa ce schema este implementata si vrei sa accelerezi crawling-ul.

Practic, asta inseamna ca o firma mica romaneasca poate ajunge in 60 de zile de la zero schema la portfoliu complet de rich results, cu investitie de 4-8 ore consultant plus monitorizare 30 minute lunar. ROI masurabil in cresterea CTR organic plus eligibilitate pentru AI Overviews si voice search.