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 SEO auditar

CampoMeta key en WordPressPlugin típico
Title SEO_yoast_wpseo_titleYoast SEO
Meta description_yoast_wpseo_metadescYoast SEO
Canonical_yoast_wpseo_canonicalYoast SEO
Noindex_yoast_wpseo_meta-robots-noindexYoast 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.

Ir al contenido