Recipes

Docs vers llm.txt

Convertir n'importe quel site de documentation en un seul fichier Markdown prêt pour LLM

Distille un site de documentation entier en un seul llm.txt à coller dans n'importe quel contexte LLM, pipeline RAG ou modèle local. Utile pour des bibliothèques inconnues, des wikis internes et des docs produit.

Flux

  1. Distille la page d'index avec include: ["links"] pour découvrir toutes les URLs liées
  2. Filtre la liste de liens par motif d'URL (par exemple /docs/, /guide/)
  3. Envoie les URLs filtrées dans /batch/distill
  4. Concatène le Markdown obtenu dans un seul fichier

Implémentation

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

Astuces

  • Ajoute un plafond de taille — un llm.txt au-delà de ~1 Mo commence à gonfler les budgets de tokens
  • Trie par URL ou par section pour des diffs stables d'une exécution à l'autre
  • Couple avec un job CI pour garder llm.txt à jour quand les docs source changent

Liens

Cette recette est en cours d'extension avec des stratégies de chunking et de déduplication — repasse bientôt.