Introducción
El contenido duplicado es uno de los problemas más invisibles pero críticos en WordPress, especialmente en sitios con muchos artículos, autores o migraciones de contenido.
¿Qué es el contenido duplicado?
Es cuando varias páginas comparten el mismo contenido o muy similar. Esto confunde a los motores de búsqueda y reduce la visibilidad SEO de tu web.
En este artículo aprenderás a detectar distintos tipos de contenido duplicado directamente desde la base de datos, usando MySQL, sin plugins, y con precisión quirúrgica.
Índice
1. Tipos de contenido duplicado
2. Consultas SQL para detectar duplicados
3. Qué hacer con los duplicados encontrados
5. Exportar resultados a CSV desde PHP
1. Tipos de contenido duplicado
| Tipo | Descripción | Impacto en SEO |
| Títulos duplicados | Varias entradas con el mismo título | Confusión de keywords |
| Slugs (URLs) repetidos | URLs similares (slug-2, slug-3…) tras importar contenido | Fragmentación de autoridad |
| Contenido (post_content) igual | Mismo cuerpo de texto en diferentes posts | Penalización directa por duplicación |
| Metadescripciones iguales | Campos SEO (meta_description) repetidos | Bajada en CTR en resultados de búsqueda |
| Etiquetas/categorías similares | Taxonomías con el mismo nombre | Páginas de archivo duplicadas |
2. Consultas SQL para detectar duplicados
Detectar títulos duplicados
SELECT post_title, COUNT(*) AS repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_title HAVING repeticiones > 1;
Qué hace: agrupa por título y detecta los que están repetidos.
Útil para: descubrir artículos con el mismo encabezado tras migraciones, autores diferentes o redacción poco cuidada.
Detectar contenido idéntico
SELECT post_content, COUNT(*) AS repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_content HAVING repeticiones > 1;
Qué hace: agrupa por contenido idéntico (post_content).
Puedes añadir LENGTH(post_content) > 100 para evitar detectar contenidos vacíos o triviales.
Detectar slugs repetidos
SELECT post_name, COUNT(*) as repeticiones FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_name HAVING repeticiones > 1;
Esto te ayudará a localizar URLs que WordPress ha generado como nombre-del-post-2, nombre-del-post-3, etc.
Es típico tras importar contenido varias veces o al clonar artículos.
3. Qué hacer con los duplicados encontrados
| Acción | Cuándo aplicarla | Cómo hacerlo |
|---|---|---|
| Eliminar | Contenido irrelevante o pruebas | Desde admin o SQL |
| Unificar | 2 posts similares | Copiar lo útil y redirigir |
| Redirigir | Slugs duplicados | 301 o plugin |
4. Comparativa SQL vs Plugin
| Método | Precisión | Velocidad | Ideal para |
|---|---|---|---|
| SQL | Alta | Muy rápida | Auditorías técnicas |
| Plugin SEO | Media | Variable | Usuarios no técnicos |
5. Exportar resultados a CSV desde PHP
<?php
require('wp-load.php');
global $wpdb;
$results = $wpdb->get_results("
SELECT post_title, COUNT(*) AS repeticiones
FROM {$wpdb->prefix}posts
WHERE post_type = 'post' AND post_status = 'publish'
GROUP BY post_title
HAVING repeticiones > 1
", ARRAY_A);
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=duplicados.csv');
$output = fopen('php://output', 'w');
fputcsv($output, ['Título', 'Repeticiones']);
foreach ($results as $row) { fputcsv($output, $row); }
fclose($output);
exit;
?>6. Conclusión
Con estas herramientas puedes auditar tu WordPress y limpiar contenido duplicado fácilmente. Mejorarás SEO, evitarás confusiones y optimizarás tu contenido.

