Los datos es­tru­c­tu­ra­dos ayudan a los bu­s­ca­do­res a entender mejor la in­fo­r­ma­ción contenida en las páginas web. La llamada anotación semántica de datos es­tru­c­tu­ra­dos permite a los robots es­ta­ble­cer nexos de si­g­ni­fi­ca­do e in­te­r­pre­tar los datos de forma au­to­má­ti­ca para tra­du­ci­r­los en otros formatos visuales. Google, hasta el momento el buscador más utilizado con di­fe­re­n­cia, se apoya en los datos es­tru­c­tu­ra­dos para entregar a los usuarios re­su­l­ta­dos en­ri­que­ci­dos en las páginas de re­su­l­ta­dos de búsqueda (SERP). ¿Cuál es la ventaja para los ad­mi­ni­s­tra­do­res de estas páginas? Estos re­su­l­ta­dos destacan entre el resto y aumentan la vi­si­bi­li­dad de la oferta.

Para que esto sea posible se debe marcar la in­fo­r­ma­ción relevante se­má­n­ti­ca­me­n­te con las co­n­si­guie­n­tes etiquetas. Con este fin, a lo largo de los años la comunidad de Internet ha ido de­sa­rro­lla­n­do diversos es­tá­n­da­res de es­tru­c­tu­ra­ción de datos. A co­n­ti­nua­ción te contamos por qué deberías priorizar a JSON-LD ante formatos al­te­r­na­ti­vos como mi­cro­fo­r­ma­tos, RDFa o mi­cro­da­tos.

Dominios web
Compra y registra tu dominio ideal
  • Domina el mercado con nuestra oferta 3x1 en dominios
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Qué es JSON-LD?

JSON-LD, acrónimo de Ja­va­S­cri­pt Object Notation for Linked Data, es un método basado en JSON para añadir datos es­tru­c­tu­ra­dos a páginas web aunque, a di­fe­re­n­cia de otros formatos para es­tru­c­tu­rar datos como mi­cro­fo­r­ma­tos, RDFa o mi­cro­da­tos, aquí el eti­que­ta­do no se realiza como anotación in­te­r­ca­la­da en el código fuente. En lugar de ello, los metadatos se im­ple­me­n­tan dentro de una etiqueta <script> separada del contenido, bien en el en­ca­be­za­do (<head>) o en el cuerpo (<body>) del documento HTML. Para poder hacerlo, JSON-LD se basa en la notación JSON y la amplía con una sintaxis con la cual los datos se marcan en función de esquemas de validez universal.

La es­pe­ci­fi­ca­ción de JSON-LD fue elaborada por el fundador de Digital Bazaar Manu Sporny y figura como re­co­me­n­da­ción oficial del W3C desde el 16 de enero de 2014.

De­fi­ni­ción

JSON-LD es una sintaxis re­co­me­n­da­da por el W3C con la cual es posible integrar en el compacto formato JSON tanto datos es­tru­c­tu­ra­dos como los esquemas para la es­tru­c­tu­ra­ción de datos.

JSON

Este término hace re­fe­re­n­cia a la notación de objetos con Ja­va­S­cri­pt (Ja­va­S­cri­pt Oject Notation) y designa a un formato compacto y basado en texto para el in­te­r­ca­m­bio de datos fá­ci­l­me­n­te in­te­r­pre­ta­ble tanto por personas como por máquinas. Este formato de datos es una de­ri­va­ción de Ja­va­S­cri­pt, aunque se puede utilizar en cualquier pla­ta­fo­r­ma in­de­pe­n­die­n­te­me­n­te del lenguaje de pro­gra­ma­ción utilizado. Como formato de texto para la se­ria­li­za­ción de datos es­tru­c­tu­ra­dos (la re­pre­se­n­ta­ción de objetos pro­gra­ma­bles en una secuencia), JSON suele emplearse para tra­n­s­fe­rir y almacenar datos es­tru­c­tu­ra­dos, en apli­ca­cio­nes web y en apli­ca­cio­nes móviles.

La sintaxis de un objeto JSON se compone fu­n­da­me­n­ta­l­me­n­te de pares nombre:valor en­tre­co­mi­lla­dos (a excepción de los valores numéricos), separados por dos puntos y escritos entre llaves. Cada par nombre:valor suele comenzar en una nueva línea y termina con una coma, ex­ce­p­tua­n­do al último par que precede a la llave de cierre y se anota sin coma:

El siguiente ejemplo ilustra el esquema básico de la sintaxis de JSON:

{
"name": "Manu Sporny",
"homepage": "http://manu.sporny.org/about/"
}

En el primer fragmento de texto se incluyen los vocablos “Manu Sporny”. Una persona que los lea entiende que esta secuencia de letras, por el contexto, co­rre­s­po­n­de a un nombre propio, y que el enlace conduce a la página web del de­sa­rro­lla­dor de JSON-LD. En cambio, los na­ve­ga­do­res y los robots de los bu­s­ca­do­res necesitan metadatos que les ayuden a procesar estas re­la­cio­nes se­má­n­ti­cas. Esto es lo que ofrece JSON con los pares nombre:valor.

El ejemplo mostrado arriba muestra los dos elementos “name” y “homepage” con sus re­s­pe­c­ti­vos valores. Un programa que in­te­r­pre­ta a una página con este objeto JSON es capaz de ide­n­ti­fi­car fá­ci­l­me­n­te a “Manu Sporny” como el nombre de una persona y a “http://manu.sporny.org/about/” como su página web.

Linked Data (LD)

