Web scraping avec Firecrawl
Firecrawl est une API de données web qui transforme des sites en Markdown propre ou en JSON structuré. Dans ce guide, vous intégrerez Firecrawl à des Tools Mastra afin que vos agents et workflows puissent rechercher et extraire à la demande des données web actualisées.
PrérequisLien direct vers Prérequis
- Node.js
v22.13.0ou une version ultérieure installé - Une clé d'API Firecrawl, disponible sur https://firecrawl.dev
- Une clé d'API provenant d'un fournisseur de modèles pris en charge
- Un projet Mastra existant ; suivez le guide d'installation pour configurer un nouveau projet
InstallationLien direct vers Installation
Installez le SDK Firecrawl :
- npm
- pnpm
- Yarn
- Bun
npm install firecrawl
pnpm add firecrawl
yarn add firecrawl
bun add firecrawl
Configurer les variables d'environnementLien direct vers Configurer les variables d'environnement
Créez un fichier .env à la racine de votre projet :
FIRECRAWL_API_KEY=fc-your-api-key
# Optional: FIRECRAWL_API_URL=http://localhost:3002
Créer les Tools FirecrawlLien direct vers Créer les Tools Firecrawl
Créez un fichier de Tool qui rend les fonctionnalités de recherche et de scraping de Firecrawl accessibles à Mastra.
Créez
src/mastra/tools/firecrawl.tset configurez 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 ?? '' }},})Créez un nouvel Agent dans
src/mastra/agents/web-agent.ts: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 },})Enregistrez l'Agent que vous venez de créer dans
src/mastra/index.ts, sur votre instance Mastra :src/mastra/index.tsimport { Mastra } from '@mastra/core'import { webAgent } from './agents/web-agent'export const mastra = new Mastra({agents: { webAgent },})
Tester dans StudioLien direct vers Tester dans Studio
Lancez le serveur de développement et ouvrez Studio :
mastra dev
Dans Studio, ouvrez Web Agent et essayez les requêtes suivantes :
- « Trouve le dernier changelog de Mastra et résume la version la plus récente. »
- « Recherche les tarifs de Firecrawl et extrais les différents niveaux d'offre. »
Firecrawl auto-hébergéLien direct vers Firecrawl auto-hébergé
Si vous exécutez Firecrawl localement, définissez FIRECRAWL_API_URL ou transmettez apiUrl au client :
const firecrawl = new Firecrawl({
apiKey: process.env.FIRECRAWL_API_KEY!,
apiUrl: process.env.FIRECRAWL_API_URL,
})