En esta página
El Agents SDK de OpenAI ofrece un framework listo para producción para crear agentes de IA autónomos con uso de herramientas, traspasos (handoffs) y guardrails. CrawlForge aporta la pieza que falta: acceso web en vivo. Al conectar las 26 herramientas de scraping de CrawlForge a tus agentes de OpenAI, les permites buscar en la web, extraer datos estructurados, leer documentación y realizar investigación de múltiples fuentes, todo dentro del framework de orquestación del Agents SDK.
Esta guía te muestra cómo definir las herramientas de CrawlForge como funciones de agente de OpenAI y crear agentes que actúan sobre datos web en tiempo real.
Tabla de contenidos
- Requisitos previos
- Arquitectura: CrawlForge + agentes de OpenAI
- Paso 1: Crea las funciones de herramienta de CrawlForge
- Paso 2: Crea un agente de investigación web
- Paso 3: Añade extracción de datos estructurados
- Avanzado: pipeline web multiagente
- Desglose del coste en credits
- Buenas prácticas
- Siguientes pasos
Requisitos previos
pip install openai-agents
# or for the TypeScript/Node.js SDK:
npm install @openai/agents-sdk dotenv# .env
OPENAI_API_KEY=sk-xxxxx
CRAWLFORGE_API_KEY=cf_live_xxxxxConsigue tu API key de CrawlForge en crawlforge.dev/signup: incluye 1.000 credits gratis.
Arquitectura: CrawlForge + agentes de OpenAI
El Agents SDK de OpenAI usa un patrón de herramienta similar al de la API de function calling pero con una orquestación más rica. Defines las herramientas como funciones con parámetros en JSON Schema, y el agente decide cuándo y cómo invocarlas.
User Query -> OpenAI Agent -> Tool Selection -> CrawlForge API -> Results -> Agent Response
La REST API de CrawlForge en https://crawlforge.dev/api/v1/tools/ se corresponde de forma limpia con el formato de definición de herramientas del Agents SDK. Cada herramienta se convierte en una función que el agente puede invocar.
Paso 1: Crea las funciones de herramienta de CrawlForge
Primero, crea un cliente de CrawlForge reutilizable y las definiciones de herramientas:
// lib/crawlforge-tools.ts
import { tool } from '@openai/agents-sdk';
import { z } from 'zod';
const CRAWLFORGE_BASE = 'https://crawlforge.dev/api/v1/tools';
async function callCrawlForge(toolName: string, params: Record<string, unknown>) {
const response = await fetch(`${CRAWLFORGE_BASE}/${toolName}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CRAWLFORGE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(params),
});
if (!response.ok) {
throw new Error(`CrawlForge error: ${response.status} ${response.statusText}`);
}
return response.json();
}
// Search the web (5 credits)
export const searchWebTool = tool({
name: 'search_web',
description: 'Search Google and return top results with titles, URLs, and snippets.',
parameters: z.object({
query: z.string().describe('Search query'),
limit: z.number().default(5).describe('Max results to return'),
}),
execute: async ({ query, limit }) => {
return callCrawlForge('search_web', { query, limit });
},
});
// Extract page content (2 credits)
export const extractContentTool = tool({
name: 'extract_content',
description: 'Extract the main readable content from a web page URL.',
parameters: z.object({
url: z.string().url().describe('Full URL to extract content from'),
}),
execute: async ({ url }) => {
return callCrawlForge('extract_content', { url });
},
});
// Structured scraping (2 credits)
export const scrapeStructuredTool = tool({
name: 'scrape_structured',
description: 'Extract structured data from a web page using CSS selectors.',
parameters: z.object({
url: z.string().url().describe('URL to scrape'),
selectors: z.record(z.string()).describe('Map of field names to CSS selectors'),
}),
execute: async ({ url, selectors }) => {
return callCrawlForge('scrape_structured', { url, selectors });
},
});
// Fetch raw URL (1 credit)
export const fetchUrlTool = tool({
name: 'fetch_url',
description: 'Fetch raw HTML content from a URL. Cheapest option for simple retrieval.',
parameters: z.object({
url: z.string().url().describe('URL to fetch'),
}),
execute: async ({ url }) => {
return callCrawlForge('fetch_url', { url });
},
});Paso 2: Crea un agente de investigación web
Crea un agente que use las herramientas de CrawlForge para investigar temas:
// agents/researcher.ts
import { Agent, run } from '@openai/agents-sdk';
import {
searchWebTool,
extractContentTool,
scrapeStructuredTool,
} from '../lib/crawlforge-tools';
const researchAgent = new Agent({
name: 'Web Researcher',
model: 'gpt-4o',
instructions: `You are a thorough web researcher. When asked about a topic:
1. Search the web for relevant, recent sources
2. Read the top 2-3 results to gather comprehensive information
3. Synthesize findings into a clear, cited summary
4. Always mention the URLs you sourced data from
Use search_web to find sources, then extract_content to read them.
Prefer extract_content over fetch_url when you need readable text.`,
tools: [searchWebTool, extractContentTool, scrapeStructuredTool],
});
// Run the agent
async function research(topic: string) {
const result = await run(researchAgent, {
messages: [{ role: 'user', content: topic }],
});
console.log(result.finalOutput);
return result;
}
// Example usage
await research('What are the latest trends in web scraping regulation in 2026?');El agente hará de forma autónoma:
- Llamar a
search_webpara encontrar artículos relevantes (5 credits) - Llamar a
extract_contentsobre los mejores resultados (2 credits cada uno) - Sintetizar un resumen con citas
Paso 3: Añade extracción de datos estructurados
Crea un agente de extracción de datos que obtenga campos específicos de las páginas web:
// agents/extractor.ts
import { Agent, run } from '@openai/agents-sdk';
import { scrapeStructuredTool, fetchUrlTool } from '../lib/crawlforge-tools';
const extractorAgent = new Agent({
name: 'Data Extractor',
model: 'gpt-4o',
instructions: `You are a data extraction specialist. When given a URL and a data request:
1. Determine the best CSS selectors to extract the requested data
2. Use scrape_structured to pull the data
3. Return the results in clean JSON format
For simple JSON APIs, use fetch_url instead (it costs 1 credit vs 2).`,
tools: [scrapeStructuredTool, fetchUrlTool],
});
async function extractData(url: string, description: string) {
const result = await run(extractorAgent, {
messages: [{
role: 'user',
content: `Extract from ${url}: ${description}`,
}],
});
return result.finalOutput;
}
// Extract pricing data
await extractData(
'https://stripe.com/pricing',
'All plan names, prices, and key features'
);Avanzado: pipeline web multiagente
El Agents SDK admite traspasos (handoffs) entre agentes especializados. Crea un pipeline donde un investigador encuentra las fuentes y las traspasa a un analista:
// agents/pipeline.ts
import { Agent, run } from '@openai/agents-sdk';
import {
searchWebTool,
extractContentTool,
scrapeStructuredTool,
} from '../lib/crawlforge-tools';
const collectorAgent = new Agent({
name: 'Data Collector',
model: 'gpt-4o',
instructions: `You collect raw data from the web. Search for sources,
extract their content, and pass the raw data to the analyst.
Focus on gathering data, not analyzing it.`,
tools: [searchWebTool, extractContentTool, scrapeStructuredTool],
handoff_description: 'Collects raw web data for analysis',
});
const analystAgent = new Agent({
name: 'Data Analyst',
model: 'gpt-4o',
instructions: `You analyze data collected by the Data Collector.
Identify patterns, compare data points, and produce actionable insights.
Always structure your output with clear sections and data tables.`,
tools: [], // No web tools needed -- works with collected data
handoffs: [collectorAgent], // Can request more data if needed
});
const orchestrator = new Agent({
name: 'Research Orchestrator',
model: 'gpt-4o',
instructions: `You manage research projects. Delegate data collection to
the Data Collector and analysis to the Data Analyst. Ensure the final
output answers the user's question completely.`,
handoffs: [collectorAgent, analystAgent],
});
// Run the multi-agent pipeline
const result = await run(orchestrator, {
messages: [{
role: 'user',
content: 'Compare the pricing and features of the top 3 web scraping APIs in 2026',
}],
});
console.log(result.finalOutput);Este pipeline separa responsabilidades: el recolector reúne datos (usando credits de CrawlForge) y el analista los procesa (sin necesidad de credits). El coste total depende de las fuentes obtenidas: normalmente 15-25 credits para una comparativa de 3 fuentes.
Desglose del coste en credits
| Flujo de trabajo del agente | Herramientas usadas | Credits estimados |
|---|---|---|
| Búsqueda única + resumen | search_web + extract_content | 7 |
| Investigación de 3 fuentes | search_web + 3x extract_content | 11 |
| Extracción estructurada (1 página) | scrape_structured | 2 |
| Comparativa multiagente (3 fuentes) | search_web + 3x extract_content + scrape_structured | 15 |
| Informe de investigación profunda | deep_research | 10 |
El plan Free de CrawlForge (1.000 credits) admite aproximadamente 90 flujos de búsqueda y extracción al mes. El plan Professional ($99/mes, 50.000 credits) gestiona cargas de trabajo de agentes en producción.
Buenas prácticas
Elige primero la herramienta más barata. Las instrucciones del agente deberían guiarlo hacia fetch_url (1 credit) cuando el HTML completo sea aceptable, y extract_content (2 credits) solo cuando se necesite texto limpio. Reserva deep_research (10 credits) para consultas complejas de múltiples fuentes.
Limita los pasos del agente. Establece un número máximo de invocaciones de herramientas para controlar los costes. La mayoría de las tareas de investigación se completan en 3-5 llamadas a herramientas.
Usa traspasos para pipelines complejos. En lugar de un único agente con muchas herramientas, reparte responsabilidades. El agente recolector se encarga del acceso web (credits), mientras que el agente analista procesa los datos (sin credits).
Cachea las salidas de las herramientas. Si tu agente accede repetidamente a la misma URL, implementa caché de respuestas para evitar cargos de credits duplicados.
Monitoriza el uso. Revisa tu consumo de credits en el panel de CrawlForge y configura alertas ante picos inesperados.
Siguientes pasos
Ahora tienes agentes de OpenAI capaces de acceder a datos web en vivo. Sigue construyendo:
- Resumen de las 26 herramientas de CrawlForge: registra más herramientas para tus agentes
- Scraping en modo sigiloso: accede a sitios con protección anti-bot
- Automatización de investigación profunda: usa la herramienta deep_research de 10 credits para informes exhaustivos
- Inicio rápido de CrawlForge: guía completa de configuración de MCP
Dale a tus agentes de OpenAI ojos en la web. Empieza gratis con 1.000 credits: no se requiere tarjeta de crédito.
Pruébalo tú mismo — sin necesidad de registrarte
Ejecuta cualquiera de las 27 herramientas de scraping y extracción de CrawlForge en el playground y luego empieza gratis con 1,000 credits.
1,000 credits gratis • Se recargan cada mes • No se requiere tarjeta de crédito
Etiquetas
Sobre el autor
Mantente al día con los últimos artículos
Recibe tutoriales, novedades del producto y consejos de web scraping en tu bandeja de entrada.
Sin spam. Cancela tu suscripción cuando quieras.