analyze_content
统计式内容分析:语言检测、关键词频率、加权词典情感倾向以及 Flesch 阅读易读度。传入 URL,工具会自动抓取并清理页面;也可以直接传入文本。整个过程不调用任何模型,因此相同输入始终得到相同输出。
使用场景
内容分类
在文章进入更昂贵的流水线阶段之前,按检测到的语言和主要关键词进行分流。
情感监测
跟踪评论与反馈的语气。每个分值都会附带产生该分值的具体词语,因此出乎意料的结果可以逐词核查。
可读性审计
对一组页面计算 Flesch 易读度,找出比其余部分更晦涩的文档。
低成本预筛选
在为 summarize_content 或 extract_with_llm 花费 credits 之前,先按长度、语言和关键词筛选抓取到的页面。
多语言路由
检测页面语言,并将其发送到对应的下游处理器或译者。
语料统计
统计整次爬取的词数、句数和平均句长,用于报表或质量门禁。
Endpoint
/api/v1/tools/analyze_contentParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Optional | - | 要抓取并分析的页面。script、style、nav、header 和 footer 会被剥离,随后分析 body 中剩余的文本。`url` 与 `content` 至少提供一个。 Example: https://example.com/blog/post |
content | string | Optional | - | 直接分析的文本,跳过抓取。仅在省略 `url` 时生效——两者都传时以抓取到的页面为准。 Example: The dashboard is a great upgrade... |
analyze_sentiment | boolean | Optional | false | 使用加权英文词典给情感打分。默认关闭;不请求时响应中不会出现 `sentiment` 对象。 Example: true |
extract_keywords | boolean | Optional | true | 返回长度超过三个字符、出现频率最高的十个词及其计数。 Example: true |
detect_language | boolean | Optional | true | 检测语言并返回 ISO 639-1 代码;文本过短或语言无法识别时返回 `und`。 Example: true |
analyze_readability | boolean | Optional | false | 计算 Flesch 易读度和一个粗略的年级水平。默认关闭;不请求时响应中不会出现 `readability` 对象。 Example: true |
timeout | number | Optional | 10000 | 抓取超时(毫秒),取值 1000 到 30000。仅在使用 `url` 时生效。 Example: 10000 |
respect_robots | boolean | Optional | true | 遵守目标站点的 robots.txt。保持 `true` 时,robots.txt 对 `CrawlForge` 禁止的路径会在抓取之前以 403 拒绝,且不扣除 credits。仅在你与目标站点另有约定时才设为 `false`——此时响应会带上一条 `warnings`,并且该覆盖会记录到你的 API key 上。 Example: true |
请求示例
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
}'响应示例
{ "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_length剥离 HTML 后被分析文本的字符数data.avg_sentence_length每句词数,四舍五入为整数data.languageISO 639-1 代码,或 `und`。仅当 `detect_language` 为 true(默认值)时出现data.keywords按原始频率排序、长度超过三个字符的前十个词。没有停用词表,因此 `that`、`with` 这类常见词也可能出现data.sentiment.score命中的词典权重之和除以词数的平方根,并限制在 -1..1 之间data.sentiment.label大于 0.05 为 `positive`,小于 -0.05 为 `negative`,否则为 `neutral`data.sentiment.positive_matches所有产生正向贡献的词,按出现顺序列出并保留重复——分值正是由它们构成的data.sentiment.method始终为 `lexicon`。不调用任何模型data.readability.flesch_scoreFlesch 易读度,限制在 0-100。数值越高越易读data.readability.grade_level`middle_school`、`high_school` 或 `college`,仅根据句子长度推导credits_used每次调用固定 3 credits,与文本长度无关错误处理
未提供 url 或 content(400 Bad Request)
VALIDATION_ERROR。两者至少要提供一个。url 格式错误或 timeout 超出 1000-30000 也返回同一状态码。
页面过大(413 Payload Too Large)
RESPONSE_TOO_LARGE。抓取到的响应体超过 25MB 读取上限,被直接拒绝而不是缓冲到内存。如果确实需要分析,请通过 content 自行传入文本。
目标站点超时(504 Gateway Timeout)
FETCH_TIMEOUT。页面在发送响应体的过程中停止响应。可以调高 timeout,最大 30000 毫秒。
抓取失败(502 Bad Gateway)
FETCH_FAILED。无法读取响应体——连接被重置,或响应体不是可解码的文本。
分析失败(500 Internal Server Error)
TOOL_ERROR。失败的调用不计费;只有分析成功后才会扣除 credits。
被 robots.txt 拦截(403 Forbidden)
目标站点的 robots.txt 对 CrawlForge 禁止了该路径。若你与目标站点另有约定,可设置 respect_robots: false 予以覆盖——该覆盖会记录到你的 API key 上。该覆盖不适用于列入 CrawlForge 永久排除名单的主机——无论 respect_robots 取何值,这类主机一律被拒绝。
data.sentiment 之前请先检查 data.language。credits 费用
包含内容:
语言检测(ISO 639-1,基于三元组)
前十位关键词频率
加权词典情感倾向,并附命中词
Flesch 易读度与年级水平
词数、句数与字符数
计划推荐:
Free 计划: 1,000 个一次性试用 credits = 333 次分析
Hobby 计划: 5,000 credits = 1,666 次分析($19/mo)
Professional 计划: 50,000 credits = 16,666 次分析($99/mo)