Saltar al contenido
Herramienta de IA5 credits

generate_llms_txt

Rastree un sitio, analice su estructura y emita un archivo llms.txt (y opcionalmente llms-full.txt) conforme al estándar que define cómo deben interactuar los modelos de IA con su contenido. Niveles de cumplimiento desde permisivo hasta estricto.

Casos de uso

Publique documentación lista para IA

Publique llms.txt junto con su documentación para que Claude, ChatGPT y otros rastreadores lean directrices claras.

Publicación de cumplimiento para IA

Use el cumplimiento estricto para establecer reglas de datos de entrenamiento, caché y atribución en un solo lugar.

Generación de políticas para bots

Agregue directrices y restricciones personalizadas para agentes de usuario de IA específicos en su dominio.

Endpoint

POST/api/v1/tools/generate_llms_txt
Auth Required
1 req/s en el plan Free
5 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
La URL del sitio web para la que generar llms.txt
Example: https://example.com
format
stringOptionalboth
Formato de salida: "both" | "llms-txt" | "llms-full-txt"
Example: both
complianceLevel
stringOptionalstandard
"basic" | "standard" | "strict". Se acepta por compatibilidad y no cambia la salida de este endpoint, que se construye a partir de lo que publica el propio sitio. En el servidor MCP de CrawlForge solo se aplica con `outputOptions.robotsStyle: true`.
Example: standard
analysisOptions
objectOptional-
Opciones de análisis del sitio web (maxDepth 1-5, maxPages 10-500, respectRobots, detectAPIs, analyzeContent, checkSecurity)
Example: {"maxDepth": 3, "maxPages": 100, "detectAPIs": true}
outputOptions
objectOptional-
Personalización de la salida (organizationName, contactEmail, customGuidelines, customRestrictions, includeDetailed, includeAnalysis)
Example: {"organizationName": "Example Inc.", "contactEmail": "ai@example.com"}
respect_robots
booleanOptionaltrue
Respeta el robots.txt del sitio de destino. Con el valor `true`, una ruta que robots.txt no permita a `CrawlForge` se rechaza con un 403 antes de descargar nada y no se cobran credits. Póngalo en `false` solo para destinos con los que tenga su propio acuerdo: la respuesta incluye entonces una entrada `warnings` y la anulación queda registrada en su API key. `analysisOptions.respectRobots` es un alias; basta con poner cualquiera de los dos en `false` para desactivar la comprobación.
Example: true
max_inline_chars
numberOptional40000
Tamaño máximo del resultado que se devuelve en línea, en caracteres de su JSON (de 1.000 a 10.000.000). Por encima, la respuesta incluye `preview` (los primeros `max_inline_chars` caracteres de `llms_full_txt`, o de `llms_txt` cuando solo se genera ese archivo), `result_handle`, `total_chars`, `truncated: true` y `expires_at`, y [read_result](/docs/api-reference/tools/read-result) lee el resto por 1 credit por llamada. Los resultados almacenados se conservan 1 hora.
Example: 40000

Ejemplos de solicitud

cURL — ambos formatos, cumplimiento estándar

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/generate_llms_txt \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "both",
    "complianceLevel": "standard",
    "outputOptions": {
      "organizationName": "Example Inc.",
      "contactEmail": "ai@example.com"
    }
  }'

TypeScript — estricto con directrices personalizadas

generateLlmsTxt.tsTypescript
// npm install crawlforge-sdk
import { CrawlForge } from 'crawlforge-sdk';
import fs from 'node:fs/promises';

const client = new CrawlForge({ apiKey: process.env.CRAWLFORGE_API_KEY });

const result = await client.generateLlmsTxt({
  url: 'https://docs.example.com',
  format: 'both',
  complianceLevel: 'strict',
  analysisOptions: {
    maxDepth: 4,
    maxPages: 250,
    detectAPIs: true,
    analyzeContent: true,
  },
  outputOptions: {
    organizationName: 'Example Inc.',
    contactEmail: 'ai@example.com',
    customGuidelines: [
      'AI crawlers must respect robots.txt',
      'Cache responses for up to 24 hours',
    ],
    customRestrictions: [
      'No training on user-submitted content',
    ],
    includeAnalysis: true,
  },
});

