Recipes

Docs in llm.txt

Converti qualsiasi sito di documentazione in un singolo file Markdown pronto per LLM

Distilla un intero sito docs in un unico llm.txt da incollare in qualsiasi contesto LLM, pipeline RAG o modello locale. Utile per librerie sconosciute, wiki interni e documentazione di prodotto.

Flusso

  1. Distilla la pagina indice con include: ["links"] per scoprire tutti gli URL collegati
  2. Filtra la lista di link per pattern URL (es. /docs/, /guide/)
  3. Passa gli URL filtrati a /batch/distill
  4. Concatena il Markdown risultante in un singolo file

Implementazione

import httpx, re

API = "https://openapi.thunderbit.com/openapi/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}

# 1. Pull the index page + outbound links
index = httpx.post(f"{API}/distill",
                   headers=H,
                   json={"url": "https://docs.example.com",
                         "include": ["links"]}).json()["data"]

# 2. Filter to docs paths
doc_urls = [u for u in index["links"] if re.search(r"/docs/", u)]

# 3. Batch distill
job = httpx.post(f"{API}/batch/distill",
                 headers=H,
                 json={"urls": doc_urls}).json()["data"]

# 4. Poll, concatenate
# (poll loop omitted; see RAG Knowledge Base recipe)

with open("llm.txt", "w") as f:
    for r in job["results"]:
        if r["status"] == "SUCCEEDED":
            f.write(f"# {r['url']}\n\n{r['markdown']}\n\n---\n\n")

Suggerimenti

  • Aggiungi un cap sulla dimensione — un llm.txt oltre ~1 MB inizia a gonfiare i budget di token
  • Ordina per URL o per sezione per diff stabili tra le esecuzioni
  • Abbinalo a un job CI per mantenere llm.txt aggiornato man mano che i docs sorgente cambiano

Correlati

Questa ricetta è in fase di espansione con strategie di chunking e deduplicazione — torna presto.