Hoppa till huvudinnehållet

AI-chattbot med källhänvisningar i MkDocs

· 3 min läsning
Michael Fisher
ChattyBox maintainer and technical writer

MkDocs-teman använder olika kataloger för åsidosättningar, och Material kan navigera mellan sidor utan en fullständig omladdning. En hållbar integration måste bevara temats befintliga skript, ladda widgeten en gång och fungera tillsammans med sökning och navigering på mobila enheter.

Författare och teknisk granskare: Michael Fisher, underhållsansvarig för ChattyBox. Publicerad och tekniskt granskad den 10 juli 2026. Verifieringsprotokollet nedan är en implementeringsguide; inga resultat för trafik, avledning eller svarens noggrannhet görs gällande.

1. Välj rätt katalog för åsidosättningar

För Material for MkDocs anger du en overrides-katalog för custom_dir:

site_name: My documentation
theme:
name: material
custom_dir: overrides
features:
- navigation.instant

För det inbyggda temat använder du en separat katalog för det anpassade temat:

site_name: My documentation
theme:
name: mkdocs
custom_dir: custom_theme

Genom att hålla varianterna åtskilda blir det tydligt vilken uppströmsbasmall som byggs ut.

2. Utöka scripts-blocket

Skapa overrides/main.html för Material eller custom_theme/main.html för det inbyggda temat:

{% extends "base.html" %}

{% block scripts %}
{{ super() }}
<script
id="chattybox-widget"
src="https://chattybox.ai/widget.js"
async
data-api-key="YOUR_API_KEY"
data-api-url="YOUR_CHAT_API_URL"
data-chattybox-widget="true"
></script>
{% endblock %}

{{ super() }} bevarar skripten som temat tillhandahåller, inklusive navigerings- och sökbeteendet. Om du utelämnar det kan widgeten se ut att fungera samtidigt som dokumentationsgränssnittet i tysthet slutar fungera. Det stabila ID:t ger också en direkt kontroll av dubbla laddare.

Använd projektspecifika värden från referensen för widgetinstallation. Guiden om AI-chattbotar för MkDocs beskriver källomfattning, crawlingbeteende och vilka frågor du bör utvärdera före publicering.

3. Bygg båda varianterna

Från ditt MkDocs-projekt:

python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt

cd material
mkdocs build --strict

cd ../vanilla
mkdocs build --strict

--strict gör varningar till fel, vilket fångar trasig navigering och konfigurationsproblem innan widgeten utvärderas.

4. Kör webbläsarkontrollerna

Publicera varje variant och kontrollera:

  1. Den inbyggda sökningen öppnas fortfarande och returnerar det förväntade dokumentationsresultatet.
  2. Materials instant navigation byter rutt utan att duplicera widgetens laddare.
  3. document.querySelectorAll('#chattybox-widget').length förblir 1 efter flera ruttändringar.
  4. Vid en viewport på 390 px täcker startknappen inte sökning, navigering eller kontrollerna för nästa/föregående.
  5. En fråga som stöds hänvisar till rätt sida, och en fråga som inte stöds ger en försiktig reservåtgärd.

De fyra första kontrollerna validerar integrationsbeteendet. Den femte beror på vilka sidor du indexerar och kräver en representativ utvärderingsuppsättning; följ scraping-guiden och lanseringschecklistan i stället för att se en lyckad skriptladdning som ett bevis på svarskvalitet.

5. Bevara en restriktiv CSP

Tillåt widgetens värd i script-src, det konfigurerade API-ursprunget i connect-src och teckensnittens ursprung i style-src och font-src när det behövs. Den aktuella widgeten injicerar komponentstilar, så även en i övrigt strikt policy behöver en uttrycklig strategi för inline-stilar. Undvik wildcard-listor över källor.

Underhållschecklista

Bygg om båda temavarianterna efter uppgraderingar av MkDocs eller Material, eftersom namn på uppströmsmallens block kan ändras. Håll skriptets ID stabilt, bevara super() och kör om kontrollerna av sökning, instant navigation, mobil överlappning och källhänvisningar.

För planering av en lansering från början till slut använder du checklistan för implementering av dokumentationschattbot.

Källor

Vi använder valfria analys- och tagghanteringsverktyg för att förstå hur webbplatsen används. Välj om du vill tillåta Ahrefs Web Analytics, PostHog och Google Tag Manager. Om du stänger av analysen laddas sidan om så att ändringen genomförs korrekt. Grundläggande webbplatsfunktioner och felövervakning styrs inte av detta val. Läs vår integritetspolicy.