SW Shopware 6 Intermedio

LLMs.txt & AEO Shopware — Guía completa

Instalar, configurar y explotar LLMs.txt & AEO: endpoints llms.txt / llms-full.txt / robots-ai.txt, datos estructurados Schema.org (FAQPage, HowTo, Speakable, Product enriquecido), campos personalizados AEO, CLI y caché PSR-6 para Shopware 6.7.

Actualizado Versión del módulo 1.0.1

Presentación

DataFirefly LLMs.txt & AEO es un plugin Shopware 6.7 que hace su tienda visible y comprensible para los motores de respuesta IA (ChatGPT, Claude, Perplexity, Gemini). Actúa en tres planos complementarios:

  • llms.txt / llms-full.txt — dos archivos conformes a la especificación llmstxt.org, generados automáticamente en la raíz de cada sales-channel, en cada idioma activo.
  • Schema.org JSON-LD — inyección automática de datos estructurados en todas las páginas: Organization, Product enriquecido, BreadcrumbList, FAQPage, HowTo y Speakable.
  • Pilotaje de crawlers IA — un endpoint /robots-ai.txt con control individual de 9 bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, Bingbot, Meta-ExternalAgent, CCBot, cohere-ai).

Requisitos: Shopware 6.7.0+, PHP 8.2+, MySQL 8.0+ o MariaDB 10.6+. El plugin funciona con el storefront estándar y los temas personalizados (herencia Twig).

Instalación

Vía ZIP (recomendado)

  1. Descargue DataFireflyLlmsAeo.zip desde su cuenta de cliente.
  2. Administración Shopware → Extensiones → Mis extensiones → Subir extensión.
  3. Haga clic en Instalar, luego Activar.
  4. Vacíe la caché: Ajustes → Sistema → Cachés e índices, o vía CLI:
bin/console cache:clear

Vía CLI

unzip DataFireflyLlmsAeo.zip -d custom/plugins/
bin/console plugin:refresh
bin/console plugin:install --activate DataFireflyLlmsAeo
bin/console cache:clear

En la activación, el plugin instala automáticamente el conjunto de campos personalizados datafirefly_aeo en productos, categorías, páginas CMS y fabricantes. No se requiere ninguna migración manual.

Compilación de los assets de administración

Si el módulo de administración no aparece bajo Marketing tras la activación:

bin/console bundle:dump
./bin/build-administration.sh
bin/console cache:clear

Configuración

La configuración se encuentra en Ajustes → Sistema → Extensiones → DataFirefly llms.txt & AEO. Está delimitada por sales-channel: seleccione un canal específico en el selector superior para sobrescribir los valores globales.

Tarjeta «General»

  • Activar el módulo — interruptor global (por sales-channel).
  • Autor del sitio — usado en la cabecera del llms.txt.
  • Descripción del sitio — blockquote de cabecera del llms.txt; describa su tienda en 1-2 frases orientadas a IA.
  • Duración de la caché — TTL en segundos (por defecto: 3600).

Tarjeta «llms.txt»

  • Incluir las páginas CMS, categorías, marcas y/o productos.
  • Número máximo de productos listados en el índice.
  • Incluir productos inactivos — desactivado por defecto; manténgalo desactivado en producción.

Tarjeta «AEO & Schema.org»

  • Toggles individuales: Organization, Product enriquecido, BreadcrumbList, FAQPage, HowTo, Speakable.
  • Logo y URL de la organización — sobrescriben los valores del sales-channel.
  • Teléfono, email de contacto, perfiles sociales — alimentan el schema Organization (contactPoint, sameAs).

Tarjeta «Crawlers IA»

Para cada uno de los 9 bots, tres modos:

  • Permitido — acceso completo (sin directiva restrictiva).
  • DenegadoDisallow: / para ese bot.
  • SelectivoDisallow en las rutas que liste (una por línea, ej. /checkout/, /account/).

El contenido de /robots-ai.txt no se fusiona automáticamente en su robots.txt principal. Copie su contenido en su robots.txt, o añada una regla de reescritura de servidor (ver Integración robots.txt).