Si dentro de una página la asi­g­na­ción de si­g­ni­fi­ca­do con JSON se lleva a cabo sin problemas, no ocurre lo mismo con el análisis de datos JSON de di­fe­re­n­tes páginas, que deriva fá­ci­l­me­n­te en un problema de am­bi­güe­dad. Por lo general, las máquinas analizan se­má­n­ti­ca­me­n­te una gran variedad de páginas web y ordenan la in­fo­r­ma­ción que extraen de ellas en bases de datos. Pero el código usado arriba, por ejemplo, no garantiza de forma absoluta que los elementos “name” y “homepage” se utilicen en di­fe­re­n­tes páginas web siempre en el mismo contexto. En co­n­se­cue­n­cia y para excluir am­bi­va­le­n­cias, JSON-LD completa la clásica anotación JSON con elementos de contexto sobre la base de los datos enlazados o linked data (LD), datos es­tru­c­tu­ra­dos co­ne­c­ta­dos entre sí e ide­n­ti­fi­ca­dos por URI (ide­n­ti­fi­ca­dor de recursos uniforme) de forma que los ra­s­trea­do­res puedan “entender” las re­la­cio­nes se­má­n­ti­cas que les dan sentido.

En este vídeo, el de­sa­rro­lla­dor de JSON-LD Manu Sporny aclara en qué consisten los datos enlazados:

Para que JSON pueda enlazar datos, JSON-LD completa los clásicos pares nombre:valor propios del marcado JSON con palabras clave (keywords). En la sintaxis de JSON-LD las palabras clave siempre van pre­ce­di­das de una @ y, entre ellas, @context y @type tienen especial im­po­r­ta­n­cia: mientras la primera define el vo­ca­bu­la­rio en que se basa el script, la segunda hace re­fe­re­n­cia al tipo de datos (esquema) del que se trata.

El proyecto Schema.org ofrece una base de datos de esquemas es­ta­n­da­ri­za­dos para es­tru­c­tu­rar datos. En su página web los we­b­ma­s­te­rs tienen acceso a un di­c­cio­na­rio que comprende todos los tipos de datos (types) que pueden uti­li­zar­se así como las pro­pie­da­des (pro­pe­r­ties) su­bo­r­di­na­das a cada tipo y que facilitan un eti­que­ta­do semántico aún más detallado del contenido.

Consejo

JSON-LD no se asocia en principio a ningún vo­ca­bu­la­rio en especial, si bien el proyecto Schema.org, de­sa­rro­lla­do en co­la­bo­ra­ción por los pri­n­ci­pa­les bu­s­ca­do­res Bing, Google y Yahoo!, está co­n­si­de­ra­do de facto como el estándar para la anotación semántica.

Si añadimos al ejemplo anterior las etiquetas se­má­n­ti­cas co­rre­s­po­n­die­n­tes, resulta el siguiente script:

{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "Manu Sporny",
  "url": "http://manu.sporny.org/about/"
 }

La keyword @context en la línea 2 define el di­c­cio­na­rio que se utiliza para marcar los datos, en este caso Schema.org. En la línea 3 se introduce el tipo de dato “Person” con ayuda de la palabra clave @type, que se es­pe­ci­fi­ca un poco más en las líneas 4 y 5 con las pro­pie­da­des “name” y “url”. Un programa que indexe este código puede ide­n­ti­fi­car el elemento de texto “Manu Sporny” marcado como “name” como el nombre de una persona según le indica el tipo “Person” de Schema.org. Los pares nombre:valor en­ca­be­za­dos por “name” y “url” se procesan como pro­pie­da­des (pro­pe­r­ties) del esquema “Person”. El esquema de Schema.org establece qué ca­ra­c­te­rí­s­ti­cas co­rre­s­po­n­den a cada tipo.

Ventajas de JSON-LD frente a otros formatos de datos

La asi­g­na­ción de esquemas y pro­pie­da­des en JSON-LD funciona de forma análoga a otros formatos para el marcado semántico de co­n­te­ni­dos web. Co­n­ve­r­ti­do a código fuente, el script del ejemplo también se puede marcar con mi­cro­da­tos o RDFa siguiendo a Schema.org sin que resulte en una pérdida de in­fo­r­ma­ción:

Sintaxis de mi­cro­da­tos según Schema.org:

<div itemscope itemtype="http://schema.org/Person">
    <span itemprop="name">Manu Sporny</span>
    <span itemprop="url">http://manu.sporny.org/about/</span>
</div>

Sintaxis RDFa según Schema.org:

<div vocab="http://schema.org/" typeof="Person">
    <span property="name">Manu Sporny</span>
    <span property="url">http://manu.sporny.org/about/</span>
</div>

Con todo, la gran ventaja que ofrece JSON-LD frente al resto de formatos rivales es que los metadatos no se integran en el código HTML, sino que se pueden im­ple­me­n­tar como un bloque de código autónomo en el lugar que interese. Esto se realiza mediante una etiqueta <script> siguiendo el siguiente esquema:

<script type="application/ld+json">
{
    JSON-LD
}
</script>

Si uti­li­za­mos nuestro ejemplo obtenemos la siguiente anotación:

<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "Manu Sporny",
  "url": "http://manu.sporny.org/about/"
 }
</script>
Nota

Aun cuando JSON se anota en etiquetas script, no co­n­s­ti­tu­ye código eje­cu­ta­ble.

Esta estricta se­pa­ra­ción entre código HTML, por un lado, y anotación semántica, por el otro, no solamente co­n­tri­bu­ye a que el código sea más fácil de leer, sino que además po­si­bi­li­ta la ge­ne­ra­ción dinámica de es­tru­c­tu­ras de datos in­de­pe­n­die­n­te­me­n­te del contenido visible: con JSON-LD, in­tro­du­cir, extraer de una base de datos o generar metadatos a partir de una plantilla son acciones que pueden hacerse en el backend. Esto permite también el marcado semántico de los co­n­te­ni­dos dinámicos, cuya demanda de espacio en Internet es cada vez mayor.

Free Cloud Server Trial
Prueba el servidor cloud gratis
  • Tráfico ilimitado, ce­r­ti­fi­ca­do SSL y firewall incluidos
  • Alojado en nuestros centros de datos en España
  • Soporte experto 24/7 en español

JSON-LD y SEO

