Schema.org es la diferencia entre que un buscador adivine qué haces y que lo sepa. En 2026 esa diferencia importa más que nunca: las IAs (ChatGPT, Perplexity, Gemini) extraen datos estructurados con prioridad sobre el texto en prosa. Una web con buen schema es como una web con subtítulos para todos los buscadores y modelos.
Esta guía es técnica pero pensada para que pueda usarla un desarrollador junior o un consultor SEO. Cubre los cuatro tipos de schema que de verdad importan en un negocio local, con código copiable y validación.
Qué es schema.org y por qué importa
Schema.org es un vocabulario compartido (creado en 2011 por Google, Microsoft, Yahoo y Yandex) que define cómo marcar los datos de tu web para que cualquier máquina pueda entenderlos. Hablamos de definir explícitamente: «esto es un negocio», «está en esta dirección», «abre estos horarios», «ofrece estos servicios».
Sin schema, Google deduce todo eso del texto HTML — a veces bien, a veces mal. Con schema, lo sabe con certeza. Y le da a tu negocio entrada a:
- Rich snippets en resultados de búsqueda (estrellas, FAQ desplegable, precio, horario).
- Knowledge Panel a la derecha de la SERP cuando alguien busca tu marca.
- AI Overviews y respuestas generativas en Google.
- Recomendación en ChatGPT, Perplexity y Gemini (los crawlers extraen JSON-LD con prioridad).
JSON-LD vs. microdata: usa JSON-LD
Hay tres formatos para implementar schema: microdata (atributos HTML), RDFa (similar) y JSON-LD (bloque JSON en script).
En 2026 la decisión está clara: JSON-LD. Es lo que recomienda Google oficialmente, es lo que más fácil mantienen los desarrolladores, y no contamina tu HTML. Se mete en la cabecera o al final del body como un <script type="application/ld+json"> y listo.
LocalBusiness paso a paso
Es el schema fundacional. Va en la home y debe ser completísimo. Ejemplo real para una clínica dental, copiable y adaptable:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "DentalClinic",
"@id": "https://www.tunegocio.com/#business",
"name": "Clínica Dental García",
"image": [
"https://www.tunegocio.com/img/fachada.jpg",
"https://www.tunegocio.com/img/interior.jpg"
],
"url": "https://www.tunegocio.com",
"telephone": "+34911234567",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"streetAddress": "Calle Mayor 12",
"addressLocality": "Madrid",
"postalCode": "28013",
"addressRegion": "Madrid",
"addressCountry": "ES"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.416775,
"longitude": -3.703790
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "20:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
],
"sameAs": [
"https://www.facebook.com/tunegocio",
"https://www.instagram.com/tunegocio",
"https://g.page/tunegocio"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "247"
}
}
</script>Comentarios sobre campos:
- @id: identificador único de tu negocio. Usa la URL de la home +
#business. Útil para enlazar otros schemas (FAQs, servicios) al mismo negocio. - image: array de al menos 3 fotos. Mejor varias que una.
- priceRange: usa
$,$$,$$$o equivalentes en €. Útil para filtros. - sameAs: array con tus perfiles oficiales (Facebook, Instagram, Google Business, LinkedIn). Importantísimo para identificación cruzada por IAs.
- aggregateRating: SOLO si las reseñas están en tu propia web. Si solo están en Google Maps, no las incluyas aquí (sería declaración indebida y puede penalizarte).
Tipos específicos por sector
Schema.org tiene cientos de tipos específicos. Usa siempre el más concreto que aplique a tu negocio, no el genérico:
- Clínica dental:
DentalClinic(subtipo de MedicalBusiness). - Despacho de abogados:
LegalService(subtipo de ProfessionalService). - Fisioterapia:
Physiotherapy(subtipo de MedicalBusiness). - Veterinario:
VeterinaryCare. - Inmobiliaria:
RealEstateAgent. - Clínica estética:
MedicalBusinessconmedicalSpecialty: Dermatology. - Podólogo:
MedicalBusinessconmedicalSpecialty: Podiatric. - Psicólogo:
MedicalBusinessconmedicalSpecialty: Psychiatric. - Peluquería:
HairSalon. - Médico general:
MedicalClinicoPhysician.
El truco: si el tipo específico existe, úsalo. Las IAs y Google extraen más datos contextuales cuando el tipo es preciso.
FAQPage: la palanca infrautilizada
Después de LocalBusiness, FAQPage es probablemente el schema con más ROI. Sirve para que Google muestre tus FAQs desplegables en la SERP y para que las IAs extraigan las preguntas y respuestas con altísima prioridad.
Ejemplo de FAQPage con 3 preguntas:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "¿Cuánto cuesta una endodoncia en Madrid?",
"acceptedAnswer": {
"@type": "Answer",
"text": "El precio medio de una endodoncia en Madrid en 2026 está entre 180 y 320 € por pieza, dependiendo del número de conductos y la clínica. Las endodoncias en muelas son más complejas y caras que las de incisivos."
}
},
{
"@type": "Question",
"name": "¿Cuántas visitas necesita una endodoncia?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Habitualmente entre 1 y 2 visitas. En casos sencillos (incisivos con un conducto) se resuelve en una sola cita de 60-90 minutos. En muelas con varios conductos suele necesitarse una segunda visita."
}
},
{
"@type": "Question",
"name": "¿La endodoncia duele?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No durante el tratamiento, gracias a la anestesia local. Tras la endodoncia puede haber molestias leves los 2-3 días siguientes, controlables con analgésicos comunes."
}
}
]
}
</script>Consejos prácticos:
- Las preguntas deben coincidir exactamente con las que aparecen visibles en la página HTML. Google penaliza FAQPage con contenido oculto.
- Respuestas de 50-150 palabras. Ni muy cortas (sin valor) ni muy largas (no se extraen completas).
- Mínimo 5 preguntas por página para que valga la pena.
- Usar lenguaje natural. Cómo pregunta una persona real, no como pregunta un SEO.
Service y OfferCatalog
Para listar tus servicios uno por uno con detalle. Útil cuando tienes una página por servicio o una página general de servicios.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Ortodoncia invisible",
"provider": { "@id": "https://www.tunegocio.com/#business" },
"areaServed": {
"@type": "City",
"name": "Madrid"
},
"offers": {
"@type": "Offer",
"priceCurrency": "EUR",
"price": "2900",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock"
},
"description": "Tratamiento de ortodoncia con alineadores transparentes Invisalign. Incluye estudio inicial, juego completo de férulas y revisiones mensuales."
}
</script>Notas: provider referencia tu LocalBusiness con @id. Eso enlaza el servicio a tu negocio sin duplicar datos.
Person para el equipo (y por qué importa para AEO)
Es uno de los schemas más infrautilizados. Sirve para identificar a los profesionales de tu negocio. Es vital para sectores donde la persona importa: médicos, abogados, dentistas, consultores.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Dra. María García",
"jobTitle": "Odontóloga - Especialista en Ortodoncia",
"worksFor": { "@id": "https://www.tunegocio.com/#business" },
"alumniOf": {
"@type": "EducationalOrganization",
"name": "Universidad Complutense de Madrid"
},
"memberOf": {
"@type": "Organization",
"name": "Sociedad Española de Ortodoncia"
},
"image": "https://www.tunegocio.com/img/equipo/maria.jpg",
"url": "https://www.tunegocio.com/equipo/maria-garcia"
}
</script>Para AEO, los Person schemas son críticos: cuando alguien pregunta a ChatGPT «¿qué ortodoncistas hay en Madrid?», el modelo cruza datos de personas reconocibles con sus negocios. Una clínica con 3-5 Person schemas bien construidos tiene muchas más probabilidades de ser recomendada que una sin nada.
BreadcrumbList y Article
BreadcrumbList
En todas las páginas que no sean la home. Le dice a Google dónde está cada página dentro de tu estructura:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Inicio", "item": "https://www.tunegocio.com" },
{ "@type": "ListItem", "position": 2, "name": "Servicios", "item": "https://www.tunegocio.com/servicios" },
{ "@type": "ListItem", "position": 3, "name": "Ortodoncia invisible", "item": "https://www.tunegocio.com/servicios/ortodoncia-invisible" }
]
}
</script>Article (para blog y guías)
En cada post de tu blog, incluye Article schema con autor (Person) y publisher (Organization). Es lo que permite a Google mostrar el rich snippet de fecha, autor y a las IAs identificar contenido de autoridad.
Validación y monitorización
Herramientas que tienes que usar sí o sí:
1. Schema Markup Validator
validator.schema.org. Te dice si tu JSON-LD es sintácticamente válido y si los tipos están bien usados. Pasa siempre antes de publicar.
2. Rich Results Test de Google
search.google.com/test/rich-results. Te dice qué rich snippets puede generar Google de tu página. Es el test «final»: si Rich Results Test te muestra ratings, FAQs, breadcrumbs, etc., vas bien.
3. Search Console: informe Rich Results
En GSC, la sección de «Mejoras» te muestra cuántas páginas tienen cada tipo de rich result válido y cuántas con errores. Revisión mensual obligatoria.
Los errores comunes que veo
- Schema sin
@iden negocios con varios schemas. Los schemas no se enlazan entre sí y Google los trata como entidades distintas. - aggregateRating con datos inventados o de fuentes externas (Google Maps). Penalizable.
- FAQPage con preguntas que no aparecen en la página visible. Google penaliza con eliminación del rich snippet.
- Direcciones con datos inconsistentes entre tu LocalBusiness, tu GBP y tus directorios. Baja la confianza de la entidad.
- Uso de tipo genérico (
LocalBusiness) cuando existe uno específico (DentalClinic). Pérdida de contexto valioso. - Múltiples LocalBusiness en la misma página para intentar «cubrir más zonas». Confunde a Google y suele penalizar.
- Mezclar idiomas en el schema (textos en castellano + nombres de campo en inglés correcto, eso está bien; pero textos mezclando idiomas en mismo campo, mal).
Implementar schema bien es una de las inversiones de SEO/AEO con mejor retorno. Una web sin schema en 2026 es una web invisible para las IAs y limitada para Google. Si quieres que lo hagamos por ti, en el Plan ChatGPT incluimos la implementación completa de schema en tu web como parte del setup inicial.
Y si quieres profundizar en cómo se conecta el schema con el resto de AEO, te recomiendo seguir con mi guía de qué es AEO y por qué importa y con la guía sobre llms.txt.
Preguntas frecuentes
- ¿Necesito un programador para implementar schema.org?
- Para hacerlo bien, sí. Hay plugins (WordPress: Rank Math, Yoast) que generan schema básico pero suelen quedarse cortos. Para un schema serio que cubra LocalBusiness + Service + FAQPage + Person, lo mejor es un desarrollador o una agencia especializada. Una implementación típica son 6-12 horas de trabajo.
- ¿Schema.org afecta directamente al ranking en Google?
- No directamente. Google ha dicho oficialmente que el schema no es un factor de ranking per se. Lo que sí hace es ayudar a Google a entender mejor tu web, lo que permite que aparezcas en rich snippets, en el Knowledge Panel, y mejora la probabilidad de aparecer en AI Overviews y respuestas de Gemini, ChatGPT y Perplexity.
- ¿Puedo tener varios tipos de schema en la misma página?
- Sí, y es lo recomendado. La home de un negocio local típica suele combinar LocalBusiness + Organization + WebSite + BreadcrumbList. Una página de servicio puede combinar Service + FAQPage + BreadcrumbList. Lo importante es que la información sea coherente entre los distintos schemas.
- ¿Cuánto tarda Google en leer cambios en mi schema?
- Entre 24 horas y 4 semanas dependiendo de la frecuencia con que rastree tu web. Las páginas con tráfico alto se rastrean a diario; las nuevas o con poco tráfico pueden tardar más. Puedes pedir reindexación manual desde Google Search Console para acelerar.
