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 AFINN-165, un léxico ponderado en inglés de unas 3.400 palabras, con negación ("not happy" cuenta como negativo). Desactivado por defecto; el objeto `sentiment` no aparece a menos que lo solicite. En texto de otro idioma donde no aparece ninguna palabra del léxico, `label` es `not_applicable` con `notApplicable: "sentiment-lexicon-is-english-only"`, en lugar de un `neutral` que nunca se midió. Example: true |
extract_keywords | boolean | Optional | true | Devuelve las diez palabras más frecuentes de más de tres caracteres, con sus recuentos. Las palabras funcionales del inglés, como `that`, `with` y `from`, nunca se cuentan, y las del alemán, como `nicht`, `eine` y `dass`, también se omiten cuando el texto se detecta como alemán. 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": "great", "frequency": 1 }, { "word": "upgrade", "frequency": 1 } ], "sentiment": { "score": 0.16, "label": "positive", "confidence": 1, "positive_matches": [ "great", "easy", "clear", "helpful", "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. Se omiten las palabras funcionales del inglés, y también las del alemán cuando el texto está en alemándata.sentiment.scorePuntuación neta de AFINN-165 por palabra del texto (cada palabra coincidente pesa de -5 a +5), limitada a -1..1data.sentiment.label`positive` por encima de 0,05, `negative` por debajo de -0,05, en otro caso `neutral`, o `not_applicable`, junto con `notApplicable`, en texto no inglés que no coincidió con ninguna palabra del léxicodata.sentiment.confidenceCuánta evidencia respalda la etiqueta: 0,2 por cada palabra del léxico coincidente, hasta 1. Es 0 cuando no coincidió ninguna palabra del léxicodata.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.
El léxico de sentimiento es solo en inglés. En texto de otro idioma que no coincide con ninguna palabra del léxico, sentiment.label es not_applicable, sentiment.notApplicable es sentiment-lexicon-is-english-only y score es 0. El texto no inglés que contiene alguna palabra de sentimiento en inglés se puntúa igualmente, así que revisa 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: 100,000 credits = 33,333 análisis ($99/mo)
Herramientas relacionadas
¿Listo para probar analyze_content? Regístrese gratis y obtenga 1,000 credits para empezar a crear.