// result.data is untyped in crawlforge-sdk 0.1 — its shape is the Response Example below.
const { llms_txt, llms_full_txt } = result.data as { llms_txt: string; llms_full_txt: string };
await fs.writeFile('public/llms.txt', llms_txt);
await fs.writeFile('public/llms-full.txt', llms_full_txt);

Python

generate_llms_txt.pyPython
# pip install crawlforge
from crawlforge import CrawlForge

client = CrawlForge()  # reads CRAWLFORGE_API_KEY

result = client.generate_llms_txt(
    url='https://example.com',
    format='llms-txt',
    complianceLevel='basic',
)

# result.data is a plain dict — its shape is the Response Example below.
with open('public/llms.txt', 'w') as f:
    f.write(result.data['llms_txt'])

Ejemplo de respuesta

200 OK4.1s
{
"success": true,
"data": {
"url": "https://example.com",
"llms_txt": "# Example Inc.\n\n> Tools for building things.\n\n## Docs\n\n- [Quickstart](https://example.com/docs/quickstart): Get started in five minutes\n",
"llms_full_txt": "# Example Inc.\n\n## Quickstart\n\nURL: https://example.com/docs/quickstart\n\nGet started in five minutes...",
"pages_analyzed": 12,
"pages": [
{
"url": "https://example.com",
"title": "Example Inc."
},
{
"url": "https://example.com/docs/quickstart",
"title": "Quickstart"
}
],
"compliance": {
"robots_txt_found": true,
"disallow_count": 3
},
"api_endpoints_detected": [
"https://example.com/api/v1"
],
"clamps_applied": [
"maxPages clamped from 100 to 25"
],
"generated_at": "2026-08-26T14:30:00.000Z"
},
"credits_used": 5,
"credits_remaining": 995,
"processing_time": 4100
}
Field Descriptions
data.llms_txtEl llms.txt generado. Presente salvo que `format` se haya fijado en llms-full-txt.
data.llms_full_txtllms.txt con el texto de cada página analizada incluido. Presente solo cuando `format` es both o llms-full-txt.
data.pages_analyzedLa página raíz más todas las páginas descargadas con éxito.
data.pagesLas páginas que entraron en la salida, cada una con su título.
data.compliance.robots_txt_foundSi se recuperó un robots.txt; disallow_count indica cuántas reglas Disallow contenía. `false` cubre tanto un sitio sin robots.txt como uno cuyo robots.txt no se pudo leer; en el segundo caso se añade además una entrada en `warnings` con el motivo.
data.api_endpoints_detectedHasta 10 URL con aspecto de API detectadas en el HTML descargado. Es una heurística sobre la ruta, no un listado de API verificado. Nunca se incluye una URL del mismo sitio que el robots.txt no permite a `CrawlForge`.
data.clamps_appliedNotas legibles cuando los límites solicitados se redujeron para ajustarse al presupuesto serverless. Vacío cuando no se limitó nada.
data.generated_atMarca de tiempo ISO 8601 de la generación.

Manejo de errores

Bloqueado por robots.txt (403 Forbidden)

El robots.txt del sitio de destino no permite esta ruta a CrawlForge. Establezca respect_robots: false para anularlo si tiene su propio acuerdo con el destino: la anulación queda registrada en su API key. La anulación no alcanza a un host incluido en la lista de exclusión permanente de CrawlForge, que se rechaza sea cual sea el valor de respect_robots. Solo la URL de destino devuelve un 403: las páginas descubiertas durante el análisis que robots.txt no permita se dejan fuera de él y se contabilizan en warnings.

Costo en credits

5 credits
5 credits por solicitud
5 credits fijos sin importar cuántas páginas visite el rastreador.

Consejo: Combínela con map_site (2 credits) cuando solo necesite el inventario de URLs antes de generar las directrices.

Herramientas relacionadas