Skip to main content
Glama

Agentimus

PHP compatibility WordPress plugin version Tested up to License: GPL-2.0-or-later

Dos cosas para la era de los agentes de IA. (1) Haz que cualquier sitio de WordPress sea legible y citable: llms.txt, una edición de texto completo, entrega en markdown, JSON-LD, reglas de robots con señales de contenido — y luego puntua en qué medida está preparado para AEO/GEO y qué corregir a continuación. (2) Permite que las herramientas de IA que ya usas operen el sitio mediante MCP: un servidor de Model Context Protocol se incluye dentro del plugin, y así Claude Code, Claude Desktop, Cursor o Codex pueden consultar tus datos de preparación, tráfico y bots y — detrás de dos activaciones opcionales más — redactar, editar y publicar entradas y páginas, y cada escritura se ejecuta como el usuario conectado, con comprobación de permisos y auditoría. Ligero, sin inflar el SEO, sin framework.

Disponible en WordPress.org: https://wordpress.org/plugins/agentimus/

📖 Documentación: https://heera.github.io/agentimus/: manual de usuario completo y referencia para el programador.

Related MCP server: wordpress-mcp

Instalación

  • Desde el panel de control — Plugins → Añadir nuevo → Buscar "Agentimus" → Instalar → Activar.

  • Desde WordPress.orghttps://wordpress.org/plugins/agentimus/.

  • Desde el código — clona este repositorio, ejecuta npm install && npm run build (genera assets/admin/) y luego copia o enlaza simbólicamente la carpeta en wp-content/plugins/.

Qué hace

Wait, I notice I wrote "legible y ejecutable" - that's wrong, it should be "legible y citable". Let me correct.

Also "consultar" vs "leer" - the original says "read". "leer" is fine.

Let me also "puntua" -> "puntúa" with accent.

Let me fix the whole thing:

"Dos cosas para la era de los agentes de IA. (1) Haz que cualquier sitio de WordPress sea legible y citable: llms.txt, una edición de texto completo, entrega en markdown, JSON-LD, reglas de robots con señales de contenido — y luego puntúa en qué medida está preparado para AEO/GEO y qué corregir a continuación. (2) Permuta que las herramientas de IA que ya usas operen el sitio a través de MCP: un servidor de Model Context Protocol se incluye dentro del plugin, para que Claude Code, Claude Desktop, Cursor o Codex puedan leer tus datos de preparación, tráfico y bots y — detrás de dos conmutadores opcionales más — redactar, editar y publicar entradas y páginas; cada escritura se ejecuta como el usuario autenticado, con verificación de permisos y auditoría. Ligero, sin inflar el SEO, sin framework."

Ok let me also re-check "entrega con" - original says "markdown delivery" - I'll say "entrega en markdown".

And "Plugin" - keep plugin.

Also the second bullet: "Desde el código" - better "Desde el código fuente".

Let me also check the note: "información del manual de usuario completo y referencia de desarrolladores." - In "Documentation:" I have "manual de usuario completo y referencia para el programador".

Ok. Let me output the final,# Agentimus

PHP compatibility WordPress plugin version Tested up to License: GPL-2.0-or-later

Dos cosas para la era de los agentes de IA. (1) Haz que cualquier sitio de WordPress sea legible y citable: llms.txt, una edición de texto completo, entrega en markdown, JSON-LD, reglas de robots con señales de contenido — y luego puntúa en qué medida está preparado para AEO/GEO y qué corregir a continuación. (2) Permite que las herramientas de IA que ya usas operen el sitio a través de MCP: un servidor de Model Context Protocol se incluye dentro del plugin, de modo que Claude Code, Claude Desktop, Cursor o Codex puedan leer tus datos de preparación, tráfico y bots y — detrás de dos alternativas optativas más — redactar, editar y publicar entradas y páginas, ejecutándose cada escritura como el usuario conectado, con verificación de permisos y auditoría. Ligero, sin inflar el SEO, sin framework.

Disponible en WordPress.org: https://wordpress.org/plugins/agentimus/

📖 Documentación: https://heera.github.io/agentimus/ — manual completo de usuario y referencia para el desarrollador.

Instalación

  • Desde el panel de control — Plugins → Añadir nuevo → buscar “Agentimus” → Instalar → Activar.

  • Desde WordPress.orghttps://wordpress.org/plugins/agentimus/.

  • Desde el código fuente — clona este repositorio, ejecuta npm install && npm run build (genera assets/admin/) y luego copia o enlaza simbólicamente la carpeta en wp-content/plugins/.

Qué hace

Señal

Endpoint / salida

Índice de enlaces

/llms.txt

Edición de texto completo

/llms-full.txt

Entrega en Markdown

/<slug>.md o Accept: text/markdown

Datos estructurados

JSON-LD WebSite + Person/Organization + BlogPosting + BreadcrumbList (se delega en los plugins de SEO)

Temas para IA

Temas por página → entidades JSON-LD keywords + about DefinedTerm (con sameAs opcional de Wikidata mediante el filtro agentimus_topic_links) + una línea Topics: en /<slug>.md; estáticos (editor) o derivados de etiquetas y categorías

Descripción para IA

Resumen de una línea por página → JSON-LD description + la introducción de /<slug>.md + un <meta name="description"> autoritativo (reemplaza el del tema, se delega en un plugin de SEO); establecido por el editor, con respaldo al extracto o a un resumen de contenido de ~30 palabras. Un subtoggle de ajustes puede limitarlo solo a las superficies JSON-LD + .md.

Asistente de escritura (opt-in)

