<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SEO Técnico | Eligeunaweb Agencia de marketing y programación web</title>
	<atom:link href="https://eligeunaweb.es/category/seo-tecnico/feed/" rel="self" type="application/rss+xml" />
	<link>https://eligeunaweb.es</link>
	<description>Diseño de paginas web, tiendas online, posicionamiento SEO  y redes sociales</description>
	<lastBuildDate>Fri, 01 Aug 2025 19:17:28 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://eligeunaweb.es/wp-content/uploads/2018/09/favicon.png</url>
	<title>SEO Técnico | Eligeunaweb Agencia de marketing y programación web</title>
	<link>https://eligeunaweb.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cómo monitorizar errores en WordPress y notificar vía Slack</title>
		<link>https://eligeunaweb.es/como-monitorizar-errores-en-wordpress-y-notificar-via-slack/</link>
					<comments>https://eligeunaweb.es/como-monitorizar-errores-en-wordpress-y-notificar-via-slack/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Tue, 05 Aug 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[SEO Técnico]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987611057</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Los errores en WordPress pueden pasar desapercibidos hasta que afectan a tus clientes. Configurar un sistema de monitoreo y alertas en Slack te permite detectar problemas al instante y actuar antes de que impacten tu negocio.</p>
<p>&nbsp;</p>
<h2>Índice</h2>
<ul>
<li><a href="#porque">Por qué monitorizar errores en WordPress</a></li>
<li><a href="#activar">Activar el log de errores en WordPress</a></li>
<li><a href="#php">Crear script PHP para enviar errores a Slack</a></li>
<li><a href="#slack">Configurar Slack Webhooks</a></li>
<li><a href="#mejoras">Mejoras y automatización</a></li>
</ul>
<div style="height: 40px;"></div>
<h2 id="porque">Por qué monitorizar errores</h2>
<p>Ventajas:</p>
<ul>
<li>Detectar errores críticos antes que los usuarios</li>
<li>Reducir tiempos de inactividad</li>
<li>Integrar alertas con tu flujo de trabajo (Slack, email, etc.)</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="activar">Activar el log de errores</h2>
<p>Edita el archivo <code>wp-config.php</code>:</p>
<pre class="caja-codigo-blog">define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);</pre>
<p>Esto creará el archivo <code>wp-content/debug.log</code> con los errores.</p>
<div style="height: 40px;"></div>
<h2 id="php">Script PHP para enviar errores a Slack</h2>
<p>Ejemplo básico:</p>
<pre class="caja-codigo-blog">$webhook = 'https://hooks.slack.com/services/TU/WEBHOOK/ID';
$log_file = WP_CONTENT_DIR . '/debug.log';

$lines = file($log_file);
$last = trim(end($lines));

if ($last) {
    $payload = json_encode(["text" =&gt; "Nuevo error detectado: $last"]);
    $ch = curl_init($webhook);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_exec($ch);
    curl_close($ch);
}
</pre>
<p>Este script puede ejecutarse vía cron cada 5 minutos.</p>
<div style="height: 40px;"></div>
<h2 id="slack">Configurar Slack Webhooks</h2>
<ol>
<li>En Slack, ir a <strong>Apps → Manage → Incoming Webhooks</strong></li>
<li>Crear un webhook para el canal de alertas</li>
<li>Copiar la URL e insertarla en el script</li>
</ol>
<div style="height: 40px;"></div>
<h2 id="mejoras">Mejoras</h2>
<ul>
<li>Filtrar solo errores críticos con regex</li>
<li>Integrar el script en n8n para procesamiento avanzado</li>
<li>Guardar logs antiguos en Amazon S3 o Google Drive</li>
<li>Agregar IDs de error únicos para seguimiento</li>
</ul>
<div style="height: 40px;"></div>
<h2>Conclusión</h2>
<p>Monitorear errores de WordPress y recibir alertas en Slack reduce tiempos de respuesta y evita pérdidas de ventas. Automatizar esta tarea debería ser parte de cualquier estrategia de mantenimiento.</p>
<p><strong>¿Quieres que implementemos un sistema de monitoreo de errores para tu sitio?</strong> <a href="/contacto">Contáctanos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-monitorizar-errores-en-wordpress-y-notificar-via-slack/">Cómo monitorizar errores en WordPress y notificar vía Slack</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-monitorizar-errores-en-wordpress-y-notificar-via-slack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo detectar contenido duplicado con MySQL en catálogos grandes de ecommerce</title>
		<link>https://eligeunaweb.es/como-detectar-contenido-duplicado-con-mysql-en-catalogos-grandes-de-ecommerce/</link>
					<comments>https://eligeunaweb.es/como-detectar-contenido-duplicado-con-mysql-en-catalogos-grandes-de-ecommerce/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Fri, 01 Aug 2025 07:00:45 +0000</pubDate>
				<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[SEO Técnico]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987611047</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>El contenido duplicado es uno de los problemas SEO más frecuentes en ecommerce con catálogos extensos. Productos similares, combinaciones, URLs mal gestionadas o falta de control en las descripciones generan duplicidad y penalizan tu posicionamiento. En este artículo te enseño a detectarlo con MySQL y tomar medidas automáticas.</p>