Si el proyecto Schema.org no oculta su pre­di­le­c­ción por JSON-LD como uno de los formatos de datos más re­le­va­n­tes ya desde junio de 2013, Google re­co­mie­n­da la in­te­gra­ción de metadatos con JSON-LD siempre que sea posible por co­n­s­ti­tuir el fu­n­da­me­n­to de diversos elementos de las SERP (Search Engine Results Pages) que el buscador utiliza para presentar re­su­l­ta­dos ampliados a sus búsquedas.

A la hora de mostrar sus re­su­l­ta­dos, Google utiliza di­fe­re­n­tes formatos: además de los basic results o re­su­l­ta­dos simples, desde hace algunos años los usuarios del buscador también obtienen, en función de su consulta, los llamados featured results (re­su­l­ta­dos de­s­ta­ca­dos) y los knowledge graph results (re­su­l­ta­dos con gráfico de co­no­ci­mie­n­to). Mientras que los re­su­l­ta­dos simples solo se ven ampliados con brea­d­cru­m­bs como único co­m­ple­me­n­to, los re­su­l­ta­dos de­s­ta­ca­dos y los gráficos de co­no­ci­mie­n­to son capaces de admitir más datos extra, lo que Google denomina también En­ha­n­ce­me­nts o Search Results Features.

Nota

En la te­r­mi­no­lo­gía de Google, el término Featured Result se utiliza para denominar a los re­su­l­ta­dos ampliados que presentan contenido pro­ce­de­n­te de una sola fuente (la página web enlazada). A los elementos de este tipo también se les conoce como Rich Search Result y Rich Card (tarjeta en­ri­que­ci­da). Si un resultado destacado permite la in­ter­ac­ción pasa a conocerse como Enriched Search Result (resultado en­ri­que­ci­do). Para elaborar los gráficos de co­no­ci­mie­n­to, por el contrario, Google no se apoya en una única web, sino en el Knowledge Graph, un algoritmo que sintetiza contenido desde di­fe­re­n­tes fuentes dando forma a re­su­l­ta­dos que también se conocen como tarjetas, cajas o cuadros de gráfico de co­no­ci­mie­n­to (Knowledge Graph Cards, Knowledge Graph Boxes, Knowledge Graph Displays). Cuando el buscador encuentra di­fe­re­n­tes tarjetas en­ri­que­ci­das o gráficos de co­no­ci­mie­n­to para una misma consulta, las muestra en forma de carrusel, un tipo de lista en forma de carrete que sirve para mostrar tipos de datos di­fe­re­n­tes.

En la ac­tua­li­dad Google soporta marcas JSON-LD para las ex­te­n­sio­nes que siguen a co­n­ti­nua­ción. En la galería de búsqueda de de­ve­lo­pe­rs.google.com el proveedor presenta un ejemplo para cada formato destacado.

  • Brea­d­cru­m­bs: la llamada na­ve­ga­ción con migas de pan muestra la posición de la página actual en la jerarquía de la página web. Si su ad­mi­ni­s­tra­dor web marca las migas de pan se­má­n­ti­ca­me­n­te facilita que Google la pueda mostrar en la página de re­su­l­ta­dos. Las brea­d­cru­m­bs se cuentan entre los pocos elementos di­s­ti­n­ti­vos (Search result features) que Google también incluye en los re­su­l­ta­dos simples.
     
  • Datos de contacto co­r­po­ra­ti­vos: si las empresas marcan se­má­n­ti­ca­me­n­te su in­fo­r­ma­ción de contacto, Google puede mostrarla en las SERP como Knowledge Graph Display, uno de los formatos visuales que hace posible el algoritmo de gráfico de co­no­ci­mie­n­to.
     
  • Logotipos: cuando se marcan los logos, se deja claro al buscador qué gráfico ha de utilizar como logo co­r­po­ra­ti­vo oficial. Es lo que permite a Google ampliar los re­su­l­ta­dos de búsqueda de una empresa con su co­rre­s­po­n­die­n­te logo.
     
  • Cuadro de búsquedas para vínculos de sitios (sitelinks searchbox): hay páginas que tienen un buscador propio. Si está eti­que­ta­do se­má­n­ti­ca­me­n­te, Google lo incluye en el resultado de búsqueda de la página para consultar su contenido di­re­c­ta­me­n­te desde aquí.
     
  • Vínculos a perfiles sociales: si se han marcado los enlaces a los perfiles sociales como datos es­tru­c­tu­ra­dos, Google amplía el Knowledge Graph Display de personas y or­ga­ni­za­cio­nes con los botones co­rre­s­po­n­die­n­tes. Por ahora Google soporta el marcado JSON-LD para Facebook, Twitter, Google+, Instagram, YouTube, LinkedIn, Myspace, Pinterest, Sou­n­d­Cloud y Tumblr.

