> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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érequis - Node.js `v22.13.0` ou une version ultérieure installé - Une clé d'API Firecrawl, disponible sur - Une clé d'API provenant d'un [fournisseur de modèles](https://mastra.zisheng.pro/fr/models) pris en charge - Un projet Mastra existant ; suivez le [guide d'installation](https://mastra.zisheng.pro/fr/guides/getting-started/quickstart) pour configurer un nouveau projet ## Installation Installez le SDK Firecrawl : **npm**: ```bash npm install firecrawl ``` **pnpm**: ```bash pnpm add firecrawl ``` **Yarn**: ```bash yarn add firecrawl ``` **Bun**: ```bash bun add firecrawl ``` ## Configurer les variables d'environnement Créez un fichier `.env` à la racine de votre projet : ```bash FIRECRAWL_API_KEY=fc-your-api-key # Optional: FIRECRAWL_API_URL=http://localhost:3002 ``` ## 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. 1. Créez `src/mastra/tools/firecrawl.ts` et configurez 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. Créez un nouvel Agent dans `src/mastra/agents/web-agent.ts` : ```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. Enregistrez l'Agent que vous venez de créer dans `src/mastra/index.ts`, sur votre instance Mastra : ```ts import { Mastra } from '@mastra/core' import { webAgent } from './agents/web-agent' export const mastra = new Mastra({ agents: { webAgent }, }) ``` ## Tester dans Studio Lancez le serveur de développement et ouvrez [Studio](https://mastra.zisheng.pro/fr/docs/studio/overview) : ```bash 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é Si vous exécutez Firecrawl localement, définissez `FIRECRAWL_API_URL` ou transmettez `apiUrl` au client : ```ts const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY!, apiUrl: process.env.FIRECRAWL_API_URL, }) ``` ## Ressources associées - [Documentation de Firecrawl](https://docs.firecrawl.dev)