mcpField
O
octen-extract

octen-extract

github.com/octen-team数据与数据库1065 次安装4 周前更新
代码仓库

关于 octen-extract

Octen Extract 是 URL 提取技能,可生成适用于大模型的清理后网页内容、元数据和可选的查询重点摘要。它支持批量请求,并可按普通、复杂或混合站点选择模式;使用时需要 API 密钥。

主要功能

  1. 01批量提取最多 20 个 URL
  2. 02输出 Markdown 或纯文本
  3. 03提取查询相关重点
  4. 04标准、高级和自动模式
  5. 05可选提取链接与媒体
  6. 06页面类别和结构元数据

适用场景

  1. 01准备供大模型 grounding 使用的网页内容
  2. 02按研究查询提取重点摘要
  3. 03处理普通与复杂站点混合的批次
  4. 04查找页面链接和媒体 URL

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/octen-team/octen-skills --skill octen-extract

安装后在 Claude Code 中输入/octen-extract确认已加载。

附带文件agents/openai.yaml

详细介绍

Octen Extract

将一个或多个 URL 转换为整洁、适合大模型使用的内容。除页面正文外,每个结果还包含一个类别、一个页面结构标签,以及——传入 query 时——与查询相关的重点内容,而非完整页面。

需要 API Key:前往 https://octen.ai 获取 · 设置方式:export OCTEN_API_KEY=your-api-key

API Key 设置

提取内容前,请确保已设置 OCTEN_API_KEY。遇到 401 时,请停止操作并告知用户需要密钥(https://octen.ai),协助其完成配置后再继续。 为相关 Agent 配置密钥(与其他 Octen 技能相同):

  • Claude Code — 将 { "env": { "OCTEN_API_KEY": "your-key" } } 添加到 ~/.claude/settings.json
  • Cursor / 通用 shell — 在 ~/.zshrc 或 ~/.bashrc 中执行 export OCTEN_API_KEY="your-key"
  • Codex — 在 ~/.codex/config.toml 的 [shell_environment_policy] 中设置 set = { OCTEN_API_KEY = "your-key" }
  • OpenClaw — 将 OCTEN_API_KEY=your-key 添加到 ~/.openclaw/.env

端点

POST https://api.octen.ai/extract

身份验证:X-Api-Key: <API_KEY> 请求头 · Content-Type:application/json

快速开始(cURL)

批量提取(完整内容)
curl -s -X POST "https://api.octen.ai/extract" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "urls": ["https://example.com", "https://octen.ai"],
    "format": "markdown"
  }'
基于查询的重点内容(而非完整内容)
curl -s -X POST "https://api.octen.ai/extract" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "urls": ["https://en.wikipedia.org/wiki/Python_(programming_language)"],
    "query": "async programming"
  }'
难处理的网站(高级模式)
curl -s -X POST "https://api.octen.ai/extract" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "urls": ["https://www.reddit.com/r/LocalLLaMA/"],
    "mode": "advanced",
    "timeout": 60
  }'
混合批次,难度未知(自动模式)
curl -s -X POST "https://api.octen.ai/extract" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "urls": ["https://example.com", "https://octen.ai", "https://news.ycombinator.com/item?id=1"],
    "mode": "auto",
    "timeout": 60
  }'
页面链接(优先列出外部引用)
curl -s -X POST "https://api.octen.ai/extract" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "urls": ["https://octen.ai"],
    "include_links": {"scope": "prefer_external", "max_links": 50}
  }'

参数

参数类型必填默认值说明
urlsstring[]是-一次批量获取 1–20 个 URL
modestring否standard(省略时)standard、advanced 或 auto — 参见选择模式
querystring否-设置后,每个结果会返回与查询相关的 highlights,并省略 full_content(最多 500 个字符)
max_age_secondsinteger否86400接受此时间范围内的缓存结果(最短 300);更早的缓存版本会重新获取
formatstring否markdown内容格式:markdown 或 text
timeoutinteger否30每个 URL 的获取时限,单位为秒(1–60)
include_imagesboolean否false包含页面中找到的图像资源(如果页面有封面图,也会返回 cover_image)
include_videosboolean否false包含页面中找到的视频 URL
include_audioboolean否false包含页面中找到的音频 URL
include_linksobject否-用于发现网站页面或跟进外部引用。返回页面的链接:{scope, max_links}。scope:prefer_internal(默认;优先同一网站的链接)或 prefer_external(优先其他已注册域名);各组内保持页面原有顺序。max_links:1–1000(默认 200;超出范围会返回 400,不会截断)。{} 使用这两个默认值