Los pro­pie­ta­rios de páginas web que aspiran a colocar su contenido en las SERP de forma pro­mi­ne­n­te cuentan con la opción de ide­n­ti­fi­car se­má­n­ti­ca­me­n­te distintos tipos de datos, aunque se ha de tener en cuenta que es Google quien decide en última instancia si un resultado de búsqueda se muestra como resultado simple o en­ri­que­ci­do. Google soporta hasta ahora la anotación JSON-LD para los si­guie­n­tes tipos de datos y la utiliza para pro­ce­sar­los como Rich Search Results, Enriched Search Results o Knowledge Graph Results:

  • Artículos: ide­n­ti­fi­ca­n­do se­má­n­ti­ca­me­n­te los artículos pe­rio­dí­s­ti­cos o las entradas de blog los we­b­ma­s­te­rs permiten que Google los incorpore en el carrusel de historias pri­n­ci­pa­les (Top stories carousel) o los co­m­ple­me­n­te en las SERP con Search Result Features como titulares o imágenes de vista previa.
     
  • Libros: cuando una web ofrece un marcado JSON-LD para la in­fo­r­ma­ción que hace re­fe­re­n­cia a libros Google crea una tarjeta gráfica de co­no­ci­mie­n­to para las consultas re­le­va­n­tes que no solo contiene datos in­te­re­sa­n­tes sobre el libro, sino que también permite ad­qui­ri­r­lo di­re­c­ta­me­n­te desde el buscador.
     
  • Música (músicos y álbumes): la oferta musical también se puede marcar de forma parecida, lo que permite a Google crear tarjetas gráficas de co­no­ci­mie­n­to para contenido musical que ofrecen al usuario datos sobre álbumes y músicos a la par que permiten in­ter­ac­tuar con el contenido re­pro­du­cié­n­do­lo o incluso ad­qui­rié­n­do­lo.
     
  • Cursos: cuando se ofrece oferta educativa en la web y se marca con JSON-LD de forma que el ra­s­trea­dor pueda leer au­to­má­ti­ca­me­n­te el título, una breve de­s­cri­p­ción y el ofertante, se obtiene la ventaja de que Google muestre esta in­fo­r­ma­ción como resultado en­ri­que­ci­do.
     
  • Eventos: los or­ga­ni­za­do­res de co­n­cie­r­tos y fe­s­ti­va­les tienen la po­si­bi­li­dad de etiquetar con JSON-LD todos los datos re­le­va­n­tes relativos al lugar, la fecha y la hora del evento de tal forma que Google pueda ex­trae­r­los y enu­me­rar­los au­to­má­ti­ca­me­n­te en las SERP o en los mapas.
     
  • Ofertas de trabajo: las vacantes que las empresas y las or­ga­ni­za­cio­nes publican en su web también se pueden marcar de esta forma para mo­s­trar­los como re­su­l­ta­dos en­ri­que­ci­dos.
     
  • Negocios locales: los co­me­r­cia­n­tes de ámbito local que ofrecen datos es­tru­c­tu­ra­dos en su página permiten que Google pueda crear tarjetas en­ri­que­ci­das que se muestren en las SERP o en los mapas para las búsquedas re­le­va­n­tes. Si un usuario busca un re­s­tau­ra­n­te asiático en Google, el buscador reproduce un carrusel con las ofertas pe­r­ti­ne­n­tes de la zona.
     
  • Conjuntos de datos: las bases de datos como las tablas en CSV o los archivos en formatos pro­pie­ta­rios también pueden hacerse ac­ce­si­bles al motor de búsqueda con JSON-LD.
     
  • Podcasts: Google soporta JSON-LD también para marcar los datos sobre podcasts. Si se hace, el motor de búsqueda lo muestra como contenido en­ri­que­ci­do.
     
  • Vídeos: los pro­vee­do­res de contenido que ofrecen datos es­tru­c­tu­ra­dos, tales como la de­s­cri­p­ción, un enlace a una imagen de vista previa, la fecha de su subida o su duración, para los vídeos que publican en sus páginas web, po­si­bi­li­tan que Google extraiga esta in­fo­r­ma­ción y la presente como tarjeta en­ri­que­ci­da o como un carrusel.
     
  • Películas y es­pe­c­tácu­los: si una web entrega datos es­tru­c­tu­ra­dos sobre oferta ci­ne­ma­to­grá­fi­ca o es­pe­c­tácu­los, Google los incorpora como tarjeta gráfica en­ri­que­ci­da cuando son re­le­va­n­tes para la búsqueda. Estas tarjetas pueden ampliarse con elementos in­ter­ac­ti­vos que permiten consumir o adquirir la oferta.
     
  • Recetas de cocina: desde hace algunos años, Google también ofrece recetas ga­s­tro­nó­mi­cas como resultado destacado. El único requisito consiste en ofrecer toda la in­fo­r­ma­ción relevante que compone una receta como datos es­tru­c­tu­ra­dos. Un posible formato re­su­l­ta­n­te podría ser un carrusel compuesto por las tarjetas en­ri­que­ci­das pe­r­ti­ne­n­tes para la búsqueda.
  • Críticas: Google soporta va­lo­ra­cio­nes para diversos tipos de datos Schema.org como negocios locales, re­s­tau­ra­n­tes, productos, libros, películas u obras creativas y su re­pre­se­n­ta­ción visual tiene lugar como snippet (recorte). Google di­fe­re­n­cia entre las críticas de autores aislados y los co­me­n­ta­rios en portales de va­lo­ra­cio­nes. Si han sido anotados se­má­n­ti­ca­me­n­te, ambos tipos de crítica se muestran como resultado destacado en las SERP.
     
  • Productos: los co­me­r­cia­n­tes online que proveen los datos sobre sus artículos como el precio, la di­s­po­ni­bi­li­dad o las va­lo­ra­cio­nes como datos es­tru­c­tu­ra­dos permiten que Google muestre esta in­fo­r­ma­ción como re­su­l­ta­dos en­ri­que­ci­dos en búsquedas coin­ci­de­n­tes.

Los re­su­l­ta­dos en­ri­que­ci­dos, ya se trate de featured results o Knowledge Graph Displays, presentan sobre todo una ventaja para los ad­mi­ni­s­tra­do­res web, y es que destacan de entre todos los demás re­su­l­ta­dos. Google dispone los cuadros gráficos y los ca­rru­se­les en un lugar pree­mi­ne­n­te encima de los re­su­l­ta­dos simples, es decir, al principio de la página. Los Knowledge Graph Displays pueden aparecer también como carrusel en el borde superior o a la derecha de los re­su­l­ta­dos orgánicos en­ma­r­ca­dos en un cuadro. Es así como los re­su­l­ta­dos en­ri­que­ci­dos ofrecen la opo­r­tu­ni­dad de alcanzar la mejor posición de la página de re­su­l­ta­dos sin invertir mucho tiempo y dinero en la mejora del ranking orgánico.