Los tres endpoints

URL Contenido Cabeceras
/llms.txt Índice sintético: Páginas, Categorías, Marcas, Productos, Optional text/plain; charset=UTF-8, X-Robots-Tag: noindex, caché pública
/llms-full.txt Contenido íntegro: descripciones limpias, SKU, EAN, marca, características agrupadas, FAQ ídem
/robots-ai.txt Bloque de directivas User-agent para los 9 crawlers IA ídem

Verificación rápida tras la instalación:

curl -I https://su-tienda.tld/llms.txt
curl -I https://su-tienda.tld/llms-full.txt
curl -I https://su-tienda.tld/robots-ai.txt

Cada sales-channel expone sus propios archivos en su propio dominio, en cada idioma activo (las URL localizadas siguen la configuración de dominio del canal).

Campos personalizados AEO

El conjunto datafirefly_aeo está disponible en productos, categorías, páginas CMS y fabricantes, en la pestaña Campos personalizados de cada entidad.

Campo Tipo Uso
datafirefly_aeo_summary Texto Resumen de 1-2 frases usado en el llms.txt en lugar de la descripción truncada
datafirefly_aeo_faq JSON FAQ estructurada, inyectada como FAQPage JSON-LD
datafirefly_aeo_howto JSON Tutorial estructurado, inyectado como HowTo JSON-LD
datafirefly_aeo_speakable Texto Texto corto para asistentes de voz (30-40 palabras pronunciables)
datafirefly_aeo_exclude Booleano Excluye la entidad del llms.txt y del llms-full.txt

Formato del campo FAQ

[
  {
    "q": "¿Cuánto tarda la entrega?",
    "a": "La entrega estándar tarda de 2 a 4 días laborables."
  },
  {
    "q": "¿Cuál es su política de devoluciones?",
    "a": "Dispone de 30 días para devolver un producto sin usar."
  }
]

Formato del campo HowTo

{
  "name": "Cómo instalar el producto",
  "totalTime": "PT15M",
  "steps": [
    { "name": "Preparación", "text": "Desembale los componentes." },
    { "name": "Montaje", "text": "Siga el esquema proporcionado." },
    { "name": "Verificación", "text": "Pruebe el funcionamiento." }
  ]
}

Los campos personalizados de Shopware son traducibles: rellene la FAQ en cada idioma mediante el selector de idioma de la ficha de producto. El plugin lee el valor en el idioma del contexto de la petición.

Datos estructurados Schema.org

El plugin inyecta JSON-LD en el <head> mediante la plantilla storefront/layout/meta.html.twig (herencia Twig, compatible con temas personalizados). Schemas generados:

  • Organization — en todas las páginas: nombre, logo, URL, contactPoint, sameAs (perfiles sociales).
  • Product enriquecido — en las fichas de producto: gtin13 (desde el EAN), mpn, sku, brand (fabricante), additionalProperty (características agrupadas por grupo de propiedades), aggregateRating (desde las reseñas nativas de Shopware cuando existen).
  • BreadcrumbList — migas de pan completas de la página actual.
  • FAQPage — si el campo datafirefly_aeo_faq está relleno en la entidad de la página.
  • HowTo — si el campo datafirefly_aeo_howto está relleno.
  • Speakable — selectores CSS h1, .product-detail-name, .product-detail-description-text, .cms-element-text, [data-speakable], más el texto del campo dedicado.

Validación recomendada tras la puesta en producción:

Módulo de administración

Bajo Marketing → DataFirefly llms.txt & AEO:

  • Previsualización en vivo del llms.txt o del llms-full.txt, con renderizado monoespaciado.
  • Selector de sales-channel — previsualice cada canal de forma independiente.
  • Invalidación de caché en un clic (por canal o global).
  • Apertura de la URL pública y copia al portapapeles.

Comandos CLI y automatización

datafirefly:llms-txt:generate

# Generar el llms.txt de un sales-channel (mostrado en la salida estándar)
bin/console datafirefly:llms-txt:generate --sales-channel=<id>