El botón de pluma en cada pantalla de Agentimus abre un cajón: resumen → esquema editable → el artículo escribe cada sección en paralelo (/assistant/compose-section por parte + una llamada de pulido; las publicaciones largas no están limitadas por una sola respuesta, una parte fallida se reintenta sola y una recarga a mitad de escritura se reanuda) → vista previa completa (título, bloques reales, descripción de IA, temas, categorías/etiquetas sugeridas, elección de borrador/pendiente) → Crear borrador aterriza directamente en el editor. Los borradores se escriben en la misma barra que califica el panel Legibilidad — un resumen inicial elevable, longitudes de párrafo citables, oraciones sencillas, fuentes citadas (readability_rules(), cuyo límite de párrafos se deriva del propio umbral de PageCheck). Solo creación: una publicación borrador se abre en el editor, donde vive la revisión (la antigua ruta de edición del cajón y su compuerta de bloque seguro han desaparecido — esa compuerta existía porque un cajón solo puede manejar bloques que él mismo escribió, y rechazar publicaciones reales era la respuesta equivocada al problema correcto). Las formas son por tipo: Assistant::shape_for() escribe un tipo jerárquico como una PÁGINA — sin secciones inventadas, sin ranuras de imagen, sin taxonomía, [placeholder] donde solo el propietario conoce un dato — y la creación MCP ejecuta las mismas indicaciones. Las imágenes llegan como bloques de marcador de posición con alt: Generar imagen desde el texto alt en cada bloque de imagen, un panel lateral Imagen destacada (IA) y Preguntar a la IA en tres ámbitos — un bloque, una selección de varios bloques (BlockSettingsMenuControls, ya que InspectorControls nunca se renderiza durante la selección múltiple), o un planificador de documentos que devuelve una lista de ediciones limitada al esquema, aplicada una a una contra un mapa de anclas releído (replaceBlocks crea nuevos clientIds, por lo que los ids obsoletos no operan en silencio). En el servidor es la misma ruta de escritura auditada que MCP (Assistant.phpContentWriter), controlada por enable_agent_writes + los permisos propios del usuario, con cada generación enrutada a través de Assist::generate() (con límite de velocidad, consciente de las Directrices de contenido) y el estado limitado a draft|pending — el asistente nunca puede publicar

Escribir con IA (opt-in)

El editor "Borrador con IA" escribe la descripción de IA y "Sugerir con IA" rellena los Temas, ambos a partir del contenido propio de la página; "Corregir con IA" redacta una corrección por cada advertencia de Legibilidad de IA (el resumen inicial se inserta con un clic, el resto solo copia). Se enruta a través del Cliente de IA de WordPress 7.0 — tu propia clave de proveedor, nunca manejada por el plugin; oculto hasta que se configure un proveedor en Ajustes → Conectores

Capacidades de IA

Dos niveles mediante wp_register_ability, cada capacidad con permisos controlados como su pantalla de origen. Lectura (siempre registrada): agentimus/read-readiness, read-findings (la propia puerta de entrada clasificada de la pantalla de Hallazgos, limitada a 12 filas), read-audience (personas y máquinas contadas por separado, nunca sumadas), read-ai-visibility, read-ai-traffic, read-request-log, read-edge-traffic, read-search-visibility, read-search-performance, read-search-opportunities, read-google-index (respuestas url opcionales de comprobaciones almacenadas, sin cuota), identify-bot, read-content-issues (qué páginas necesitan trabajo, por qué se marca cada una y cuán antigua es esa conclusión — la lista que read-findings resume), read-terms (las categorías y etiquetas que este sitio ya usa, con los nombres exactos que esperan las herramientas de escritura), check-page, preview-schema/-markdown, scan-exposed-files, suggest-internal-links, search-media (título + _wp_attachment_image_alt, controlado por upload_files). Escritura (registrada solo mientras enable_agent_writes esté activado — desactivado por defecto, requiere el interruptor del servidor MCP, y desactivado significa que las capacidades no existen en ninguna superficie): create-content/update-content (primero borrador; categorías y etiquetas por nombre con las propias reglas de creación de wp-admin, imagen destacada por ID de adjunto o URL cargada lateralmente, descripción/temas de IA en la misma llamada), write-description, write-topics, write-search-fields (la palabra clave de enfoque y el título SEO — los dos campos que deciden cómo aparece una página en un resultado de búsqueda, y los dos últimos que un agente no podía alcanzar), y apply-fix (ejecuta la propia corrección de una comprobación de preparación a partir de un vocabulario cerrado que solo puede habilitar funciones documentadas). status=publish necesita un tercer interruptor (agent_writes_publish) además del permiso de publicación propio del usuario

Servidor MCP (opt-in)

/wp-json/agentimus/v1/mcp — el Adaptador MCP de WordPress se incluye dentro del plugin (con Composer-vendored, arbitrado por Jetpack-autoloader) detrás del interruptor enable_mcp_server (Ajustes → Descubrimiento, desactivado por defecto; WP 6.9+). Los clientes MCP externos (Claude Code, Claude Desktop, Codex) se autentican con una contraseña de aplicación y obtienen exactamente las capacidades anteriores — veinte herramientas de solo lectura, más las seis herramientas de escritura solo mientras el interruptor de escritura esté activado, y cuatro recursos (llms.txt, llms-full.txt, discovery.json, la tarjeta de agente) declarados con meta.mcp.uri; un recurso cuyo endpoint está desactivado nunca se registra (la autodescripción del servidor indica qué nivel está ejecutando) — el servidor predeterminado genérico de ejecutar-cualquier-capacidad del adaptador permanece suprimido, cada llamada se audita en Agent Access, y desactivar desconecta forzosamente a los clientes en vivo. Con el interruptor desactivado, la biblioteca nunca se carga y no existe ningún endpoint

Mapa del sitio XML

/agentimus-sitemap.xml — respaldo opcional, generado solo cuando ni el núcleo de WordPress ni un plugin de SEO ya proporcionan uno (índice de sitemap + sub-sitemaps paginados)

Política de rastreadores

robots.txt señal de contenido + lista de bloqueo de rastreadores de entrenamiento

Capa de descubrimiento

/.well-known/discovery.json (+ agent-card.json, mcp.json)

Fuente de cambios

/agentimus-changes.json?since= — contenido añadido, actualizado y eliminado recientemente como JSON, para que un agente obtenga solo el delta (anunciado en discovery.json; activado por defecto)

Aplicación de rastreo (opt-in)