Aun así, no solo el mejor po­si­cio­na­mie­n­to, sino también algunos elementos como las imágenes de vista previa, las pu­n­tua­cio­nes, los fra­g­me­n­tos de texto y los elementos in­ter­ac­ti­vos captan la atención del in­te­r­nau­ta y promueven las ganas de pinchar en los enlaces. Se puede asumir sin duda que la tasa de clics en los re­su­l­ta­dos en­ri­que­ci­dos es más elevada que en los re­su­l­ta­dos simples.

También en cuanto a la tasa de rebote puede deducirse un efecto positivo de los re­su­l­ta­dos ampliados. A di­fe­re­n­cia de los basic results, que ge­ne­ra­l­me­n­te solo incluyen un me­ta­tí­tu­lo, un URL y una breve de­s­cri­p­ción, los re­su­l­ta­dos en­ri­que­ci­dos permiten hacerse una idea más detallada del contenido que puede esperarse de la página web enlazada, de tal modo que ya antes de abrirla puede probarse su re­le­va­n­cia para con la consulta realizada y solo pulsar en el enlace si es realmente necesario.

Con todo, Google no considera la presencia o la ausencia de marcado semántico con JSON-LD como un factor de ranking, como puso de relieve ya en 2012 Matt Cutts, exjefe del equipo de spam de Google Web, en el siguiente vídeo incluido en la serie Google We­b­ma­s­te­rs:

Tal y como la co­n­ce­n­tra­ción del marcado en bloques de script separados propia de JSON-LD le aventaja ante otros formatos, también lo hace en el indexado de páginas. En co­m­pa­ra­ción con métodos al­te­r­na­ti­vos de anotación como mi­cro­da­tos o RDFa, JSON-LD facilita que el código fuente sea liviano y que los bots de Google y otros ra­s­trea­do­res los puedan explorar e indexar fá­ci­l­me­n­te. Sin embargo, esto mismo también tiene sus de­s­ve­n­ta­jas. En Google y otros bu­s­ca­do­res se suele co­n­si­de­rar como regla fu­n­da­me­n­tal marcar como contenido legible para las máquinas solo aquel que también se pone a di­s­po­si­ción del usuario, pero con JSON-LD, en cambio, se puede im­ple­me­n­tar teó­ri­ca­me­n­te cualquier marcado, incluso cuando en el contenido mismo de la web no existe ningún equi­va­le­n­te para los metadatos que se han se­le­c­cio­na­do. En este caso se está pro­me­tie­n­do, tanto al motor de búsqueda como al usuario, un hi­po­té­ti­co valor añadido que una página así co­n­fi­gu­ra­da en realidad no ofrece. Haciendo uso de este método se corre el riesgo de ser sa­n­cio­na­do como medida contra el spam web.

Con el fin de evitar que los we­b­ma­s­te­rs so­bre­pa­sen in­vo­lu­n­ta­ria­me­n­te los límites de la anotación semántica conforme con los bu­s­ca­do­res, Google provee con las Stru­c­tu­red Data General Gui­de­li­nes un conjunto de reglas que, re­du­cié­n­do­lo a lo esencial, podemos si­n­te­ti­zar en los si­guie­n­tes puntos:

  • Formato: los datos han de estar es­tru­c­tu­ra­dos en función de uno de los tres formatos co­n­so­li­da­dos, estos son, mi­cro­da­tos, RDFa o JSON-LD. Google re­co­mie­n­da el último.
     
  • Ac­ce­si­bi­li­dad: las páginas con datos es­tru­c­tu­ra­dos deben ser ac­ce­si­bles para el Googlebot. Los métodos que controlan su acceso (robots.txt o noindex) impiden la lectura de los metadatos.
     
  • Equi­va­le­n­cia de contenido: la anotación JSON-LD solo puede describir entidades que también se describen en el código HTML.
     
  • Re­le­va­n­cia: una anotación JSON-LD solo debería tomar como re­fe­re­n­cia las co­rre­s­po­n­de­n­cias re­le­va­n­tes de los tipos de datos uti­li­za­dos. Si se marca un manual técnico como receta se infringe la directiva de re­le­va­n­cia.
     
  • In­te­gri­dad: todos los tipos de datos re­pre­se­n­ta­dos en la anotación JSON-LD se han de marcar de forma íntegra y con las pro­pie­da­des ne­ce­sa­rias. Los tipos de datos que carecen de pro­pie­da­des ese­n­cia­les no se ajustan a los re­su­l­ta­dos en­ri­que­ci­dos.
     
  • Es­pe­ci­fi­ci­dad: los proyectos de datos enlazados como Schema.org ofrecen una gran di­ve­r­si­dad de tipos de datos. Con el fin de cla­si­fi­car el contenido para una re­pre­se­n­ta­ción ampliada en los re­su­l­ta­dos de búsqueda hay que escoger los esquemas tan es­pe­cí­fi­ca­me­n­te como sea posible.
Consejo

Bá­si­ca­me­n­te, se considera que cuantas más pro­pie­da­des se faciliten en forma de datos es­tru­c­tu­ra­dos más elevado es el valor añadido para el usuario. En co­n­se­cue­n­cia, a la hora de po­si­cio­nar las tarjetas en­ri­que­ci­das Google tiene en cuenta la amplitud de los datos provistos, si bien también los we­b­ma­s­te­rs se be­ne­fi­cian de una anotación lo más completa posible. Tomando el ejemplo de las ofertas de trabajo, los usuarios prefieren encontrar aquellas vacantes que incluyan datos como el salario o va­lo­ra­cio­nes.

JSON-LD según Schema.org: manual «paso a paso»

A co­n­ti­nua­ción mostramos cómo puedes en­ri­que­cer tu página web con metadatos re­le­va­n­tes. Este tutorial de JSON-LD se basa en el vo­ca­bu­la­rio provisto por el proyecto Schema.org.

1. Re­fle­xio­nes previas

El mayor o menor trabajo derivado de la im­ple­me­n­ta­ción de datos es­tru­c­tu­ra­dos depende de la amplitud de la oferta web, por tanto, es re­co­me­n­da­ble pensar con an­te­la­ción qué objetivos se quieren alcanzar con la anotación semántica y cuánto tiempo se está dispuesto a invertir para ello.