选择模式

由你选择模式;省略时默认为 standard。

  • standard(默认):速度最快、成本最低。适用于没有反爬保护的普通、结构良好的页面,如新闻、博客、文档、产品页面和静态网站。对于有登录墙、严重依赖 JS 或有反爬保护的网站,它可能返回空内容或仅返回页面骨架,但仍会报告 status: "success"。
  • advanced:成功率最高——在真实浏览器中渲染,并采用更强的反爬处理;速度较慢,价格是 2.5 倍。适用于已知的难抓取网站:有反爬/WAF 保护的网站、严重依赖 JS 的 SPA、社交网站(Reddit、X、LinkedIn)、学术网站(ResearchGate)以及动态加载内容的网站。
  • auto:针对每个 URL 自行选择——能用 standard 满足需求时使用 standard,仅对难抓取的 URL 使用 advanced;每个 URL 按实际使用的模式计费。当一批 URL 中难抓取的 URL 不易判断时使用。如果大多数 URL 都很难抓取,成本会接近全部使用 advanced。
场景mode
新闻/博客/文档/产品页面(普通网站)standard(或省略)
已知的难抓取网站(Reddit/X/LinkedIn/ResearchGate/反爬网站/SPA)advanced
混合批次,不确定哪些网站难抓取auto
对成本敏感,以普通网站为主standard
优先考虑质量,以难抓取网站为主advanced

经验法则:全是普通网站 → standard(或省略);已知的难抓取网站 → advanced;混合情况或不确定 → auto。

恢复处理:如果 standard 结果失败,或返回空内容/页面骨架(page_structure.primary 为 "No Main Content",或本应有正文的页面仅返回非常短的内容),则仅对这些 URL 使用 "mode": "advanced" 重试。

超时:advanced 和 auto 速度较慢——请调高 timeout(例如 60)。

响应格式

字段类型说明
request_idstring唯一请求标识符
data.results[]array每个 URL 对应一个结果
data.results[].urlstringURL
data.results[].statusstringsuccess 或 failed
data.results[].resolved_modestring?standard 或 advanced——此 URL 实际使用的模式。成功时存在,失败时缺省。可能与请求的模式不同(auto 会针对每个 URL 选择模式;advanced 可能最终使用 standard)
data.results[].error_messagestring?失败原因(当 status = failed 时)
data.results[].titlestring?页面标题
data.results[].full_contentstring?清理后的页面内容(未设置 query 时)
data.results[].highlightsstring[]?与查询相关的片段(设置 query 时)
data.results[].categoryobject?{primary, secondary}——页面主题
data.results[].page_structureobject?{primary, secondary}——页面类型
data.results[].time_publishedstring?发布时间,ISO 8601 格式
data.results[].time_last_crawledstring?上次抓取时间,ISO 8601 格式
data.results[].faviconstring?页面 favicon URL——有可用值时默认返回
data.results[].cover_imageobject?{url}——页面封面图片(include_images 为 true 且页面有封面图片时)
data.results[].images / videos / audioobject[]?[{url}]——页面中的媒体(对应的 include_* 为 true 时)
data.results[].linksobject[]?[{url, anchor_text, is_external}]——页面链接(成功时,设置 include_links 且找到链接时)
meta.usage.total_urlsinteger请求的 URL 数量
meta.usage.successful_urlsinteger成功获取的 URL 数量
meta.usage.successful_by_modeobject{standard_urls, advanced_urls}——各模式下成功获取的 URL 数量。实际计费以这些计数为准,而非汇总 resolved_mode
meta.warningstring例如 "1 URL(s) failed and were not billed";无内容需要报告时为空字符串

meta 位于顶层(与 data 同级),而非 data.meta。

错误代码

HTTP 状态描述
400参数缺失或无效
401API 密钥无效或缺失
403余额不足
429请求过多,已触发速率限制
500服务器内部错误

注意事项

  • 部分成功是首要设计原则:失败的 URL 会以 status: "failed" 和 error_message 返回;同一批次中的其他 URL 仍会成功。请务必检查每个结果的 status。
  • 仅在需要用于 RAG/grounding 的聚焦 highlights 时传入 query;省略它即可获取完整的清理后页面。
  • 定价:standard 为每 1K 个成功 URL 收费 $1,advanced 为每 1K 个成功 URL 收费 $2.5。失败的 URL 不收费。
  • category 和 page_structure 可用于路由或筛选页面(例如,跳过索引/操作页面,保留内容页面),无需读取整个正文。

评论

支持 Markdown