<p>&nbsp;</p>
<h2>Índice</h2>
<ul>
<li><a href="#que-es">Qué se considera contenido duplicado en ecommerce</a></li>
<li><a href="#motivos">Motivos técnicos más comunes</a></li>
<li><a href="#consultas">Consultas MySQL para detectarlo</a></li>
<li><a href="#acciones">Acciones automáticas de limpieza</a></li>
<li><a href="#prevencion">Prevención y buenas prácticas</a></li>
</ul>
<div style="height: 40px;"></div>
<h2 id="que-es">Contenido duplicado: definición SEO</h2>
<p>Se considera contenido duplicado cuando dos o más URLs tienen texto muy similar (título, descripción, contenido) o cuando una misma URL está accesible por diferentes rutas. Google puede penalizar o ignorar esas páginas.</p>
<div style="height: 40px;"></div>
<h2 id="motivos">Motivos comunes en ecommerce</h2>
<ul>
<li>Descripciones copiadas entre productos similares</li>
<li>Variaciones de color o talla con textos idénticos</li>
<li>Duplicidad en meta titles o meta descriptions</li>
<li>Filtros mal gestionados en la URL (?color=azul)</li>
<li>Productos duplicados al importar CSV sin validación</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="consultas">Consultas para detectar duplicados</h2>
<h3>1. Títulos duplicados</h3>
<pre class="caja-codigo-blog">SELECT meta_title, COUNT(*) c
FROM ps_product_lang
GROUP BY meta_title
HAVING c &gt; 1</pre>
<h3>2. Descripciones repetidas</h3>
<pre class="caja-codigo-blog">SELECT description_short, COUNT(*) c
FROM ps_product_lang
GROUP BY description_short
HAVING c &gt; 1 AND LENGTH(description_short) &gt; 50</pre>
<h3>3. URLs duplicadas</h3>
<pre class="caja-codigo-blog">SELECT link_rewrite, COUNT(*) c
FROM ps_product_lang
GROUP BY link_rewrite
HAVING c &gt; 1</pre>
<p>Estas consultas sirven tanto para PrestaShop como WooCommerce si adaptas las tablas.</p>
<div style="height: 40px;"></div>
<h2 id="acciones">Limpieza y acciones automáticas</h2>
<ul>
<li>Detectar y fusionar productos</li>
<li>Redirecciones 301 desde duplicados hacia la versión canónica</li>
<li>Eliminar combinaciones innecesarias</li>
<li>Generar meta title automático si hay coincidencia</li>
</ul>
<div style="height: 40px;"></div>
<h2 id="prevencion">Prevención a futuro</h2>
<ul>
<li>Normalizar contenido al importar CSVs</li>
<li>Usar plantillas de descripciones con variables</li>
<li>Auditorías semanales con cron + email</li>
<li>Incluir campo hash SHA1 del contenido para comparar</li>
</ul>
<pre class="caja-codigo-blog">ALTER TABLE ps_product_lang ADD COLUMN desc_hash VARCHAR(40);
UPDATE ps_product_lang SET desc_hash = SHA1(description_short);
SELECT desc_hash, COUNT(*) FROM ps_product_lang GROUP BY desc_hash HAVING COUNT(*) &gt; 1</pre>
<div style="height: 40px;"></div>
<h2>Conclusión</h2>
<p>El contenido duplicado daña tu SEO y confunde a los usuarios. Con consultas MySQL puedes detectar, eliminar o fusionar esos duplicados y automatizar auditorías. Esto mejora el posicionamiento y la experiencia del cliente.</p>
<p><strong>¿Quieres que auditemos tu catálogo para eliminar duplicidades?</strong> <a href="/contacto">Contáctanos</a>.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-detectar-contenido-duplicado-con-mysql-en-catalogos-grandes-de-ecommerce/">Cómo detectar contenido duplicado con MySQL en catálogos grandes de ecommerce</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-detectar-contenido-duplicado-con-mysql-en-catalogos-grandes-de-ecommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo automatizar la generación del archivo robots.txt desde PHP según la estructura de la tienda</title>
		<link>https://eligeunaweb.es/como-automatizar-la-generacion-del-archivo-robots-txt-desde-php-segun-la-estructura-de-la-tienda/</link>
					<comments>https://eligeunaweb.es/como-automatizar-la-generacion-del-archivo-robots-txt-desde-php-segun-la-estructura-de-la-tienda/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Wed, 28 May 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[SEO Técnico]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987610674</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3><strong>Introducción</strong></h3>