La anotación ha de es­tru­c­tu­rar los datos de la página web y ofre­ce­r­los en una forma que puedan leer los motores de búsqueda, pues lo que se quiere demostrar es que esta página, op­ti­mi­za­da de esta forma, provee los mejores recursos para búsquedas re­le­va­n­tes sobre la es­pe­cia­li­dad temática del proyecto. Por tanto, intenta responder a estas preguntas:

  • ¿Cuál es el contenido principal de tu página web?
  • ¿Qué valor añadido ofrece este contenido a las visitas po­te­n­cia­les?
  • ¿Qué textos son tan re­le­va­n­tes te­má­ti­ca­me­n­te en relación con el foco de la web que deberían anotarse de una forma amigable para los bu­s­ca­do­res?

2. Determina los textos más re­le­va­n­tes

Elabora una lista de todo aquel contenido que ofrece un valor añadido y decide sobre qué artículos sería co­n­ve­nie­n­te llamar la atención del lector en potencia ya en las páginas de re­su­l­ta­dos.

Google propone, por ejemplo, anotar con JSON-LD los datos que hacen re­fe­re­n­cia a eventos. En HTML las noticias sobre co­n­cie­r­tos, obras de teatro musical o re­pre­se­n­ta­cio­nes teatrales se re­pre­se­n­tan así:

<p>
<a href="http://www.example.org/zambini/2017-11-20-2000">El gran Zambini – una noche llena de magia</a>,<br>
Vuelva a adentrarse en una noche fantástica de la mano del gran Zambini, esta vez con la compañía de Max el Cuervo y la elástica Sonja.<br>
Fecha: 20.11.2017,<br>
Apertura de puertas: 20:00 h,<br>
Show: 20:30 — 23:00,
<a href="http://www.example.org/events/zambini/2017-11-20-2000/tickets">Entradas</a><br>
Precio: 100 euros,<br>
Entradas disponibles,<br>
<a href="http://www.example.org">Montaña Mágica</a>,<br>
Avda. Montaña Magica, 1,<br>
12345 Villa Magia,<br>
</p>

La in­fo­r­ma­ción más típica que comprende el objeto “Evento” hace re­fe­re­n­cia a la fecha y la hora, el precio, la di­s­po­ni­bi­li­dad de entradas, la dirección o los enlaces a in­fo­r­ma­ción co­m­ple­me­n­ta­ria sobre el evento o el lugar donde tiene lugar. Los usuarios humanos son capaces de extraer esta in­fo­r­ma­ción de un texto, de una tabla o de cualquier formato in­fo­r­ma­ti­vo y ponerlo en su contexto, pero los programas, tales como los ra­s­trea­do­res de los bu­s­ca­do­res, necesitan metadatos que les indiquen cómo han de procesar toda esta in­fo­r­ma­ción. JSON-LD se los facilita como un formato de datos que se incluye en el código fuente en HTML de forma in­de­pe­n­die­n­te del contenido.

Las reglas para crear ano­ta­cio­nes JSON-LD e in­te­grar­las en una página web las facilita Schema.org.

3. Se­le­c­cio­nar los esquemas

En efecto, Schema.org ofrece a los gestores de páginas web un extenso lenguaje para es­tru­c­tu­rar datos que abarca un total de alrededor de 600 tipos que a su vez pueden es­pe­ci­fi­car­se con más de 860 pro­pie­da­des.

A la hora de escoger los tipos más adecuados, un webmaster podría seguir dos es­tra­te­gias:

  1. En principio podría cotejar los co­n­te­ni­dos definidos al principio con los tipos de datos di­s­po­ni­bles en el di­c­cio­na­rio de Schema.org y a partir de aquí se­le­c­cio­nar el tipo más ajustado a cada elemento de contenido, pero este método es lento y ge­ne­ra­l­me­n­te in­ne­ce­sa­rio.
  2. En la práctica, los we­b­ma­s­te­rs suelen limitarse a un conjunto de­te­r­mi­na­do de tipos. Si tu objetivo a la hora de im­ple­me­n­tar una anotación JSON-LD es se­n­ci­lla­me­n­te proveer datos es­tru­c­tu­ra­dos a los motores de búsqueda, sería su­fi­cie­n­te con que te limitaras a los tipos que Google soporta en la ac­tua­li­dad y que describe a fondo en la sección para de­sa­rro­lla­do­res.

Como intuyes, la segunda opción es la más re­co­me­n­da­ble pre­ci­sa­me­n­te porque para todos los tipos que soporta su buscador, Google ofrece una detallada do­cu­me­n­ta­ción con una anotación de ejemplo para cada tipo.

Consejo

Utiliza los ejemplos que Google facilita en su página para de­sa­rro­lla­do­res como plantilla para tus propias ano­ta­cio­nes.

Para poder optimizar tu web con datos es­tru­c­tu­ra­dos no hay que descubrir América. Es­pe­cia­l­me­n­te si aún no cuentas con mucha ex­pe­rie­n­cia con la sintaxis de JSON-LD, recurrir a modelos pre­de­fi­ni­dos en lugar de es­cri­bi­r­los desde cero puede suponer un ahorro im­po­r­ta­n­te de tiempo y energía. En la do­cu­me­n­ta­ción de Google se encuentra la siguiente anotación para eventos como ejemplo:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Event",
    "name": "Jan Lieberman Concert Series: Journey in Jazz",
    "startDate": "2017-04-24T19:30-08:00",
    "location": {
        "@type": "Place",
        "name": "Santa Clara City Library, Central Park Library",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "2635 Homestead Rd",
            "addressLocality": "Santa Clara",
            "postalCode": "95051",
            "addressRegion": "CA",
            "addressCountry": "US"
        }
    },
    "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
     ],
    "description": "Join us for an afternoon of Jazz with Santa Clara resident and pianist Andy Lagunoff. Complimentary food and beverages will be served.",
    "endDate": "2017-04-24T23:00-08:00",
    "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_201803180430",
        "price": "30",
        "priceCurrency": "USD",
        "availability": "http://schema.org/InStock",
        "validFrom": "2017-01-20T16:20-08:00"
    },
    "performer": {
        "@type": "PerformingGroup",
        "name": "Andy Lagunoff"
    }
}
</script>

