Recipes

Docs a llm.txt

Convierte cualquier sitio de documentación en un único archivo Markdown listo para LLM

Distill un sitio de documentación completo en un único llm.txt que puedes pegar en cualquier contexto de LLM, pipeline de RAG o modelo local. Útil para librerías desconocidas, wikis internos y documentación de producto.

Flujo

  1. Distill la página índice con include: ["links"] para descubrir todas las URLs enlazadas
  2. Filtra la lista de enlaces por patrón de URL (p. ej. /docs/, /guide/)
  3. Pasa las URLs filtradas a /batch/distill
  4. Concatena el Markdown resultante en un solo archivo

Implementación

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")

Consejos

  • Añade un límite de tamaño — un llm.txt de más de ~1 MB empieza a inflar el presupuesto de tokens
  • Ordena por URL o por sección para diffs estables entre ejecuciones
  • Combínalo con un job de CI para mantener llm.txt actualizado conforme cambia la documentación origen

Relacionado

Esta receta se está ampliando con estrategias de chunking y deduplicación — vuelve pronto.