<p>El archivo <code>robots.txt</code> le indica a los buscadores qué pueden y qué no deben rastrear en tu sitio. En tiendas online, configurarlo mal puede provocar indexación de páginas irrelevantes, filtros duplicados o rutas internas no deseadas.</p>
<p>En esta guía te mostramos cómo <strong>automatizar la generación del archivo robots.txt desde PHP</strong>, adaptándolo dinámicamente a la estructura de tu tienda online (PrestaShop, WooCommerce, etc.).</p>

<div style="height:40px;"></div>

<h4>Índice</h4>
<ul>
<li><a href="#funcion"><strong>1. ¿Qué es robots.txt y para qué sirve?</strong></a></li>
<li><a href="#errores"><strong>2. Errores comunes en tiendas online</strong></a></li>
<li><a href="#estructura"><strong>3. Qué deberías bloquear (y qué no)</strong></a></li>
<li><a href="#ejemplo"><strong>4. Ejemplo base de archivo robots.txt</strong></a></li>
<li><a href="#php"><strong>5. Generar robots.txt desde PHP automáticamente</strong></a></li>
<li><a href="#dinamico"><strong>6. Adaptar según tipo de tienda o CMS</strong></a></li>
<li><a href="#actualizar"><strong>7. Cómo actualizarlo periódicamente</strong></a></li>
<li><a href="#conclusion"><strong>8. Conclusión</strong></a></li>
</ul>

<div style="height:40px;"></div>

<h3 id="funcion"><strong>1. ¿Qué es robots.txt?</strong></h3>
<ul>
<li>📁 Archivo de texto que indica a los bots qué indexar y qué no</li>
<li>📍 Se ubica en la raíz del dominio: <code>https://tudominio.com/robots.txt</code></li>
<li>📌 No impide el acceso, solo la indexación</li>
</ul>

<div style="height:40px;"></div>

<h3 id="errores"><strong>2. Errores comunes en ecommerce</strong></h3>
<ul>
<li>❌ Bloquear rutas necesarias como <code>/img/</code> o <code>/modules/</code></li>
<li>❌ Permitir filtros duplicados: <code>?orderby=</code>, <code>?category=</code>, etc.</li>
<li>❌ Indexar páginas de login o carrito</li>
</ul>

<div style="height:40px;"></div>