Las etiquetas script de apertura y cierre definen el elemento desde la línea 01 hasta la 39 como un script del tipo “ap­pli­ca­tion/ld+json”, lo que quiere decir que los datos que encierra se dirigen a programas con capacidad para in­te­r­pre­tar datos enlazados en formato JSON.

En un primer nivel se en­cue­n­tran las palabras clave “@context” y “@type” con los valores “http://schema.org” y “event” re­s­pe­c­ti­va­me­n­te (líneas 03 y 04). El programa obtiene con ellas la in­s­tru­c­ción de que los datos que siguen pe­r­te­ne­cen al esquema “Event” según Schema.org, es decir, se trata de pro­pie­da­des es­pe­cí­fi­cas del evento que se describe, que se muestran como pares nombre:valor.

En este mismo nivel también aparecen las pro­pie­da­des “name”, “startDate”, “location”, “image”, “de­s­cri­p­tion”, “enddate”, “offers” y “performer”, a las que se asignan los datos sobre el evento como valor. Es así como un ra­s­trea­dor del buscador puede ide­n­ti­fi­car sin atisbo de duda la in­fo­r­ma­ción “Lieberman Concert Series: Journey in Jazz” como título del show (“name”) y “2017-04-24T19:30-08:00” como el momento exacto en que tiene lugar (“startDate”).

Al igual que RDFa y mi­cro­da­tos, la sintaxis de JSON-LD también soporta la anidación (nesting), por la cual a una propiedad también puede asignarse un esquema se­cu­n­da­rio que a su vez puede es­pe­ci­fi­car­se aún más de­ta­lla­da­me­n­te con otras pro­pie­da­des. Así lo en­co­n­tra­mos en el segundo nivel del código en las líneas 08, 27 y 35.

En la octava línea, por ejemplo, la propiedad “location” se define como un su­be­s­que­ma del tipo “Place” y detallado con las pro­pie­da­des “name” y “address”. Asimismo, la propiedad “address” se define en la línea 11 como su­be­s­que­ma del tipo “Po­stalA­d­dre­ss” y con las pro­pie­da­des “stree­tA­d­dre­ss”, “ad­dre­s­s­Lo­ca­li­ty”, “po­stal­Co­de”, “ad­dre­s­s­Re­gion” y “ad­dre­s­s­Cou­n­try”.

Cada nuevo nivel se delimita con claves para separarlo del nivel superior al que se subordina.

Fragmento (líneas 07—18):

"location": {
    "@type": "Place",
    "name": "Santa Clara City Library, Central Park Library",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "2635 Homestead Rd",
      "addressLocality": "Santa Clara",
      "postalCode": "95051",
      "addressRegion": "CA",
      "addressCountry": "US"
    }
    },

Como vemos, Schema.org pone a di­s­po­si­ción de los we­b­ma­s­te­rs los tipos de datos en una es­tru­c­tu­ra de árbol que partiendo del tipo más general “Thing” (cosa) va de­s­ce­n­die­n­do hacia el nivel más concreto.

En el siguiente paso mostramos cómo puedes adaptar el ejemplo de Google para “Event” a tu propio evento.

4. Modificar una anotación JSON-LD

En la do­cu­me­n­ta­ción de Google se incluyen úni­ca­me­n­te ejemplos que ilustran cómo marcar los tipos ex­pli­ca­dos con JSON-LD, pero si se utilizan como plantilla el código se debe ajustar a cada caso. A menudo puede resultar de gran ayuda echar un vistazo a la propia do­cu­me­n­ta­ción de Schema.org a propósito de los tipos de datos para conocer mejor un de­te­r­mi­na­do esquema así como las pro­pie­da­des que se le pueden asignar. En el siguiente ejemplo puedes entender cómo se pe­r­so­na­li­za un código de Google para el tipo Event:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "El gran Zambini – una noche llena de magia",
  "startDate": "2017-11-20T20:00",
  "url": " http://www.example.org/zambini/2017-11-20-2000",
  "location": {
    "@type": "Place",
    "sameAs": "http://www.example.org",
    "name": "Montaña Mágica",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Avda. Montaña Magica, 1",
      "addressLocality": "Villa Magia",
      "postalCode": "12345",
      "addressCountry": "Magicolandia"
    }
  },
  "image": [
    "https://example.com/photos/1x1/zambini.jpg",
    "https://example.com/photos/4x3/zambini.jpg",
    "https://example.com/photos/16x9/zambini.jpg"
   ],
  "description": " Vuelva a adentrarse en una noche fantástica de la mano del gran Zambini, esta vez con la compañía de Max el Cuervo y la elástica Sonja.",
 "endDate": "2017-11-20T23:00",
 "doorTime": "2017-11-20T20:30",
  "offers": {
    "@type": "Offer",
    "url": "http://www.example.org/events/zambini/2017-11-20-2000/tickets ",
    "price": "100",
    "priceCurrency": "EUR", 
    "availability": "http://schema.org/InStock",
    "validFrom": "2017-11-01T20:00"
  },
  "performer": {
    "@type": "Person",
    "name": "El gran Zambini"
  }
}
</script>

En un primer paso se han su­s­ti­tui­do todos los valores de la plantilla por los valores del evento y eliminado o mo­di­fi­ca­do aquellos esquemas y pro­pie­da­des que no se ajustaban a él. Por ejemplo, en el su­be­s­que­ma “performer”, en lugar de “Pe­r­fo­r­mi­n­g­Group” se ha utilizado “Person”, ya que el evento no está pro­ta­go­ni­za­do por una banda, sino por un solo artista. Asimismo hemos ampliado la anotación con datos que el modelo de Google no incluye: en las líneas 07 y 10 se incluyen los URL del evento y del lugar donde se celebra. En la do­cu­me­n­ta­ción de Schema.org en­cue­n­tras todas las pro­pie­da­des que puedes utilizar.

