analyze_content
Análisis estadístico de contenido: detección de idioma, frecuencia de palabras clave, sentimiento por léxico ponderado y facilidad de lectura Flesch. Indique una URL y la herramienta descarga y limpia la página por usted, o pase el texto directamente. No interviene ninguna llamada a un modelo, así que la misma entrada produce siempre la misma salida.
Casos de uso
Clasificación de contenido
Encamine artículos según el idioma detectado y las palabras clave dominantes antes de que lleguen a una etapa más costosa del pipeline.
Monitoreo de sentimiento
Siga el tono de reseñas y comentarios. Cada puntuación incluye las palabras exactas que la produjeron, de modo que un resultado sorprendente se puede auditar.
Auditoría de legibilidad
Facilidad de lectura Flesch sobre un conjunto de páginas, para encontrar documentación que se ha vuelto más densa que el resto.
Prefiltrado económico
Filtre las páginas extraídas por longitud, idioma y palabras clave antes de gastar credits en summarize_content o extract_with_llm.
Enrutamiento multilingüe
Detecte el idioma de una página y envíela al manejador o traductor adecuado.
Estadísticas del corpus
Recuentos de palabras, oraciones y longitud media de oración en todo un rastreo, para informes o controles de calidad.
Endpoint
/api/v1/tools/analyze_contentParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Optional | - | Página que se descargará y analizará. Se eliminan scripts, estilos, nav, header y footer, y se analiza el texto restante del body. Indique `url` o `content`. Example: https://example.com/blog/post |
content | string | Optional | - | Texto para analizar directamente, sin descarga. Solo surte efecto cuando se omite `url`: si envía ambos, gana la página descargada. Example: The dashboard is a great upgrade... |
analyze_sentiment | boolean | Optional | false | Puntúa el sentimiento con un léxico ponderado en inglés. Desactivado por defecto; el objeto `sentiment` no aparece a menos que lo solicite. Example: true |
extract_keywords | boolean | Optional | true | Devuelve las diez palabras más frecuentes de más de tres caracteres, con sus recuentos. Example: true |
detect_language | boolean | Optional | true | Detecta el idioma y devuelve un código ISO 639-1, o `und` cuando el texto es demasiado corto o el idioma no se reconoce. Example: true |
analyze_readability | boolean | Optional | false | Calcula la facilidad de lectura Flesch y un nivel escolar aproximado. Desactivado por defecto; el objeto `readability` no aparece a menos que lo solicite. Example: true |
timeout | number | Optional | 10000 | Tiempo de espera de la descarga en milisegundos, entre 1000 y 30000. Solo se aplica cuando se usa `url`. Example: 10000 |
respect_robots | boolean | Optional | true | 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. Example: true |
Ejemplos de solicitud
curl -X POST https://crawlforge.dev/api/v1/tools/analyze_content \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/blog/dashboard-review",
"analyze_sentiment": true,
"analyze_readability": true
}'Ejemplo de respuesta
{ "success": true, "data": { "content_length": 407, "word_count": 75, "sentence_count": 6, "avg_sentence_length": 13, "language": "en", "keywords": [ { "word": "dashboard", "frequency": 3 }, { "word": "easy", "frequency": 2 }, { "word": "that", "frequency": 2 }, { "word": "great", "frequency": 1 }, { "word": "upgrade", "frequency": 1 } ], "sentiment": { "score": 0.924, "label": "positive", "positive_matches": [ "great", "easy", "clear", "helpful", "fast", "easy", "reliable", "recommend" ], "negative_matches": [], "method": "lexicon" }, "readability": { "flesch_score": 76, "grade_level": "middle_school" } }, "credits_used": 3, "credits_remaining": 997, "processing_time": 310}data.content_lengthNúmero de caracteres del texto analizado, después de eliminar el HTMLdata.avg_sentence_lengthPalabras por oración, redondeado a un número enterodata.languageCódigo ISO 639-1, o `und`. Solo aparece cuando `detect_language` es true (el valor por defecto)data.keywordsLas diez palabras de más de tres caracteres con mayor frecuencia bruta. No hay lista de palabras vacías, así que pueden aparecer palabras comunes como `that` o `with`data.sentiment.scoreSuma de los pesos del léxico coincidentes dividida por la raíz cuadrada del número de palabras, limitada a -1..1data.sentiment.label`positive` por encima de 0,05, `negative` por debajo de -0,05, en otro caso `neutral`data.sentiment.positive_matchesTodas las palabras que aportaron en positivo, en orden y con repeticiones: de esto se compone la puntuacióndata.sentiment.methodSiempre `lexicon`. No se llama a ningún modelodata.readability.flesch_scoreFacilidad de lectura Flesch, limitada a 0-100. Cuanto más alto, más fácildata.readability.grade_level`middle_school`, `high_school` o `college`, derivado únicamente de la longitud de las oracionescredits_used3 credits fijos por llamada, sea cual sea la longitud del textoManejo de errores
Ni url ni content (400 Bad Request)
VALIDATION_ERROR. Debe estar presente al menos uno de los dos. El mismo estado cubre una url mal formada y un timeout fuera de 1000-30000.
Página demasiado grande (413 Payload Too Large)
RESPONSE_TOO_LARGE. El cuerpo descargado superó el límite de lectura de 25MB y se rechazó en lugar de almacenarse en memoria. Pase el texto usted mismo mediante content si necesita analizarlo.
El destino agotó el tiempo de espera (504 Gateway Timeout)
FETCH_TIMEOUT. La página dejó de responder mientras enviaba su cuerpo. Aumente timeout, hasta 30000 ms.
Fallo en la descarga (502 Bad Gateway)
FETCH_FAILED. No se pudo leer el cuerpo de la respuesta: conexión reiniciada, o un cuerpo que no es texto decodificable.
El análisis falló (500 Internal Server Error)
TOOL_ERROR. Una llamada fallida no se cobra; los credits solo se descuentan después de que el análisis tiene éxito.
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.
data.language antes de confiar en data.sentiment.Costo en credits
Qué incluye:
Detección de idioma (ISO 639-1, basada en trigramas)
Frecuencia de las diez palabras clave principales
Sentimiento por léxico ponderado con las palabras coincidentes
Facilidad de lectura Flesch y nivel escolar
Recuentos de palabras, oraciones y caracteres
Recomendaciones por plan:
Plan Free: 1,000 credits de prueba por única vez = 333 análisis
Plan Hobby: 5,000 credits = 1,666 análisis ($19/mo)
Plan Professional: 50,000 credits = 16,666 análisis ($99/mo)