<h3 id="estructura"><strong>3. Qué rutas bloquear en una tienda</strong></h3>
<table>
<thead><tr><th>Ruta</th><th>Motivo para bloquear</th></tr></thead>
<tbody>
<tr><td>/cart</td><td>Evitar indexar carritos vacíos</td></tr>
<tr><td>/login</td><td>No aporta valor SEO</td></tr>
<tr><td>/search</td><td>Resultados no relevantes</td></tr>
<tr><td>*?orderby=*</td><td>Evitar URLs duplicadas por filtros</td></tr>
</tbody></table>

<div style="height:40px;"></div>

<h3 id="ejemplo"><strong>4. Ejemplo de robots.txt</strong></h3>
<pre class="caja-codigo-blog">User-agent: *
Disallow: /cart
Disallow: /login
Disallow: /search
Disallow: /*?orderby=
Disallow: /*?tag=
Allow: /img/
Sitemap: https://tudominio.com/sitemap.xml</pre>

<div style="height:40px;"></div>

<h3 id="php"><strong>5. Generar el archivo desde PHP</strong></h3>
<pre class="caja-codigo-blog">&lt;?php
$bloqueos = [
  '/cart',
  '/login',
  '/search',
  '/*?orderby=',
  '/*?tag=',
];

$contenido = "User-agent: *\n";
foreach ($bloqueos as $ruta) {
  $contenido .= "Disallow: $ruta\n";
}
$contenido .= "Allow: /img/\n";
$contenido .= "Sitemap: https://tudominio.com/sitemap.xml\n";

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/robots.txt', $contenido);
?&gt;</pre>

<p>✔️ Puedes ejecutarlo desde un cron semanal o al guardar cambios de configuración.</p>

<div style="height:40px;"></div>

<h3 id="dinamico"><strong>6. Adaptarlo a WooCommerce o PrestaShop</strong></h3>
<ul>
<li>📦 Leer estructuras dinámicamente desde MySQL</li>
<li>🔁 Detectar URLs con filtros, etiquetas o paginaciones</li>
<li>📌 Personalizar el `robots.txt` por idioma o multitienda</li>
</ul>

<div style="height:40px;"></div>

<h3 id="actualizar"><strong>7. Cómo actualizarlo automáticamente</strong></h3>
<ul>
<li>🕓 Usar <code>cron</code> semanal para regenerar el archivo</li>
<li>🧠 Escuchar hooks en CMS para regenerarlo al crear nueva categoría</li>
<li>📤 Sincronizar con el sitemap si cambia la arquitectura</li>
</ul>

<div style="height:40px;"></div>

<h3 id="conclusion"><strong>8. Conclusión</strong></h3>
<p>El archivo <code>robots.txt</code> no es algo que configures una vez y olvides. Debe evolucionar con tu tienda y su estructura. Automatizar su creación y adaptación garantiza que tu SEO técnico esté siempre optimizado.</p>
<p>📩 ¿Quieres que lo generemos a medida para tu tienda? Escríbenos y te lo dejamos funcionando con reglas dinámicas.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-automatizar-la-generacion-del-archivo-robots-txt-desde-php-segun-la-estructura-de-la-tienda/">Cómo automatizar la generación del archivo robots.txt desde PHP según la estructura de la tienda</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-automatizar-la-generacion-del-archivo-robots-txt-desde-php-segun-la-estructura-de-la-tienda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo saber si mi web cumple con accesibilidad AA o AAA</title>
		<link>https://eligeunaweb.es/como-saber-si-mi-web-cumple-con-accesibilidad-aa-o-aaa/</link>
					<comments>https://eligeunaweb.es/como-saber-si-mi-web-cumple-con-accesibilidad-aa-o-aaa/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Fri, 23 May 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[SEO Técnico]]></category>
		<category><![CDATA[WordPress UX]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987501832</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_3 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3><strong>Introducción</strong></h3>
<p>La accesibilidad web es una obligación técnica, ética y legal. Si tu web no puede ser usada correctamente por personas con discapacidad visual, auditiva o cognitiva, estás dejando fuera a una parte de tu audiencia y arriesgas sanciones en muchos países.</p>
<p>En esta guía te explicamos cómo <strong>verificar si tu web cumple con los niveles de accesibilidad AA o AAA</strong> según la norma internacional WCAG 2.1. Aprenderás qué debes revisar, qué herramientas usar y cómo detectar errores más allá de lo visual.</p>

<div style="height:40px;"></div>

<h4>Índice</h4>
<ul>
<li><a href="#niveles"><strong>1. Qué son los niveles A, AA y AAA</strong></a></li>
<li><a href="#obligatorio"><strong>2. ¿Qué nivel es obligatorio o recomendado?</strong></a></li>
<li><a href="#herramientas"><strong>3. Herramientas para comprobar accesibilidad</strong></a></li>
<li><a href="#html"><strong>4. Revisión técnica: HTML, ARIA, etiquetas</strong></a></li>
<li><a href="#colores"><strong>5. Contrastes, fuentes y diseño visual</strong></a></li>
<li><a href="#teclado"><strong>6. Navegación por teclado y lectores de pantalla</strong></a></li>
<li><a href="#errores"><strong>7. Errores comunes que bloquean el cumplimiento</strong></a></li>
<li><a href="#pasos"><strong>8. Pasos para adaptar una web que no cumple</strong></a></li>
<li><a href="#conclusion"><strong>9. Conclusión y recursos extra</strong></a></li>
</ul>

<div style="height:40px;"></div>

<h3 id="niveles"><strong>1. Qué significan los niveles A / AA / AAA</strong></h3>
<table>
<thead><tr><th>Nivel</th><th>Qué significa</th></tr></thead>
<tbody>
<tr><td>A</td><td>Accesibilidad básica. Lo mínimo indispensable.</td></tr>
<tr><td>AA</td><td>Recomendado para la mayoría de sitios públicos y comerciales.</td></tr>
<tr><td>AAA</td><td>Accesibilidad avanzada. Requiere adaptaciones importantes.</td></tr>
</tbody></table>

<p>💡 La mayoría de normativas (como la europea) exigen AA como mínimo.</p>

<div style="height:40px;"></div>

<h3 id="obligatorio"><strong>2. ¿Qué nivel necesito cumplir?</strong></h3>
<ul>
<li>🏛️ Sitios públicos: obligatorio AA</li>
<li>🛍️ Tiendas online: muy recomendable AA</li>
<li>📚 Educación o salud: en algunos países se exige AAA</li>
</ul>

<div style="height:40px;"></div>

<h3 id="herramientas"><strong>3. Herramientas para auditar accesibilidad</strong></h3>
<ul>
<li><a href="https://wave.webaim.org/">WAVE</a> – extensión web con análisis de errores</li>
<li><a href="https://developer.chrome.com/docs/lighthouse/">Lighthouse</a> – integrada en Chrome</li>
<li><a href="https://axe.dev/">axe</a> – motor de accesibilidad para testing automático</li>
<li>📄 Validadores de etiquetas ARIA y roles semánticos</li>
</ul>

<div style="height:40px;"></div>

<h3 id="html"><strong>4. Revisión técnica: HTML, etiquetas y roles</strong></h3>
<p>Checklist técnica mínima:</p>
<ul>
<li>✔️ Imágenes con <code>alt</code> descriptivo</li>
<li>✔️ Encabezados en orden lógico (h1 → h2 → h3)</li>
<li>✔️ Formularios con etiquetas y errores visibles</li>
<li>✔️ Usar <code>role="banner"</code>, <code>role="navigation"</code>, <code>role="main"</code>, etc.</li>
</ul>

<div style="height:40px;"></div>

<h3 id="colores"><strong>5. Contraste y estilo visual</strong></h3>
<p>Usa verificadores como <a href="https://webaim.org/resources/contrastchecker/">WebAIM Contrast Checker</a>.</p>
<ul>
<li>✅ Ratio mínimo recomendado: 4.5:1 para AA, 7:1 para AAA</li>
<li>🔤 Tamaños de fuente ≥16px con contraste suficiente</li>
<li>⛔ Evitar colores solos para transmitir información</li>
</ul>

<div style="height:40px;"></div>

<h3 id="teclado"><strong>6. Navegación con teclado y screen readers</strong></h3>
<p>Prueba navegar tu sitio con solo el teclado:  
➡️ ¿Puedes usar Tab y Enter para recorrer todo el contenido?</p>
<p>Herramientas útiles:</p>
<ul>
<li>🗣️ NVDA o VoiceOver (lectores de pantalla)</li>
<li>⌨️ Navegación por teclado (sin mouse)</li>
<li>🧩 Revisión de `tabindex`, `focus`, y `aria-*`</li>
</ul>

<div style="height:40px;"></div>

<h3 id="errores"><strong>7. Errores comunes</strong></h3>
<ul>
<li>🚫 Imágenes decorativas sin <code>alt</code> vacío</li>
<li>⚠️ Botones sin texto visible o <code>aria-label</code></li>
<li>🔁 Elementos interactivos sin foco visible</li>
<li>📉 Errores de contraste en banners o botones</li>
</ul>

<div style="height:40px;"></div>

<h3 id="pasos"><strong>8. Pasos para adaptar una web que no cumple</strong></h3>
<ol>
<li>Auditoría con herramientas (WAVE, Lighthouse)</li>
<li>Corrección de errores HTML/ARIA</li>
<li>Revisión visual (contrastes, fuentes, foco)</li>
<li>Validación con usuarios o perfiles simulados</li>
<li>Documentación y plan de mantenimiento</li>
</ol>

<div style="height:40px;"></div>

<h3 id="conclusion"><strong>9. Conclusión</strong></h3>
<p>Cumplir con accesibilidad web es más que un check técnico: es una mejora de experiencia, reputación y responsabilidad.</p>
<p>¿Quieres que revisemos tu sitio o que adaptemos tu tema a nivel AA o AAA?  
📩 Escríbenos y lo hacemos por ti.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/como-saber-si-mi-web-cumple-con-accesibilidad-aa-o-aaa/">Cómo saber si mi web cumple con accesibilidad AA o AAA</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/como-saber-si-mi-web-cumple-con-accesibilidad-aa-o-aaa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Detectar contenido duplicado con MySQL en catálogos grandes</title>
		<link>https://eligeunaweb.es/detectar-contenido-duplicado-con-mysql-en-catalogos-grandes/</link>
					<comments>https://eligeunaweb.es/detectar-contenido-duplicado-con-mysql-en-catalogos-grandes/#respond</comments>
		
		<dc:creator><![CDATA[eligeunaweb]]></dc:creator>
		<pubDate>Mon, 19 May 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[Recomendaciones]]></category>
		<category><![CDATA[SEO Técnico]]></category>
		<guid isPermaLink="false">https://eligeunaweb.es/?p=987501810</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_4 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3><strong>Introducción</strong></h3>
<p>En catálogos grandes de productos, es común que se generen entradas duplicadas sin que nadie lo note: títulos iguales, descripciones copiadas, productos repetidos con pequeñas variaciones. Esto afecta negativamente al SEO, a la experiencia del usuario y a la eficiencia del sistema.</p>
<p>En esta guía aprenderás cómo <strong>detectar contenido duplicado usando consultas MySQL</strong> en tiendas o blogs grandes, especialmente en WordPress y WooCommerce, pero aplicable también a otras plataformas.</p>

<div style="height:40px;"></div>

<h4>Índice</h4>
<ul>
<li><a href="#paso1"><strong>1. ¿Por qué el contenido duplicado es un problema?</strong></a></li>
<li><a href="#paso2"><strong>2. Tablas clave que debes revisar</strong></a></li>
<li><a href="#paso3"><strong>3. Consultas para encontrar duplicados por título</strong></a></li>
<li><a href="#paso4"><strong>4. Consultas para detectar descripciones idénticas</strong></a></li>
<li><a href="#paso5"><strong>5. Comparación por hash para detectar duplicados exactos</strong></a></li>
<li><a href="#paso6"><strong>6. Acciones recomendadas una vez identificados</strong></a></li>
<li><a href="#paso7"><strong>7. Conclusión</strong></a></li>
</ul>

<div style="height:40px;"></div>

<h3 id="paso1"><strong>1. ¿Por qué el contenido duplicado es un problema?</strong></h3>
<ul>
<li>📉 Penalización SEO por parte de Google</li>
<li>🧭 Mala experiencia de navegación para el usuario</li>
<li>❌ Canibalización de palabras clave</li>
<li>🔁 Dificultades para campañas en Google Ads</li>
</ul>

<div style="height:40px;"></div>

<h3 id="paso2"><strong>2. Tablas que contienen contenido</strong></h3>
<table>
<thead><tr><th>Tabla</th><th>Campo</th><th>Contenido</th></tr></thead>
<tbody>
<tr><td>wp_posts</td><td>post_title</td><td>Título del producto o entrada</td></tr>
<tr><td>wp_posts</td><td>post_content</td><td>Descripción larga</td></tr>
<tr><td>wp_postmeta</td><td>meta_value</td><td>Contenido SEO u otros campos personalizados</td></tr>
</tbody></table>

<div style="height:40px;"></div>

<h3 id="paso3"><strong>3. Duplicados por título</strong></h3>
<pre class="caja-codigo-blog">SELECT post_title, COUNT(*) as total
FROM wp_posts
WHERE post_status = 'publish'
  AND post_type IN ('product', 'post')
GROUP BY post_title
HAVING total > 1
ORDER BY total DESC;</pre>

<div style="height:40px;"></div>

<h3 id="paso4"><strong>4. Duplicados por descripción</strong></h3>
<pre class="caja-codigo-blog">SELECT post_content, COUNT(*) as coincidencias
FROM wp_posts
WHERE post_status = 'publish'
  AND post_type = 'product'
GROUP BY post_content
HAVING coincidencias > 1
ORDER BY coincidencias DESC;</pre>

<div style="height:40px;"></div>

<h3 id="paso5"><strong>5. Comparación por hash (checksum)</strong></h3>
<pre class="caja-codigo-blog">SELECT MD5(post_content) as hash, COUNT(*) as total
FROM wp_posts
WHERE post_type = 'product' AND post_status = 'publish'
GROUP BY hash
HAVING total > 1;</pre>

<div style="height:40px;"></div>

<h3 id="paso6"><strong>6. ¿Qué hacer con contenido duplicado?</strong></h3>
<ul>
<li>🔍 Unificar productos/entradas similares</li>
<li>✏️ Reescribir descripciones usando IA (GPT)</li>
<li>📤 Exportar a CSV para revisión manual</li>
<li>🔗 Usar etiquetas canonical si el contenido debe permanecer</li>
</ul>

<div style="height:40px;"></div>

<h3 id="paso7"><strong>7. Conclusión</strong></h3>
<p>Detectar contenido duplicado es fundamental en catálogos grandes si quieres escalar, mejorar SEO y evitar confusiones.</p>
<p>Estas consultas SQL te permiten auditar de forma precisa qué partes de tu sitio están duplicadas.</p>
<p>📩 ¿Quieres que lo analicemos juntos o crear un sistema automático que lo detecte cada mes? Escríbenos y te ayudamos.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>La entrada <a href="https://eligeunaweb.es/detectar-contenido-duplicado-con-mysql-en-catalogos-grandes/">Detectar contenido duplicado con MySQL en catálogos grandes</a> apareció primero en <a href="https://eligeunaweb.es">Eligeunaweb Agencia de marketing y programación web</a>.]]></content:encoded>
					
					<wfw:commentRss>https://eligeunaweb.es/detectar-contenido-duplicado-con-mysql-en-catalogos-grandes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