Incluso si escribes tu anotación desde cero es re­co­me­n­da­ble echar un vistazo a la página de la do­cu­me­n­ta­ción de Google sobre cada tipo porque la compañía indica las pro­pie­da­des que son obli­ga­to­rias y las que se re­co­mie­n­dan para cada uno de los tipos que soporta.

Consejo

Cuida que tu anotación comprenda todas las pro­pie­da­des obli­ga­to­rias porque solo en ese caso la página puede aspirar a cla­si­fi­car­se como resultado en­ri­que­ci­do. Intenta, además, proveer de valor a las pro­pie­da­des re­co­me­n­da­das para in­cre­me­n­tar tus opciones de entrar en el ranking.

Los ejemplos que incluye Google en su do­cu­me­n­ta­ción contienen siempre todas las pro­pie­da­des tanto obli­ga­to­rias como op­cio­na­les. Y si quieres comprobar si falta alguna propiedad en tu anotación utiliza su propia he­rra­mie­n­ta de va­li­da­ción.

5. Probar la anotación JSON-LD

La anidación de esquemas, esquemas se­cu­n­da­rios y pro­pie­da­des repercute en ano­ta­cio­nes ge­ne­ra­l­me­n­te complejas, si bien la se­pa­ra­ción de HTML y anotación semántica repercute en una le­gi­bi­li­dad mucho mayor que en otros formatos apoyados en código fuente. Con objeto de evitar posibles errores de pro­gra­ma­ción, con la Stru­c­tu­red Data Testing Tool Google ofrece la opción de validar gra­tui­ta­me­n­te el código JSON-LD que has escrito.

Sigue estos pasos:

  1. Copia y pega el código en el campo previsto para ello

Puedes copiar la anotación en el campo previsto para ello o insertar el URL de la página web cuyos metadatos quieras comprobar.

  1. Valida el código pulsando en “Ejecutar prueba”

Durante la co­m­pro­ba­ción, la he­rra­mie­n­ta lee los datos es­tru­c­tu­ra­dos de la anotación JSON-LD y comprueba su in­te­gri­dad. Se­gui­da­me­n­te el usuario obtiene una vista de tabla en la que se muestran los datos extraídos y que contiene avisos e in­di­ca­cio­nes si la he­rra­mie­n­ta encuentra errores de sintaxis o si detecta que faltan datos.

Tal como vemos en la imagen, nuestro código no contiene errores e incluye todas las pro­pie­da­des ne­ce­sa­rias. Si eli­mi­ná­ra­mos la propiedad obli­ga­to­ria “startDate” re­ci­bi­ría­mos la siguiente respuesta:

También se pueden localizar así errores de sintaxis como olvidar la coma al final de un par nombre:valor.

  1. Genera la vista previa

Además de la función de prueba, la he­rra­mie­n­ta de co­m­pro­ba­ción de Google también contiene un modo de vista previa que anticipa el aspecto que podría tener un resultado en­ri­que­ci­do basado en las ano­ta­cio­nes validadas. Para ello solo tienes que pulsar en el botón “Obtener una vista previa”.

Posibles errores en la im­ple­me­n­ta­ción de la anotación JSON-LD

Si Google no muestra ningún resultado en­ri­que­ci­do a pesar de utilizar JSON-LD para marcar los datos suele deberse a un error en la es­tru­c­tu­ra­ción de los datos, así que lo mejor sería volver a comprobar el código prestando atención es­pe­cia­l­me­n­te a estas fuentes fre­cue­n­tes de error:

  • Error de sintaxis: el vo­ca­bu­la­rio de JSON-LD es sencillo y claro, pero como ocurre con cualquier lenguaje de marcado, también pueden colarse errores de vez en cuando. Un motivo frecuente de error radica en la di­fe­re­n­cia entre los dos tipos de comilla inglesa que se usan para la pro­gra­ma­ción ("…") y para la palabra impresa (“…”). Dado que los programas de pro­ce­sa­mie­n­to de textos a menudo tra­n­s­fo­r­man las primeras en comillas li­te­ra­rias, puedes evitarte dolores de cabeza si utilizas un editor como Notepad para escribir tu anotación JSON-LD. La comilla simple (' '), tan popular en pro­gra­ma­ción, tampoco se acepta en JSON.
     
  • Vo­ca­bu­la­rio in­co­m­ple­to, erróneo o poco es­pe­cí­fi­co: en la es­tru­c­tu­ra je­rá­r­qui­ca de Schema.org se define con exactitud qué pro­pie­da­des se pueden utilizar para qué tipo de datos. Si utilizas una propiedad para un tipo no co­m­pa­ti­ble Google no puede in­te­r­pre­tar el valor co­rre­s­po­n­die­n­te y clasifica el código como erróneo. La he­rra­mie­n­ta también descubre este tipo de errores.
Nota

Todos los tipos y pro­pie­da­des del vo­ca­bu­la­rio Schema.org son case-sensitive, lo que significa que utilizar mayúscula o minúscula puede provocar di­fe­re­n­cias se­má­n­ti­cas si­g­ni­fi­ca­ti­vas.

En de­fi­ni­ti­va, ten siempre a mano las páginas de do­cu­me­n­ta­ción de Schema.org y valida el código que escribes con ayuda de la he­rra­mie­n­ta de pruebas de Google. Asimismo, conviene tener en cuenta las Pautas Generales para Datos Es­tru­c­tu­ra­dos y las di­re­c­tri­ces para we­b­ma­s­te­rs de Google con tal de evitar una in­fra­c­ción de la normativa que podría conducir a la exclusión del ranking para re­su­l­ta­dos en­ri­que­ci­dos.

Ir al menú principal