{"id":30669,"date":"2025-10-07T10:41:58","date_gmt":"2025-10-07T08:41:58","guid":{"rendered":"https:\/\/dinorank.com\/blog\/?p=30669"},"modified":"2026-04-15T10:27:44","modified_gmt":"2026-04-15T08:27:44","slug":"datos-estructurados-para-seo-como-implementarlos-segun-tu-tipo-de-web-con-ejemplos-practicos","status":"publish","type":"post","link":"https:\/\/dinorank.com\/blog\/datos-estructurados-para-seo-como-implementar\/","title":{"rendered":"Datos estructurados para SEO. C\u00f3mo implementarlos seg\u00fan tu tipo de web con ejemplos pr\u00e1cticos"},"content":{"rendered":"<p>Hace poco estuve en Jap\u00f3n y una de las cosas que hice fue entrar en un bazar en Tokio. Peque\u00f1ito, al fondo de una galer\u00eda, con luz c\u00e1lida y estanter\u00edas de madera hasta el techo.<\/p>\n<p>Todo estaba perfectamente colocado, pero los carteles estaban en japon\u00e9s. Hab\u00eda tarros con cosas, cajas con objetos que no sab\u00eda si eran dulces, herramientas o incienso.<\/p>\n<p>Intent\u00e9 preguntar, pero la se\u00f1ora mayor que lo atend\u00eda no hablaba ingl\u00e9s. Sonre\u00eda mucho, eso s\u00ed.<\/p>\n<p>Al final, consegu\u00ed comprar lo que quer\u00eda. O al menos, algo que se le parec\u00eda. Pero estuve m\u00e1s de media hora dando vueltas y varias veces pens\u00e9 en salir de all\u00ed.<\/p>\n<p>Esto mismo le pasa a <strong>Google <\/strong>cuando entra en tu web y no encuentra datos estructurados: <strong>tiene que descubrirlo todo<\/strong>. Y eso implica que quiz\u00e1 no examine tu sitio completamente o no muestre las cosas tal y como a ti te gustar\u00eda.<\/p>\n<p>En este post te explico <strong>qu\u00e9 son los datos estructurados<\/strong>, por qu\u00e9 son tan importantes para el SEO y, sobre todo, c\u00f3mo implementarlos bien seg\u00fan el tipo de web que tengas, con <strong>ejemplos que puedes copiar y adaptar<\/strong> sin necesidad de ser un experto en c\u00f3digo.<\/p>\n<p>\u00bfMe acompa\u00f1as?<\/p>\n<h2>\u00bfQu\u00e9 son los datos estructurados y por qu\u00e9 son importantes para el SEO?<\/h2>\n<p>Los datos estructurados son fragmentos de c\u00f3digo que se insertan en el HTML de una p\u00e1gina web para decirle a Google (y a otros motores de b\u00fasqueda) <strong>cu\u00e1l es el contenido exacto de dicha p\u00e1gina web<\/strong>.<\/p>\n<p>Vamos a verlo con un ejemplo:<\/p>\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\/\",\r\n\u00a0\u00a0\"@type\": \"Product\",\r\n\u00a0\u00a0\"name\": \"Caldera Bosch Condens C6000 W 25\/32\",\r\n\u00a0\u00a0\"image\": [\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/www.tusitio.com\/img\/caldera-bosch-C600W.jpg\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0\"description\": \"Caldera de condensaci\u00f3n de alta eficiencia.\",\r\n\u00a0\u00a0\"sku\": \"C600W\",\r\n\u00a0\u00a0\"brand\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Brand\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Bosch\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"offers\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Offer\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.tusitio.com\/productos\/caldera-bosch-C600W\",\r\n\u00a0\u00a0\u00a0\u00a0\"priceCurrency\": \"EUR\",\r\n\u00a0\u00a0\u00a0\u00a0\"price\": \"1659.90\",\r\n\u00a0\u00a0\u00a0\u00a0\"availability\": \"https:\/\/schema.org\/InStock\",\r\n\u00a0\u00a0\u00a0\u00a0\"itemCondition\": \"https:\/\/schema.org\/NewCondition\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"aggregateRating\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"AggregateRating\",\r\n\u00a0\u00a0\u00a0\u00a0\"ratingValue\": \"4.6\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewCount\": \"634\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<p>Con este fragmento, le estamos indicando a los buscadores que accedan a nuestra p\u00e1gina web lo siguiente:<\/p>\n<blockquote><p>\u201cEsto es un producto, se llama Caldera Bosch Condens Condens C6000 W 25\/32, cuesta 1659,90\u20ac, tiene una valoraci\u00f3n de 4.6 y est\u00e1 en stock\u201d.<\/p><\/blockquote>\n<p>Es decir, le estamos poniendo las cosas f\u00e1ciles tanto a Google, como a otros sistemas de rastreo. Y eso tiene unos claros beneficios de cara al SEO.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">\u00bfSon los datos estructurados buenos para el SEO? Principales ventajas<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-thumbs-up\" style=\"color:#00937D\"><\/i> <strong>Ayudan a que Google interprete mejor tu contenido. <\/strong>Le est\u00e1s dando informaci\u00f3n clara que reduce ambig\u00fcedades y mejora la interpretaci\u00f3n del tipo de p\u00e1gina y su prop\u00f3sito.<\/li>\n<li><i class=\"sui sui-thumbs-up\" style=\"color:#00937D\"><\/i> <strong>Permiten aparecer en resultados enriquecidos especiales. <\/strong>Como carruseles de recetas, preguntas frecuentes, eventos locales o v\u00eddeos destacados, que est\u00e1n por encima del cl\u00e1sico resultado azul.<\/li>\n<li><i class=\"sui sui-thumbs-up\" style=\"color:#00937D\"><\/i> <strong>Incrementan el CTR (Click Through Rate). <\/strong>Al destacar visualmente, es m\u00e1s probable que un usuario haga clic en tu resultado frente a otros.<\/li>\n<li><i class=\"sui sui-thumbs-up\" style=\"color:#00937D\"><\/i> <strong>Refuerzan tus se\u00f1ales de autoridad (EEAT). <\/strong>Puedes marcar tu autor\u00eda, tu organizaci\u00f3n, referencias, etc. lo que mejora tu percepci\u00f3n como fuente confiable.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h2>Datos enriquecidos de Google vs datos estructurados. \u00bfSon lo mismo?<\/h2>\n<p>Muchas veces ver\u00e1s que estos dos conceptos aparecen muy ligados. Sin embargo, no son lo mismo y debes saber diferenciarlos.<\/p>\n<p>Los <strong>datos estructurados son el c\u00f3digo que t\u00fa a\u00f1ades en tu web<\/strong> para explicarle a Google qu\u00e9 hay en la p\u00e1gina.<\/p>\n<p>En cambio, los<strong> datos enriquecidos (o Rich Snippets) son el resultado visible<\/strong> que Google puede mostrar en su buscador si entiende ese marcado y decide que tu contenido merece la pena.<\/p>\n<p>Y como lo mejor es verlo con un ejemplo, aqu\u00ed tienes una representaci\u00f3n en Google para el caso anterior de la caldera.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-30708 size-full\" title=\"Resultados enriquecidos para datos estructurados de Producto\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Producto\" width=\"1024\" height=\"390\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-300x114.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-768x293.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Ahora bien: <strong>\u00bfpuedes tener datos estructurados y no conseguir resultados enriquecidos?<\/strong><\/p>\n<p>S\u00ed. Y es normal, ya que Google decide lo que quiere mostrar y lo que no. Pero si no tienes datos estructurados en tu p\u00e1gina, normalmente puedes ir olvid\u00e1ndote de los Rich Snippets.<\/p>\n<h2>\u00bfQu\u00e9 es Schema.org?<\/h2>\n<p><a href=\"https:\/\/schema.org\" target=\"_blank\" rel=\"nofollow noopener\">Schema.org<\/a> es un proyecto colaborativo cuyo prop\u00f3sito es definir y mantener un <strong>vocabulario est\u00e1ndar que pueda utilizarse dentro de los datos estructurados<\/strong>.<\/p>\n<p>Detr\u00e1s de este proyecto tenemos organizaciones como Google, Bing, Yahoo o Yandex.<\/p>\n<p>Y no es casualidad, ya que a todos estos gigantes les interesa que los datos estructurados que implementemos sigan un conjunto de propiedades o etiquetas conocidas y de uso com\u00fan que puedan procesar sin problemas.<\/p>\n<p>Por eso, muchas veces se habla de datos estructurados y de marcado esquema para referirnos a lo mismo, aunque realmente sean cosas diferentes:<\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-info-circle\" style=\"color:#00937D\"><\/i> Los <strong>datos estructurados<\/strong> es el concepto general, que <strong>incluye el vocabulario y el formato<\/strong> concreto que deben tener estos fragmentos de c\u00f3digo para que los entiendan las m\u00e1quinas (como Google).<\/li>\n<li><i class=\"sui sui-info-circle\" style=\"color:#00937D\"><\/i> El <strong>marcado de esquema<\/strong> (o schema markup) es la forma espec\u00edfica en la que aplicas esos datos estructurados usando el <strong>vocabulario de Schema.org<\/strong>.<\/li>\n<\/ul>\n<\/div>\n<p>Existen por lo tanto otros vocabularios que podr\u00edamos utilizar, como Open Graph o Dublin Core, pero Schema es el que tiene un uso m\u00e1s extendido y el que es recomendado por Google.<\/p>\n<p><strong>\u00bfPero Google entiende todo lo que hay en Schema.org?<\/strong><\/p>\n<p>La realidad es que no. El listado de tipos de datos definidos por Schema.org es enorme y <strong>Google s\u00f3lo entiende un subconjunto<\/strong> de ellos a la hora de activar funciones reales en las SERPs.<\/p>\n<p>M\u00e1s adelante te comentar\u00e9 algunos de los m\u00e1s interesantes para mejorar el SEO de tu web.<\/p>\n<div id=\"brxe-5c527e\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-d69b57\" class=\"brxe-text-basic h3\">Descubre 6 t\u00e9cnicas sencillas (pero eficaces) para que las visitas de tu web crezcan m\u00e1s r\u00e1pido que la espuma de una cerveza mal tirada.\n<\/div><div id=\"brxe-445cc8\" class=\"brxe-text-basic\"><strong>Aunque no seas un experto en SEO<\/strong> ni puedas dedicarte mucho tiempo a esto.<\/div><div id=\"brxe-lbvkeh\" data-script-id=\"lbvkeh\" class=\"brxe-code incontent-form-html\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=source-sans-pro:400,700);<\/style>\n<style>\n#_form_331_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_331_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_331_._form-top{top:0}#_form_331_._form-bottom{bottom:0}#_form_331_._form-left{left:0}#_form_331_._form-right{right:0}#_form_331_ input[type=\"text\"],#_form_331_ input[type=\"tel\"],#_form_331_ input[type=\"date\"],#_form_331_ textarea{padding:6px;height:auto;border:#979797 1px solid;border-radius:4px;color:#000 !important;font-size:14px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#_form_331_ textarea{resize:none}#_form_331_ ._submit{-webkit-appearance:none;cursor:pointer;font-family:arial, sans-serif;font-size:14px;text-align:center;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}#_form_331_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_331_ ._submit.processing{position:relative}#_form_331_ ._submit.processing::before{content:\"\";width:1em;height:1em;position:absolute;z-index:1;top:50%;left:50%;border:double 3px transparent;border-radius:50%;background-image:linear-gradient(#00C4A7, #00C4A7), conic-gradient(#00C4A7, #FFFFFF);background-origin:border-box;background-clip:content-box, border-box;animation:1200ms ease 0s infinite normal none running _spin}#_form_331_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_331_ ._close-icon{cursor:pointer;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/esfkyjh1u_forms-close-dark.png\");background-repeat:no-repeat;background-size:14.2px 14.2px;position:absolute;display:block;top:11px;right:9px;overflow:hidden;width:16.2px;height:16.2px}#_form_331_ ._close-icon:before{position:relative}#_form_331_ ._form-body{margin-bottom:30px}#_form_331_ ._form-image-left{width:150px;float:left}#_form_331_ ._form-content-right{margin-left:164px}#_form_331_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_331_ ._form-branding ._logo{display:block;width:130px;height:14px;margin-top:6px;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/hh9ujqgv5_aclogo_li.png\");background-size:130px auto;background-repeat:no-repeat}#_form_331_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_331_ ._form-label,#_form_331_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_331_._dark ._form-branding{color:#333}#_form_331_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_331_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_331_ ._form_element *{font-size:14px}#_form_331_ ._form_element._clear{clear:both;width:100%;float:none}#_form_331_ ._form_element._clear:after{clear:left}#_form_331_ ._form_element input[type=\"text\"],#_form_331_ ._form_element input[type=\"date\"],#_form_331_ ._form_element select,#_form_331_ ._form_element textarea:not(.g-recaptcha-response){display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit}#_form_331_ ._field-wrapper{position:relative}#_form_331_ ._inline-style{float:left}#_form_331_ ._inline-style input[type=\"text\"]{width:150px}#_form_331_ ._inline-style:not(._clear){margin-right:20px}#_form_331_ ._form_element img._form-image{max-width:100%}#_form_331_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_331_ ._clear-element{clear:left}#_form_331_ ._full_width{width:100%}#_form_331_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_331_ input[type=\"text\"]._has_error,#_form_331_ textarea._has_error{border:#F37C7B 1px solid}#_form_331_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_331_ ._show_be_error{float:left}#_form_331_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_331_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_331_ ._error._below{padding-top:8px;top:100%;right:0}#_form_331_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_331_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_331_ ._error-inner{padding:12px 12px 12px 36px;background-color:#FFDDDD;background-image:url(\"data:image\/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM9 3V9H7V3H9ZM9 13V11H7V13H9Z' fill='%23CA0000'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:12px center;font-size:14px;font-family:arial, sans-serif;font-weight:600;line-height:16px;color:#000;text-align:center;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;box-shadow:0 1px 4px rgba(31, 33, 41, 0.298295)}@media only screen and (max-width:319px){#_form_331_ ._error-inner{padding:7px 7px 7px 25px;font-size:12px;line-height:12px;background-position:4px center;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}#_form_331_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_331_ ._button-wrapper ._error-inner._form_error{position:static}#_form_331_ ._error-inner._no_arrow{margin-bottom:10px}#_form_331_ ._error-arrow{position:absolute;width:0;height:0}#_form_331_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_331_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_331_ select.datetime_time{width:29%;display:inline;height:32px}#_form_331_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_331_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_331_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_331_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_331_ ._form-content{margin:0;width:100%}#_form_331_ ._form-inner{display:block;min-width:100%}#_form_331_ ._form-title,#_form_331_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_331_ ._form-title{font-size:1.2em}#_form_331_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_331_ ._form-element,#_form_331_ ._inline-style,#_form_331_ input[type=\"text\"],#_form_331_ label,#_form_331_ p,#_form_331_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_331_ ._row._checkbox-radio label{display:inline}#_form_331_ ._row,#_form_331_ p,#_form_331_ label{margin-bottom:0.7em;width:100%}#_form_331_ ._row input[type=\"checkbox\"],#_form_331_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_331_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_331_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_331_ ._form-image{max-width:100%;height:auto !important}#_form_331_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_331_ input[type=\"radio\"],#_form_331_ input[type=\"checkbox\"]{display:inline-block;width:1.3em;height:1.3em;font-size:1em;margin:0 0.3em 0 0;vertical-align:baseline}#_form_331_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_331_ ._inline-style{margin:20px 0 0 !important}#_form_331_ ._inline-style input[type=\"text\"]{width:100%}}#_form_331_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_331_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_331_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_331_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_331_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_331_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_331_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_331_ .field-required{color:#FF0000}#_form_331_{position:relative;text-align:left;margin:25px auto 0;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255, 255, 255, 0) !important;border-top:0px solid #737373 !important;border-right:0px solid #737373 !important;border-bottom:0px solid #737373 !important;border-left:0px solid #737373 !important;max-width:800px;-moz-border-radius:1px !important;-webkit-border-radius:1px !important;border-radius:1px !important;color:#000000}#_form_331_ ._show_be_error{min-width:100%}#_form_331_._inline-form,#_form_331_._inline-form ._form-content{font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_331_._inline-form ._row span,#_form_331_._inline-form ._row label{font-family:Source Sans Pro;font-size:14px;font-weight:400;line-height:1.6em;color:#888 !important}#_form_331__inlineform input[type=\"text\"],#_form_331__inlineform input[type=\"date\"],#_form_331__inlineform input[type=\"tel\"],#_form_331__inlineform select,#_form_331__inlineform textarea:not(.g-recaptcha-response){font-family:Source Sans Pro;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_331_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_331_._inline-form .sms_consent_message,#_form_331_._inline-form ._form-thank-you{font-family:Source Sans Pro;font-size:14px;font-weight:400;color:#888 !important}#_form_331_._inline-form ._form-label,#_form_331_._inline-form ._form-emailidentifier,#_form_331_._inline-form ._form-checkbox-option-label{font-family:Source Sans Pro;font-size:14px;font-weight:700;line-height:1.6em;color:#888 !important}#_form_331_._inline-form ._submit{margin-top:12px;font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_331_._inline-form ._html-code h1,#_form_331_._inline-form ._html-code h2,#_form_331_._inline-form ._html-code h3,#_form_331_._inline-form ._html-code h4,#_form_331_._inline-form ._html-code h5,#_form_331_._inline-form ._html-code h6,#_form_331_._inline-form ._form-title{font-family:Source Sans Pro;font-size:22px;line-height:normal;font-weight:700;color:black;margin-bottom:0;display:block}#_form_331_._inline-form ._form-branding{font-family:\"IBM Plex Sans\", Helvetica, sans-serif;font-size:13px;font-weight:100;font-style:normal;text-decoration:none}#_form_331_:before,#_form_331_:after{content:\" \";display:table}#_form_331_:after{clear:both}#_form_331_._inline-style{width:auto;display:inline-block}#_form_331_._inline-style input[type=\"text\"],#_form_331_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_331_._inline-style button._inline-style{position:relative;top:27px}#_form_331_._inline-style p{margin:0}#_form_331_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_331_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_331_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_331_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_331_ .iti{width:100%}#_form_331_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_331_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_331_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_331_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_331_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_331_ .iti__country-list--dropup{margin-bottom:4px}#_form_331_ .phone-error-hidden{display:none}#_form_331_ .phone-error{color:#E40E49}#_form_331_ .phone-input-error{border:1px solid #E40E49 !important}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_331_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_331_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:18px !important;font-weight:500 !important}#_form_331_ ._submit:hover{background-color:#04937E !important}#_form_331_ input#email{padding:3px 12px;background-color:#ffffff;border-radius:2px}#_form_331_._form{margin-top:-5px}#_form_331_ ._error._below{position:relative !important}#_form_331_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_331_ ._form_element{margin:0 0 0px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_331_\" class=\"_form _form_331 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"331\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"331\" \/>\n  <input type=\"hidden\" name=\"s\" \/>\n  <input type=\"hidden\" name=\"c\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"m\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"act\" value=\"sub\" \/>\n  <input type=\"hidden\" name=\"v\" value=\"2\" \/>\n  <input type=\"hidden\" name=\"or\" value=\"789ef8b4693eba56cf9cd6622eca7a0e\" \/>\n  <div class=\"_form-content\">\n    <div class=\"_form_element _x74577619 _full_width \" >\n      <label for=\"email\" class=\"_form-label\">\n      <\/label>\n      <div class=\"_field-wrapper\">\n        <input type=\"text\" id=\"email\" name=\"email\" placeholder=\"Tu email...\" required\/>\n      <\/div>\n    <\/div>\n    <div class=\"_form_element _x87696446 _full_width \" >\n      <fieldset class=\"_form-fieldset\">\n        <div class=\"_row\">\n          <legend for=\"field[15][]\" class=\"_form-label\">\n          <\/legend>\n        <\/div>\n        <input data-autofill=\"false\" type=\"hidden\" id=\"field[15][]\" name=\"field[15][]\" value=\"~|\">\n        <div class=\"_row _checkbox-radio\">\n          <input id=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\" type=\"checkbox\" name=\"field[15][]\"\n          value=\"He le\u00eddo y acepto la pol\u00edtica de privacidad\"                                                                                 required                                >\n          <span>\n            <label for=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\">\n              He le\u00eddo y acepto la pol\u00edtica de privacidad<span class=\"field-required\">\n              *\n            <\/span>\n          <\/label>\n        <\/span>\n      <\/div>\n    <\/fieldset>\n  <\/div>\n  <div class=\"_form_element _x09639014 _full_width \" >\n    <input type=\"hidden\" name=\"field[121]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x64811239 _full_width \" >\n    <input type=\"hidden\" name=\"field[122]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x58860354 _full_width \" >\n    <input type=\"hidden\" name=\"field[123]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x23331849 _full_width \" >\n    <input type=\"hidden\" name=\"field[125]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x72046679 _full_width \" >\n    <input type=\"hidden\" name=\"field[126]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x41336277 _full_width \" >\n    <input type=\"hidden\" name=\"field[127]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_button-wrapper _full_width\">\n    <button id=\"_form_331_submit\" class=\"_submit\" type=\"submit\">\n      Ap\u00fantate aqu\u00ed\n    <\/button>\n  <\/div>\n  <div class=\"_clear-element\">\n  <\/div>\n<\/div>\n<div class=\"_form-thank-you\" style=\"display:none;\">\n<\/div>\n<\/form><script>\nwindow.cfields = {\"15\":\"poltica_privacidad\",\"121\":\"utm_campaign\",\"122\":\"utm_source\",\"123\":\"utm_medium\",\"125\":\"utm_content\",\"126\":\"utm_adset\",\"127\":\"utm_ad\"};\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\n    form.querySelector('._form-content').style.display = 'none';\n    thank_you.innerHTML = message;\n    thank_you.style.display = 'block';\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_unsubscribe = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you');\n    var branding = form.querySelector('._form-branding');\n    if (branding) {\n        branding.style.display = 'none';\n    }\n    form.querySelector('._form-content').style.display = 'none';\n    unsub.style.display = 'block';\n    form.insertAdjacentHTML('afterend', message)\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_error = function(id, message, html) {\n    var form = document.getElementById('_form_' + id + '_'),\n        err = document.createElement('div'),\n        button = form.querySelector('button[type=\"submit\"]'),\n        old_error = form.querySelector('._form_error');\n    if (old_error) old_error.parentNode.removeChild(old_error);\n    err.innerHTML = message;\n    err.className = '_error-inner _form_error _no_arrow';\n    var wrapper = document.createElement('div');\n    wrapper.className = '_form-inner _show_be_error';\n    wrapper.appendChild(err);\n    button.parentNode.insertBefore(wrapper, button);\n    var submitButton = form.querySelector('[id^=\"_form\"][id$=\"_submit\"]');\n    submitButton.disabled = false;\n    submitButton.classList.remove('processing');\n    if (html) {\n        var div = document.createElement('div');\n        div.className = '_error-html';\n        div.innerHTML = html;\n        err.appendChild(div);\n    }\n};\nwindow._show_pc_confirmation = function(id, header, detail, show, email) {\n    var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation');\n    if (pc_confirmation.style.display === 'none') {\n        form.querySelector('._form-content').style.display = 'none';\n        pc_confirmation.innerHTML = \"<div class='_form-title'>\" + header + \"<\/div>\" + \"<p>\" + detail + \"<\/p>\" +\n        \"<button class='_submit' id='hideButton'>Administrar preferencias<\/button>\";\n        pc_confirmation.style.display = 'block';\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '0';\n    } else {\n        form.querySelector('._form-content').style.display = 'inline';\n        pc_confirmation.style.display = 'none';\n    }\n\n    var hideButton = document.getElementById('hideButton');\n    \/\/ Add event listener to the button\n    hideButton.addEventListener('click', function() {\n        var submitButton = document.querySelector('#_form_331_submit');\n        submitButton.disabled = false;\n        submitButton.classList.remove('processing');\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '1';\n        const cacheBuster = new URL(window.location.href);\n        cacheBuster.searchParams.set('v', new Date().getTime());\n        window.location.href = cacheBuster.toString();\n    });\n\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._load_script = function(url, callback, isSubmit) {\n    var head = document.querySelector('head'), script = document.createElement('script'), r = false;\n    var submitButton = document.querySelector('#_form_331_submit');\n    script.charset = 'utf-8';\n    script.src = url;\n    if (callback) {\n        script.onload = script.onreadystatechange = function() {\n            if (!r && (!this.readyState || this.readyState == 'complete')) {\n                r = true;\n                callback();\n            }\n        };\n    }\n    script.onerror = function() {\n        if (isSubmit) {\n            if (script.src.length > 10000) {\n                _show_error(\"331\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"331\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n            }\n            submitButton.disabled = false;\n            submitButton.classList.remove('processing');\n        }\n    }\n\n    head.appendChild(script);\n};\n(function() {\n    var iti;\n    if (window.location.search.search(\"excludeform\") !== -1) return false;\n    var getCookie = function(name) {\n        var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\n        return match ? match[2] : null;\n    }\n    var setCookie = function(name, value) {\n        var now = new Date();\n        var time = now.getTime();\n        var expireTime = time + 1000 * 60 * 60 * 24 * 365;\n        now.setTime(expireTime);\n        document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\n    }\n    var addEvent = function(element, event, func) {\n        if (element.addEventListener) {\n            element.addEventListener(event, func);\n        } else {\n            var oldFunc = element['on' + event];\n            element['on' + event] = function() {\n                oldFunc.apply(this, arguments);\n                func.apply(this, arguments);\n            };\n        }\n    }\n    var _removed = false;\n        var form_to_submit = document.getElementById('_form_331_');\n    var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\n\n    var getUrlParam = function(name) {\n        if (name.toLowerCase() !== 'email') {\n            var params = new URLSearchParams(window.location.search);\n            return params.get(name) || false;\n        }\n        \/\/ email is a special case because a plus is valid in the email address\n        var qString = window.location.search;\n        if (!qString) {\n            return false;\n        }\n        var parameters = qString.substr(1).split('&');\n        for (var i = 0; i < parameters.length; i++) {\n            var parameter = parameters[i].split('=');\n            if (parameter[0].toLowerCase() === 'email') {\n                return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]);\n            }\n        }\n        return false;\n    };\n\n    var acctDateFormat = \"%d\/%m\/%Y\";\n    var getNormalizedDate = function(date, acctFormat) {\n        var decodedDate = decodeURIComponent(date);\n        if (acctFormat && acctFormat.match(\/(%d|%e).*%m\/gi) !== null) {\n            return decodedDate.replace(\/(\\d{2}).*(\\d{2}).*(\\d{4})\/g, '$3-$2-$1');\n        } else if (Date.parse(decodedDate)) {\n            var dateObj = new Date(decodedDate);\n            var year = dateObj.getFullYear();\n            var month = dateObj.getMonth() + 1;\n            var day = dateObj.getDate();\n            return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;\n        }\n        return false;\n    };\n\n    var getNormalizedTime = function(time) {\n        var hour, minutes;\n        var decodedTime = decodeURIComponent(time);\n        var timeParts = Array.from(decodedTime.matchAll(\/(\\d{1,2}):(\\d{1,2})\\W*([AaPp][Mm])?\/gm))[0];\n        if (timeParts[3]) { \/\/ 12 hour format\n            var isPM = timeParts[3].toLowerCase() === 'pm';\n            if (isPM) {\n                hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`;\n            } else {\n                hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1];\n            }\n        } else { \/\/ 24 hour format\n            hour = timeParts[1];\n        }\n        var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour;\n        var minutes = timeParts[2];\n        return `${normalizedHour}:${minutes}`;\n    };\n\n    for (var i = 0; i < allInputs.length; i++) {\n        var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\n        var results = new RegExp(regexStr).exec(allInputs[i].name);\n        if (results != undefined) {\n            allInputs[i].dataset.name = allInputs[i].name.match(\/\\[time\\]$\/)\n                ? `${window.cfields[results[1]]}_time`\n                : window.cfields[results[1]];\n        } else {\n            allInputs[i].dataset.name = allInputs[i].name;\n        }\n        var fieldVal = getUrlParam(allInputs[i].dataset.name);\n\n        if (fieldVal) {\n            if (allInputs[i].dataset.autofill === \"false\") {\n                continue;\n            }\n            if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\n                if (allInputs[i].value == fieldVal) {\n                    allInputs[i].checked = true;\n                }\n            } else if (allInputs[i].type == \"date\") {\n                allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat);\n            } else if (allInputs[i].type == \"time\") {\n                allInputs[i].value = getNormalizedTime(fieldVal);\n            } else {\n                allInputs[i].value = fieldVal;\n            }\n        }\n    }\n\n    var remove_tooltips = function() {\n        for (var i = 0; i < tooltips.length; i++) {\n            tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n        }\n        tooltips = [];\n    };\n    var remove_tooltip = function(elem) {\n        for (var i = 0; i < tooltips.length; i++) {\n            if (tooltips[i].elem === elem) {\n                tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n                tooltips.splice(i, 1);\n                return;\n            }\n        }\n    };\n    var create_tooltip = function(elem, text) {\n        var tooltip = document.createElement('div'),\n            arrow = document.createElement('div'),\n            inner = document.createElement('div'), new_tooltip = {};\n        if (elem.type != 'radio' && (elem.type != 'checkbox' || elem.name === 'sms_consent')) {\n            tooltip.className = '_error';\n            arrow.className = '_error-arrow';\n            inner.className = '_error-inner';\n            inner.innerHTML = text;\n            tooltip.appendChild(arrow);\n            tooltip.appendChild(inner);\n            elem.parentNode.appendChild(tooltip);\n        } else {\n            tooltip.className = '_error-inner _no_arrow';\n            tooltip.innerHTML = text;\n            elem.parentNode.insertBefore(tooltip, elem);\n            new_tooltip.no_arrow = true;\n        }\n        new_tooltip.tip = tooltip;\n        new_tooltip.elem = elem;\n        tooltips.push(new_tooltip);\n        return new_tooltip;\n    };\n    var resize_tooltip = function(tooltip) {\n        var rect = tooltip.elem.getBoundingClientRect();\n        var doc = document.documentElement,\n            scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\n        if (scrollPosition < 40) {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\n        } else {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\n        }\n    };\n    var resize_tooltips = function() {\n        if (_removed) return;\n        for (var i = 0; i < tooltips.length; i++) {\n            if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\n        }\n    };\n    var validate_field = function(elem, remove) {\n        var tooltip = null, value = elem.value, no_error = true;\n        remove ? remove_tooltip(elem) : false;\n        if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n        if (elem.getAttribute('required') !== null) {\n            if (elem.type == 'radio' || (elem.type == 'checkbox' && \/any\/.test(elem.className))) {\n                var elems = form_to_submit.elements[elem.name];\n                if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {\n                    no_error = elem.checked;\n                }\n                else {\n                    no_error = false;\n                    for (var i = 0; i < elems.length; i++) {\n                        if (elems[i].checked) no_error = true;\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (elem.type =='checkbox') {\n                var elems = form_to_submit.elements[elem.name], found = false, err = [];\n                no_error = true;\n                for (var i = 0; i < elems.length; i++) {\n                    if (elems[i].getAttribute('required') === null) continue;\n                    if (!found && elems[i] !== elem) return true;\n                    found = true;\n                    elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\n                    if (!elems[i].checked) {\n                        no_error = false;\n                        elems[i].className = elems[i].className + ' _has_error';\n                        err.push(\"Es necesario verificar %s\".replace(\"%s\", elems[i].value));\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, err.join('<br\/>'));\n                }\n            } else if (elem.tagName == 'SELECT') {\n                var selected = true;\n                if (elem.multiple) {\n                    selected = false;\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                } else {\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected\n                            && (!elem.options[i].value\n                            || (elem.options[i].value.match(\/\\n\/g)))\n                        ) {\n                            selected = false;\n                        }\n                    }\n                }\n                if (!selected) {\n                    elem.className = elem.className + ' _has_error';\n                    no_error = false;\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (value === undefined || value === null || value === '') {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Este campo es obligatorio.\");\n            }\n        }\n        if (no_error && elem.name == 'email') {\n            if (!value.match(\/^[\\+_a-z0-9-'&=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida.\");\n            }\n        }\n        if (no_error && (elem.id == 'phone')) {\n            if (elem.value.trim() && typeof iti != 'undefined' && !iti.isValidNumber()) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Ingresa un n\u00famero de tel\u00e9fono v\u00e1lido.\");\n            }\n        }\n        if (no_error && \/date_field\/.test(elem.className)) {\n            if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una fecha v\u00e1lida.\");\n            }\n        }\n\n        if (no_error && elem.name === 'sms_consent') {\n            const elemShouldBeChecked = (!!elem.attributes.required && !elem.checked);\n            if (elemShouldBeChecked) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Marca esta casilla para continuar\");\n            } else {\n                elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n            }\n        }\n        tooltip ? resize_tooltip(tooltip) : false;\n        return no_error;\n    };\n    var needs_validate = function(el) {\n        if(el.getAttribute('required') !== null){\n            return true;\n        }\n        if((el.name === 'email' || el.id === 'phone') && el.value !== \"\"){\n            return true;\n        }\n\n        return false;\n    };\n    var validate_form = function(e) {\n        var err = form_to_submit.querySelector('._form_error'), no_error = true;\n        if (!submitted) {\n            submitted = true;\n            for (var i = 0, len = allInputs.length; i < len; i++) {\n                var input = allInputs[i];\n                if (needs_validate(input)) {\n                    if (input.type == 'text' || input.type == 'number' || input.type == 'time' || input.type == 'tel') {\n                        addEvent(input, 'blur', function() {\n                            this.value = this.value.trim();\n                            validate_field(this, true);\n                        });\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'radio' || input.type == 'checkbox') {\n                        (function(el) {\n                            function getElementsArray(name){\n                                const value =  form_to_submit.elements[name];\n                                if (Array.isArray(value)){\n                                    return value;\n                                }\n                                return [value];\n                            }\n                            var radios = getElementsArray(el.name);\n                            for (var i = 0; i < radios.length; i++) {\n                                addEvent(radios[i], 'change', function() {\n                                    validate_field(el, true);\n                                });\n                            }\n                        })(input);\n                    } else if (input.tagName == 'SELECT') {\n                        addEvent(input, 'change', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'textarea'){\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    }\n                }\n            }\n        }\n        remove_tooltips();\n        for (var i = 0, len = allInputs.length; i < len; i++) {\n            var elem = allInputs[i];\n            if (needs_validate(elem)) {\n                if (elem.tagName.toLowerCase() !== \"select\") {\n                    elem.value = elem.value.trim();\n                }\n                validate_field(elem) ? true : no_error = false;\n            }\n        }\n        if (!no_error && e) {\n            e.preventDefault();\n        }\n        resize_tooltips();\n        return no_error;\n    };\n    addEvent(window, 'resize', resize_tooltips);\n    addEvent(window, 'scroll', resize_tooltips);\n\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"&\")};\n\n    const formSupportsPost = false;\n    var form_submit = function(e) {\n\n        e.preventDefault();\n        if (validate_form()) {\n            if(form_to_submit.querySelector('input[name=\"phone\"]') && typeof iti != 'undefined') {\n                form_to_submit.querySelector('input[name=\"phone\"]').value = iti.getNumber();\n            }\n            \/\/ use this trick to get the submit button & disable it using plain javascript\n            var submitButton = e.target.querySelector('#_form_331_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_331_')).replace(\/%0A\/g, '\\\\n');\n            var err = form_to_submit.querySelector('._form_error');\n            err ? err.parentNode.removeChild(err) : false;\n            async function submitForm() {\n                var formData = new FormData();\n                const searchParams = new URLSearchParams(serialized);\n                searchParams.forEach((value, key) => {\n                    if (key !== 'hideButton') {\n                        formData.append(key, value);\n                    }\n                });\n                let request = {\n                    headers: {\n                        \"Accept\": \"application\/json\"\n                    },\n                    body: formData,\n                    method: \"POST\"\n                };\n\n                let pageUrlParams = new URLSearchParams(window.location.search);\n                if (pageUrlParams.has('t')) {\n                    request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t');\n                }\n                const response = await fetch('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?jsonp=true', request);\n\n                return response.json();\n            }\n            if (formSupportsPost) {\n                submitForm().then((data) => {\n                    eval(data.js);\n                }).catch(() => {\n                    _show_error(\"331\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n                });\n            } else {\n                _load_script('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?' + serialized + '&jsonp=true', null, true);\n            }\n        }\n        return false;\n    };\n    addEvent(form_to_submit, 'submit', form_submit);\n})();\n\n<\/script><style>\/* Texto junto al checkbox: blanco y en l\u00ednea *\/\n._form_299 ._checkbox-radio label {\n  display: inline !important;\n  margin-left: 8px !important;\n}\n\n\/* Color blanco del texto \"Verifica que eres un humano\" *\/\n._form_299 label[for=\"ls\"],\n._form_299 ._form_element label._form-label {\n  color: #ffffff !important;\n  display: inline-block;\n  font-weight: 400 !important;\n  margin-left: 8px;\n}\n\n\/* Placeholder del campo de email *\/\n#_form_299_ #email::placeholder {\n  color: #002132 !important;\n}\n\n\/* Altura del campo de email reducida *\/\n#_form_299_ #email {\n  padding: 8px 12px !important;\n  height: 40px !important;\n  font-size: 14px !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n\nlabel {\n    display: inline;\n}<\/style><\/div><\/div>\n<h2>Formatos m\u00e1s habituales que presentan los datos estructurados<\/h2>\n<p>Antes ya te he anticipado que, cuando hablamos de datos estructurados, no solo importa el vocabulario que utilizas, sino tambi\u00e9n su representaci\u00f3n.<\/p>\n<p>A continuaci\u00f3n te comento los tres formatos de marcado m\u00e1s comunes que nos podemos encontrar.<\/p>\n<h3>JSON-LD (JavaScript Object Notation for Linked Data)<\/h3>\n<p>Es el <strong>formato que nos recomienda utilizar Google<\/strong>. Va encapsulado en un bloque &lt;script&gt; dentro del &lt;head&gt; o el &lt;body&gt; del HTML, lo que lo hace f\u00e1cil de implementar y mantener.<\/p>\n<p>El ejemplo que hemos visto antes es un JSON-LD.<\/p>\n<h3>Microdata<\/h3>\n<p>Se inserta directamente dentro del HTML, a\u00f1adiendo <strong>atributos a las etiquetas<\/strong>.<\/p>\n<p>Fue muy popular en su d\u00eda, pero puede ensuciar el c\u00f3digo y <strong>resulta m\u00e1s dif\u00edcil de mantener<\/strong> en proyectos grandes. Sin embargo, a\u00fan lo usan algunos plugins antiguos y plantillas.<\/p>\n<pre>&lt;div itemscope itemtype=\"https:\/\/schema.org\/Product\"&gt;\r\n&lt;h1 itemprop=\"name\"&gt;Caldera Bosch Condens C6000 W 25\/32&lt;\/h1&gt;\r\n&lt;img src=\"https:\/\/www.tusitio.com\/img\/caldera-bosch-C600W.jpg\" alt=\"Caldera Bosch C6000 W\" itemprop=\"image\"&gt;\r\n&lt;p itemprop=\"description\"&gt;Caldera de condensaci\u00f3n de alta eficiencia, ideal para viviendas unifamiliares.&lt;\/p&gt;\r\n&lt;p&gt;Referencia: &lt;span itemprop=\"sku\"&gt;C600W&lt;\/span&gt;&lt;\/p&gt;\r\n&lt;p&gt;Marca: \r\n&lt;span itemprop=\"brand\" itemscope itemtype=\"https:\/\/schema.org\/Brand\"&gt;\r\n&lt;span itemprop=\"name\"&gt;Bosch&lt;\/span&gt;\r\n&lt;\/span&gt;\r\n&lt;\/p&gt;\r\n\r\n&lt;div itemprop=\"offers\" itemscope itemtype=\"https:\/\/schema.org\/Offer\"&gt;\r\n&lt;p&gt;Precio: &lt;span itemprop=\"price\"&gt;1659.90&lt;\/span&gt; &lt;span itemprop=\"priceCurrency\" content=\"EUR\"&gt;\u20ac&lt;\/span&gt;&lt;\/p&gt;\r\n&lt;link itemprop=\"availability\" href=\"https:\/\/schema.org\/InStock\"&gt;En stock\r\n&lt;link itemprop=\"itemCondition\" href=\"https:\/\/schema.org\/NewCondition\"&gt;\r\n&lt;meta itemprop=\"url\" content=\"https:\/\/www.tusitio.com\/productos\/caldera-bosch-C600W\"&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div itemprop=\"aggregateRating\" itemscope itemtype=\"https:\/\/schema.org\/AggregateRating\"&gt;\r\n&lt;p&gt;\r\nValoraci\u00f3n media: &lt;span itemprop=\"ratingValue\"&gt;4.6&lt;\/span&gt; \r\n(basado en &lt;span itemprop=\"reviewCount\"&gt;634&lt;\/span&gt; valoraciones)\r\n&lt;\/p&gt;\r\n&lt;\/div&gt;\r\n&lt;\/div&gt;<\/pre>\n<h3>RDFa (Resource Description Framework in Attributes)<\/h3>\n<p>Es bastante parecido a Microdata a la hora de integrarlo en tus p\u00e1ginas, pero tiene mucha <strong>m\u00e1s potencia sem\u00e1ntica<\/strong>. Se usa sobre todo en entornos acad\u00e9micos, gubernamentales o muy t\u00e9cnicos.<\/p>\n<p>Google lo entiende, pero <strong>no es la opci\u00f3n m\u00e1s pr\u00e1ctica ni sencilla de implementar para SEO<\/strong>.<\/p>\n<pre>&lt;div vocab=\"https:\/\/schema.org\/\" typeof=\"Product\"&gt;\r\n&lt;h1 property=\"name\"&gt;Caldera Bosch Condens C6000 W 25\/32&lt;\/h1&gt;\r\n&lt;img src=\"https:\/\/www.tusitio.com\/img\/caldera-bosch-C600W.jpg\" alt=\"Caldera Bosch C6000 W\" property=\"image\"&gt;\r\n&lt;p property=\"description\"&gt;Caldera de condensaci\u00f3n de alta eficiencia, ideal para viviendas unifamiliares.&lt;\/p&gt;\r\n&lt;p&gt;Referencia: &lt;span property=\"sku\"&gt;C600W&lt;\/span&gt;&lt;\/p&gt;\r\n&lt;p&gt;Marca: \r\n&lt;span property=\"brand\" typeof=\"Brand\"&gt;\r\n&lt;span property=\"name\"&gt;Bosch&lt;\/span&gt;\r\n&lt;\/span&gt;\r\n&lt;\/p&gt;\r\n\r\n&lt;div property=\"offers\" typeof=\"Offer\"&gt;\r\n&lt;p&gt;Precio: &lt;span property=\"price\"&gt;1659.90&lt;\/span&gt; &lt;span property=\"priceCurrency\" content=\"EUR\"&gt;\u20ac&lt;\/span&gt;&lt;\/p&gt;\r\n&lt;link property=\"availability\" href=\"https:\/\/schema.org\/InStock\"&gt;En stock\r\n&lt;link property=\"itemCondition\" href=\"https:\/\/schema.org\/NewCondition\"&gt;\r\n&lt;meta property=\"url\" content=\"https:\/\/www.tusitio.com\/productos\/caldera-bosch-C600W\"&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div property=\"aggregateRating\" typeof=\"AggregateRating\"&gt;\r\n&lt;p&gt;\r\nValoraci\u00f3n media: &lt;span property=\"ratingValue\"&gt;4.6&lt;\/span&gt; \r\n(basado en &lt;span property=\"reviewCount\"&gt;634&lt;\/span&gt; valoraciones)\r\n&lt;\/p&gt;\r\n&lt;\/div&gt;\r\n&lt;\/div&gt;<\/pre>\n<h2>C\u00f3mo implementar el marcado de datos estructurados en tu web. Gu\u00eda paso a paso<\/h2>\n<p>Al llegar a este punto, la primera pregunta que quiz\u00e1 se te venga a la cabeza es:<\/p>\n<p><strong>\u00bfNecesito saber c\u00f3digo para usar datos estructurados?<\/strong><\/p>\n<p>Afortunadamente, <strong>la respuesta es no<\/strong>.<\/p>\n<p>Tienes a tu disposici\u00f3n diferentes plugins,<strong> generadores visuales y asistentes que te lo ponen muy f\u00e1cil<\/strong>. Y en este apartado te voy a contar los m\u00e1s pr\u00e1cticos y c\u00f3mo puedes usarlos.<\/p>\n<p>Ahora bien, tambi\u00e9n te advierto que <strong>s\u00ed conviene entender un poco el formato JSON-LD<\/strong>, as\u00ed como revisar lo que generan todas estas herramientas para evitar errores que puedan perjudicar a tu web.<\/p>\n<p>Dicho esto, vamos con el paso a paso para integrar datos estructurados de tus p\u00e1ginas.<\/p>\n<h3>1. Crear del fragmento de c\u00f3digo JSON-LD<\/h3>\n<p>El primer paso ser\u00e1 crear el c\u00f3digo en formato JSON-LD que, como hemos visto, es el recomendado por Google.<\/p>\n<p>Pero no lo haremos a mano. En lugar de eso,<strong> vamos a ayudarnos de algunas utilidades gratuitas<\/strong> que nos hacen buena parte del trabajo.<\/p>\n<h4>Asistente para el marcado de datos estructurados de Google<\/h4>\n<p>Una de las principales herramientas que existen para crear datos estructurados nos la proporciona el propio Google. Puedes acceder a ella desde <a href=\"https:\/\/www.google.com\/webmasters\/markup-helper\/?hl=es\" target=\"_blank\" rel=\"nofollow noopener\">aqu\u00ed<\/a>.<\/p>\n<p>Cuando la abras en tu navegador, comprobar\u00e1s que es muy sencilla de usar. Simplemente introduce la URL de la p\u00e1gina de tu web que quieras etiquetar y <strong>elige el tipo de datos estructurados que mejor encaje con el contenido<\/strong> de tu p\u00e1gina. Despu\u00e9s pulsa el bot\u00f3n \u201cempezar a etiquetar\u201d.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-30701 size-full\" title=\"Asistente para el marcado de datos estructurados de Google\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado.png\" alt=\"Asistente para el marcado de datos estructurados de Google\" width=\"1024\" height=\"604\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-300x177.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-768x453.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Si no te funciona este m\u00e9todo, puedes introducir directamente el HTML de tu web. Para ello, visualiza el c\u00f3digo fuente de tu p\u00e1gina con un navegador, selecciona todo el texto, c\u00f3pialo y p\u00e9galo en el cuadro correspondiente del asistente de Google.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-30702 size-full\" title=\"Asistente para el marcado de datos estructurados de Google\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-html.png\" alt=\"Asistente para el marcado de datos estructurados de Google\" width=\"1024\" height=\"817\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-html.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-html-300x239.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-html-768x613.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Si todo va bien, la herramienta cargar\u00e1 una visualizaci\u00f3n de tu p\u00e1gina y completar\u00e1 algunos de los campos que reconozca.<\/p>\n<p>El resto de campos los deber\u00e1s ir completando t\u00fa. Pero no te preocupes, no es dif\u00edcil. Tan s\u00f3lo tendr\u00e1s que <strong>seleccionar los elementos que contengan informaci\u00f3n relevante <\/strong>y, con el bot\u00f3n derecho, indicar con qu\u00e9 propiedades se corresponden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30703 size-full\" title=\"Asistente para el marcado de datos estructurados de Google\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-proceso.png\" alt=\"Asistente para el marcado de datos estructurados de Google\" width=\"1024\" height=\"550\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-proceso.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-proceso-300x161.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-proceso-768x413.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Cuando lo tengas todo, pulsa el bot\u00f3n \u201cCrear HTML\u201d y ver\u00e1s directamente el JSON-LD que te puedes descargar.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30704 size-full\" title=\"Asistente para el marcado de datos estructurados de Google\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-resultado.png\" alt=\"Asistente para el marcado de datos estructurados de Google\" width=\"1024\" height=\"627\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-resultado.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-resultado-300x184.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-google-asistente-marcado-resultado-768x470.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>Herramienta de datos estructurados online gratuita<\/h4>\n<p>Ya hemos visto que el asistente para el marcado de datos estructurados de Google es una herramienta muy pr\u00e1ctica y realmente f\u00e1cil de utilizar. Sin embargo, a veces no es capaz de cargar bien nuestra p\u00e1gina.<\/p>\n<p>O tambi\u00e9n puede ocurrir que las opciones de tipos de datos que ofrece se te queden algo cortas.<\/p>\n<p>Si \u00e9ste es tu caso, te recomiendo esta otra <a href=\"https:\/\/technicalseo.com\/tools\/schema-markup-generator\/\" target=\"_blank\" rel=\"nofollow noopener\">herramienta para crear datos estructurados<\/a>, que es <strong>algo m\u00e1s completa<\/strong> (y tambi\u00e9n algo menos visual).<\/p>\n<p>Con Schema Markup Generator deber\u00e1s seleccionar el esquema m\u00e1s apropiado para tu p\u00e1gina web y <strong>completar manualmente todos los campos<\/strong> que te presenta.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30712 size-full\" title=\"Schema Markup Generator\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-schema-markup-generator.png\" alt=\"Schema Markup Generator\" width=\"1024\" height=\"824\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-schema-markup-generator.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-schema-markup-generator-300x241.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-schema-markup-generator-768x618.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Conforme rellenas la informaci\u00f3n, ver\u00e1s c\u00f3mo se va generando el JSON-LD correspondiente.<\/p>\n<p>Como te digo, no es tan amigable como la herramienta de Google, pero es <strong>mucho m\u00e1s potente y nada dif\u00edcil de utilizar<\/strong>.<\/p>\n<h4>Extra: crear datos estructurados con ChatGPT<\/h4>\n<p>Y, c\u00f3mo no, en el momento actual no podemos olvidarnos de la IA.<\/p>\n<p><strong>ChatGPT es quiz\u00e1 la herramienta que m\u00e1s trabajo te puede ahorrar<\/strong> a la hora de crear los datos estructurados de una p\u00e1gina. Eso s\u00ed, debes pasarle t\u00fa toda la informaci\u00f3n con la mayor precisi\u00f3n y, como siempre, comprobar despu\u00e9s que el c\u00f3digo que te crea es correcto.<\/p>\n<p>Para que te sirva de gu\u00eda, aqu\u00ed tienes un <strong>ejemplo de prompt<\/strong>:<\/p>\n<pre>Genera un c\u00f3digo JSON-LD v\u00e1lido seg\u00fan Schema.org para marcar la ficha de producto de una tienda online. El producto es: \r\n- Nombre: Caldera Bosch Condens C6000 W 25\/32\r\n- Descripci\u00f3n: Caldera de condensaci\u00f3n de alta eficiencia, ideal para viviendas unifamiliares.\r\n- Imagen: https:\/\/www.tusitio.com\/img\/caldera-bosch-C600W.jpg\r\n- Identificador del modelo: C600W\r\n- Marca: Bosch\r\n- Precio: 1659.90 \u20ac\r\n- Producto nuevo y en stock\r\n- URL del producto: https:\/\/www.tusitio.com\/productos\/caldera-bosch-C600W\r\n- Valoraci\u00f3n: 4.6\r\n- N\u00famero de valoraciones: 634<\/pre>\n<p>Y \u00e9ste ser\u00eda el resultado:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30699 size-full\" title=\"Datos estructurados con ChatGPT\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-chatgpt.png\" alt=\"Datos estructurados con ChatGPT\" width=\"1024\" height=\"860\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-chatgpt.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-chatgpt-300x252.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-chatgpt-768x645.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>2. Insertar los datos estructurados en tu web<\/h3>\n<p>Vale, ya tienes listo tu c\u00f3digo JSON-LD. Ahora toca colocarlo en tu web para que Google lo vea, lo entienda y lo use.<\/p>\n<p>Es muy probable que tu sitio est\u00e9 construido sobre WordPress. Al menos, es el caso que m\u00e1s me suelo encontrar. Por eso, vamos a ver primero c\u00f3mo hacerlo con este CMS y despu\u00e9s te explicar\u00e9 qu\u00e9 opciones tienes si no es tu caso.<\/p>\n<h4>Si utilizas WordPress<\/h4>\n<p>La mayor\u00eda de <strong>plugins de SEO <\/strong>m\u00e1s utilizados en WordPress (como pueden ser <a href=\"https:\/\/dinorank.com\/blog\/rank-math-seo\/\">Rank Math<\/a> o <a href=\"https:\/\/dinorank.com\/blog\/configurar-yoast-seo\/\">Yoast SEO<\/a>) <strong>ya incluyen opciones para a\u00f1adir marcado Schema<\/strong> autom\u00e1ticamente.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30715 size-full\" title=\"Datos estructurados con plugin de WordPress: ejemplo de Rank Math SEO\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-plugin.png\" alt=\"Datos estructurados con plugin de WordPress: ejemplo de Rank Math SEO\" width=\"1024\" height=\"864\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-plugin.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-plugin-300x253.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-plugin-768x648.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>No obstante, sus opciones pueden quedarse algo limitadas en ciertos casos.<\/p>\n<p>Por eso, mi recomendaci\u00f3n es que seas t\u00fa quien se encargue de incrustar el c\u00f3digo JSON-LD directamente en las p\u00e1ginas de tu web. Al menos, en las m\u00e1s importantes.<\/p>\n<p>Para ello, <strong>muchos temas ya incluyen la posibilidad de modificar el contenido de la etiqueta &lt;head&gt;<\/strong> de cada URL.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30716 size-full\" title=\"Datos estructurados con temas de WordPress: ejemplo de Asap Theme\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-tema.png\" alt=\"Datos estructurados con temas de WordPress: ejemplo de Asap Theme\" width=\"1024\" height=\"721\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-tema.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-tema-300x211.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-wordpress-tema-768x541.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Y si el tuyo no tiene esta opci\u00f3n, siempre puedes <strong>utilizar un plugin espec\u00edfico<\/strong>, como el que te contamos en este otro post sobre <a id=\"CTA-1\" href=\"https:\/\/dinorank.com\/blog\/como-implementar-datos-estructurados-wordpress\/\" target=\"_blank\" rel=\"noopener\">c\u00f3mo implementar datos estructurados en WordPress<\/a>.<\/p>\n<h4>Si no utilizas WordPress<\/h4>\n<p>Pero claro, no todo es WordPress y es posible que t\u00fa est\u00e9s utilizando otra tecnolog\u00eda diferente para tu web.<\/p>\n<p>En ese caso, debes saber que <strong>muchos CMS y plataformas de ecommerce ya vienen con funciones de datos estructurados<\/strong> integradas, o bien permiten a\u00f1adirlos con relativa facilidad.<\/p>\n<p>Por ejemplo, <a href=\"https:\/\/dinorank.com\/blog\/seo-para-shopify\/\">Shopify<\/a>, <a href=\"https:\/\/dinorank.com\/blog\/seo-para-prestashop\/\">Prestashop<\/a> o Magento incluyen ciertas opciones de marcado Schema m\u00e1s o menos completas, mientras que Joomla o Drupal permiten usar extensiones para completar datos estructurados.<\/p>\n<p>Ahora bien, si tu sistema no dispone de estas facilidades, o bien quieres tener un mayor control, deber\u00e1s ser t\u00fa quien <strong>edite el HTML de tu p\u00e1gina <\/strong>(o la plantilla) <strong>y pegue el c\u00f3digo del JSON justo antes del cierre del &lt;head&gt; o dentro del &lt;body&gt;<\/strong>.<\/p>\n<p>Aqu\u00ed te muestro un ejemplo esquem\u00e1tico de c\u00f3mo quedar\u00eda:<\/p>\n<pre>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"es\"&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;Caldera Bosch Condens C6000 W&lt;\/title&gt;\r\n&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\"@context\": \"https:\/\/schema.org\",\r\n\"@type\": \"Product\",\r\n...\r\n}\r\n&lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;!-- contenido visible --&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfD\u00f3nde es mejor colocar el JSON-LD, en el &lt;head&gt; o en el &lt;body&gt;?<\/strong><\/p>\n<p>Realmente da lo mismo. Google lo lee igual. Lo importante es que est\u00e9 completo, sin errores y cargue con el HTML.<\/p>\n<\/div><\/div>\n<h3>3. Comprobar los datos estructurados<\/h3>\n<p>A lo largo de este art\u00edculo he insistido varias veces en la necesidad de validar que los datos estructurados que vas a insertar en tu web sean correctos.<\/p>\n<p>De lo contrario, es posible que Google no los entienda y, por lo tanto, no los utilice.<\/p>\n<p>Por eso, a continuaci\u00f3n te voy a mostrar <strong>dos herramientas muy \u00fatiles para evitar errores en tus datos<\/strong>.<\/p>\n<h4>Validador de datos estructurados de Schema.org<\/h4>\n<p>La primera herramienta es el <a href=\"https:\/\/validator.schema.org\/\" target=\"_blank\" rel=\"nofollow noopener\"><strong>validador oficial de Schema.org<\/strong><\/a><strong>.<\/strong><\/p>\n<p>Lo m\u00e1s fiable suele ser siempre acudir a la fuente oficial y, por eso, este validador deber\u00eda estar ya en los marcadores de tu navegador.<\/p>\n<p>Para usarlo, simplemente introduce la URL de la p\u00e1gina que contenga los datos estructurados o bien copia y pega el fragmento de JSON que quieras validar.<\/p>\n<p>La herramienta <strong>te dir\u00e1 si tu c\u00f3digo est\u00e1 bien formado y si las etiquetas son correctas<\/strong> o, por el contrario, tienen alg\u00fan error.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30714 size-full\" title=\"Validador de datos estructurados de Schema.org\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-schema.png\" alt=\"Validador de datos estructurados de Schema.org\" width=\"1024\" height=\"710\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-schema.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-schema-300x208.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-schema-768x533.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>Prueba de datos estructurados de Google<\/h4>\n<p>La segunda herramienta que deber\u00edas conocer pertenece a Google. Se trata de su <a href=\"https:\/\/search.google.com\/test\/rich-results?hl=es\" target=\"_blank\" rel=\"nofollow noopener\">prueba de resultados enriquecidos<\/a> que, como su nombre indica, nos permite <strong>saber si nuestra p\u00e1gina es susceptible de generar alg\u00fan tipo de Rich Snippet<\/strong>.<\/p>\n<p>De nuevo, introduce la URL de tu p\u00e1gina (o pega su c\u00f3digo HTML) y el validador te dir\u00e1:<\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> Qu\u00e9 tipo de Schema ha detectado.<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> Si es elegible para alg\u00fan tipo de dato enriquecido.<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> Si hay errores o advertencias.<\/li>\n<\/ul>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30713 size-full\" title=\"Prueba de resultados enriquecidos de Google\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-google.png\" alt=\"Prueba de resultados enriquecidos de Google\" width=\"1024\" height=\"737\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-google.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-google-300x216.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-validador-google-768x553.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>Tipos de datos estructurados m\u00e1s comunes en funci\u00f3n del tipo de web. Explicaci\u00f3n con ejemplos<\/h2>\n<p>Ahora ya sabes c\u00f3mo crear los datos estructurados para tu web de manera sencilla y sin necesidad de saber programar.<\/p>\n<p>Pero \u00bfpor d\u00f3nde empezar? <strong>\u00bfQu\u00e9 tipos de datos son m\u00e1s apropiados para tu p\u00e1gina web?<\/strong><\/p>\n<p>Porque est\u00e1 claro que un blog no es lo mismo que una tienda online.<\/p>\n<p>Ni una p\u00e1gina de un negocio local puede tener el mismo trato que una receta de cocina.<\/p>\n<p>Por eso, en este apartado quiero mostrarte los <strong>esquemas de datos estructurados m\u00e1s \u00fatiles desde el punto de vista SEO<\/strong> en funci\u00f3n de cu\u00e1l sea la tipolog\u00eda de tu proyecto.<\/p>\n<p>Y como siempre, lo veremos con ejemplos, para que te resulte mucho m\u00e1s f\u00e1cil de seguir.<\/p>\n<p>\u00a1Vamos all\u00e1!<\/p>\n<h3>Datos estructurados para un blog o web de noticias<\/h3>\n<p>Si tienes una web con contenido informativo, el <strong>Schema Article y sus variantes<\/strong> es uno de los tipos de datos que m\u00e1s vas a utilizar.<\/p>\n<p>A continuaci\u00f3n te comento los dos casos m\u00e1s habituales:<\/p>\n<h4>Article o NewsArticle para noticias<\/h4>\n<p><strong>Article <\/strong>es el tipo de <strong>Schema gen\u00e9rico para un art\u00edculo informativo<\/strong>. Si publicas contenidos period\u00edsticos de opini\u00f3n, textos evergreen, escritos cient\u00edficos y, en general, cualquier tipo de art\u00edculo, \u00e9ste es el tipo de dato estructurado que debes utilizar.<\/p>\n<p>Ahora bien, <strong>si tu p\u00e1gina lo que contiene es una noticia<\/strong>, aunque tambi\u00e9n podr\u00edas usar el Schema Article, <strong>es preferible emplear NewsArticle<\/strong>, que es una especializaci\u00f3n para este tipo de medios.<\/p>\n<p>Aqu\u00ed puedes ver un ejemplo del aspecto que tiene el JSON correspondiente:<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de NewsArticle<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\":\u00a0\"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\":\u00a0\"NewsArticle\",\r\n\u00a0\u00a0\"headline\":\u00a0\"La\u00a0ola\u00a0de\u00a0calor\u00a0se\u00a0alarga\u00a0hasta\u00a0octubre\",\r\n\u00a0\u00a0\"image\":\u00a0[\"https:\/\/www.tusitio.com\/img\/ola-calor.jpg\"],\r\n\u00a0\u00a0\"datePublished\":\u00a0\"2025-09-20\",\r\n\u00a0\u00a0\"dateModified\":\u00a0\"2025-09-21\",\r\n\u00a0\u00a0\"author\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"Person\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\":\u00a0\"Pepa\u00a0Mart\u00edn\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"publisher\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"Organization\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\":\u00a0\"Noticias\u00a0Verdes\",\r\n\u00a0\u00a0\u00a0\u00a0\"logo\":\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"ImageObject\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"url\":\u00a0\"https:\/\/www.tusitio.com\/logo.png\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"mainEntityOfPage\":\u00a0\"https:\/\/www.tusitio.com\/noticias\/ola-calor\"\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>De este modo le indicamos a Google aspectos como:<\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> El t\u00edtulo del art\u00edculo.<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> La imagen destacada.<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> El nombre del autor y el medio donde se publica.<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> Las fechas de publicaci\u00f3n y actualizaci\u00f3n.<\/li>\n<\/ul>\n<\/div>\n<p>Y as\u00ed podemos conseguir que nuestra noticia aparezca destacada en las SERPs.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30707 size-full\" title=\"Resultados enriquecidos para datos estructurados de Noticias\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-noticias-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Noticias\" width=\"1024\" height=\"874\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-noticias-serp.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-noticias-serp-300x256.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-noticias-serp-768x656.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>BlogPosting para art\u00edculos de blog<\/h4>\n<p>Si lo que tienes es un blog tambi\u00e9n podr\u00edas utilizar el esquema Article pero, tal y como ocurre con las noticias, conviene ser m\u00e1s espec\u00edfico y utilizar un tipo de datos m\u00e1s concreto. Para eso, el esquema <strong>BlogPosting <\/strong>es el que mejor encaja en estas situaciones.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de BlogPosting<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"BlogPosting\",\r\n\u00a0\u00a0\"headline\": \"5 errores comunes al implementar datos estructurados\",\r\n\u00a0\u00a0\"image\": [\"https:\/\/www.tusitio.com\/img\/blog\/schema-errores.jpg\"],\r\n\u00a0\u00a0\"datePublished\": \"2025-09-22\",\r\n\u00a0\u00a0\"dateModified\": \"2025-09-24\",\r\n\u00a0\u00a0\"author\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Person\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Pepe P\u00e9rez\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"description\": \"Te contamos los errores m\u00e1s comunes con Schema.org\",\r\n\u00a0\u00a0\"mainEntityOfPage\": \"https:\/\/www.tusitio.com\/blog\/schema-errores\"\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Como ves, la informaci\u00f3n es muy parecida al caso anterior, pero sem\u00e1nticamente es m\u00e1s precisa, ya que <strong>informamos a Google de que nuestro art\u00edculo es un post dentro de un blog<\/strong>.<\/p>\n<p>En definitiva, por si todav\u00eda te queda alguna duda:<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfQu\u00e9 Schema debo usar para un art\u00edculo: Article, BlogPosting o NewsArticle?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si escribes noticias: NewsArticle.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si escribes en un blog personal o profesional: BlogPosting.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si no sabes qu\u00e9 poner, Article es el comod\u00edn general.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h3>Datos estructurados para un ecommerce<\/h3>\n<p>Si en el caso de las p\u00e1ginas web informativas los datos estructurados son importantes, cuando lo que gestionamos es una tienda online, pueden ser el aspecto diferencial entre pasar desapercibidos o que nuestros productos resalten en las SERPs.<\/p>\n<p>Y, por lo tanto, que <strong>atraigan a un mayor n\u00famero de posibles compradores<\/strong>.<\/p>\n<p>Estos son los esquemas que te pueden ayudar a conseguirlo:<\/p>\n<h4>Product para fichas de producto<\/h4>\n<p>No hace falta que te diga que las p\u00e1ginas de producto son uno de los elementos m\u00e1s importantes de tu ecommerce.<\/p>\n<p>Por eso, Schema.org les dedica un tipo de datos espec\u00edficos denominado <strong>Product <\/strong>que <strong>nos sirve para marcar una ficha de producto individual<\/strong>.<\/p>\n<p>Antes ya hemos visto un ejemplo de este tipo de esquema pero, para que te quede m\u00e1s claro, aqu\u00ed te dejo otro m\u00e1s:<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Product<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\/\",\r\n\u00a0\u00a0\"@type\": \"Product\",\r\n\u00a0\u00a0\"name\": \"Zapatillas Running JOMA R2000\",\r\n\u00a0\u00a0\"image\": \"https:\/\/www.tutienda.com\/img\/zapatillas-r2000.jpg\",\r\n\u00a0\u00a0\"description\": \"Zapatillas de running ligeras.\",\r\n\u00a0\u00a0\"sku\": \"R2000\",\r\n\u00a0\u00a0\"brand\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Brand\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Joma\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"offers\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Offer\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.tutienda.com\/productos\/zapatillas-running-pro-2000\",\r\n\u00a0\u00a0\u00a0\u00a0\"priceCurrency\": \"EUR\",\r\n\u00a0\u00a0\u00a0\u00a0\"price\": \"89.90\",\r\n\u00a0\u00a0\u00a0\u00a0\"availability\": \"https:\/\/schema.org\/InStock\",\r\n\u00a0\u00a0\u00a0\u00a0\"itemCondition\": \"https:\/\/schema.org\/NewCondition\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"aggregateRating\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"AggregateRating\",\r\n\u00a0\u00a0\u00a0\u00a0\"ratingValue\": \"4.7\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewCount\": \"112\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<p>As\u00ed, puedes indicar cosas como:<\/p>\n<ul>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> El nombre<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> La marca<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> El precio<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> Si est\u00e1 o no en stock<\/li>\n<li><i class=\"sui sui-check\" style=\"color:#00937D\"><\/i> La valoraci\u00f3n media<\/li>\n<\/ul>\n<\/div>\n<p>Y, en definitiva, todo lo que Google necesita para mostrarlo en sus resultados enriquecidos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30709 size-full\" title=\"Resultados enriquecidos para datos estructurados de Producto\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-2.png\" alt=\"Resultados enriquecidos para datos estructurados de Producto\" width=\"970\" height=\"639\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-2.png 970w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-2-300x198.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-producto-serp-2-768x506.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<h4>CollectionPage para categor\u00edas de producto<\/h4>\n<p>Las categor\u00edas de producto son el otro tipo de p\u00e1ginas que debes cuidar dentro de tu ecommerce.<\/p>\n<p>Sin embargo, para este caso tenemos el problema de que <strong>Schema.org no define un tipo de datos especializado<\/strong>. Pero no te preocupes, s\u00ed que tenemos una soluci\u00f3n.<\/p>\n<p>El esquema <strong>CollectionPage <\/strong>es un tipo de datos que describe a una p\u00e1gina web que contiene un listado de elementos y, por lo tanto, <strong>encaja perfectamente para describir categor\u00edas<\/strong>. Aqu\u00ed te muestro ejemplo:<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de CollectionPage<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"CollectionPage\",\r\n\u00a0\u00a0\"name\": \"Zapatillas de Running\",\r\n\u00a0\u00a0\"description\": \"Zapatillas para correr.\",\r\n\u00a0\u00a0\"mainEntity\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"ItemList\",\r\n\u00a0\u00a0\u00a0\u00a0\"itemListElement\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"ListItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"position\": 1,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"item\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Product\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Zapatillas Pro 2000\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.tutienda.com\/productos\/pro-2000\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"ListItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"position\": 2,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"item\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Product\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Zapatillas Urban Speed\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.tutienda.com\/productos\/urban-speed\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Ten en cuenta que <strong>este tipo de datos no suele generar rich snippets visuales directos<\/strong>. Sin embargo, mejora la comprensi\u00f3n de la estructura de tu sitio por parte de Google y ayuda a su indexaci\u00f3n.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p>Entonces, <strong>\u00bfme conviene m\u00e1s marcar mis productos uno a uno o marcar solo las categor\u00edas con CollectionPage?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si cada producto tiene su propia ficha: marca cada Product.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si son cat\u00e1logos grandes o no puedes mantenerlos: marca las categor\u00edas como CollectionPage.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Y si puedes: haz ambas cosas.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h4>Review para las opiniones<\/h4>\n<p><strong>Review <\/strong>es un tipo de Schema que se usa para <strong>marcar una opini\u00f3n concreta que aparece en la p\u00e1gina<\/strong>. Puede estar sola o dentro de un Product, como parte del conjunto de valoraciones.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Review<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>\"review\": {\r\n\u00a0\u00a0\"@type\": \"Review\",\r\n\u00a0\u00a0\"author\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Person\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Luc\u00eda Rodr\u00edguez\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"datePublished\": \"2025-09-22\",\r\n\u00a0\u00a0\"reviewRating\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Rating\",\r\n\u00a0\u00a0\u00a0\u00a0\"ratingValue\": \"5\",\r\n\u00a0\u00a0\u00a0\u00a0\"bestRating\": \"5\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"reviewBody\": \"Son comod\u00edsimas. Perfectas para correr por asfalto.\"\r\n}\r\n<\/div><\/div><\/pre>\n<p>Si en tu ecommerce recoges las opiniones de los clientes, suele ser una buena idea dec\u00edrselo a Google, ya que puede mostrar aspectos de esas rese\u00f1as en las SERPs, como las estrellas e incluso alg\u00fan fragmento concreto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30711 size-full\" title=\"Resultados enriquecidos para datos estructurados de Reviews\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-review-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Reviews\" width=\"1024\" height=\"500\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-review-serp.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-review-serp-300x146.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-review-serp-768x375.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Eso s\u00ed, ten mucho cuidado al hacerlo: si marcas opiniones que no est\u00e1n visibles en la p\u00e1gina, Google puede penalizarte.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfQu\u00e9 diferencia hay entre Review y AggregateRating?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Review es una rese\u00f1a concreta (de una persona).<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> AggregateRating es la media de varias valoraciones.<\/li>\n<\/ul>\n<\/div>\n<p><strong>\u00bfY qu\u00e9 es mejor utilizar?<\/strong> Si muestras una \u00fanica opini\u00f3n: Review. Si tienes estrellas con media: AggregateRating. Y si puedes, usa ambos.<\/p>\n<\/div><\/div>\n<h3>Datos estructurados para una web de negocio local<\/h3>\n<p>Si tienes una tienda f\u00edsica, un despacho, una cl\u00ednica o cualquier otro negocio que atienda al p\u00fablico en una zona concreta, tambi\u00e9n puedes optimizar el SEO de tu web gracias a los datos estructurados.<\/p>\n<p>Para eso, tienes <strong>dos tipos de datos clave: uno para la ficha del negocio y otro para las p\u00e1ginas de servicios.<\/strong><\/p>\n<p>Vamos a verlos.<\/p>\n<h4>LocalBusiness para la p\u00e1gina de descripci\u00f3n del negocio local<\/h4>\n<p><strong>LocalBusiness <\/strong>es el esquema de datos que va a permitir a Google (y a otros sistemas) entender las<strong> caracter\u00edsticas de tu negocio local<\/strong>: qui\u00e9n eres, d\u00f3nde est\u00e1s, qu\u00e9 haces, a qu\u00e9 horas atiendes al p\u00fablico, etc.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de LocalBusiness<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\" : \"http:\/\/schema.org\/\",\r\n\u00a0\u00a0\"@type\" : \"LocalBusiness\",\r\n\u00a0\u00a0\"@id\" : \"https:\/\/www.persianasmarinzaragoza.com\",\r\n\u00a0\u00a0\"name\" : \"Persianas Mar\u00edn\",\r\n\u00a0\u00a0\"address\" : {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\" : \"PostalAddress\",\r\n\u00a0\u00a0\u00a0\u00a0\"streetAddress\" : \"Calle Agustina de Arag\u00f3n 50\",\r\n\u00a0\u00a0\u00a0\u00a0\"addressLocality\" : \"Zaragoza\",\r\n\u00a0\u00a0\u00a0\u00a0\"addressRegion\" : \"Zaragoza\",\r\n\u00a0\u00a0\u00a0\u00a0\"postalCode\" : \"50004\",\r\n\u00a0\u00a0\u00a0\u00a0\"addressCountry\" : \"ES\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"geo\" : {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\" : \"GeoCoordinates\",\r\n\u00a0\u00a0\u00a0\u00a0\"latitude\" : \"41.654625\",\r\n\u00a0\u00a0\u00a0\u00a0\"longitude\" : \"-0.888139\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"url\" : \"https:\/\/www.persianasmarinzaragoza.com\",\r\n\u00a0\u00a0\"telephone\" : \"976 43 91 19\",\r\n\u00a0\u00a0\"logo\" : \"https:\/\/de.cdn-website.com\/80544158c6034264905a00c23879a96e\/dms3rep\/multi\/PERSIANAS-MARIN-web.png\",\r\n\u00a0\u00a0\"openingHoursSpecification\" : [ {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\" : \"OpeningHoursSpecification\",\r\n\u00a0\u00a0\u00a0\u00a0\"dayOfWeek\" : [ \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\" ],\r\n\u00a0\u00a0\u00a0\u00a0\"opens\" : \"09:00\",\r\n\u00a0\u00a0\u00a0\u00a0\"closes\" : \"13:00\"\r\n\u00a0\u00a0}, {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\" : \"OpeningHoursSpecification\",\r\n\u00a0\u00a0\u00a0\u00a0\"dayOfWeek\" : [ \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\" ],\r\n\u00a0\u00a0\u00a0\u00a0\"opens\" : \"16:00\",\r\n\u00a0\u00a0\u00a0\u00a0\"closes\" : \"20:00\"\r\n\u00a0\u00a0} ],\r\n\u00a0\u00a0\"sameAs\" : [ \"https:\/\/facebook.com\/287837064643977\" ]\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Toda esta informaci\u00f3n <strong>ayuda a reforzar la visibilidad de tu negocio en Google Maps y Google Business Profile<\/strong>, ya que mejora el reconocimiento de tu marca por parte del buscador.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30706 size-full\" title=\"Resultados enriquecidos para datos estructurados de LocalBusiness \" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-negocio-local-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de LocalBusiness \" width=\"970\" height=\"764\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-negocio-local-serp.png 970w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-negocio-local-serp-300x236.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-negocio-local-serp-768x605.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfY es lo mismo utilizar Organization que LocalBusiness?<\/strong><\/p>\n<p>Lo cierto es que no. Organization (que veremos m\u00e1s adelante) es gen\u00e9rico y es v\u00e1lido para empresas, ONGs, marcas, etc.<\/p>\n<p>En cambio, LocalBusiness es para negocios que atienden en una ubicaci\u00f3n f\u00edsica o zona concreta.<\/p>\n<p>Por lo tanto, <strong>si tienes un negocio local, usa LocalBusiness. Si no, Organization<\/strong>.<\/p>\n<\/div><\/div>\n<h4>Service para las p\u00e1ginas de servicios<\/h4>\n<p><strong>Service <\/strong>es el tipo de dato estructurado que te permitir\u00e1 <strong>describir cada uno de los servicios que ofrece tu negocio<\/strong>, especialmente si cada servicio tiene su propia landing.<\/p>\n<p>De este modo puedes indicar no s\u00f3lo en qu\u00e9 consiste tu servicio, sino aspectos tan importantes como el precio, planes espec\u00edficos, el \u00e1rea donde prestas el servicio o las opiniones de los usuarios.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Service<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Service\",\r\n\u00a0\u00a0\"name\": \"Revisi\u00f3n de caldera\",\r\n\u00a0\u00a0\"description\": \"Revisi\u00f3n anual obligatoria para calderas dom\u00e9sticas.\",\r\n\u00a0\u00a0\"provider\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"LocalBusiness\",\r\n\u00a0\u00a0\u00a0\u00a0\"@id\": \"https:\/\/www.miwebdenegociolocal.com\/\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"areaServed\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Place\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Madrid\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"offers\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Offer\",\r\n\u00a0\u00a0\u00a0\u00a0\"price\": \"89.00\",\r\n\u00a0\u00a0\u00a0\u00a0\"priceCurrency\": \"EUR\",\r\n\u00a0\u00a0\u00a0\u00a0\"availability\": \"https:\/\/schema.org\/InStock\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/miwebdenegociolocal.com\/servicios\/revision-caldera\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Este esquema<strong> no genera un Rich Snippet visual directo<\/strong>, como s\u00ed lo har\u00eda un Product, pero refuerza la conexi\u00f3n entre tus servicios, tu negocio local y la zona geogr\u00e1fica de influencia.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p>Entonces, <strong>\u00bfuso Product o Service para lo que ofrezco?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si vendes algo f\u00edsico o digital con carrito y precio: Product.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si ofreces algo que se contrata (mantenimiento, clases, asesor\u00eda): Service.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h3>Datos estructurados para contenidos espec\u00edficos<\/h3>\n<p>Hemos visto esquemas de datos estructurados para p\u00e1ginas informativas, tiendas online y p\u00e1ginas de negocio locales. Sin embargo, como sabes, existen muchos otros contenidos que podr\u00edas publicar en tu web.<\/p>\n<p>Por eso, en este apartado te comento<strong> otros tipos de datos que te podr\u00edan resultar de utilidad.<\/strong><\/p>\n<h4>Recipe para recetas<\/h4>\n<p>El tipo <strong>Recipe sirve para marcar recetas de cocina<\/strong> con todo lujo de detalles: ingredientes, pasos, tiempo de preparaci\u00f3n, valores nutricionales, valoraciones y mucho m\u00e1s.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Recipe<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Recipe\",\r\n\u00a0\u00a0\"name\": \"Tarta de queso cl\u00e1sica\",\r\n\u00a0\u00a0\"image\": \"https:\/\/www.miwebderecetas.com\/img\/tarta-queso.jpg\",\r\n\u00a0\u00a0\"description\": \"Una receta f\u00e1cil para una tarta de queso al horno.\",\r\n\u00a0\u00a0\"recipeYield\": \"8 raciones\",\r\n\u00a0\u00a0\"prepTime\": \"PT15M\",\r\n\u00a0\u00a0\"cookTime\": \"PT50M\",\r\n\u00a0\u00a0\"totalTime\": \"PT1H5M\",\r\n\u00a0\u00a0\"recipeIngredient\": [\r\n\u00a0\u00a0\u00a0\u00a0\"500g de queso crema\",\r\n\u00a0\u00a0\u00a0\u00a0\"200ml de nata\",\r\n\u00a0\u00a0\u00a0\u00a0\"3 huevos\",\r\n\u00a0\u00a0\u00a0\u00a0\"100g de az\u00facar\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0\"recipeInstructions\": [\r\n\u00a0\u00a0\u00a0\u00a0\"Precalienta el horno a 180\u00baC.\",\r\n\u00a0\u00a0\u00a0\u00a0\"Mezcla todos los ingredientes.\",\r\n\u00a0\u00a0\u00a0\u00a0\"Vierte en un molde y hornea 50 minutos.\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0\"aggregateRating\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"AggregateRating\",\r\n\u00a0\u00a0\u00a0\u00a0\"ratingValue\": \"4.9\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewCount\": \"212\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>De este modo, <strong>Google puede mostrar diferentes elementos de tu receta<\/strong> en las SERPs e incluso incluirte dentro de su carrusel de recetas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30710 size-full\" title=\"Resultados enriquecidos para datos estructurados de Recetas\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-recetas-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Recetas\" width=\"970\" height=\"728\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-recetas-serp.png 970w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-recetas-serp-300x225.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-recetas-serp-768x576.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<p>Ahora bien, adem\u00e1s de Recipe, debes saber que hay otro tipo de dato que tambi\u00e9n te permite <strong>documentar instrucciones paso a paso<\/strong>. Se trata de <strong>HowTo<\/strong>, que tambi\u00e9n puede generar resultados enriquecidos en Google.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfCu\u00e1ndo uso HowTo y cu\u00e1ndo uso Recipe?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si est\u00e1s explicando c\u00f3mo hacer algo (montar un mueble, configurar un dispositivo): HowTo.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si es comida o bebida con ingredientes: Recipe.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h4>Event para eventos<\/h4>\n<p><strong>Usa Event si organizas o promocionas eventos <\/strong>con fecha concreta, presenciales o en l\u00ednea: conciertos, talleres, ferias, webinars, etc.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Event<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Event\",\r\n\u00a0\u00a0\"name\": \"Radiograf\u00eda del SEO local en 2025\",\r\n\u00a0\u00a0\"startDate\": \"2025-09-15T18:00\",\r\n\u00a0\u00a0\"endDate\": \"2025-09-15T20:00\",\r\n\u00a0\u00a0\"eventAttendanceMode\": \"https:\/\/schema.org\/OnlineEventAttendanceMode\",\r\n\u00a0\u00a0\"location\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"VirtualLocation\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.youtube.com\/watch?v=UV1Uub6-7iM\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"description\": \"Aprende c\u00f3mo posicionar tu negocio local en Google Maps en 2025.\",\r\n\u00a0\u00a0\"offers\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Offer\",\r\n\u00a0\u00a0\u00a0\u00a0\"price\": \"0\",\r\n\u00a0\u00a0\u00a0\u00a0\"priceCurrency\": \"EUR\",\r\n\u00a0\u00a0\u00a0\u00a0\"availability\": \"https:\/\/schema.org\/InStock\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"organizer\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Organization\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"DinoRANK\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.dinorank.com\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Si marcas tus p\u00e1ginas de eventos con este esquema aumentas tus posibilidades de <strong>aparecer en resultados enriquecidos y en carruseles de eventos<\/strong> dentro de Google.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23799 size-large\" title=\"Ejemplo de datos estructurados de evento\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/datos-etructurados-evento-1-1024x637.webp\" alt=\"Ejemplo de datos estructurados de evento\" width=\"1024\" height=\"637\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/datos-etructurados-evento-1-1024x637.webp 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/datos-etructurados-evento-1-300x187.webp 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/datos-etructurados-evento-1-768x478.webp 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/datos-etructurados-evento-1.webp 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>Course para cursos<\/h4>\n<p><strong>Las formaciones tambi\u00e9n tienen su esquema correspondiente. <\/strong>Se trata del tipo de dato <strong>Course<\/strong>, que te permite documentar aspectos como el nombre del curso, el proveedor, las fechas de inicio y fin o las ediciones.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Course<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Course\",\r\n\u00a0\u00a0\"name\": \"Curso intensivo de copywriting\",\r\n\u00a0\u00a0\"description\": \"Aprende a escribir textos que venden.\",\r\n\u00a0\u00a0\"provider\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Organization\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Escribir Mejor\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/www.escribirmejor.com\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"hasCourseInstance\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"CourseInstance\",\r\n\u00a0\u00a0\u00a0\u00a0\"startDate\": \"2025-11-01\",\r\n\u00a0\u00a0\u00a0\u00a0\"endDate\": \"2025-11-30\",\r\n\u00a0\u00a0\u00a0\u00a0\"location\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Place\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Online\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Ahora bien, si lo que vendes es un curso como infoproducto, quiz\u00e1 te hab\u00edas planteado tambi\u00e9n la posibilidad de clasificarlo como tipo Product. Vamos a despejar esta duda de una vez por todas:<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfEs mejor marcar los cursos como Product o como Course?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si quieres reforzar que se trata de una formaci\u00f3n: Course.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si solo quieres mostrar precio y disponibilidad, sin contexto educativo: Product.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Si puedes: usa Course con CourseInstance que incluya un Offer.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h4>JobPosting para ofertas de empleo<\/h4>\n<p><strong>Si en tu web publicas ofertas de empleo<\/strong>, entonces marcar tus p\u00e1ginas con Schema <strong>JobPosting <\/strong>hace que sea m\u00e1s visible para los motores de b\u00fasqueda e incluso te puede permitir aparecer en el m\u00f3dulo de empleos de Google.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30700 size-full\" title=\"Resultados enriquecidos para datos estructurados de Ofertas de empleo\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-empleo-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Ofertas de empleo\" width=\"970\" height=\"771\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-empleo-serp.png 970w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-empleo-serp-300x238.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-empleo-serp-768x610.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<p>Para que te hagas una idea de los elementos que puedes indicar en este tipo de datos, a continuaci\u00f3n te muestro un ejemplo ficticio:<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de JobPosting<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"JobPosting\",\r\n\u00a0\u00a0\"title\": \"Especialista en SEO t\u00e9cnico\",\r\n\u00a0\u00a0\"description\": \"Buscamos un perfil con experiencia en datos estructurados.\",\r\n\u00a0\u00a0\"datePosted\": \"2025-08-24\",\r\n\u00a0\u00a0\"validThrough\": \"2025-09-15T23:59\",\r\n\u00a0\u00a0\"employmentType\": \"FULL_TIME\",\r\n\u00a0\u00a0\"hiringOrganization\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Organization\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Agencia TopSEO\",\r\n\u00a0\u00a0\u00a0\u00a0\"sameAs\": \"https:\/\/www.topseo.com\",\r\n\u00a0\u00a0\u00a0\u00a0\"logo\": \"https:\/\/www.topseo.com\/logo.png\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"jobLocation\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Place\",\r\n\u00a0\u00a0\u00a0\u00a0\"address\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"PostalAddress\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"addressLocality\": \"Barcelona\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"addressCountry\": \"ES\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"baseSalary\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"MonetaryAmount\",\r\n\u00a0\u00a0\u00a0\u00a0\"currency\": \"EUR\",\r\n\u00a0\u00a0\u00a0\u00a0\"value\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"QuantitativeValue\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"value\": 30000,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"unitText\": \"YEAR\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<h3>Datos estructurados para trabajar el EEAT<\/h3>\n<p><strong>El <a id=\"CTA-1\" href=\"https:\/\/dinorank.com\/blog\/que-es-eeat-y-como-trabajarlo-caso-real-seo\/\" target=\"_blank\" rel=\"noopener\">EEAT<\/a> es un aspecto crucial<\/strong> hoy en d\u00eda para conseguir que nuestra web acabe posicionando en los principales buscadores.<\/p>\n<p>Lo bueno es que <strong>hay formas de reforzarlo con Schema.org<\/strong>.<\/p>\n<p>Aqu\u00ed lo que buscamos no son estrellitas ni carruseles en las SERPs. Lo que queremos es que Google entienda qui\u00e9nes somos y por qu\u00e9 deber\u00eda fiarse de nosotros a la hora de tener en cuenta nuestros contenidos.<\/p>\n<p>Estos son los datos estructurados que pueden darte un empuj\u00f3n en este sentido.<\/p>\n<h4>Organization para definir la marca<\/h4>\n<p><strong>Organization te permite describir la entidad que hay detr\u00e1s de un sitio web<\/strong>: una empresa, una instituci\u00f3n, una ONG, etc.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Organization<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Organization\",\r\n\u00a0\u00a0\"@id\": \"https:\/\/dinorank.com\/\",\r\n\u00a0\u00a0\"name\": \"DinoRANK\",\r\n\u00a0\u00a0\"url\": \"https:\/\/dinorank.com\/\",\r\n\u00a0\u00a0\"logo\": \"https:\/\/dinorank.com\/img\/web\/dinorank-logo-white.svg\",\r\n\u00a0\u00a0\"sameAs\": [\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/www.linkedin.com\/company\/dinorank\/\",\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/www.youtube.com\/c\/DinoRANK\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0\"contactPoint\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"ContactPoint\",\r\n\u00a0\u00a0\u00a0\u00a0\"contactType\": \"Atenci\u00f3n al cliente\",\r\n\u00a0\u00a0\u00a0\u00a0\"email\": \"info@dinorank.com\"\r\n\u00a0\u00a0}\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>De esta manera <strong>refuerzas tu perfil de marca y tu autoridad ante Google<\/strong> y le ayudas a que aspectos como el logo o los datos de contacto aparezcan bien en los resultados y paneles de conocimiento.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfPuedes usar Organization aunque seas aut\u00f3nomo o freelance y \u00fanicamente tengas una marca personal?<\/strong><\/p>\n<p>Claro que s\u00ed. Puedes definirte como Organization con tu nombre comercial, aunque seas t\u00fa solo y, de esta manera, reforzar tu faceta profesional.<\/p>\n<\/div><\/div>\n<h4>Person para las p\u00e1ginas de autor<\/h4>\n<p><strong>Person te permite describir al autor de un contenido o al experto que firma una secci\u00f3n<\/strong>.<\/p>\n<p>Es clave para todo tipo de webs, pero muy especialmente para aqu\u00e9llas que publican contenidos sobre la salud, finanzas, o legales, donde Google quiere saber qui\u00e9n est\u00e1 hablando.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Person<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"Person\",\r\n\u00a0\u00a0\"@id\": \"https:\/\/dinorank.com\/blog\/author\/dean-romero\/\",\r\n\u00a0\u00a0\"name\": \"Dean Romero\",\r\n\u00a0\u00a0\"jobTitle\": \"Cofundador de DinoRANK y fundador de SEOWarriors.club\",\r\n\u00a0\u00a0\"image\": \"https:\/\/dinorank.com\/img\/web\/equipo\/avatar-Dean.jpg\",\r\n\u00a0\u00a0\"affiliation\": {\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Organization\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"DinoRANK\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"sameAs\": [\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/deanromero.com\/\",\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/www.instagram.com\/deanromero10\/\",\r\n\u00a0\u00a0\u00a0\u00a0\"https:\/\/x.com\/DeanRomero10\"\r\n\u00a0\u00a0],\r\n\u00a0\u00a0\"knowsAbout\": [\"SEO t\u00e9cnico\", \"Datos estructurados\", \"Auditor\u00eda web\"]\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Con este c\u00f3digo en nuestra p\u00e1gina de autor conseguimos reforzar la autor\u00eda y experiencia de los contenidos que creamos, aumentamos la confianza y <strong>facilitamos a Google que pueda relacionarnos con otros sitios o publicaciones<\/strong> si coinciden las se\u00f1ales.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d4dfd9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#eef9f3;border-color:#ffffff;color:#002132;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<p><strong>\u00bfQu\u00e9 diferencia hay entre marcar a un autor con Person y simplemente poner su nombre en el texto?<\/strong><\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Solo nombre: Google lo puede leer, pero probablemente no lo vincule a otros contextos.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Con Person: puedes enlazar biograf\u00eda, credenciales, redes sociales, etc. En definitiva, das m\u00e1s contexto para mejorar el EEAT.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n<h4>Citation para referencias externas<\/h4>\n<p><strong>Citation <\/strong>no es realmente un tipo de Schema, sino una propiedad que puedes usar dentro de otros tipos de datos, como un Article, para<strong> indicar de d\u00f3nde proviene una afirmaci\u00f3n, idea o dato.<\/strong><\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de Citation<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>\"citation\": [\r\n\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"WebPage\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Introducci\u00f3n al lenguaje de marcado de datos estructurados en la B\u00fasqueda de Google\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/intro-structured-data?hl=es-419\"\r\n\u00a0\u00a0},\r\n\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"@type\": \"Article\",\r\n\u00a0\u00a0\u00a0\u00a0\"name\": \"Rich snippets\",\r\n\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/es.wikipedia.org\/wiki\/Rich_snippets\"\r\n\u00a0\u00a0}\r\n]\r\n<\/pre>\n<\/div><\/div>\n<p>Es el elemento ideal para <strong>citar otras fuentes y reforzar as\u00ed la veracidad de un contenido<\/strong> de cara a Google.<\/p>\n<h3>Otros tipos de datos estructurados de prop\u00f3sito m\u00e1s general<\/h3>\n<p>Para acabar, vamos a ver algunos datos estructurados que pueden ser utilizados en cualquier tipo de web, ya que <strong>permiten describir elementos que pueden aparecer en una p\u00e1gina<\/strong>, ayudando as\u00ed a Google a reconocerlos y a enriquecer los resultados de b\u00fasqueda con formatos m\u00e1s visuales.<\/p>\n<h4>BreadcrumbList para las migas de pan<\/h4>\n<p><strong>BreadcrumbList permite marcar las migas de pan<\/strong> que ves en muchas webs (esa ruta de navegaci\u00f3n del tipo \u201cInicio &gt; Blog &gt; Art\u00edculos SEO\u201d).<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de BreadcrumbList<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\":\u00a0\"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\":\u00a0\"BreadcrumbList\",\r\n\u00a0\u00a0\"itemListElement\":\u00a0[\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"ListItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"position\":\u00a01,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\":\u00a0\"Inicio\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"item\":\u00a0\"https:\/\/www.ejemplo.com\/\"\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"ListItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"position\":\u00a02,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\":\u00a0\"Blog\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"item\":\u00a0\"https:\/\/www.ejemplo.com\/blog\"\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\":\u00a0\"ListItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"position\":\u00a03,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\":\u00a0\"Errores\u00a0comunes\u00a0con\u00a0Schema\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"item\":\u00a0\"https:\/\/www.ejemplo.com\/blog\/errores-schema\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Le ayuda a Google a entender la jerarqu\u00eda de tu sitio y puede reemplazar la URL en los resultados por esta estructura.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30705 size-full\" title=\"Resultados enriquecidos para datos estructurados de Migas de Pan\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-migas-pan-serp.png\" alt=\"Resultados enriquecidos para datos estructurados de Migas de Pan\" width=\"970\" height=\"510\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-migas-pan-serp.png 970w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-migas-pan-serp-300x158.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/09\/datos-estructurados-seo-migas-pan-serp-768x404.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<h4>FAQPage para las preguntas frecuentes<\/h4>\n<p><strong>FAQPage se usa para marcar secciones de preguntas frecuentes<\/strong>, donde el usuario ve la pregunta y su respuesta directamente.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de FAQPage<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\": \"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\": \"FAQPage\",\r\n\u00a0\u00a0\"mainEntity\": [\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Question\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"\u00bfQu\u00e9 son los datos estructurados?\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"acceptedAnswer\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Answer\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"text\": \"Es una forma de etiquetar tu web para que los buscadores la entiendan mejor.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Question\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"\u00bfAparecer\u00e9 mejor posicionado si los uso?\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"acceptedAnswer\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@type\": \"Answer\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"text\": \"Ayudan mucho a mejorar la visibilidad en las SERP, pero no garantizan mejores posiciones.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Es uno de los formatos m\u00e1s visibles de la SERP, aunque Google ha empezado a limitar su uso a p\u00e1ginas \u201crelevantes\u201d y \u201c\u00fatiles\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23802 size-large\" title=\"Ejemplo de datos estructurados de preguntas frecuentes\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/ejemplo-datos-estructurados-faq-1024x703.webp\" alt=\"Ejemplo de datos estructurados de preguntas frecuentes\" width=\"1024\" height=\"703\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/ejemplo-datos-estructurados-faq-1024x703.webp 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/ejemplo-datos-estructurados-faq-300x206.webp 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/ejemplo-datos-estructurados-faq-768x527.webp 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/ejemplo-datos-estructurados-faq.webp 1165w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>VideoObject para los v\u00eddeos<\/h4>\n<p><strong>VideoObject permite describir un v\u00eddeo embebido en tu p\u00e1gina<\/strong>: t\u00edtulo, miniatura, duraci\u00f3n, fecha de publicaci\u00f3n, descripci\u00f3n, etc.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937D;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Ejemplo de VideoObject<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">\n<pre>&lt;script type=\"application\/ld+json\"&gt;\r\n{\r\n\u00a0\u00a0\"@context\":\u00a0\"https:\/\/schema.org\",\r\n\u00a0\u00a0\"@type\":\u00a0\"VideoObject\",\r\n\u00a0\u00a0\"name\":\u00a0\"C\u00f3mo\u00a0implementar\u00a0datos\u00a0estructurados\",\r\n\u00a0\u00a0\"description\":\u00a0\"Gu\u00eda\u00a0r\u00e1pida\u00a0para\u00a0a\u00f1adir\u00a0JSON-LD\u00a0en\u00a0una\u00a0web\u00a0paso\u00a0a\u00a0paso.\",\r\n\u00a0\u00a0\"thumbnailUrl\":\u00a0\"https:\/\/www.ejemplo.com\/img\/thumb-video-schema.jpg\",\r\n\u00a0\u00a0\"uploadDate\":\u00a0\"2025-09-20\",\r\n\u00a0\u00a0\"duration\":\u00a0\"PT3M45S\",\r\n\u00a0\u00a0\"contentUrl\":\u00a0\"https:\/\/www.ejemplo.com\/videos\/schema.mp4\",\r\n\u00a0\u00a0\"embedUrl\":\u00a0\"https:\/\/www.youtube.com\/embed\/abc123\"\r\n}\r\n&lt;\/script&gt;<\/pre>\n<\/div><\/div>\n<p>Si Google lo acepta, puedes aparecer con una miniatura destacada o incluso en carruseles de v\u00eddeos.<\/p>\n<h2>En resumen<\/h2>\n<p><strong>Los datos estructurados son una forma de hablarle a Google<\/strong> (y a otros sistemas) en un idioma que entiende sin problemas. De decirle: \u201cesto es un producto, esto es un autor, esto es una receta\u201d y que lo sepa sin tener que adivinarlo.<\/p>\n<p>Y cuanto mejor lo comprenda, <strong>m\u00e1s f\u00e1cil ser\u00e1 que te muestre entre sus resultados <\/strong>de un modo que llame la atenci\u00f3n del usuario: con estrellas, con fechas, con miniaturas, con enlaces directos. O simplemente, m\u00e1s arriba.<\/p>\n<p>As\u00ed que, ahora que ya conoces la importancia de introducir los datos estructurados en tu web y has visto lo f\u00e1cil que es, \u00bfvas a dejar pasar la oportunidad de ganar visibilidad para tu proyecto?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace poco estuve en Jap\u00f3n y una de las cosas que hice fue entrar en un bazar en Tokio. Peque\u00f1ito, al fondo de una galer\u00eda, con luz c\u00e1lida y estanter\u00edas de madera hasta el techo. Todo estaba perfectamente colocado, pero los carteles estaban en japon\u00e9s. Hab\u00eda tarros con cosas, cajas con objetos que no sab\u00eda [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":30698,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10],"tags":[],"class_list":["post-30669","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aprender-seo"],"acf":[],"_links":{"self":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/30669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/comments?post=30669"}],"version-history":[{"count":40,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/30669\/revisions"}],"predecessor-version":[{"id":33067,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/30669\/revisions\/33067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media\/30698"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media?parent=30669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/categories?post=30669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/tags?post=30669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}