{"id":3562,"date":"2021-01-28T18:48:58","date_gmt":"2021-01-28T17:48:58","guid":{"rendered":"https:\/\/dinorank.com\/blog\/?p=3562"},"modified":"2026-04-17T11:20:53","modified_gmt":"2026-04-17T09:20:53","slug":"que-son-los-topic-cluster","status":"publish","type":"post","link":"https:\/\/dinorank.com\/blog\/topic-cluster\/","title":{"rendered":"\u00bfQu\u00e9 son los Topic Cluster en SEO y por qu\u00e9 los necesitas?"},"content":{"rendered":"<div class=\"su-note border=#000000\"  style=\"border-color:#007963;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:#00937D;border-color:#ccffff;color:#ffffff;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">Este art\u00edculo ha sido actualizado en el mes de abril de 2026 y se revisa peri\u00f3dicamente cada 2 meses para a\u00f1adir informaci\u00f3n relevante en funci\u00f3n de las novedades de cada momento.<\/div><\/div>\n<p>Los contenidos de tu web tienen una importancia primordial en el posicionamiento y, por ello, debes prestarles la misma atenci\u00f3n que a las cuestiones m\u00e1s t\u00e9cnicas del SEO.<\/p>\n<p>Por eso, hoy te queremos hablar de los <strong>Topic Cluster SEO<\/strong>, es decir, contenidos que se agrupan bajo una misma ideal o tema principal.<\/p>\n<p>Aunque no se trata de un concepto precisamente nuevo, s\u00ed es cierto que cada vez est\u00e1 ganando m\u00e1s popularidad dentro del Inbound Marketing, en especial al comprobar que, en efecto, ayudan a ganar puestos en las SERPs y tambi\u00e9n a aparecer en las respuestas de los modelos de inteligencia artificial.<\/p>\n<p>\u00bfQuieres aprender a utilizarlos dentro de tu proyecto?<\/p>\n<p>Entonces sigue leyendo. Veremos c\u00f3mo crear estas agrupaciones de contenidos y c\u00f3mo <a href=\"https:\/\/dinorank.com\/\" target=\"_blank\" rel=\"noopener\">DinoRANK puede ser tu gran aliado en esta tarea<\/a>.<\/p>\n<p>\u00a1Empezamos!<\/p>\n<h2>\u00bfQu\u00e9 es un Topic Cluster en SEO?<\/h2>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:4px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937d;color:#ffffff;border-top-left-radius:2px;border-top-right-radius:2px\">Definici\u00f3n de Topic Cluster SEO<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:2px;border-bottom-right-radius:2px\">Un Topic Cluster es una agrupaci\u00f3n de contenidos que gira en torno a una misma idea principal y que est\u00e1n conectados entre s\u00ed<\/div><\/div>\n<p>La aparici\u00f3n de esta estrategia SEO viene motivada por la importancia creciente de la <span class=\"su-highlight\" style=\"background:#00937D;color:#ffffff\">&nbsp;intenci\u00f3n de b\u00fasqueda del usuario como factor de posicionamiento&nbsp;<\/span>.<\/p>\n<p>Es decir, antes ten\u00edas que hacer b\u00fasquedas muy concretas para que los motores de b\u00fasqueda te ense\u00f1aran la informaci\u00f3n que estabas requiriendo.<\/p>\n<p>Ahora es distinto: los motores de b\u00fasqueda y en especial los buscadores generativos basados en inteligencia artificial, cada vez son m\u00e1s capaces de <strong>entender qu\u00e9 es lo que quiere el usuario<\/strong> aunque no utilice t\u00e9rminos exactos para encontrarlo. Ya no leen solo palabras; entienden conceptos.<\/p>\n<p>Esto se traduce en que, si quieres que tu web suba puestos en los resultados de b\u00fasqueda de Google o tu proyecto sea mencionado en las respuestas de la IA, tienes que <strong>satisfacer la intenci\u00f3n de b\u00fasqueda o <em>Search Intent<\/em><\/strong> en todas sus variantes, desde la m\u00e1s amplia hasta la m\u00e1s espec\u00edfica (long-tail).<\/p>\n<p>Aqu\u00ed es donde intervienen los Topic Cluster, ya que demuestra que no solo sabes de un tema en concreto, sino que<strong> dominas todo el ecosistema que lo rodea<\/strong>.<\/p>\n<p>Y es entonces cuando tu web se convierte en una fuente de informaci\u00f3n relevante.<br \/>\n<a href=\"https:\/\/dinorank.com\/blog\/descubre-dinorank\/\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-24924 size-large\" title=\"Aumenta tus visitas desde Google con DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png\" alt=\"Aumenta tus visitas desde Google con DinoRANK\" width=\"1024\" height=\"427\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-300x125.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-768x321.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank.png 1071w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h3>Componentes principales de un Topic Cluster<\/h3>\n<p>Los tres factores que hay que trabajar en los Topic Cluster son:<\/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> <strong>Idea central <\/strong>en torno a la cual se estructurar\u00e1n los contenidos.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> <a href=\"https:\/\/dinorank.com\/blog\/que-es-un-cluster-seo\/\" target=\"_blank\" rel=\"noopener\"><strong>Cluster<\/strong><\/a>, el grupo de contenidos con los que quieres posicionar<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> <strong>Enlaces internos<\/strong>, el medio por el que vas a conectar los contenidos del cluster.<\/li>\n<\/ul>\n<\/div>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-3581 size-full\" style=\"font-size: 16px; font-family: Karla, Arial, sans-serif; opacity: 0.84; letter-spacing: -0.128px;\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/ejemplo-topic-cluster.png\" alt=\"ejemplo topic cluster\" width=\"774\" height=\"707\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/ejemplo-topic-cluster.png 774w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/ejemplo-topic-cluster-300x274.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/ejemplo-topic-cluster-768x702.png 768w\" sizes=\"(max-width: 774px) 100vw, 774px\" \/><\/p>\n<p>Como ves, <strong>un Topic Cluster no es un grupo de contenidos sin m\u00e1s<\/strong>, escogidos de forma aleatoria.<\/p>\n<p>La estrategia que subyace bajo un Topic Cluster tiene que planificarse previamente ya que no basta con ofrecer contenido de calidad sino que \u00e9ste debe estar relacionado convenientemente para que surta efecto.<\/p>\n<h3>\u00bfCu\u00e1l es la diferencia entre una palabra clave y un agrupamiento tem\u00e1tico?<\/h3>\n<p>La diferencia principal es que una <strong>palabra clave<\/strong> es la unidad m\u00ednima de b\u00fasqueda, mientras que un <strong>Topic Cluster<\/strong> es un conjunto de contenidos que tratan un tema desde todas sus vertientes.<\/p>\n<p>En esta tabla te lo mostramos m\u00e1s en detalle:<\/p>\n<p><span style=\"font-weight: 400;\"><div class=\"su-table su-table-fixed\"><\/span><\/p>\n<table class=\"mtr-table mtr-thead-th\">\n<thead>\n<tr>\n<th data-mtr-content=\"Caracter\u00edstica\" class=\"mtr-th-tag\"><div class=\"mtr-cell-content\">Caracter\u00edstica<\/div><\/th>\n<th data-mtr-content=\"Palabra Clave (Keyword)\" class=\"mtr-th-tag\"><div class=\"mtr-cell-content\">Palabra Clave (Keyword)<\/div><\/th>\n<th data-mtr-content=\"Agrupamiento Tem\u00e1tico (Topic Cluster)\" class=\"mtr-th-tag\"><div class=\"mtr-cell-content\">Agrupamiento Tem\u00e1tico (Topic Cluster)<\/div><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-mtr-content=\"Caracter\u00edstica\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\"><strong>Enfoque<\/strong><\/div><\/td>\n<td data-mtr-content=\"Palabra Clave (Keyword)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Una consulta espec\u00edfica (ej. \u201cmejores zapatillas running\u201d).<\/div><\/td>\n<td data-mtr-content=\"Agrupamiento Tem\u00e1tico (Topic Cluster)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Un \u00e1rea de conocimiento (ej. \u201cEquipamiento para correr\u201d).<\/div><\/td>\n<\/tr>\n<tr>\n<td data-mtr-content=\"Caracter\u00edstica\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\"><strong>Objetivo<\/strong><\/div><\/td>\n<td data-mtr-content=\"Palabra Clave (Keyword)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Posicionar un art\u00edculo para una b\u00fasqueda concreta.<\/div><\/td>\n<td data-mtr-content=\"Agrupamiento Tem\u00e1tico (Topic Cluster)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Construir autoridad sem\u00e1ntica en todo un sector.<\/div><\/td>\n<\/tr>\n<tr>\n<td data-mtr-content=\"Caracter\u00edstica\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\"><strong>Estructura<\/strong><\/div><\/td>\n<td data-mtr-content=\"Palabra Clave (Keyword)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Un contenido aislado o \u201cp\u00e1gina suelta\u201d.<\/div><\/td>\n<td data-mtr-content=\"Agrupamiento Tem\u00e1tico (Topic Cluster)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Varios contenidos interconectados.<\/div><\/td>\n<\/tr>\n<tr>\n<td data-mtr-content=\"Caracter\u00edstica\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\"><strong>IA y Google<\/strong><\/div><\/td>\n<td data-mtr-content=\"Palabra Clave (Keyword)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Responde a una coincidencia de t\u00e9rminos.<\/div><\/td>\n<td data-mtr-content=\"Agrupamiento Tem\u00e1tico (Topic Cluster)\" class=\"mtr-td-tag\"><div class=\"mtr-cell-content\">Responde a una intenci\u00f3n de b\u00fasqueda global.<\/div><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\"><\/div><\/span><\/p>\n<div id=\"brxe-d62272\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-1141e3\" class=\"brxe-text-basic h3\">\u00bfOtra newsletter de SEO? Quiz\u00e1s\u2026<\/div><div id=\"brxe-071f14\" class=\"brxe-text-basic\">Esto es lo que podemos ofrecerte:\n<\/div><ul id=\"brxe-eosgrh\" class=\"brxe-list\"><li ><div class=\"content\"><span class=\"icon\"><i class=\"ion-ios-checkmark-circle\"><\/i><\/span><span class=\"title\">Un email semanal con las novedades importantes del sector. <\/span><span class=\"separator\"><\/span><\/div><\/li><li ><div class=\"content\"><span class=\"icon\"><i class=\"ion-ios-checkmark-circle\"><\/i><\/span><span class=\"title\">Aprende SEO que podr\u00e1s aplicar en tu web o en las de tus clientes.<\/span><span class=\"separator\"><\/span><\/div><\/li><li ><div class=\"content\"><span class=\"icon\"><i class=\"ion-ios-checkmark-circle\"><\/i><\/span><span class=\"title\">Accede a webinars y a los eventos SEO totalmente gratuitos que organizamos.<\/span><span class=\"separator\"><\/span><\/div><\/li><\/ul><div id=\"brxe-ajplje\" class=\"brxe-text-basic\"><strong>Sin ruido, sin humo. Gratis.<\/strong> Solo necesito tu email y un poquito de tu atenci\u00f3n, nosotros hacemos el resto.\n\nT\u00fa decides.\n<\/div><div id=\"brxe-c60d60\" data-script-id=\"c60d60\" class=\"brxe-code incontent-form-html\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=ibm-plex-sans:400,700);<\/style>\n<style>\n#_form_301_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_301_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_301_._form-top{top:0}#_form_301_._form-bottom{bottom:0}#_form_301_._form-left{left:0}#_form_301_._form-right{right:0}#_form_301_ input[type=\"text\"],#_form_301_ input[type=\"tel\"],#_form_301_ input[type=\"date\"],#_form_301_ 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_301_ textarea{resize:none}#_form_301_ ._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:5px !important;-webkit-border-radius:5px !important;border-radius:5px !important;color:#FFFFFF !important;padding:13px !important}#_form_301_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_301_ ._submit.processing{position:relative}#_form_301_ ._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_301_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background:#00C4A7 !important;border:0 !important;-moz-border-radius:5px !important;-webkit-border-radius:5px !important;border-radius:5px !important;color:#FFFFFF !important;padding:13px !important}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_301_ ._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_301_ ._close-icon:before{position:relative}#_form_301_ ._form-body{margin-bottom:30px}#_form_301_ ._form-image-left{width:150px;float:left}#_form_301_ ._form-content-right{margin-left:164px}#_form_301_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_301_ ._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_301_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_301_ ._form-label,#_form_301_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_301_._dark ._form-branding{color:#333}#_form_301_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_301_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_301_ ._form_element *{font-size:14px}#_form_301_ ._form_element._clear{clear:both;width:100%;float:none}#_form_301_ ._form_element._clear:after{clear:left}#_form_301_ ._form_element input[type=\"text\"],#_form_301_ ._form_element input[type=\"date\"],#_form_301_ ._form_element select,#_form_301_ ._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_301_ ._field-wrapper{position:relative}#_form_301_ ._inline-style{float:left}#_form_301_ ._inline-style input[type=\"text\"]{width:150px}#_form_301_ ._inline-style:not(._clear){margin-right:20px}#_form_301_ ._form_element img._form-image{max-width:100%}#_form_301_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_301_ ._clear-element{clear:left}#_form_301_ ._full_width{width:100%}#_form_301_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_301_ input[type=\"text\"]._has_error,#_form_301_ textarea._has_error{border:#F37C7B 1px solid}#_form_301_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_301_ ._show_be_error{float:left}#_form_301_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_301_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_301_ ._error._below{padding-top:8px;top:100%;right:0}#_form_301_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_301_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_301_ ._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_301_ ._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_301_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_301_ ._button-wrapper ._error-inner._form_error{position:static}#_form_301_ ._error-inner._no_arrow{margin-bottom:10px}#_form_301_ ._error-arrow{position:absolute;width:0;height:0}#_form_301_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_301_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_301_ select.datetime_time{width:29%;display:inline;height:32px}#_form_301_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_301_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_301_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_301_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_301_ ._form-content{margin:0;width:100%}#_form_301_ ._form-inner{display:block;min-width:100%}#_form_301_ ._form-title,#_form_301_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_301_ ._form-title{font-size:1.2em}#_form_301_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_301_ ._form-element,#_form_301_ ._inline-style,#_form_301_ input[type=\"text\"],#_form_301_ label,#_form_301_ p,#_form_301_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_301_ ._row._checkbox-radio label{display:inline}#_form_301_ ._row,#_form_301_ p,#_form_301_ label{margin-bottom:0.7em;width:100%}#_form_301_ ._row input[type=\"checkbox\"],#_form_301_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_301_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_301_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_301_ ._form-image{max-width:100%;height:auto !important}#_form_301_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_301_ input[type=\"radio\"],#_form_301_ 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_301_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_301_ ._inline-style{margin:20px 0 0 !important}#_form_301_ ._inline-style input[type=\"text\"]{width:100%}}#_form_301_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_301_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_301_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_301_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_301_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_301_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_301_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_301_ .field-required{color:#FF0000}#_form_301_{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_301_ ._show_be_error{min-width:100%}#_form_301_._inline-form,#_form_301_._inline-form ._form-content{font-family:IBM Plex Sans;font-size:14px;font-weight:400}#_form_301_._inline-form ._row span,#_form_301_._inline-form ._row label{font-family:IBM Plex Sans;font-size:14px;font-weight:400;line-height:1.6em;color:#888 !important}#_form_301__inlineform input[type=\"text\"],#_form_301__inlineform input[type=\"date\"],#_form_301__inlineform input[type=\"tel\"],#_form_301__inlineform select,#_form_301__inlineform textarea:not(.g-recaptcha-response){font-family:IBM Plex Sans;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_301_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_301_._inline-form .sms_consent_message,#_form_301_._inline-form ._form-thank-you{font-family:IBM Plex Sans;font-size:14px;font-weight:400;color:#888 !important}#_form_301_._inline-form ._form-label,#_form_301_._inline-form ._form-emailidentifier,#_form_301_._inline-form ._form-checkbox-option-label{font-family:IBM Plex Sans;font-size:14px;font-weight:700;line-height:1.6em;color:#888 !important}#_form_301_._inline-form ._submit{margin-top:12px;font-family:IBM Plex Sans;font-size:14px;font-weight:400}#_form_301_._inline-form ._html-code h1,#_form_301_._inline-form ._html-code h2,#_form_301_._inline-form ._html-code h3,#_form_301_._inline-form ._html-code h4,#_form_301_._inline-form ._html-code h5,#_form_301_._inline-form ._html-code h6,#_form_301_._inline-form ._form-title{font-family:IBM Plex Sans;font-size:22px;line-height:normal;font-weight:700;color:black;margin-bottom:0;display:block}#_form_301_._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_301_:before,#_form_301_:after{content:\" \";display:table}#_form_301_:after{clear:both}#_form_301_._inline-style{width:auto;display:inline-block}#_form_301_._inline-style input[type=\"text\"],#_form_301_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_301_._inline-style button._inline-style{position:relative;top:27px}#_form_301_._inline-style p{margin:0}#_form_301_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_301_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_301_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_301_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_301_ .iti{width:100%}#_form_301_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_301_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_301_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_301_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_301_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_301_ .iti__country-list--dropup{margin-bottom:4px}#_form_301_ .phone-error-hidden{display:none}#_form_301_ .phone-error{color:#E40E49}#_form_301_ .phone-input-error{border:1px solid #E40E49 !important}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_301_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_301_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:18px !important;font-weight:500 !important}#_form_301_ ._submit:hover{background-color:#04937E !important}#_form_301_ input#email{padding:3px 12px;background-color:#ffffff}#_form_301_ ._row{margin-top:-5px}#_form_301_._form{margin-top:-5px}#_form_301_ ._error._below{position:relative !important}#_form_301_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_301_ ._form_element{margin:0 0 0px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_301_\" class=\"_form _form_301 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"301\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"301\" \/>\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=\"9828494011f2fd6968fee0a8a9419a1e\" \/>\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_301_submit\" class=\"_submit\" type=\"submit\">\n      \u00a1Me apunto!\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_301_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_301_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(\"301\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"301\", \"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_301_');\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_301_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_301_')).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(\"301\", \"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_301 ._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_301 label[for=\"ls\"],\n._form_301 ._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_301_ #email::placeholder {\n  color: #002132 !important;\n}\n\n\/* Altura del campo de email reducida *\/\n#_form_301_ #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<\/style><\/div><\/div>\n<h3>Tipos de Topic Cluster<\/h3>\n<p>Existen dos clases de Topic Cluster SEO dependiendo de lo que quieras conseguir:<\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-arrow-circle-right\" style=\"color:#00937D\"><\/i> <strong>Nichos<\/strong>: si tu objetivo es monetizar, tienes que buscar keywords con un buen volumen de b\u00fasqueda.<\/li>\n<li><i class=\"sui sui-arrow-circle-right\" style=\"color:#00937D\"><\/i> <strong>Venta de productos o servicios<\/strong>: aqu\u00ed tienes que localizar las keywords que te interesen para atraer a tus potenciales clientes.<\/li>\n<\/ul>\n<\/div>\n<p>Veamos un ejemplo de cada uno de ellos.<\/p>\n<h2>Ejemplos de topic clusters<\/h2>\n<p>La diferencia entre los clusters informativos (de nicho) y clusters orientados a venta no est\u00e1 tanto en la estructura, sino en la intenci\u00f3n de b\u00fasqueda que hay detr\u00e1s.<\/p>\n<p><strong>En un cluster informativo,<\/strong> el objetivo es cubrir un tema amplio desde distintos \u00e1ngulos.<\/p>\n<p>Por ejemplo, imagina que eliges como p\u00e1gina pilar la keyword &#8220;nombres&#8221;. Es un t\u00e9rmino muy general, casi una categor\u00eda en s\u00ed misma.<\/p>\n<p>A partir de ah\u00ed podr\u00edas tener contenidos espec\u00edficos como: &#8220;nombres de beb\u00e9&#8221;, &#8220;nombres de perros&#8221;, &#8220;nombres de gatos&#8221;, etc.<\/p>\n<p>Todo depende de lo que te devuelva el an\u00e1lisis de keywords. Si hay b\u00fasquedas y variaciones suficientes, tienes material para construir todo un cluster alrededor.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-33124 size-full\" title=\"Ejemplo de Topic Cluster SEO para una web informativa\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-1.jpg\" alt=\"Ejemplo de Topic Cluster SEO para una web informativa\" width=\"1024\" height=\"687\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-1.jpg 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-1-300x201.jpg 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-1-768x515.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>En este caso, la p\u00e1gina pilar act\u00faa como una gu\u00eda general, mientras que los contenidos secundarios atacan necesidades m\u00e1s concretas.<\/p>\n<p>Ahora bien, cuando el objetivo es vender, el enfoque cambia un poco.<\/p>\n<p><strong>En un topic cluster de ventas<\/strong>, la p\u00e1gina pilar tambi\u00e9n es amplia, pero ya est\u00e1 m\u00e1s cerca de la decisi\u00f3n de compra.<\/p>\n<p>Por ejemplo, podr\u00edas tener como base &#8220;zapatillas de deporte&#8221;.<\/p>\n<p>A partir de ah\u00ed, el cluster empieza a especializarse: &#8220;zapatillas de deporte para senderismo&#8221;, &#8220;zapatillas de deporte para tenis&#8221;, &#8220;zapatillas de deporte para correr&#8221;, etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33125 size-full\" title=\"Ejemplo de Topic Cluster SEO para una web de venta\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-2.jpg\" alt=\"Ejemplo de Topic Cluster SEO para una web de venta\" width=\"1024\" height=\"683\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-2.jpg 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-2-300x200.jpg 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/topic-cluster-seo-ejemplo-2-768x512.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Aqu\u00ed ya no solo est\u00e1s informando. <strong>Est\u00e1s ayudando al usuario a elegir<\/strong>.<\/p>\n<p>Y eso cambia bastante el tipo de contenido que debes crear.<\/p>\n<p>As\u00ed, mientras en un cluster informativo buscas cubrir todas las dudas, en uno de ventas buscas acompa\u00f1ar al usuario hasta la decisi\u00f3n final.<\/p>\n<p>Por eso, entender esta diferencia es clave para que el cluster tenga sentido desde el principio.<\/p>\n<h2>\u00bfC\u00f3mo afectan los Topic Cluster al posicionamiento?<\/h2>\n<p>Los clusters tem\u00e1ticos tienen varios beneficios para el SEO. Los m\u00e1s relevantes son:<\/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> Mejora de la experiencia del usuario.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Aumento de la autoridad del sitio web.<\/li>\n<li><i class=\"sui sui-hand-o-right\" style=\"color:#00937D\"><\/i> Mejora del posicionamiento SEO.<\/li>\n<\/ul>\n<\/div>\n<p>As\u00ed, el resultado de esta estructura es que estar\u00e1s mostrando <strong>una agrupaci\u00f3n de contenidos que ofrecer\u00e1n respuestas al usuario<\/strong>, satisfaciendo as\u00ed su intenci\u00f3n de b\u00fasqueda.<\/p>\n<p>No solo eso sino que, cara a los buscadores, estar\u00e1s demostrando que tu p\u00e1gina web es una autoridad en el tema central y que puedes ser un sitio de referencia en el sector.<\/p>\n<p>Adem\u00e1s, <strong>los contenidos del cluster ayudar\u00e1n a posicionar la palabra clave principal<\/strong> y que constituye el core tem\u00e1tico.<\/p>\n<p>\u00a1Ojo! No significa que ya no tengan importancia las palabras clave sino que se pueden utilizar de otra forma, creando grupos de contenidos en torno a una misma keyword.<br \/>\n<a href=\"https:\/\/dinorank.com\/blog\/descubre-dinorank\/\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-24924 size-large\" title=\"Aumenta tus visitas desde Google con DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png\" alt=\"Aumenta tus visitas desde Google con DinoRANK\" width=\"1024\" height=\"427\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-300x125.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-768x321.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank.png 1071w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h2>Los Topic Cluster como estrategia SEO para posicionar en la IA<\/h2>\n<p>Los topic clusters han pasado de ser una buena pr\u00e1ctica SEO a convertirse en <strong>una de las formas m\u00e1s claras de ser valorados por la IA<\/strong>.<\/p>\n<p>Si lo piensas, es l\u00f3gico, ya que una IA no entiende tu web como una lista de art\u00edculos sueltos, sino como un sistema de relaciones.<\/p>\n<p>Y ah\u00ed es donde los clusters de t\u00f3picos juegan mejor que nadie su papel.<\/p>\n<p>Para empezar, un cluster le pone las cosas f\u00e1ciles a cualquier sistema de rastreo. <strong>La IA no tiene que adivinar qu\u00e9 contenido es m\u00e1s importante porque ya se lo est\u00e1s indicando t\u00fa<\/strong> con tu estructura y tu enlazado interno.<\/p>\n<blockquote><p>Gracias a los Topic Clusters, la IA identifica jerarqu\u00edas, detecta profundidad y reduce interpretaciones err\u00f3neas.<\/p><\/blockquote>\n<p>Dicho de otra forma, entiende mejor tu web y conf\u00eda m\u00e1s en ella.<\/p>\n<p>Por otro lado, est\u00e1 el tema de la <a href=\"https:\/\/dinorank.com\/blog\/autoridad-topica\/\"><strong>autoridad tem\u00e1tica<\/strong><\/a>, que aqu\u00ed pesa m\u00e1s que nunca.<\/p>\n<p>Puedes tener un art\u00edculo bien posicionado, s\u00ed. Pero <strong>un solo contenido rara vez te convierte en referencia para una IA<\/strong>.<\/p>\n<p>En cambio, cuando trabajas un cluster completo, cubriendo dudas, matices y subtemas, ya no est\u00e1s atacando una keyword, sino<strong>\u00a0cubriendo una intenci\u00f3n de b\u00fasqueda completa<\/strong>.<\/p>\n<p>Y eso, para los modelos de IA, es una se\u00f1al muy potente de que sabes de lo que hablas.<\/p>\n<p>Adem\u00e1s, debes tener en cuenta que las respuestas generadas por IA no salen de una \u00fanica p\u00e1gina. <strong>Se construyen combinando fragmentos de distintas fuentes<\/strong>.<\/p>\n<p>Los clusters pueden alimentar diferentes partes de la respuesta desde distintas URLs tuyas:<strong> la p\u00e1gina pilar aporta el contexto general, mientras que los contenidos sat\u00e9lite resuelven dudas concretas<\/strong>.<\/p>\n<p>Finalmente tenemos la coherencia sem\u00e1ntica.<\/p>\n<p>Muchas webs tienen contenido disperso, sin orden claro, con art\u00edculos que no se relacionan entre s\u00ed.<\/p>\n<p>En cambio, cuando trabajas clusters, ocurre lo contrario: <strong>cada contenido tiene un papel dentro de una estructura l\u00f3gica<\/strong>.<\/p>\n<p>Como ves, gracias a los Topic Clusters, para la IA es mucho m\u00e1s f\u00e1cil procesar tu web.<\/p>\n<p>Y eso te da m\u00e1s opciones de destacar frente a otras p\u00e1ginas m\u00e1s ca\u00f3ticas, incluso aunque tengan m\u00e1s autoridad.<\/p>\n<h2>C\u00f3mo crear un Topic Cluster<\/h2>\n<p>Como dec\u00edamos m\u00e1s arriba, la creaci\u00f3n de un Topic Cluster conlleva una estrategia e implementaci\u00f3n bien pensadas que te vamos a explicar aqu\u00ed.<\/p>\n<h3>P\u00e1gina pilar: idea principal del cluster<\/h3>\n<p>Se trata de <span class=\"su-highlight\" style=\"background:#00937D;color:#ffffff\">&nbsp;la idea en la que se sustenta todo el Topic Cluster&nbsp;<\/span>y que se genera en torno a una palabra clave.<\/p>\n<p>Esta palabra clave tratar\u00e1 de un tema general que se ampliar\u00e1 de forma exhaustiva con los contenidos que forman el cluster y por eso no suele ser conveniente que sea una keyword long tail.<\/p>\n<blockquote><p>\u00a1Recuerda! Los contenidos del cluster no deben salir de la idea central y derivar de una misma intenci\u00f3n de b\u00fasqueda<\/p><\/blockquote>\n<p>Esta idea se tiene que expresar en el H1, la URL y en el t\u00edtulo cuanto menos para que los motores de b\u00fasqueda sepan cu\u00e1l es el tema que se trata en la p\u00e1gina pilar.<\/p>\n<h4>C\u00f3mo obtener ideas de p\u00e1ginas pilares con DinoRANK<\/h4>\n<p>Lo habitual para sacar ideas de p\u00e1ginas pilar es tirar de lo que ya sabes: tu experiencia en el sector, un poco de brainstorming o incluso preguntar a tu audiencia. De este modo suelen salir temas bastante potentes, porque parten de necesidades reales.<\/p>\n<p>Ahora bien, hay momentos en los que te quedas en blanco. O simplemente quieres ampliar el mapa de ideas.<\/p>\n<p>Y es ah\u00ed cuando DinoRANK puede echarte una mano.<\/p>\n<p>Con el <strong>Keyword Research conversacional<\/strong>, puedes hacer algo tan sencillo como explicarle de qu\u00e9 va tu web y la herramienta empieza a proponerte temas relacionados que pueden encajar como base de un cluster.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33132 size-full\" title=\"Keyword Research conversacional de DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-conversacional.png\" alt=\"Keyword Research conversacional de DinoRANK\" width=\"1024\" height=\"530\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-conversacional.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-conversacional-300x155.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-conversacional-768x398.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Eso s\u00ed, no todas las sugerencias sirven tal cual. Tendr\u00e1s que aplicar tu criterio para filtrar, agrupar y decidir qu\u00e9 temas tienen sentido como p\u00e1gina pilar y cu\u00e1les encajan mejor como contenidos secundarios.<\/p>\n<p>Otra v\u00eda que suele funcionar bastante bien es mirar a la competencia.<\/p>\n<p>Con la <strong>gr\u00e1fica de visibilidad de DinoRANK<\/strong> puedes detectar qu\u00e9 keywords les est\u00e1n trayendo m\u00e1s tr\u00e1fico.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33134 size-full\" title=\"Keywords de la competencia de DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keywords-competencia.png\" alt=\"Keywords de la competencia de DinoRANK\" width=\"1024\" height=\"403\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keywords-competencia.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keywords-competencia-300x118.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keywords-competencia-768x302.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>F\u00edjate especialmente en las keywords con m\u00e1s volumen. Probablemente ah\u00ed haya una idea principal que merece la pena trabajar.<\/p>\n<h3>Cluster: los contenidos<\/h3>\n<p>Estos contenidos deben ser espec\u00edficos y derivar directamente del pilar central. Una buena forma de encontrarlos es haciendo <strong>un an\u00e1lisis de la keyword principal<\/strong> para encontrar palabras clave relacionadas, por lo general de tipo long tail.<\/p>\n<div class=\"su-box su-box-style-default\" id=\"\" style=\"border-color:#00604a;border-radius:4px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#00937d;color:#ffffff;border-top-left-radius:2px;border-top-right-radius:2px\">\u00a1Cuidado al elegir el cluster!<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:2px;border-bottom-right-radius:2px\">Tienes que procurar que los contenidos escogidos no se canibalicen entre s\u00ed ya que conseguir\u00edas el efecto contrario: perjudicar tu posicionamiento<\/div><\/div>\n<p>De nuevo DinoRANK, gracias a su m\u00f3dulo de Keyword Research, te facilita mucho este trabajo.<\/p>\n<p>Basta con introducir la keyword principal y ver\u00e1s aparecer variaciones m\u00e1s espec\u00edficas que te permitir\u00e1n planificar tus contenidos secundarios.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-33133 size-full\" title=\"Keyword Research de DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-relacionadas.png\" alt=\"Keyword Research de DinoRANK\" width=\"1024\" height=\"357\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-relacionadas.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-relacionadas-300x105.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2021\/01\/dinorank-keyword-research-relacionadas-768x268.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Y lo interesante es que muchas de esas palabras clave son de tipo long tail. Es decir, b\u00fasquedas m\u00e1s largas, m\u00e1s espec\u00edficas y normalmente con menos competencia.<\/p>\n<p>\ud83d\udc49 En este post te dejamos una gu\u00eda m\u00e1s detallada sobre <a href=\"https:\/\/dinorank.com\/blog\/como-encontrar-keywords-long-tail\/\">c\u00f3mo encontrar y aprovechar las keywords long tail<\/a>.<\/p>\n<p><strong>No hay un n\u00famero ideal de contenidos que debe tener un Topic Cluster<\/strong>; de hecho, puedes seguir a\u00f1adiendo contenidos al cluster conforme pase el tiempo y encuentres temas relacionados que puedan aportar valor al Topic Cluster.<\/p>\n<p><a href=\"https:\/\/dinorank.com\/seccion-keyword-research\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-30904 size-full\" title=\"Descubre el Keyword Research de DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/11\/1.jpg\" alt=\"Descubre el Keyword Research de DinoRANK\" width=\"800\" height=\"800\" \/><\/a><\/p>\n<h3>Enlaces internos<\/h3>\n<p>Y ahora que tienes tu tema principal y los contenidos, debes proceder al enlazado interno entre los mismos para <strong>facilitar que el usuario para pasando de uno a otro ampliando la informaci\u00f3n que busca<\/strong>.<\/p>\n<p>Usar de forma adecuada estos enlaces internos te dar\u00e1 estos beneficios:<\/p>\n<div class=\"su-list\" style=\"margin-left:0px\">\n<ul>\n<li><i class=\"sui sui-arrow-circle-right\" style=\"color:#00937D\"><\/i> Los motores de b\u00fasqueda entender\u00e1n mejor la estructura de tu p\u00e1gina web<\/li>\n<li><i class=\"sui sui-arrow-circle-right\" style=\"color:#00937D\"><\/i> La autoridad se transmitir\u00e1 entre las URL haciendo que ganen fuerza<\/li>\n<\/ul>\n<\/div>\n<p>Hay dos normas que debes cumplir a la hora de crear el enlazado de tu Topic Cluster: cada cluster o contenido debe tener un link al pilar central y, a su vez, \u00e9ste debe enlazar al contenido.<\/p>\n<p>Gracias a los enlaces habr\u00e1s creado toda una red de informaci\u00f3n en torno a una tem\u00e1tica com\u00fan que conseguir\u00e1 que el usuario no necesite buscar m\u00e1s datos en otros sitios.<\/p>\n<p>Ahora bien, llevar ese enlazado a la pr\u00e1ctica no siempre es tan sencillo como parece, especialmente cuando el n\u00famero de URLs de tu web empieza a crecer.<\/p>\n<p>Aqu\u00ed es donde el <strong>m\u00f3dulo de Enlazado Interno de DinoRANK<\/strong> puede ayudarte bastante.<\/p>\n<p>Esta funcionalidad te permite ver de forma clara <strong>c\u00f3mo est\u00e1n conectadas tus p\u00e1ginas y si esa estructura tiene sentido o no<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21958 size-large\" title=\"enlazado interno dinorank\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/05\/Enlazado-interno-por-clusters-en-DinoRANK-1024x503.webp\" alt=\"enlazado interno dinorank\" width=\"1024\" height=\"503\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/05\/Enlazado-interno-por-clusters-en-DinoRANK-1024x503.webp 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/05\/Enlazado-interno-por-clusters-en-DinoRANK-300x147.webp 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/05\/Enlazado-interno-por-clusters-en-DinoRANK-768x377.webp 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/05\/Enlazado-interno-por-clusters-en-DinoRANK.webp 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>As\u00ed, puedes detectar por ejemplo qu\u00e9 contenidos no est\u00e1n enlazando a la p\u00e1gina pilar o verificar si alguno no est\u00e1 recibiendo ning\u00fan enlace.<\/p>\n<p>Adem\u00e1s, combinado con el <strong>an\u00e1lisis de PageRank interno<\/strong>, puedes entender c\u00f3mo fluye la autoridad entre tus p\u00e1ginas y decidir desde qu\u00e9 contenidos merece la pena enlazar al pilar o qu\u00e9 URLs necesitan m\u00e1s apoyo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21222 size-full\" title=\"Revisi\u00f3n de PageRank con DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/03\/arquitectura-web-pagerank.png\" alt=\"Revisi\u00f3n de PageRank con DinoRANK\" width=\"1024\" height=\"444\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/03\/arquitectura-web-pagerank.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/03\/arquitectura-web-pagerank-300x130.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/03\/arquitectura-web-pagerank-768x333.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Como ves los topic clusters no son solo una forma de ordenar contenidos. Bien trabajados, pueden ayudarte a ganar relevancia, mejorar la navegaci\u00f3n y facilitar que tanto Google como la IA entiendan tu web.<\/p>\n<p>Eso s\u00ed, hay una condici\u00f3n que no conviene pasar por alto: no vale con crear art\u00edculos sueltos, necesitas que todos respondan a una intenci\u00f3n com\u00fan y est\u00e9n bien conectados entre s\u00ed.<\/p>\n<p>Y ah\u00ed es donde DinoRANK puede echarte una mano para conseguirlo. Ya sea para encontrar oportunidades de contenido, analizar keywords o reforzar el enlazado interno, te permite construir clusters con una base s\u00f3lida y no guiarte exclusivamente por tu intuici\u00f3n.<\/p>\n<p><a href=\"https:\/\/dinorank.com\/blog\/descubre-dinorank\/\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-24924 size-large\" title=\"Aumenta tus visitas desde Google con DinoRANK\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png\" alt=\"Aumenta tus visitas desde Google con DinoRANK\" width=\"1024\" height=\"427\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-1024x427.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-300x125.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank-768x321.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/08\/banner-dinorank.png 1071w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>As\u00ed que ahora que ya conoces la potencia de los topic clusters, quiz\u00e1 sea buen momento para mirar tu web con otros ojos y empezar a estructurar mejor tus contenidos.<\/p>\n<p>\u00bfTe animas a ponerlo en pr\u00e1ctica?<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los contenidos de tu web tienen una importancia primordial en el posicionamiento y, por ello, debes prestarles la misma atenci\u00f3n que a las cuestiones m\u00e1s t\u00e9cnicas del SEO. Por eso, hoy te queremos hablar de los Topic Cluster SEO, es decir, contenidos que se agrupan bajo una misma ideal o tema principal. Aunque no se [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":33120,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10],"tags":[],"class_list":["post-3562","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\/3562","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=3562"}],"version-history":[{"count":8,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/3562\/revisions"}],"predecessor-version":[{"id":33141,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/3562\/revisions\/33141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media\/33120"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media?parent=3562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/categories?post=3562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/tags?post=3562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}