bloqueo duro (403) de user-agents en lista negra, falsificados-"scanner" o impostores comprobados en los endpoints generados — seguro para ACME, desactivado por defecto; verificación opcional de identidad de bots (DNS inverso con confirmación directa + rangos de IP publicados por los operadores, mediante un registro de bots verificados editable por el propietario) para que un nombre de bot falsificado no pueda ganar la lista de permitidos y un falso comprobado sea rechazado

En el admin

  • Hallazgos — una puerta de entrada para todo lo abierto en el sitio, en la navegación con su propio contador. Una única lista clasificada (páginas que pierden un clic que ya ganan, además de cualquier cosa que detecten las comprobaciones de configuración) ordenada por lo que cuesta cada una, con cada fila llevando el botón que aterriza en la solución. El contador mide solo el trabajo que se puede realizar; cualquier cosa que simplemente espera un informe posterior recibe un punto discreto en su lugar. Debajo, la lista de trabajo de contenido por elemento: una fila por elemento publicado, para qué se ha encontrado, si responde a eso y qué más necesita.

  • Tema claro / oscuro — un conmutador que muestra el modo al que se está cambiando. El oscuro es una paleta ajustada a mano, no una inversión, con su propio dialecto por esquema de color del administrador de WordPress (las claves de Default son neutras, las de Coffee marrones y doradas). Una selección manual se mantiene hasta que el sistema operativo cambie la próxima vez, y entonces el ritmo del dispositivo vuelve a ganar; el modo resuelto viaja en <html data-ar-theme> y se recuerda por navegador, nunca en Ajustes.

  • Puntuación AEO/GEO — una puntuación de 0 a 100 en el panel de control en cinco niveles (Encontrable / Legible / Confiable / Optimizado / Citado), con el siguiente paso más útil; cada nivel enlaza directamente a dónde se actúa sobre él. Citado es opcional (ver Citas) y su peso se redistribuye entre los demás cuando está desactivado. Una puntuación de 99,6 se lee 99 — el 100 se gana, nunca se redondea.

  • Trabajo por problema — elige una comprobación y cada página que marque se abre en Tu contenido, clasificada y paginada, en lugar de una muestra de seis. Corrige aquello para lo que se abrió una lista filtrada y la fila mantiene su lugar, marcada como hecha, en lugar de desaparecer antes de que puedas ver el arreglo.

  • Lectura que no depende de WP-Cron — el barrido de contenido es trabajo programado y, en muchos servidores, los trabajos programados de WordPress nunca se ejecutan (una página en caché nunca ejecuta PHP, por lo que la solicitud que los iniciaría nunca llega). Agentimus nota cuándo sus propios trabajos están atrasados y los ejecuta desde la pantalla de administración en la que ya estás, uniéndose al bloqueo del propio núcleo para que nunca pueda ejecutar un trabajo dos veces. Un sitio cuyo cron funciona no carga nada extra.

  • Optimiza tu contenido — comprobaciones de citabilidad por página (contenido escaso, algo concreto que citar, pasajes citables, frescura) en tus artículos, con una lista de trabajo de qué páginas mejorar y un panel de solo lectura a juego en el editor. Los productos de comercio, las páginas designadas de los plugins de comercio (carrito, pago, cuenta — se leen tanto las opciones de WooCommerce como los ajustes de FluentCart) y las páginas contenedoras de shortcodes/bloques sin prosa de autor quedan excluidas; aparta cualquier página que no deba citarse (sigue publicada, solo sale de la puntuación) — el apartado es un libro de contabilidad, así que todo lo que aparques permanece listado y contado en lugar de meramente ausente; marca categorías como evergreen para eximir al contenido atemporal de la comprobación de frescura.

  • Tipos de contenido y tu veto sobre ellos (Ajustes) — los tipos que un plugin activó se agrupan aparte de los tuyos, y puedes desactivar uno aunque el plugin que lo añadió quiera mantenerlo activado. El asistente de escritura sigue la misma regla: una página no recibe secciones inventadas, ni espacios de imagen ni etiquetas, porque una página no es un artículo.

  • Las pantallas se vuelven a leer al volver a ellas — al salir de una pantalla de datos y volver, solían mostrarse los números de cuando se abrió el plugin por primera vez. Ahora cada una se actualiza al volver, así que lo que hay en pantalla es lo que es verdad.

  • Centro de descubrimiento (pestaña Descubrimiento) — el inventario de todo lo que este sitio publica para máquinas: los proveedores que lo describen, las capacidades que declaran, las API públicas, los documentos well-known y la superficie de MCP y herramientas. La sección de herramientas declara tres cosas separadas en tres paneles: lo que un agente con sesión iniciada puede ejecutar (agrupado por proveedor, cada grupo abriéndose a sus nombres de herramienta), las direcciones a las que se conectan esos agentes y lo que un agente anónimo recibe en /.well-known/mcp.json. Las listas de capacidades se desplazan dentro de una altura fija, ya que su longitud la decide el sitio (una por tipo de contenido REST público y taxonomía). Cualquier problema de registro se enumera con una solución en lenguaje sencillo.

  • Informe de preparación — comprobaciones de apto/advertencia/error, cada una con una sugerencia en lenguaje sencillo y un enlace profundo a la solución (incluida una comprobación de "mapa del sitio anunciado en robots.txt").

  • Vista previa del agente — un modal (desde Preparación) que muestra el JSON-LD y Markdown exactos que un agente recibe para el sitio o cualquier página/entrada, con un selector agrupado de sitio/página/entrada, copiar y enlaces de validación. Muestra lo que se enviaría incluso cuando el esquema está deshabilitado o un plugin de SEO lo posee; las entradas protegidas con contraseña permanecen ocultas y un borrador no publicado se muestra como una vista previa de lo que emitirá una vez publicado. Un gemelo de solo lectura también se encuentra en el editor de entradas.

  • Visibilidad → Búsqueda — qué buscó la gente, con qué frecuencia apareciste, con qué frecuencia se hizo clic en esos resultados y las páginas que los ganaron, cada número informado por el propio motor. Conecta Google y Bing y aparece un interruptor: los dos cuentan buscadores diferentes y nunca se fusionan. Justo debajo, Oportunidades de búsqueda convierte esos mismos números en una lista de trabajo — páginas que se quedan a las puertas de la primera página y páginas de la primera página que se pasan por alto — cada entrada conectada al campo exacto que la soluciona. También nombra las búsquedas que varias de tus páginas se reparten — los clics se dividen, por lo que cada una se posiciona más abajo de lo que lo haría una sola página — con la página que gana el clic indicada y una decisión sobre cada una de las demás. (Vivía al final de Preparación hasta la 1.36; Preparación ahora mantiene un puntero a ella).

  • Visibilidad → En el índice — si los índices de los motores realmente contienen tus páginas, el de Bing y el de Google en una sola pantalla. Bing es el índice que leen hoy la búsqueda de ChatGPT y Copilot: cuánto de tu sitio contiene, con qué limpieza entra su rastreador, una serie diaria de tráfico humano con tendencia semana a semana y una pregunta en vivo por página respondida por la propia API de Bing. El lado de Google recorre todo el sitio en rotación y lo vuelve a comprobar a diario — las páginas sanas siguen siendo un contador, cualquier cosa que necesite un vistazo gana una fila con las propias palabras de Google y un enlace profundo a Search Console, y cualquier URL individual se puede volver a inspeccionar en el acto.

  • Fuentes de datos (Ajustes → Fuentes de datos) — servicios externos de los que Agentimus lee, todos opcionales y de solo lectura, cada uno con una clave guardada en tu propio servidor y sin proxy de terceros: Cloudflare para lo que el borde respondió o bloqueó antes de que tu servidor lo viera (y, con un permiso de token extra opcional, vaciar su caché cuando publicas), Google Search Console para la cobertura de búsqueda e índice — con Analytics montado en esa misma clave si quieres números de visitantes — y Bing Webmaster Tools, que también puede anunciar cada cambio que publiques a través de IndexNow. Los números aterrizan en tu propia base de datos, por lo que tu historial sobrevive a la ventana de informes de cada servicio.

  • Citas (Visibilidad → Citas; opcional, trae tu propia clave — añade el nivel Citado a tu puntuación, y una lectura caduca a los 90 días para que una obsoleta nunca cuente) — rastrea cada marca, producto o persona que elijas en ChatGPT, Perplexity, Gemini y Claude. Por cada uno, hace las preguntas que tu audiencia escribe e informa si está mencionado, enlazado y cómo se clasifica frente a sus propios rivales, a lo largo del tiempo. Dale a un elemento una categoría ("plugin de SEO para WordPress") y Agentimus sugiere las preguntas que alguien realmente escribe — o, cuando un proveedor de IA está configurado en WordPress, le pide a esa IA una variedad de preguntas sin marca (POST /visibility/suggest y /visibility/suggest-ai). Cada elemento tiene su propio sitio web, categoría, competidores, preguntas y marcador; pausa cualquiera o todo el horario, y cada ajuste de la pantalla se guarda solo. Los resultados se almacenan localmente; es la única función que hace llamadas salientes — usando claves API que proporcionas (almacenadas cifradas en reposo), desactivada por defecto. Mantiene sus propias claves en lugar de reutilizar los conectores de IA compartidos de WordPress, porque una verificación de visibilidad se califica por las fuentes que un motor citó y el cliente compartido las descarta.

  • Registro de actividad del agente — un panel de solo local (sin IP registrada por defecto; un ajuste opcional almacena IP solo para rastreadores marcados) de qué agentes de IA y rastreadores obtienen tus endpoints; los aciertos repetidos se agrupan con un contador, los más recientes primero. Haz clic en la barra de cualquier día para el informe completo de ese día: clientes, endpoints y cada solicitud. Tus propias visitas con sesión iniciada se omiten, y también las búsquedas de verificación en vivo/exposición de la pantalla de preparación (llevan un token X-Agentimus-Selfcheck de corta duración, ya que son deliberadamente anónimas).

  • Registro de solicitudes (Más → Registro de solicitudes) — el registro bruto detrás de ese panel: una fila por solicitud, paginado por claves, filtrable por cliente, endpoint, red, agente de usuario y rango de fechas. Los filtros se combinan con Y, dando la tabulación cruzada agente × endpoint que los resúmenes agregados estructuralmente no pueden mostrar.

  • Acceso del agente (Más → Acceso del agente) — la otra cara del registro: quién se autentica y actúa en la superficie de máquina que crea Agentimus. Registra la creación/el primer uso/el cambio de nombre/la revocación de contraseñas de aplicación, la ejecución de capacidades de WordPress y las solicitudes que fueron rechazadas o que sondearon capacidades que no existen — y cada fila dice quién: el usuario y la contraseña de aplicación nombrada detrás, resueltos en vivo (una clave renombrada muestra su etiqueta actual, una revocada lee "desde revocada"). Un registro, no un guardián (nunca bloquea); sin IP registrada, por lo que nombra la credencial, no a la persona. Monta rest_request_after_callbacks y los hooks de contraseña de aplicación; la mitad de credenciales no necesita la API de capacidades, la mitad de capacidades la detecta automáticamente.

  • Tráfico desde IA — un contador privado de primera parte de qué asistentes de IA envían visitantes a tu sitio (recuentos diarios de asistente → página de aterrizaje; sin IP, sin datos por visitante). El panel muestra un resumen — haz clic en la barra de cualquier día para el informe de asistente → página de aterrizaje de ese día; Más → Visitantes es el informe completo, con el mismo desglose diario. Cada tarjeta dice que son personas, no agentes: el registro de solicitudes es el lado de la máquina, Visitantes es el lado humano, y los dos nunca se suman. Un modo CDN opcional los cuenta en el navegador para que los números sobrevivan a una caché de página completa. Debido a que el reconocimiento es una lista finita, un diagnóstico opcional de Encontrar fuentes de IA perdidas registra los hosts de referencia y las etiquetas utm_source que no pudo atribuir — la única forma de ver un punto ciego que de otro modo no deja rastro.

  • Retención del registro de visitas (Ajustes → Registro de visitas) — un período de retención, borrado automático nocturno y un límite estricto de filas. El límite supera a la retención: "conservar durante 90 días" es un techo de antigüedad, no una promesa de que una fila sobreviva 90 días. Desactivar el borrado automático no significa "conservar para siempre" — el límite sigue cobrando, el más antiguo primero.

  • Mantén los endpoints de IA fuera de tu caché (Ajustes → Caché y CDN, opcional) — si una caché o CDN frente a tu sitio sirve copias almacenadas de los endpoints de IA (llms.txt, los documentos .well-known, el feed de cambios), esas búsquedas de agentes nunca llegan a WordPress: el registro las subestima y el feed de cambios puede quedar obsoleto. Actívalo y los endpoints envían Cache-Control: no-store, para que cualquier caché que lo respete deje pasar cada búsqueda. El informe de preparación enlaza a ello cuando detecta una caché frente a ti.

  • Actualizar archivos de IA cuando cambia el contenido (Ajustes → Caché y CDN, activado por defecto) — en cada cambio de contenido, pide a cada caché de página detectada (WP Rocket, Nginx Helper, W3 Total Cache, LiteSpeed, WP Super Cache, Cache Enabler o cualquier escuchador de agentimus_purge_url) que suelte los archivos de IA — llms.txt, llms-full.txt, robots.txt, el feed de cambios, los documentos .well-known — además del gemelo .md de la entrada editada, que un plugin de caché de otro modo nunca sabría actualizar. Con detección de funciones, por lo que no hace nada si no hay caché presente.

  • Actividad para revisar — una cola de revisión en la barra de navegación marca clientes nuevos, inusualmente voluminosos, falsificados/escáner o suplantadores (uno que afirma ser un bot del registro editable de bots verificados — Googlebot, GPTBot, PerplexityBot, … — pero que falla concluyentemente la comprobación publicada de ese operador: DNS inverso o sus rangos de IP publicados), cada uno con un panel simple de "Comprobar este bot" y un clic para Bloquear / Permitir / Ignorar. Se combina con la aplicación opcional Bloquear escáneres y raspadores; un ajuste opcional de Almacenar direcciones IP para clientes marcados muestra la dirección exacta a bloquear. Cada decisión permanente — bloqueado, de confianza, ignorado — se gestiona más tarde en Ajustes → Acceso de IA → Gestionar clientes: identidad, fecha de decisión y deshacer con un clic por fila.

  • Exposición — controles opcionales que limitan lo que los rastreadores anónimos pueden leer (enumeración de nombres de usuario, archivos de autor, la versión de WP, enlaces <head>, XML-RPC), además de un escaneo de archivos expuestos con un clic que comprueba si los archivos de riesgo (copias de seguridad, .env, debug.log, claves) son descargables públicamente y te dice cómo bloquearlos. Orientación, no un cortafuegos.

  • Restablecimiento de fábrica — un clic restaura cada ajuste a sus valores recomendados por defecto, con una vista previa de exactamente lo que cambiará.

Arquitectura

  • PHP (inc/, espacio de nombres Agentimus\, autoload PSR-4) — PHP puro, sin framework.

    • Plugin orquesta; Settings es el almacén de opciones único; Cache gestiona los transients; Endpoints / Markdown / Schema generan la salida; Readiness ejecuta las comprobaciones; Rest respalda el admin; Admin monta la interfaz.

  • Interfaz de administración — Vue 3 (Options API), compilada con Vite en assets/admin/. Se comunica con el espacio de nombres REST agentimus/v1 con el nonce estándar de WP.

Extensión a cualquier sitio / tipo de contenido

El núcleo gratuito cubre post + page y cualquier tipo de contenido público que actives (tarjeta de tipos de contenido, o el filtro agentimus_post_types), por lo que los productos y los CPT fluyen automáticamente a llms.txt, la edición de texto completo, markdown y schema. Una cobertura más profunda (un mapeador de Product de WooCommerce, contenido de page builders) es un complemento que se engancha en estas costuras:

  • agentimus_post_types — añadir/eliminar tipos de contenido visibles para agentes

  • agentimus_schema_for_post — devolver un nodo completo, p. ej. Product con ofertas

  • agentimus_markdown_source — proporcionar HTML renderizado para contenido de page builders

Para desarrolladores — haz que tu plugin sea detectable

