Saltar al contenido principal

Chatbot de IA con fuentes para Docusaurus 3

· 4 lectura mínima
Michael Fisher
ChattyBox maintainer and technical writer

Docusaurus se comporta como una aplicación de una sola página después de la primera carga. Una integración de widget que solo funciona en el documento inicial, o que añade un segundo cargador en cada cambio de ruta, no está lista para producción. Esta guía utiliza una identidad estable para el script y una raíz del tema que permanece montada en todas las rutas de documentación.

Autor y revisor técnico: Michael Fisher, responsable de ChattyBox. Publicado y revisado técnicamente el 10 de julio de 2026. Las comprobaciones reproducibles que se indican a continuación son un tutorial de implementación, no una evaluación de rendimiento ni de precisión.

1. Añade el componente de tema Root

Crea src/theme/Root.tsx en tu sitio de Docusaurus:

import React, { useEffect, type ReactNode } from 'react';

const WIDGET_ID = 'chattybox-widget';

export default function Root({ children }: { children: ReactNode }) {
useEffect(() => {
if (document.getElementById(WIDGET_ID)) return;

const script = document.createElement('script');
script.id = WIDGET_ID;
script.src = 'https://chattybox.ai/widget.js';
script.async = true;
script.dataset.apiKey = 'YOUR_API_KEY';
script.dataset.apiUrl = 'YOUR_CHAT_API_URL';
script.dataset.chattyboxWidget = 'true';
document.body.appendChild(script);
}, []);

return <>{children}</>;
}

El ID estable chattybox-widget es la parte importante. React Strict Mode puede volver a montar los efectos durante el desarrollo, y Docusaurus cambia las rutas sin reemplazar el documento. Esta protección hace que ambos casos sean idempotentes.

Usa la URL de API que muestra tu proyecto de ChattyBox en lugar de copiar una implementación de ejemplo. Consulta la referencia de instalación del widget para conocer los atributos actuales y la guía de producto de Docusaurus para obtener orientación sobre la selección de fuentes y la evaluación.

2. Mantén el cargador montado

No coloques este script dentro de una página de documentación individual ni de un layout que Docusaurus reemplace durante la navegación. El componente Root personalizado mediante swizzling envuelve la aplicación durante toda su vida útil, por lo que el widget sigue disponible mientras los visitantes pasan de una guía a otra y consultan las referencias.

Si tu sitio ya tiene src/theme/Root.tsx, combina el efecto con el componente existente en lugar de reemplazar los proveedores de autenticación, analítica u otros.

3. Ten en cuenta la política de seguridad de contenido

Una política restrictiva debe permitir:

  • https://chattybox.ai en script-src para el cargador del widget.
  • El origen de la API de chat que hayas configurado en connect-src.
  • https://fonts.googleapis.com en style-src y https://fonts.gstatic.com en font-src si la fuente del widget aún no está disponible.
  • Estilos de componentes en línea en style-src para la compilación actual del widget.

Parte de la política existente y añade únicamente los orígenes que realmente utilices. No sustituyas una política restrictiva por un comodín amplio.

4. Reproduce las comprobaciones de integración

En tu proyecto de Docusaurus, añade el wrapper Root anterior y ejecuta:

bun install
bun run start

Después, verifica lo siguiente:

  1. Abre dos rutas de documentación diferentes sin actualizar completamente el navegador.
  2. Ejecuta document.querySelectorAll('#chattybox-widget').length después de cada navegación. Debe seguir siendo 1.
  3. Haz una pregunta cuya respuesta esté en una página indexada y confirma que la respuesta enlaza con esa página.
  4. Haz una pregunta sin soporte y confirma que el asistente ofrece una respuesta alternativa en lugar de inventar una fuente.
  5. Prueba el lanzador en una ventana móvil estrecha y comprueba que no cubra los controles de navegación ni de paginación.

La comprobación del recuento de scripts demuestra que se evitan los duplicados. No demuestra la calidad de la recuperación. Utiliza un conjunto representativo de preguntas y la guía de scraping para validar la cobertura de fuentes antes del lanzamiento.

Qué supervisar tras el lanzamiento

Registra las preguntas no resueltas, las citas incorrectas, las páginas de fuentes obsoletas y las rutas en las que el lanzador oculta controles del sitio. Vuelve a probar después de actualizar el tema de Docusaurus, porque los cambios en la navegación y el diseño del contenido pueden afectar a la ubicación aunque el cargador siga funcionando correctamente.

Para una secuencia de despliegue más amplia, utiliza la lista de comprobación para implementar un chatbot de documentación y la lista de comprobación de lanzamiento.

Fuentes

Utilizamos herramientas opcionales de analítica y gestión de etiquetas para comprender el uso del sitio. Elige si quieres permitir Ahrefs Web Analytics, PostHog y Google Tag Manager. Al desactivar la analítica, esta página se recargará para que el cambio se aplique correctamente. Las funciones esenciales del sitio y la monitorización de errores no dependen de esta opción. Lee nuestra política de privacidad.