Datos estructurados (JSON-LD)
Fundamento: Documentación de Google Search Central sobre datos estructurados y la guía de datos estructurados de Naver Search Advisor (verificado el 2026-11-04). Si se requiere un juicio crítico, se vuelve a consultar el texto original.
Principios comunes
- Incluir solo valores que coincidan con el texto visible. Los precios, horarios, stock o valoraciones desconocidos se dejan vacíos y no se inventan (los documentos de funciones de IA de Google también recomiendan "los datos estructurados deben coincidir con el texto visible").
- El marcado no garantiza resultados enriquecidos ni visibilidad (tanto Google como Naver lo especifican).
- El formato predeterminado es JSON-LD (compatible con Google; Naver recomienda Microdata o JSON-LD). Se coloca en
<head>o<body>dentro de<script type="application/ld+json">. - Validación: Rich Results Test de Google, Schema Markup Validator (la guía de Naver indica el uso de herramientas de schema.org), y el script
scripts/seo-check.mjsde la skillseo-orchestrator(solo verifica análisis JSON y propiedades obligatorias).
Diferencias de soporte (2026-11-04)
| Tipo | Naver | |
|---|---|---|
| Event | Existe documentación para el entorno de búsqueda de eventos. ⚠️ Corea del Sur no está en la lista de regiones compatibles (Australia, Brasil, Canadá, Alemania, India, América Latina, España, Reino Unido, EE. UU.) | Sin guía |
| Organization/Person + sameAs | Información de la organización | Canales relacionados del sitio (página raíz; se requieren name, url, sameAs) |
| WebSite | Nombre del sitio (página de inicio) | — |
| BreadcrumbList | Compatible | Compatible (se requiere name, position opcional) |
| ItemList (carrusel) | Solo algunos tipos | Guía de carrusel (ListItem) disponible |
Para sitios de eventos dirigidos a Corea del Sur: el marcado de Event puede mantenerse para organizar datos precisos y para una posible expansión futura a otras regiones, pero no se debe asumir que actualmente aparecerán resultados enriquecidos de eventos en la búsqueda de Google en Corea del Sur. El rendimiento se evalúa mediante los resultados de búsqueda general (título, fragmento) y Search Console.
Event (según Google)
Reglas (según Datos estructurados de eventos de Google):
- Marcar cada evento en su URL única (página de detalle). No en páginas de listado o calendario que enumeren varios eventos.
- Obligatorio:
name(nombre del evento; prohibido incluir nombre del lugar, precio o frases promocionales como "reserva ahora"),startDate(ISO-8601),location(Place+name+address). - Recomendado:
endDate,eventStatus,description(contenido del evento, sin repetir fecha y lugar),image(ancho recomendado 1920px, mínimo 720px; formatos 16:9, 4:3, 1:1; varias imágenes),offers,organizer,performer,previousStartDate. - Fechas: si se desconoce la hora, solo la fecha (
"2026-12-04"). No rellenar conT00:00:00. Si se conoce la hora, incluir la diferencia UTC (2026-12-04T10:00:00+09:00). - Para eventos de varios días, incluir tanto
startDatecomoendDate. Si se requieren entradas separadas por día, crear un Event por día. - Para eventos simultáneos en varios lugares, crear un Event por lugar.
- Solo si la entrada gratuita está oficialmente confirmada, usar
offers.price: 0. Si la venta aún no ha comenzado, se puede omitiravailability;validFromindica el inicio de la venta. - Al cambiar el estado, mantener los demás valores y solo modificar
eventStatus:- Cancelado:
EventCancelled(no eliminar startDate ni location) - Aplazado/fecha sin definir:
EventPostponed(mantener el startDate original) - Nueva fecha confirmada:
EventRescheduled+ nuevostartDate/endDate+ opcionalpreviousStartDate
- Cancelado:
- No marcar como Event lo que no lo es (cupones, horario comercial, descuentos). Los eventos exclusivos para miembros o por invitación no son aptos para el entorno de eventos.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "<Nombre oficial del evento con edición>",
"startDate": "<YYYY-MM-DD o YYYY-MM-DDThh:mm:ss+09:00>",
"endDate": "<YYYY-MM-DD>",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "Place",
"name": "<Nombre del recinto>",
"address": {
"@type": "PostalAddress",
"streetAddress": "<Dirección>",
"addressLocality": "<Ciudad/Distrito>",
"addressRegion": "<Provincia>",
"postalCode": "<Código postal>",
"addressCountry": "KR"
}
},
"image": ["<https://.../16x9.jpg>", "<https://.../4x3.jpg>", "<https://.../1x1.jpg>"],
"description": "<Resumen del contenido del evento. No repetir fecha ni lugar>",
"organizer": { "@type": "Organization", "name": "<Organizador>", "url": "<URL oficial del organizador>" }
}
</script>
offers solo se añade si el precio y la información de venta están oficialmente confirmados.
Páginas de listado
- Las páginas de listado por región o mes no deben incluir múltiples eventos (Google solo admite páginas de eventos individuales). En su lugar, usar
BreadcrumbListy, si es necesario, unItemListcon las URL de detalle.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "url": "https://example.com/events/<id-1>" },
{ "@type": "ListItem", "position": 2, "url": "https://example.com/events/<id-2>" }
]
}
</script>
WebSite (nombre del sitio Google, solo página de inicio)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "<Nombre del sitio>",
"alternateName": ["<Abreviatura>"],
"url": "https://example.com/"
}
</script>
Usar el mismo nombre que og:site_name y el <title> de la página de inicio. Fuente: Nombres de sitio
Organization + sameAs (canales relacionados del sitio Naver, página raíz)
Dominios de canales relacionados que Naver utiliza para el análisis (2026-11-04): Naver Blog, SmartStore, Knowledge iN, ChzzK, Clip, Daangn, Threads, Instagram, YouTube, KakaoStory, KakaoTalk Channel, Tistory, TikTok, Facebook, X (Twitter). No se garantiza la visibilidad.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "<Nombre del sitio>",
"url": "https://example.com/",
"sameAs": [
"https://cafe.naver.com/<cafe>",
"https://pf.kakao.com/<canal>",
"https://x.com/<cuenta>"
]
}
</script>
- Incluir solo canales que estén realmente operativos. No añadir URL de canales antes de su apertura.
- Daum también usa el mismo formato (Person/Organization + sameAs) con dominios compatibles diferentes: YouTube, Facebook, X, Instagram, Google Play, Apple Store, KakaoStory, Daum Cafe, KakaoTV, Tistory, Brunch (
daum-search). Se pueden incluir canales reales de ambos motores de búsqueda en un solo bloque. - Naver Cafe no aparece explícitamente en la lista de canales relacionados anterior (2026-11-04). Se puede incluir, pero no se debe asumir que Naver lo usará como canal relacionado.
- Fuente: Canales relacionados del sitio
BreadcrumbList (común a Google y Naver)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "<Nombre de categoría superior>", "item": "https://example.com/<superior>" },
{ "@type": "ListItem", "position": 2, "name": "<Nombre de categoría inferior>", "item": "https://example.com/<superior>/<inferior>" }
]
}
</script>
- Naver: usar nombres descriptivos de la página en lugar de términos genéricos como "Inicio" o "top"; orden de lo general a lo específico; evitar nombres demasiado largos o compuestos solo por números y caracteres especiales.
- Fuentes: Naver BreadcrumbList, Ruta de exploración de Google