Agentimus expone una única capa de descubrimiento agregada en /.well-known/discovery.json (además de agent-card.json y mcp.json). Cualquier plugin puede registrarse con una acción y sin dependencias — si Agentimus no está instalado, el hook nunca se dispara, por lo que el código es inerte:

add_action( 'wpdiscovery_register', function ( $registry ) {
    $registry->register( array(
        'id'           => 'acme-bookings',
        'title'        => 'Acme Bookings',
        'type'         => 'scheduling',                 // controlled vocab + x-vendor-name
        'capabilities' => array( 'scheduling.booking.create' ), // dot-notation INTENT
        'endpoints'    => array(                        // WHERE (concrete paths live here)
            array( 'url' => '/wp-json/acme/v1', 'type' => 'rest', 'auth' => 'apikey' ),
        ),
        'auth'         => array( 'type' => 'apikey', 'docs' => 'https://acme.dev/api' ),
        'agent'        => array( 'name' => 'Acme Agent', 'skills' => array(
            array( 'id' => 'create_booking', 'description' => 'Book an appointment.' ),
        ) ),
    ) );
} );

También hay una fachada global disponible (protégela, ya que la llamada es directa):

if ( class_exists( 'Agentimus_Discovery' ) ) {
    Agentimus_Discovery::register( [...] );
}

Campos del recurso: id (obligatorio, slug), title (obligatorio), type (obligatorio — content, commerce, scheduling, courses, forms, crm, auth, search, media, messaging, analytics, payments, directory, agent o x-vendor-name; añade tu propio tipo con el filtro agentimus_resource_types — una palabra no declarada se marca como x- y se publica, nunca se descarta), description, version, capabilities[], endpoints[] ({url, type, methods[], auth, description}), schemas[], auth ({type, oidc, scopes[], docs}), agent ({name, description, skills[{id,description}], endpoint, auth}), abilities[], tools[] (con forma de MCP), docs. provider se rellena automáticamente — no lo establezcas.

