JSON-LD: qué es y cómo funciona
JSON-LD (JavaScript Object Notation for Linked Data) es un formato del W3C para escribir datos estructurados en JSON dentro de un script; Google lo recomienda.
JSON-LD —JavaScript Object Notation for Linked Data— es una forma de escribir datos estructurados como JSON plano. Es una Recomendación del W3C y el formato que Google recomienda para el marcado Schema, porque vive en su propio bloque en lugar de estar entretejido con tu HTML.
Dónde se coloca
JSON-LD va dentro de un elemento script con un tipo especial. Los navegadores no lo ejecutan; lo leen los rastreadores. Puede ir en el <head> o en cualquier parte del <body>.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#org",
"name": "Green Sill",
"url": "https://example.com/",
"sameAs": ["https://www.linkedin.com/company/green-sill"]
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"name": "Green Sill",
"publisher": { "@id": "https://example.com/#org" }
}
]
}
</script>
Las palabras clave que importan
@contextdeclara el vocabulario; para SEO,https://schema.org.@typenombra el tipo de cosa: Organization, Product, Event, etc.@idda a un nodo un identificador estable, normalmente una URL más un fragmento, para que otros nodos puedan referenciarlo en lugar de repetirlo.@graphagrupa varios nodos conectados en un solo bloque, como arriba, donde el WebSite apunta a su publisher mediante el ID.
Por qué importa
JSON-LD hace que una página sea apta para resultados enriquecidos y ofrece a los buscadores y a los sistemas de IA un resumen inequívoco de las entidades y los hechos que contiene. Al estar separado del diseño, un cambio de plantilla no lo rompe, y es sencillo de generar desde un CMS o una base de datos de productos. La introducción a los datos estructurados de Google enumera los formatos admitidos y las políticas que se aplican.
Errores frecuentes
- JSON no válido. Una coma sobrante, unas comillas que faltan o comillas tipográficas pegadas desde un procesador de textos invalidan todo el bloque, y cada elemento que contiene.
- Caracteres sin escapar. Unas comillas dobles dentro del nombre de un producto necesitan una barra invertida, y una etiqueta de cierre de script literal dentro de un valor de texto termina el bloque antes de tiempo.
- Entidades duplicadas en varios bloques con valores distintos, a menudo por varios plugins.
- Inyección solo con JavaScript. Google puede leer el JSON-LD añadido por scripts después del renderizado, pero los rastreadores que no ejecutan JavaScript, incluidos muchos bots de IA, nunca lo ven. Genéralo en el HTML del servidor.
- HTML dentro de los valores, como etiquetas de párrafo en un campo de descripción.
Genera el JSON-LD con el codificador JSON de tu lenguaje —json_encode() en PHP, JSON.stringify() en JavaScript— en lugar de pegar cadenas de texto. Los codificadores se ocupan de las comillas y los caracteres especiales por ti.
Valídalo
Pasa la página por el validador de Schema: extrae cada bloque JSON-LD junto con cualquier Microdata o RDFa, informa de los errores de sintaxis JSON y comprueba las propiedades obligatorias y recomendadas por Google para los tipos habituales. Para los conceptos que hay detrás, consulta datos estructurados.
Preguntas frecuentes
¿Es JSON-LD mejor que Microdata?
Para la mayoría de los sitios, sí. Google admite JSON-LD, Microdata y RDFa, pero recomienda JSON-LD porque está separado del HTML visible y es más fácil de generar y mantener.
¿Puede una página tener más de un bloque JSON-LD?
Sí. Los buscadores leen todos. Solo asegúrate de que los bloques no describan la misma entidad con valores contradictorios; enlazar los nodos con @id dentro de un único @graph lo mantiene ordenado.
¿Ralentiza JSON-LD una página?
Apenas. Es un pequeño bloque de texto que los navegadores no ejecutan. Incluso un grafo de producto detallado suele ocupar solo unos pocos kilobytes.