Introducción
Los metadatos SEO son clave para posicionar tu contenido: el title y la meta description son lo primero que ven los usuarios en Google.
Pero cuando tienes decenas o cientos de publicaciones, es difícil saber cuáles los tienen optimizados, cuáles están vacíos y cuáles están duplicados.
En este artículo te muestro cómo auditar esos campos directamente desde la base de datos con MySQL, sin necesidad de plugins premium.
Índice
- 1. Qué metadatos auditar
- 2. Tablas involucradas
- 3. Consultas SQL para detectar vacíos
- 4. Consultas para detectar duplicados
- 5. Cómo exportar a CSV desde PHP
- 6. Buenas prácticas y recomendaciones
- 7. Conclusión
1. Qué metadatos SEO auditar
Campo | Meta key en WordPress | Plugin típico |
---|---|---|
Title SEO | _yoast_wpseo_title | Yoast SEO |
Meta description | _yoast_wpseo_metadesc | Yoast SEO |
Canonical | _yoast_wpseo_canonical | Yoast SEO |
Noindex | _yoast_wpseo_meta-robots-noindex | Yoast SEO |
2. Tablas involucradas
Trabajaremos con dos tablas:
- wp_posts: contiene publicaciones, productos, páginas.
- wp_postmeta: almacena metadatos asociados a cada post (título SEO, descripción, etc.).
3. Consultas SQL para detectar campos vacíos
Detectar entradas sin título SEO (Yoast):
SELECT p.ID, p.post_title, p.post_type FROM wp_posts p LEFT JOIN wp_postmeta m ON p.ID = m.post_id AND m.meta_key = '_yoast_wpseo_title' WHERE p.post_status = 'publish' AND p.post_type IN ('post', 'page', 'product') AND (m.meta_value IS NULL OR TRIM(m.meta_value) = '');
Detectar meta descriptions vacías:
SELECT p.ID, p.post_title, p.post_type FROM wp_posts p LEFT JOIN wp_postmeta m ON p.ID = m.post_id AND m.meta_key = '_yoast_wpseo_metadesc' WHERE p.post_status = 'publish' AND p.post_type IN ('post', 'page', 'product') AND (m.meta_value IS NULL OR TRIM(m.meta_value) = '');
4. Consultas para detectar duplicados
Descripciones SEO duplicadas:
SELECT meta_value, COUNT(*) as repeticiones FROM wp_postmeta WHERE meta_key = '_yoast_wpseo_metadesc' AND meta_value IS NOT NULL AND TRIM(meta_value) != '' GROUP BY meta_value HAVING repeticiones > 1 ORDER BY repeticiones DESC;
Títulos SEO duplicados:
SELECT meta_value, COUNT(*) as repeticiones FROM wp_postmeta WHERE meta_key = '_yoast_wpseo_title' AND meta_value IS NOT NULL AND TRIM(meta_value) != '' GROUP BY meta_value HAVING repeticiones > 1 ORDER BY repeticiones DESC;
5. Exportar a CSV desde PHP
Para guardar los resultados y revisarlos en Google Sheets o Excel:
<?php require('wp-load.php'); global $wpdb; $results = $wpdb->get_results(" SELECT p.ID, p.post_title FROM {$wpdb->prefix}posts p LEFT JOIN {$wpdb->prefix}postmeta m ON p.ID = m.post_id AND m.meta_key = '_yoast_wpseo_metadesc' WHERE p.post_status = 'publish' AND (m.meta_value IS NULL OR TRIM(m.meta_value) = '') ", ARRAY_A); header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=seo_vacios.csv'); $output = fopen('php://output', 'w'); fputcsv($output, ['ID', 'Título']); foreach ($results as $row) { fputcsv($output, $row); } fclose($output); exit; ?>
6. Buenas prácticas
- Evita duplicar descripciones: afecta el CTR y posicionamiento.
- Los títulos deben ser únicos y relevantes para cada página.
- Repite esta auditoría cada 2-3 meses si tienes mucho contenido.
- Si usas Rank Math, cambia los meta_keys en las consultas.
7. Conclusión
Auditar los metadatos SEO desde MySQL te permite mantener tu sitio optimizado, detectar errores invisibles y mejorar tu posicionamiento sin depender 100% de plugins.
¿Quieres un informe SEO personalizado desde base de datos? 📩 Escríbenos y lo generamos para ti.