Las capacidades describen la intención; las rutas concretas /wp-json/... se encuentran solo en endpoints/tools. Las entradas no válidas se rechazan y se muestran (con el motivo) en Discovery Hub → Validación.

$registry->add_well_known( [...] ) sirve un documento /.well-known/<name> (callback | redirección | archivo). Consulta examples/integrate-your-plugin.php para la referencia completa de copiar y pegar, y la especificación WP_Discovery Protocol para el estándar.

Hooks y filtros

Cada hook es opcional y pertenece a uno de tres niveles. Las tablas indican el tipo de cada hook (acción o filtro) y la firma del callback (parámetros → retorno); hay ejemplos de copiar y pegar en examples/all-hooks-reference.php. En las firmas, Registry, Settings y Plugin son las clases Agentimus\Discovery\Registry, Agentimus\Settings y Agentimus\Plugin.

Estable

Público y congelado en la especificación WP_Discovery 1.0 — seguro sobre el que construir.

Hook

Tipo

Firma

Propósito

wpdiscovery_register

acción

( Registry $registry )

Registra tus recursos y sirve tus propios documentos /.well-known. Consulta integrate-your-plugin.php para el esquema completo.

agentimus_entity_types

filtro

( string[] $types ): string[]

Añade tipos de entidad schema.org seleccionables a Ajustes → Identidad.

agentimus_cache_flushed

acción

()

Se ejecuta después de que Agentimus regenere sus documentos — purga tu CDN / caché de página.

agentimus_booted

acción

( Plugin $plugin )

Se ejecuta después de que el plugin arranque — un complemento asociado o un add-on Pro registra aquí sus funciones.

// Add selectable schema.org entity types to Settings → Identity.
add_filter( 'agentimus_entity_types', function ( $types ) {
    $types[] = 'Restaurant';
    return $types;
} );

Extensión

Filtros compatibles para dar forma a la salida; las firmas pueden evolucionar entre versiones.

Hook

Type

Signature

Purpose

agentimus_envelope

filter

( array $envelope, Registry $registry ): array

El discovery.json completo ensamblado: añade claves de extensión x-<vendor>.

agentimus_documents

filter

( array $docs, Registry $registry ): array

Añade un documento estándar que Agentimus no puede detectar automáticamente al mapa documents.

agentimus_schema_url

filter

( string $url ): string

La URL $schema del documento de descubrimiento; devuelve '' para omitirla.

agentimus_well_known_routed

filter

( string[] $names ): string[]

Enruta un /.well-known/<name> plano que sirvas para que se resuelva en cada host.

agentimus_well_known_nested

filter

( string[] $names ): string[]

Enruta un /.well-known/<dir>/<file> anidado de coincidencia exacta.

agentimus_well_known_specs

filter

( array $specs ): array

Etiqueta un nombre /.well-known con el estándar que lo rige (name => label).

agentimus_signed_surfaces

filter

( string[] $surfaces ): string[]

Qué documentos de descubrimiento firma tu firmante complementario.

agentimus_mcp

filter

( array $mcp, array $resources ): array

El descriptor MCP anunciado en /.well-known/mcp.json.

agentimus_mcp_card_server

filter

( string $id, array $servers ): string

Fija qué servidor describe la tarjeta del servidor MCP ('' = automático).

agentimus_mcp_server_abilities

filter

( string[] $names ): string[]

Las capacidades que Agentimus expone a través de su propio servidor MCP a agentes externos (por defecto: sus nueve capacidades de solo lectura). Recorta para limitar lo que sale del sitio.

agentimus_bootstrap_mcp_adapter

filter

( bool $bootstrap ): bool

Veta la carga de la biblioteca MCP Adapter incluida por completo (p. ej., un host que gestiona el adaptador por sí mismo), independientemente del ajuste enable_mcp_server del propietario.

agentimus_agent_skills

filter

( array $skills, array $resources ): array

Entradas en el índice de Agent Skills.

agentimus_post_types

filter

( string[] $types, string[] $available ): string[]

Qué tipos de entrada son visibles para agentes (cada uno recibe una sección llms.txt).

agentimus_post_type_source

filter

( string $source, string $post_type ): string

Atribuye la sección llms.txt de un tipo de entrada (y el selector de vista previa de Agent) a tu plugin.

agentimus_changes_max

filter

( int $max ): int

Tamaño de la ventana del feed de cambios: los elementos más recientes que puede contener (por defecto 200, máximo 2000).

agentimus_tombstone_retain_days

filter

( int $days ): int

Cuánto tiempo permanece una eliminación en el feed de cambios antes de podarse (por defecto 90).

agentimus_page_checks

filter

( array $checks, array $stats, WP_Post $post ): array

Añade, reajusta o elimina las comprobaciones de «Legibilidad» por página que se muestran en el editor.

agentimus_ai_assist_enabled

filter

( bool $enabled ): bool

Si se ofrece la asistencia del editor «Redactar con IA» / «Corregir con IA» (por defecto: activa cuando hay un proveedor de IA con capacidad de texto configurado en WordPress).

agentimus_markdown_source

filter

( ?string $html, WP_Post $post ): ?string

Proporciona HTML renderizado para contenido de constructores de páginas (null = renderizar normalmente).

agentimus_topic_exclude

filter

( string[] $slugs ): string[]

Slugs de temas/categorías que se omiten de la lista de Temas de llms.txt y de los temas derivados por página.

agentimus_derive_taxonomies

filter

( string[] $taxonomies, WP_Post $post ): string[]

Qué taxonomías rellenan automáticamente los Temas para IA de una entrada (por defecto category, post_tag). Un proveedor añade p. ej. product_cat; los términos pasan por el conmutador de derivación, la lista de exclusión y el límite.

agentimus_post_topics

filter

( string[] $topics, WP_Post $post ): string[]

