使用 Firecrawl 擷取網頁資料
Firecrawl 是一個網絡資料 API,可將網站轉換成整潔的 Markdown 或結構化 JSON。在本指南中,你會將 Firecrawl 接入 Mastra Tool,讓 Agent 及 Workflow 可以按需要搜尋及擷取即時網絡資料。
先決條件先決條件 的直接連結
- 已安裝 Node.js
v22.13.0或更新版本 - Firecrawl API 金鑰(可於 https://firecrawl.dev 取得)
- 受支援的模型 Provider 所提供的 API 金鑰
- 現有的 Mastra 項目(按照安裝指南設定新項目)
安裝安裝 的直接連結
安裝 Firecrawl SDK:
- npm
- pnpm
- Yarn
- Bun
npm install firecrawl
pnpm add firecrawl
yarn add firecrawl
bun add firecrawl
設定環境變數設定環境變數 的直接連結
在項目根目錄建立 .env 檔案:
.env
FIRECRAWL_API_KEY=fc-your-api-key
# Optional: FIRECRAWL_API_URL=http://localhost:3002
建立 Firecrawl Tool建立 Firecrawl Tool 的直接連結
建立一個 Tool 檔案,讓 Mastra 可以使用 Firecrawl 的搜尋及擷取功能。
建立
src/mastra/tools/firecrawl.ts並設定 Firecrawl:src/mastra/tools/firecrawl.tsimport { Firecrawl } from 'firecrawl'import { createTool } from '@mastra/core/tools'import { z } from 'zod'const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY! })export const firecrawlSearch = createTool({id: 'firecrawl-search',description: 'Search the web and return top results.',inputSchema: z.object({ query: z.string().min(1) }),outputSchema: z.object({results: z.array(z.object({title: z.string().nullable(),url: z.string(),}),),}),execute: async ({ query }) => {const results = await firecrawl.search(query, { limit: 3 })return {results: (results.web ?? []).map(item => ({title: item.title ?? null,url: item.url,})),}},})export const firecrawlScrape = createTool({id: 'firecrawl-scrape',description: 'Scrape a URL and return markdown content.',inputSchema: z.object({ url: z.string().url() }),outputSchema: z.object({ markdown: z.string() }),execute: async ({ url }) => {const result = await firecrawl.scrape(url, {formats: ['markdown'],onlyMainContent: true,})return { markdown: result.markdown ?? '' }},})在
src/mastra/agents/web-agent.ts建立新 Agent:src/mastra/agents/web-agent.tsimport { Agent } from '@mastra/core/agent'import { firecrawlSearch, firecrawlScrape } from '../tools/firecrawl'export const webAgent = new Agent({id: 'web-agent',name: 'Web Agent',instructions: 'Use Firecrawl tools to search and scrape web pages, then summarize the results.',model: 'openai/gpt-5.6-sol',tools: { firecrawlSearch, firecrawlScrape },})在
src/mastra/index.ts的 Mastra 執行個體中註冊新建立的 Agent:src/mastra/index.tsimport { Mastra } from '@mastra/core'import { webAgent } from './agents/web-agent'export const mastra = new Mastra({agents: { webAgent },})
在 Studio 中測試在 Studio 中測試 的直接連結
執行開發伺服器並開啟 Studio:
mastra dev
在 Studio 中開啟 Web Agent,然後嘗試:
- 「尋找最新的 Mastra 變更記錄,並總結上一個版本。」
- 「搜尋 Firecrawl 的定價,並抽取各個方案級別。」
自行託管 Firecrawl自行託管 Firecrawl 的直接連結
如果你在本機執行 Firecrawl,請設定 FIRECRAWL_API_URL,或在客戶端傳入 apiUrl:
src/mastra/tools/firecrawl.ts
const firecrawl = new Firecrawl({
apiKey: process.env.FIRECRAWL_API_KEY!,
apiUrl: process.env.FIRECRAWL_API_URL,
})