> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # 使用 Firecrawl 進行網頁抓取 Firecrawl 是一套網頁資料 API,可將網站轉換為乾淨的 markdown 或結構化 JSON。本指南將帶你把 Firecrawl 串接至 Mastra Tool,讓 Agent 與 Workflow 能視需要搜尋及抓取即時網頁資料。 ## 先決條件 - 已安裝 Node.js `v22.13.0` 或更新版本 - Firecrawl API 金鑰(可前往 取得) - 支援的 [Model Provider](https://mastra.zisheng.pro/zh-TW/models) 所提供的 API 金鑰 - 現有的 Mastra 專案(請依照[安裝指南](https://mastra.zisheng.pro/zh-TW/guides/getting-started/quickstart)設定新專案) ## 安裝 安裝 Firecrawl SDK: **npm**: ```bash npm install firecrawl ``` **pnpm**: ```bash pnpm add firecrawl ``` **Yarn**: ```bash yarn add firecrawl ``` **Bun**: ```bash bun add firecrawl ``` ## 設定環境變數 在專案根目錄建立 `.env` 檔案: ```bash FIRECRAWL_API_KEY=fc-your-api-key # Optional: FIRECRAWL_API_URL=http://localhost:3002 ``` ## 建立 Firecrawl Tool 建立一個 Tool 檔案,將 Firecrawl 的搜尋與抓取功能提供給 Mastra。 1. 建立 `src/mastra/tools/firecrawl.ts` 並設定 Firecrawl: ```ts import { 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 ?? '' } }, }) ``` 2. 在 `src/mastra/agents/web-agent.ts` 建立新的 Agent: ```ts import { 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 }, }) ``` 3. 在 `src/mastra/index.ts` 中,將新建立的 Agent 註冊至 Mastra 執行個體: ```ts import { Mastra } from '@mastra/core' import { webAgent } from './agents/web-agent' export const mastra = new Mastra({ agents: { webAgent }, }) ``` ## 在 Studio 中測試 啟動開發伺服器並開啟 [Studio](https://mastra.zisheng.pro/zh-TW/docs/studio/overview): ```bash mastra dev ``` 在 Studio 中開啟 **Web Agent**,並嘗試輸入: - 「尋找最新的 Mastra 變更記錄,並摘要最近一次發布的內容。」 - 「搜尋 Firecrawl 的定價,並擷取各方案層級。」 ## 自行託管 Firecrawl 若你在本機執行 Firecrawl,請設定 `FIRECRAWL_API_URL`,或在使用者端傳入 `apiUrl`: ```ts const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY!, apiUrl: process.env.FIRECRAWL_API_URL, }) ``` ## 相關資源 - [Firecrawl 文件](https://docs.firecrawl.dev)