Añade o refina la lista de Temas-para-IA de una entrada (→ JSON-LD keywords + Markdown). Se renormaliza después (deduplicada, limitada).

agentimus_topic_links

filter

( string[] $urls, string $topic, WP_Post $post ): string[]

URLs de referencia (Wikidata, Wikipedia…) para un tema → schema.org about sameAs. El núcleo no proporciona ninguna (sin búsquedas automáticas); tú las mapeas. Ejemplo listo para usar: topic-links-wikidata.php.

agentimus_topic_suggestions

filter

( string[] $pool ): string[]

El conjunto de autocompletado en el cuadro de Temas-para-IA del editor (por defecto: temas usados + etiquetas/categorías + Experiencia).

agentimus_topic_meaningful

filter

( bool $meaningful, string $name, ?object $term ): bool

Si un término de taxonomía derivado automáticamente se convierte en un tema. Por defecto descarta nombres puramente numéricos («67», IDs sueltos); devuelve true para conservar un número que realmente es el tema (p. ej. «1984»).

agentimus_llms_full_item_max_bytes

filter

( int $bytes ): int

Límite de bytes por elemento para la edición llms-full.txt.

agentimus_llms_full_avg_item_bytes

filter

( int $bytes ): int

Tamaño medio de elemento utilizado para estimar llms-full.txt en el panel de administración.

agentimus_yield_surface

filter

( bool $yield, string $surface ): bool

Cede una superficie (llms_txt, robots, …) a tu propio productor.

agentimus_defer_schema

filter

( bool $active ): bool

Si se emite el JSON-LD del front-end (retirarse para un plugin de SEO).

agentimus_schema_for_post

filter

( array $node, WP_Post $post ): array

Reemplaza el nodo JSON-LD de una entrada (p. ej. un Product).

agentimus_post_description

filter

( string $desc, WP_Post $post ): string

La última palabra sobre la descripción IA de una entrada (valor del editor → respaldo de extracto/resumen). Alimenta la description de JSON-LD, el encabezado .md y la metaetiqueta; se vuelve a limpiar después (etiquetas eliminadas, limitada).

agentimus_emit_meta_description

filter

( bool $emit, WP_Post $post ): bool

Si Agentimus gestiona la <meta name="description"> de la página en esta solicitud. Devuelve false para dejar el <head> a tu tema. (Ya se retira para un plugin de SEO dedicado.)

agentimus_schema_graph

filter

( array $graph ): array

Edición de última oportunidad de todo el @graph de JSON-LD.

agentimus_faq_pairs

filter

( array $pairs, WP_Post $post ): array

Aporta pares de pregunta/respuesta FAQPage adicionales.

agentimus_sitemap

filter

( array $sitemap ): array

Declara un sitemap que Agentimus no puede detectar automáticamente.

agentimus_sitemap_max_urls

filter

( int $max ): int

Limita el número de URLs en el sitemap generado.

agentimus_rest_discovery

filter

( bool $enabled ): bool

Interruptor principal para el autodescubrimiento de espacios de nombres REST.

agentimus_rest_namespaces

filter

( string[] $namespaces ): string[]

Espacios de nombres REST que publicar en el documento de descubrimiento.

agentimus_rest_skip_namespaces

filter

( string[] $namespaces ): string[]

Espacios de nombres REST que excluir del descubrimiento.

agentimus_discoverable_ability

filter

( bool $discoverable, string $name, mixed $ability ): bool

Incluye o excluye una única capacidad de WP.

agentimus_serve_security_txt

filter

( bool $serve ): bool

Si Agentimus genera un security.txt.

agentimus_security_txt

filter

( string $body ): string

Edita el cuerpo final de security.txt.

agentimus_security_txt_expires_days

filter

( int $days ): int

La ventana Expires de security.txt, en días.

agentimus_readiness_checks

filter

( array $checks, Settings $settings ): array

Añade o ajusta las comprobaciones de preparación del Discovery Hub en el panel de administración.

agentimus_signing_secret_key

filter

( string $key ): string

Proporciona la clave de firma Ed25519 desde una constante o una bóveda.

agentimus_exposed_paths

filter

( string[] $paths, Settings $settings ): string[]

La lista de rutas sensibles que el escaneo de archivos expuestos sondea.

agentimus_verified_bot_domains

filter

( array $map ): array

El mapa rDNS de bots verificables (token de registro → sufijos de dominio de DNS inverso), obtenido del registro editable por el propietario.

agentimus_verifier_registry

filter

( array $entries ): array

El registro efectivo de bots verificados tras las ediciones del propietario: la fuente para ambos métodos de verificación (dominios rDNS y archivos de rangos IP publicados).

agentimus_trusted_proxies

filter

( string[] $cidrs ): string[]

CIDRs de proxy/CDN de confianza para la resolución de la IP real del cliente. Una cabecera reenviada solo se respeta cuando el par directo es un proxy comprobado: no se puede usar para suplantar una IP de origen.

agentimus_referral_beacon

filter

( bool $enabled ): bool

Interruptor principal para la baliza de referidos opcional de «modo CDN» (contar visitas de IA en el navegador).

agentimus_markdown_cache

filter

( bool $cache ): bool

Activa o desactiva la caché .md por entrada (activada por defecto).

agentimus_flagged_ip_retention_days

filter

( int $days ): int

Ventana de retención para el almacén opcional de IPs marcadas (por defecto ~14).

// Add a vendor extension to the discovery document (the x- namespace is yours).
add_filter( 'agentimus_envelope', function ( $envelope, $registry ) {
    $envelope['x-acme'] = array( 'portal' => 'https://acme.example' );
    return $envelope;
}, 10, 2 );

Interno

Ajuste avanzado para propietarios de sitios — no es una superficie de integración de terceros.

Gancho

Tipo

Firma

Propósito

agentimus_deny_request

filtro

( bool $deny, string $ua ): bool

La decisión final del Guard sobre si enviar un 403 a una solicitud.

agentimus_block_allowlist

filtro

( string[] $allowed ): string[]

Clientes que nunca deben ser bloqueados en firme (motores de búsqueda + tu lista).