# Versión completa, escrita en un archivo, sin pasar por la caché
bin/console datafirefly:llms-txt:generate --sales-channel=<id> --full --output=/tmp/llms-full.txt --no-cache

datafirefly:llms-txt:warm

# Calentar la caché de todos los sales-channels x todos los idiomas activos
bin/console datafirefly:llms-txt:warm

# Forzar la regeneración aunque la caché siga siendo válida
bin/console datafirefly:llms-txt:warm --force

# Calentar solo el llms.txt (sin el llms-full.txt)
bin/console datafirefly:llms-txt:warm --skip-full

Cron recomendado

# Calentamiento diario a las 03:15
15 3 * * * cd /var/www/shopware && php bin/console datafirefly:llms-txt:warm --quiet

Una tarea programada Shopware también se registra en la activación: si su worker Messenger y el scheduled task runner están en marcha, la caché se calienta automáticamente sin cron de sistema.

Integración robots.txt

Dos enfoques para exponer las directivas IA en su robots.txt principal:

Copia manual

Abra /robots-ai.txt, copie el bloque generado y péguelo en su robots.txt existente. Repita tras cada cambio de configuración de los bots.

Reescritura de servidor (recomendada si el robots.txt está gestionado íntegramente por el plugin)

# nginx
location = /robots.txt {
    rewrite ^ /robots-ai.txt last;
}

# Apache (.htaccess)
RewriteRule ^robots.txt$ /robots-ai.txt [L]

Use la reescritura completa solo si no tiene otras directivas robots.txt que preservar (sitemap, exclusiones SEO existentes). En caso de duda, prefiera la copia manual del bloque IA.

Caché y rendimiento

  • Caché PSR-6 sobre el pool cache.object de Shopware, etiquetada datafirefly_llms_aeo.
  • Claves delimitadas por sales-channel + idioma: cada combinación tiene su propia entrada.
  • TTL configurable (por defecto 3600 s).
  • Invalidación: botón admin (por canal o global), comando warm --force, o expiración natural.
  • Compatible con caché clusterizada (Redis): la invalidación por etiquetas funciona en todos los adaptadores etiquetables.

Solución de problemas

Los endpoints devuelven 404

  1. Verifique que el plugin está activado (no solo instalado).
  2. Vacíe la caché HTTP y la caché de aplicación: bin/console cache:clear.
  3. Si usa un reverse proxy/CDN, púrguelo también.

Error «Attempted to call an undefined method named getHeader» en páginas de navegación

Bug corregido en la versión 1.0.1: en algunas instalaciones Shopware 6.7, NavigationPage no expone getHeader(). Actualice a la 1.0.1 (extracción defensiva de la categoría activa). Si ya está en 1.0.1 y sigue viendo el error, vacíe la caché de opcode PHP (opcache_reset o reinicio de PHP-FPM).

El módulo admin no aparece bajo Marketing

Compile los assets de administración (ver Instalación) y fuerce la recarga del navegador (Ctrl+Mayús+R).

El llms.txt está vacío o incompleto

  1. Verifique los toggles de inclusión (páginas CMS / categorías / marcas / productos) en la tarjeta «llms.txt».
  2. Verifique que el límite de productos no está en 0.
  3. Controle el campo datafirefly_aeo_exclude en las entidades ausentes.
  4. Invalide la caché y recargue.

El JSON-LD no aparece en el código fuente

  1. Verifique que «Activar el módulo» y los toggles Schema.org están activos para el sales-channel correcto.
  2. Si su tema sobrescribe storefront/layout/meta.html.twig sin {{ parent() }} en el bloque correspondiente, la inyección se pierde: restaure la llamada al padre.

Changelog

1.0.1 — 2026-05-21

  • Corrección: extracción defensiva de la categoría activa en las páginas de navegación (error getHeader() en algunas instalaciones 6.7).

1.0.0 — 2026-05-21

  • Versión inicial: llms.txt + llms-full.txt, 6 schemas JSON-LD, robots-ai.txt (9 bots), campos personalizados AEO, módulo admin Vue 3, 2 comandos CLI, tarea programada, snippets FR/EN/DE.
¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte