Skip to content

WARNING

本页面内容经 AI 翻译生成,仅供参考。具体细节请以英文原文为准。

使用 Firecrawl 作为网页加载器

Firecrawl 是一个无头网页数据服务,可将网页转换为干净的 Markdown、结构化 JSON、摘要和元数据。在 Olares 上,Open WebUI 等应用可以使用 Firecrawl 在找到搜索结果后加载完整的网页内容。

你也可以直接调用 Firecrawl API 来测试抓取和爬取功能。

安装 Firecrawl

  1. 打开 Market,搜索 "Firecrawl"。

    Firecrawl

  2. 点击 获取,然后点击 安装,等待安装完成。

在其他应用中使用 Firecrawl

Firecrawl 通常在后台运行。其他应用在需要获取和清理网页内容时,通过其端点 URL 调用它。

获取 Firecrawl 端点

应用端点(endpoint)如何工作

当客户端连接另一个 Olares 应用时,会使用该应用的端点作为网络地址。如果应用提供多个端点,请选择与客户端所需功能或协议相匹配的端点。

对于 Firecrawl:

  1. 前往 Olares Settings > Applications > Firecrawl > Entrances
  2. 选择 Firecrawl,然后复制 Endpoint URL。

该 Endpoint 是 Firecrawl 服务的基础地址。API 客户端会在其后添加 /v2/scrape/v2/crawl 等路径。

配置 Open WebUI

要在 Open WebUI 中使用 Firecrawl,首先将 Open WebUI 连接到模型并配置网络搜索。Open WebUI 网络搜索指南使用 SearXNG 作为示例。然后按以下步骤手动配置 Firecrawl 作为网页加载器。

GPU 资源

如果 Open WebUI 运行缓慢或无法返回结果,你的模型可能没有足够的 GPU 资源。停止不使用的但仍占用 GPU 资源的应用,然后重试。

  1. 打开 Open WebUI 应用。

  2. 点击左下角的 profile icon,然后选择 Admin Panel

  3. 前往 Settings > Web Search

  4. 在加载器设置中,将 Web Loader Engine 设为 firecrawl

  5. Firecrawl API URL 中,输入你从 Settings 复制的 Firecrawl 端点。

  6. 对于 Firecrawl API Key,输入任意非空值,例如 fc-test

    Firecrawl 加载器

  7. 点击 Save 保存设置。

确保 Bypass Web Loader 已禁用。

使用 API 测试 Firecrawl

本节是可选的。当你想确认 Firecrawl 是否可以直接抓取或爬取页面时使用。

了解 Bull Dashboard

从 Launchpad 打开 Firecrawl。你将看到一个 Bull Dashboard 页面,其中包含内部队列卡片,例如 generateLlmsTxtQueuedeepResearchQueuebillingQueueprecrawlQueue。队列名称可能因 Firecrawl 构建版本而异。

Firecrawl 工作器状态

此仪表板用于内部队列调试。正常的抓取或爬取请求可能不会出现在这里,或者完成得太快而注意不到。如果所有卡片都保持为 0 Jobs,请检查 API 响应或爬取状态 URL。

对于首次测试,你只需要两个 API 操作:

操作端点使用场景
Scrape/v2/scrape从单个特定页面提取内容。
Crawl/v2/crawl从一个 URL 开始,让 Firecrawl 从中发现页面。

以下示例使用浏览器控制台,以便请求可以使用你当前的 Olares 登录会话。

Olares 端点认证

对于 Olares 托管的 Firecrawl,请使用已登录浏览器中的 credentials: "include",而不是 Authorization 请求头。

打开浏览器控制台

  1. 从 Launchpad 打开 Firecrawl。
  2. 在同一浏览器中,打开浏览器开发者工具。
  3. 前往 Console 标签页。
  4. 粘贴以下示例之一,然后按 Enter

TIP

如果你的浏览器阻止在控制台中粘贴代码,请按照浏览器提示允许粘贴。只粘贴你理解并信任的代码。

抓取单个页面

当你想要单个页面的内容时,使用 scrape。

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    formats: ["markdown"]
  })
});

const data = await response.json();
console.log(data);

如果请求成功,响应将包含 data.markdown。这是清理后的页面文本。响应还包含 data.metadata,例如页面标题、来源 URL、语言和 HTTP 状态码。

爬取页面或网站

当你希望 Firecrawl 从起始页面跟踪链接时,使用 crawl。开始时使用较小的 limit,以便结果易于检查。

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/crawl`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    limit: 1
  })
});

const data = await response.json();
console.log(data);

成功的请求返回一个作业 ID 和一个状态 URL:

json
{
  "success": true,
  "id": "019e6988-6e26-7407-b7a4-8045a8d12269",
  "url": "<your-firecrawl-endpoint>/v2/crawl/<job-id>"
}

url 字段是爬取状态 URL。在浏览器中打开它以检查爬取是否已完成。

读取爬取结果

字段含义
status当前作业状态,例如 scrapingcompletedfailed
data爬取页面列表。每个项目通常包含页面内容和元数据。
markdown清理后的页面内容。这是你通常发送给 AI 应用的主要文本。
metadata页面信息,例如标题、来源 URL、语言和 HTTP 状态码。

从 limit 开始

大型网站可能产生数百或数千个页面。测试时保持 "limit": 1"limit": 10,确认结果有用后再增加。

高级:生成摘要或结构化 JSON

Firecrawl 可以使用配置的 LLM 来总结页面或返回结构化 JSON。

JSON 和摘要输出需要 LLM 提供商

结构化 JSON 和摘要输出需要配置的 LLM 提供商。基于本地 Ollama 的 LLM 提取可能会失败,并显示 Failed to parse URL from /responses。如果发生这种情况,请使用常规 markdown 输出,或尝试 OpenAI 兼容的提供商。

配置模型访问

本示例通过 OpenAI 兼容 API 使用 Qwen3.6-27B (llama.cpp)。从 Market 安装该模型,并等待模型就绪。

模型连接的工作原理

Olares 上的独立模型作为与客户端应用分开的服务运行。要连接两者,客户端需要准确的 Model name,以及与其所需 API 格式相匹配的 Base URL

你可以从模型控制台获取这两个值。有关更多信息,可参阅连接 AI 应用

对于 Qwen3.6-27B (llama.cpp),使用 OpenAI-Compatible API 格式:

  1. 从启动台打开模型应用。其模型控制台会自动打开。

  2. 等待模型显示就绪,且引擎显示运行中

    Qwen3.6-27B 模型控制台

  3. 模型部分,按显示内容原样复制模型名称

  4. 引擎部分:

    a. 连接来源:选择 Olares 内应用

    b. API 格式:选择 OpenAI-Compatible

    c.按显示内容原样复制 Base URL 地址。

配置 Firecrawl:

  1. 前往 Olares Settings > Applications > Firecrawl > Environment variables

  2. 配置以下参数:

    变量描述
    OPENAI_API_KEY输入任意非空值,例如 olares
    OPENAI_BASE_URL输入 Qwen3.6-27B Model Console 中显示的 Base URL。
    MODEL_NAME输入 Qwen3.6-27B Model Console 中显示的准确 Model name。
  3. 点击 Apply

  4. 打开 Control Hub,在 Browse 下选择你的 Firecrawl 项目,然后重启 workernuq-workerfirecrawl 部署以应用环境变量。

返回结构化 JSON

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    formats: [
      {
        type: "json",
        prompt: "Read the page carefully and answer: what is Olares in one sentence, and list 3 main features.",
        schema: {
          type: "object",
          properties: {
            one_liner: { type: "string" },
            features: { type: "array", items: { type: "string" } }
          },
          required: ["one_liner", "features"]
        }
      }
    ]
  })
});

const data = await response.json();
console.log(data.data.json);
响应字段含义
data.json结构化 JSON 输出已成功生成。
data.metadata页面已获取,但结构化 JSON 输出未生成。
errorFirecrawl 返回错误。请阅读错误消息了解详情。

返回摘要

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/zh/manual/overview.html",
    formats: ["markdown", "summary"]
  })
});

const data = await response.json();
console.log(data.data.summary);
console.log("markdown length:", data.data.markdown?.length);

FAQs

为什么 Bull Dashboard 显示 0 Jobs?

队列名称和可见作业可能因 Firecrawl 版本和 Olares 应用构建而异。请检查 API 响应或爬取状态 URL。

为什么爬取结果为空或不完整?

某些网站会阻止自动爬虫、需要登录,或通过复杂的浏览器交互加载内容。首先尝试较小的公共 URL,保持较低的爬取限制,并检查响应元数据中的错误。

了解更多