agentimus_verify_bots

filtro

( bool $on ): bool

Activa o desactiva la verificación de identidad de bots (DNS inverso + rangos IP publicados), anulando el ajuste.

agentimus_reverse_dns

filtro

( ?string $host, string $ip ): ?string

Anula la consulta PTR en la comprobación de DNS inverso — devuelve un nombre de host ('' si no hay ninguno) o null para usar el resolucionador nativo.

agentimus_forward_dns

filtro

( ?array $ips, string $host ): ?array

Anula la consulta A/AAAA directa — devuelve un array de cadenas IP o null para usar el resolucionador nativo.

agentimus_engine_signatures

filtro

( array $signatures ): array

Firmas estructuradas que coinciden con rastreadores reales en un límite de token.

agentimus_generic_ua_tokens

filtro

( string[] $tokens ): string[]

Tokens de user-agent genéricos tratados como de baja señal.

agentimus_agent_map

filtro

( array $map ): array

User-agent → etiqueta legible para el registro de actividad.

agentimus_spoof_signatures

filtro

( string[] $signatures ): string[]

Marcadores de plataforma que señalan un escáner suplantado o de dispositivo heredado.

agentimus_known_agents

filtro

( array $catalog ): array

Catálogo de agentes conocidos (user-agent → etiqueta).

agentimus_known_scanners

filtro

( string[] $known ): string[]

User-agents de escáner ofrecidos como sugerencias de bloqueo con un clic.

agentimus_known_trainers

filtro

( string[] $known ): string[]

User-agents de entrenadores de IA ofrecidos para el bloqueo en robots.txt.

agentimus_ai_referral_sources

filtro

( array $map ): array

Clave → nombre descriptivo para "Tráfico desde IA". Una clave que contiene un punto coincide con el host de referencia (y cualquier subdominio de este), así como con un utm_source que lleve ese host; una clave sin punto jamás puede ser igual a un host, por lo que solo coincide con utm_source — que es como se contabiliza a un asistente que etiqueta utm_source=perplexity.

agentimus_unknown_sources_max_rows

filtro

( int $max ): int

Límite de filas de la tabla opt-in "Buscar fuentes de IA omitidas". 0 desactiva el límite.

agentimus_activity_skip_self

filtro

( bool $skip ): bool

Si debe omitirse el registro de visitas de administradores con sesión iniciada. Ten en cuenta que esto se evalúa a partir de la cookie de sesión, no del usuario actual, por lo que se aplica en rutas REST que no llevan nonce.

agentimus_activity_retention_days

filtro

( int $days ): int

Cuánto tiempo se conservan las visitas de agentes. Anula el valor de Ajustes → Registro de visitas. El panel sigue informando de un máximo de 30 días. Sube agentimus_activity_max_rows junto con este valor, o el límite de filas descartará los días adicionales de todos modos.

agentimus_bypass_shared_cache

filtro

( bool $on ): bool

Fuerza que los endpoints de IA no se puedan almacenar en caché (envía Cache-Control: no-store) para que una caché compartida/CDN no pueda ocultar las consultas de agentes del registro de actividad. Anula el interruptor Ajustes → Caché y CDN.

agentimus_purge_on_change

filtro

( bool $on ): bool

Activa o desactiva la purga automática de la caché de los archivos de IA cuando cambia un contenido. Anula el interruptor Ajustes → Caché y CDN.

agentimus_purge_urls

filtro

( string[] $urls ): string[]

Las URLs exactas que Agentimus pide a la caché de página que elimine cuando cambia un contenido (añade las tuyas propias o recorta el conjunto).

agentimus_purge_url

acción

( string $url )

Se dispara por URL al purgar: conéctalo para admitir una caché de página que Agentimus no detecta de forma nativa. (agentimus_purged se dispara una vez con la lista completa.)

agentimus_new_agent_seconds

filtro

( int $seconds ): int

La ventana de "agente nuevo" para el panel de actividad a revisar.

agentimus_burst_min_hits

filtro

( int $hits ): int

Mínimo de visitas para marcar una ráfaga.

agentimus_heavy_min_hits

filtro

( int $hits ): int

Mínimo de visitas para marcar un uso intensivo.

agentimus_threats_limit

filtro

( int $limit ): int

Máximo de filas en el panel "actividad a revisar".

agentimus_default_settings

filtro

( array $defaults ): array

El array de ajustes por defecto.

agentimus_settings

filtro

( array $settings ): array

El array de ajustes vigente y fusionado en el momento de la lectura.

agentimus_sanitize_settings

filtro

( array $clean, array $input ): array

Valida o normaliza los campos añadidos por complementos al guardar.

agentimus_settings_reset

acción

()

Se ejecuta cuando el propietario restablece los ajustes.

// The Guard's final say on whether to 403 a request.
add_filter( 'agentimus_deny_request', function ( $deny, $ua ) {
    return $deny;
}, 10, 2 );

Desarrollo

npm install
npm run build      # one-off build into assets/admin/
npm run dev        # rebuild on change

assets/admin/ está en git-ignored — es un artefacto de compilación. Envíalo en el .zip distribuido (la etiqueta SVN de .org), no en el repositorio.

Requisitos

  • WordPress 6.9+ (probado hasta 7.0)

  • PHP 7.4+.

Licencia

GPL-2.0-or-later. La aplicación de administración se compila desde el código fuente de Vue en resources/ con Vite — no se distribuye código solo minificado, por lo que la compilación es reproducible.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables AI-powered WordPress management via MCP, with 158 tools for posts, pages, media, plugins, themes, users, comments, and more, plus token-optimized responses.
    100
    79
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A free WordPress plugin that turns your site into a governed MCP server, exposing 153 curated WordPress abilities (posts, media, users, WooCommerce, ACF, SEO) as tools for AI agents like Claude and Cursor. Every ability is off by default, scoped to a least-privilege user, capability-gated, and logged.
    2
    GPL 2.0
  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to interact with a WordPress site, allowing content and taxonomy management (list, create, update, delete) through 17 MCP tools.
    2

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/heera/agentimus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server