Llevo años escribiendo en este blog sin pensar mucho en las etiquetas. Cada vez que publicaba un post, le metía dos o tres tags de cabeza y a otra cosa. El resultado, después de cientos de entradas, era predecible: un cementerio de etiquetas donde la mitad las había usado una sola vez, otra parte estaba duplicada con variantes raras (wordpress, WordPress, wp) y bastantes posts iban sin ninguna o llevaban quince a la vez.
Decidí que merecía la pena montar algo que me dijera, de un vistazo, qué estaba pasando con mi taxonomía. Hice un plugin que llamé kokoaweb-tags-audit.
Para gestionar, limpiar, típico gardening de WordPress, con la IA puedes hacer maravillas. 🙂
Lo que hace el plugin (y lo que deliberadamente no hace)
Es un plugin de solo lectura. No toca nada, no borra, no modifica una sola tag. Solo consulta la base de datos y enseña cuatro tablas en Herramientas → Tags Audit:
- La distribución de tags por frecuencia con marcado en rojo de las que están por debajo del umbral (las que yo llamo huérfanas),
- Las tags que parecen duplicados encubiertos, calculadas con dos coeficientes de similitud,
- Los posts sub-etiquetados
- Y los posts sobre-etiquetados.
Al pie del formulario hay una barra resumen con números absolutos, así te haces una idea rápida sin leer las tablas: cuántos posts hay, cuántas tags totales, cuántas huérfanas, cuántos pares sospechosos.

Detectar duplicados con Jaccard y Containment
Esta es la parte que me pareció más útil. El problema clásico es que tienes chatgpt y chat-gpt viviendo en paralelo, o seo y posicionamiento, y a ojo no sabes cuáles solapan. La solución es comparar el conjunto de posts de cada tag con el de las demás.
Usé Claude Code para detectar tags duplicadas. El bicho usó dos métricas; yo fui leyendo todo lo que me iba explicando.
- Jaccard es intersección dividida por unión, mide cuánto se solapan dos conjuntos en general.
- Containment es intersección dividida por el mínimo de los dos; captura los casos en los que una tag está casi toda metida dentro de otra (típico cuando una es muy pequeña y vive a la sombra de la grande).
El plugin recorre los pares de tags que aparecen juntas en al menos N posts y, si Jaccard supera 0,80 o Containment supera 0,70, ese par ya sabes que peligro. Los umbrales se ajustan desde el formulario, por si quieres ser más estricto o más laxo. Los pares se ordenan por similitud descendente, así los candidatos más claros aparecen arriba del todo.

Sub-etiquetados y sobre-etiquetados
Los dos últimos análisis son listados directos. Defines mínimo y máximo de tags por post, y el plugin saca las dos colas: los que se quedaron cortos y los que se pasaron. Cada fila enlaza al editor del post y a las tags actuales.
La utilidad real está en la primera lista. Los posts con cero o una tag son los que peor se descubren desde el archivo y los que más fácilmente se enriquecen con un poco de mantenimiento. Aquí es donde el plugin diagnostica, pero no cura. Y para curar sin volverte loco, hace falta otra pieza.

Y aquí entra Gemini
El plugin de auditoría te dice qué está mal, pero no arregla nada. Para arreglarlo, monté un plugin hermano, kokoaweb-tag-suggester, que se enchufa a la API de Google Gemini y propone tags reutilizando el vocabulario que ya existe en el blog.
El núcleo es un cliente sencillo que llama a gemini-2.5-flash (tier gratuito) con temperature: 0.2, para que no se invente etiquetas nuevas y se ciña a la lista que le paso. El prompt incluye dos cosas: el contenido del post limpio de bloques y shortcodes, y el listado completo de tags existentes. Le pido que devuelva entre una y cinco etiquetas, separadas por comas. Punto.
POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
{
"contents": [{ "parts": [{ "text": "<prompt con post + lista de tags>" }] }],
"generationConfig": {
"temperature": 0.2,
"topP": 0.9,
"maxOutputTokens": 512,
"thinkingConfig": { "thinkingBudget": 0 }
}
}
El plugin tiene dos modos. Uno es un metabox lateral en el editor de posts: pinchas «Sugerir», aparecen los checkboxes con las propuestas, marcas las que te gustan y le das a «Aplicar». Este lo uso frecuentemente.
El otro es el modo nuclear, una página en Herramientas que coge todos los posts publicados, los agrupa de cinco en cinco para pedirle a Gemini varias sugerencias por llamada y va recorriendo el blog entero con una barra de progreso en tiempo real. Hay un tope por sesión configurable (200 llamadas por defecto) para no romper la cuota gratuita en una sola tarde.

Lo que he aprendido por el camino
La pareja audit + suggester funciona porque están completamente desacopladas. El primero diagnostica sin tocar nada; el segundo escribe en la base de datos solo cuando tú confirmas. Si mañana cambio de modelo o le quito Gemini, la auditoría sigue exactamente igual.
El error sería montar un plugin que, sin enseñarte el problema, te lance a la IA a corregirlo. Primero ves el caos. Después decides si quieres barrerlo a mano o pedirle ayuda a la máquinita.
Y más plugins de limpieza/gestión propios
Con estos dos plugins gestiono etiquetas, pero me he montado algunos más para imágenes destacadas (comprobar si la imagen destacada está incluida además en el post, que no me gusta, o incluso para directamente proponer una, con enlace a Unsplash, versión gratuita, todos los derechos) y otros temas.
Ampliaré en siguientes posts, con estos y otros plugins que uso para gestionar este blog… ya tengo más plugins propios que de terceros… 😉


