Saltar al contenido principal
Integra Firecrawl con Gemini de Google para aplicaciones de IA impulsadas por datos de la web.

Configuración

npm install @mendable/firecrawl-js @google/genai
Crea el archivo .env:
FIRECRAWL_API_KEY=tu_clave_firecrawl
GEMINI_API_KEY=tu_clave_gemini
Nota: Si usas Node < 20, instala dotenv y añade import 'dotenv/config' a tu código.

Extraer + resumir

Este ejemplo muestra un flujo de trabajo sencillo: extraer un sitio web y resumir su contenido con Gemini.
import FirecrawlApp from '@mendable/firecrawl-js';
import { GoogleGenAI } from '@google/genai';

const firecrawl = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const scrapeResult = await firecrawl.scrape('https://firecrawl.dev', {
    formats: ['markdown']
});

console.log('Longitud del contenido extraído:', scrapeResult.markdown?.length);

const response = await ai.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: `Resumir: ${scrapeResult.markdown}`,
});

console.log('Resumen:', response.text);

Análisis de contenido

Este ejemplo muestra cómo analizar el contenido de un sitio web utilizando las capacidades de conversación multi-turno de Gemini.
import FirecrawlApp from '@mendable/firecrawl-js';
import { GoogleGenAI } from '@google/genai';

const firecrawl = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const scrapeResult = await firecrawl.scrape('https://news.ycombinator.com/', {
    formats: ['markdown']
});

console.log('Longitud del contenido extraído:', scrapeResult.markdown?.length);

const chat = ai.chats.create({
    model: 'gemini-2.5-flash'
});

// Solicitar las 3 historias principales de Hacker News
const result1 = await chat.sendMessage({
    message: `Basándote en este contenido del sitio web de Hacker News, ¿cuáles son las 3 historias principales en este momento?\n\n${scrapeResult.markdown}`
});
console.log('3 Historias Principales:', result1.text);

// Solicitar las historias 4ª y 5ª de Hacker News
const result2 = await chat.sendMessage({
    message: `Ahora, ¿cuáles son las historias 4ª y 5ª principales de Hacker News del mismo contenido?`
});
console.log('Historias 4ª y 5ª:', result2.text);

Extracción estructurada

Este ejemplo muestra cómo extraer datos estructurados en modo JSON de Gemini a partir de contenido de sitios web rastreado.
import FirecrawlApp from '@mendable/firecrawl-js';
import { GoogleGenAI, Type } from '@google/genai';

const firecrawl = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const scrapeResult = await firecrawl.scrape('https://stripe.com', {
    formats: ['markdown']
});

console.log('Longitud del contenido scrapeado:', scrapeResult.markdown?.length);

const response = await ai.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: `Extraer información de la empresa: ${scrapeResult.markdown}`,
    config: {
        responseMimeType: 'application/json',
        responseSchema: {
            type: Type.OBJECT,
            properties: {
                name: { type: Type.STRING },
                industry: { type: Type.STRING },
                description: { type: Type.STRING },
                products: {
                    type: Type.ARRAY,
                    items: { type: Type.STRING }
                }
            },
            propertyOrdering: ['name', 'industry', 'description', 'products']
        }
    }
});

console.log('Información de empresa extraída:', response?.text);
Para ver más ejemplos, consulta la documentación de Gemini.