CrawlForge
Laman UtamaPlaygroundKes PenggunaanIntegrasiHargaDokumentasiBlog
Cara Menggunakan CrawlForge dengan Ejen AI Mastra
Tutorials
Kembali ke Blog
Tutorial

Cara Menggunakan CrawlForge dengan Ejen AI Mastra

C
CrawlForge Team
Pasukan Kejuruteraan
21 April 2026
7 min bacaan

Pada halaman ini

Mastra ialah rangka kerja ejen AI yang mengutamakan TypeScript, direka untuk membina aplikasi AI yang sedia pengeluaran. CrawlForge memberi ejen tersebut keupayaan untuk fetch, ekstrak, dan menganalisis data web langsung. Bersama-sama, ia membolehkan anda membina ejen yang boleh menyelidik topik, memantau pesaing, dan mengekstrak data berstruktur daripada mana-mana laman web.

Panduan ini menunjukkan kepada anda cara menyambungkan tools CrawlForge ke dalam ejen Mastra dengan contoh TypeScript yang berfungsi.

Jadual Kandungan

  • Apakah Itu Mastra?
  • Prasyarat
  • Langkah 1: Sediakan Projek Mastra Anda
  • Langkah 2: Cipta Takrifan Tool CrawlForge
  • Langkah 3: Bina Ejen Penyelidikan Web
  • Langkah 4: Bina Aliran Kerja Pengekstrakan Data
  • Langkah 5: Tambah Pengendalian Ralat dan Cubaan Semula
  • Rujukan Kos Credit
  • Gambaran Keseluruhan Seni Bina
  • Langkah Seterusnya

Apakah Itu Mastra?

Mastra ialah rangka kerja TypeScript moden untuk aplikasi dan ejen berkuasa AI. Ia menyediakan primitif untuk penciptaan ejen, integrasi tool, aliran kerja, dan ingatan -- semuanya dengan keselamatan jenis yang penuh. Anggap ia sebagai Express.js untuk ejen AI: minimum, boleh dikarang, dan berorientasikan pengeluaran.

Ejen Mastra boleh menggunakan tools luaran melalui antara muka tool yang diseragamkan. Tools CrawlForge dipetakan terus ke antara muka ini, memberi ejen anda 20 keupayaan web scraping tanpa menulis kod klien HTTP.

Prasyarat

  • Node.js 18+ dan TypeScript 5+
  • Sebuah akaun CrawlForge dengan API key (1,000 credits percuma)
  • Kebiasaan asas dengan TypeScript dan async/await

Langkah 1: Sediakan Projek Mastra Anda

Cipta projek Mastra baharu dan pasang kebergantungan:

Bash
npm create mastra@latest my-web-agent
cd my-web-agent

# Install additional dependencies
npm install dotenv node-fetch

Tambah API key CrawlForge anda ke .env:

Bash
CRAWLFORGE_API_KEY=cf_live_your_key_here
ANTHROPIC_API_KEY=sk-ant-your_key_here

Langkah 2: Cipta Takrifan Tool CrawlForge

Cipta fail tools yang membungkus API CrawlForge sebagai tools yang serasi dengan Mastra:

Typescript
// src/tools/crawlforge.ts
import { createTool } from '@mastra/core';
import { z } from 'zod';

const CRAWLFORGE_BASE = 'https://crawlforge.dev/api/v1/tools';

async function callCrawlForge(tool: string, params: Record<string, unknown>) {
  const response = await fetch(`${CRAWLFORGE_BASE}/${tool}`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.CRAWLFORGE_API_KEY}`,
    },
    body: JSON.stringify(params),
  });

  if (!response.ok) {
    throw new Error(`CrawlForge ${tool} failed: ${response.status}`);
  }

  return response.json();
}

// Extract clean content from a URL (2 credits)
export const extractContent = createTool({
  id: 'crawlforge-extract-content',
  description: 'Extract clean, readable content from any web page. Costs 2 credits.',
  inputSchema: z.object({
    url: z.string().url().describe('The URL to extract content from'),
  }),
  execute: async ({ context }) => {
    return callCrawlForge('extract_content', { url: context.url });
  },
});

// Search the web (5 credits)
export const searchWeb = createTool({
  id: 'crawlforge-search-web',
  description: 'Search the web using Google. Returns titles, URLs, and snippets. Costs 5 credits.',
  inputSchema: z.object({
    query: z.string().describe('Search query string'),
    limit: z.number().optional().default(10).describe('Max results to return'),
  }),
  execute: async ({ context }) => {
    return callCrawlForge('search_web', {
      query: context.query,
      limit: context.limit,
    });
  },
});

// Fetch raw HTML (1 credit)
export const fetchUrl = createTool({
  id: 'crawlforge-fetch-url',
  description: 'Fetch raw HTML content from a URL. Cheapest option at 1 credit.',
  inputSchema: z.object({
    url: z.string().url().describe('The URL to fetch'),
  }),
  execute: async ({ context }) => {
    return callCrawlForge('fetch_url', { url: context.url });
  },
});

// Extract structured data with CSS selectors (2 credits)
export const scrapeStructured = createTool({
  id: 'crawlforge-scrape-structured',
  description: 'Extract data using CSS selectors. Costs 2 credits.',
  inputSchema: z.object({
    url: z.string().url().describe('The URL to scrape'),
    selectors: z.record(z.string()).describe('CSS selectors mapping field names to selectors'),
  }),
  execute: async ({ context }) => {
    return callCrawlForge('scrape_structured', {
      url: context.url,
      selectors: context.selectors,
    });
  },
});

Langkah 3: Bina Ejen Penyelidikan Web

Cipta ejen yang boleh mencari di web dan mengekstrak kandungan untuk tugas penyelidikan:

Typescript
// src/agents/researcher.ts
import { Agent } from '@mastra/core';
import { searchWeb, extractContent, fetchUrl } from '../tools/crawlforge';

export const researcherAgent = new Agent({
  name: 'Web Researcher',
  instructions: `You are a web research agent. When asked to research a topic:
    1. Use search_web to find relevant pages (5 credits)
    2. Use extract_content on the top 2-3 results (2 credits each)
    3. Synthesize findings into a structured summary

    Always report the total credits used.
    Prefer fetch_url (1 credit) over extract_content (2 credits) when you only need raw HTML.
    Never use search_web if the user provides a specific URL.`,
  model: {
    provider: 'ANTHROPIC',
    name: 'claude-sonnet-4-20250514',
  },
  tools: {
    searchWeb,
    extractContent,
    fetchUrl,
  },
});

Jalankan ejen:

Typescript
// src/index.ts
import { researcherAgent } from './agents/researcher';

async function main() {
  const result = await researcherAgent.generate(
    'Research the current state of MCP protocol adoption. ' +
    'Which companies are using it and for what use cases?'
  );

  console.log(result.text);
  // Output: Structured research summary with sources
  // Credits used: ~11 (1 search + 3 extractions)
}

main();

Langkah 4: Bina Aliran Kerja Pengekstrakan Data

Aliran kerja Mastra membolehkan anda merangkai tools menjadi saluran paip deterministik. Berikut ialah pemantau harga kompetitif:

Typescript
// src/workflows/pricing-monitor.ts
import { Workflow, Step } from '@mastra/core';
import { searchWeb, scrapeStructured } from '../tools/crawlforge';

const findCompetitors = new Step({
  id: 'find-competitors',
  execute: async ({ context }) => {
    // Search for competitors (5 credits)
    const results = await searchWeb.execute({
      context: { query: `${context.product} pricing plans`, limit: 5 },
    });
    return { urls: results.results.map((r: { link: string }) => r.link) };
  },
});

const extractPricing = new Step({
  id: 'extract-pricing',
  execute: async ({ context }) => {
    const pricingData = [];

    // Extract pricing from each competitor (2 credits each)
    for (const url of context.urls.slice(0, 3)) {
      try {
        const data = await scrapeStructured.execute({
          context: {
            url,
            selectors: {
              planNames: '.plan-name, .pricing-tier h3',
              prices: '.price, .plan-price',
              features: '.feature-list li, .plan-features li',
            },
          },
        });
        pricingData.push({ url, ...data });
      } catch (error) {
        pricingData.push({ url, error: 'Extraction failed' });
      }
    }

    return { pricingData };
    // Total: 5 + (3 * 2) = 11 credits
  },
});

export const pricingMonitorWorkflow = new Workflow({
  name: 'Pricing Monitor',
  steps: [findCompetitors, extractPricing],
});

Langkah 5: Tambah Pengendalian Ralat dan Cubaan Semula

Ejen pengeluaran memerlukan pengendalian ralat yang berdaya tahan. Berikut ialah corak untuk panggilan tool CrawlForge:

Typescript
// src/tools/resilient-crawlforge.ts
import { createTool } from '@mastra/core';
import { z } from 'zod';

const CRAWLFORGE_BASE = 'https://crawlforge.dev/api/v1/tools';

async function callWithRetry(
  tool: string,
  params: Record<string, unknown>,
  maxRetries = 2
): Promise<unknown> {
  let lastError: Error | null = null;

  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    try {
      const response = await fetch(`${CRAWLFORGE_BASE}/${tool}`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${process.env.CRAWLFORGE_API_KEY}`,
        },
        body: JSON.stringify(params),
      });

      if (response.status === 429) {
        // Rate limited -- wait and retry
        const retryAfter = parseInt(response.headers.get('Retry-After') || '2');
        await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
        continue;
      }

      if (!response.ok) {
        throw new Error(`HTTP ${response.status}: ${await response.text()}`);
      }

      return response.json();
    } catch (error) {
      lastError = error as Error;
      if (attempt < maxRetries) {
        await new Promise(resolve => setTimeout(resolve, 1000 * (attempt + 1)));
      }
    }
  }

  throw lastError;
}

export const resilientExtractContent = createTool({
  id: 'crawlforge-extract-content-resilient',
  description: 'Extract content with automatic retry on failure. 2 credits per successful call.',
  inputSchema: z.object({
    url: z.string().url(),
  }),
  execute: async ({ context }) => {
    return callWithRetry('extract_content', { url: context.url });
  },
});

Rujukan Kos Credit

CreditsToolsKes Penggunaan Mastra
1fetch_url, extract_text, extract_links, extract_metadataPengambilan data pantas dalam tools ejen
2scrape_structured, extract_content, map_site, process_document, localizationPengekstrakan aliran kerja, audit laman, pemprosesan dokumen
3track_changes, analyze_contentPengesanan perubahan, analisis kandungan
4summarize_content, crawl_deepRingkasan, crawling pelbagai halaman
5search_web, batch_scrape, scrape_with_actions, stealth_modeEjen penyelidikan, operasi pukal
10deep_researchEjen analisis menyeluruh

Gambaran Keseluruhan Seni Bina

KomponenPeranan
Ejen MastraMengatur panggilan tool, mengekalkan konteks perbualan
Tools MastraPembungkus bertaip di sekeliling titik akhir API CrawlForge
Aliran Kerja MastraSaluran paip pelbagai langkah deterministik untuk operasi pukal
API CrawlForgeMelaksanakan web scraping, memulangkan data berstruktur
Sistem CreditMenjejak penggunaan setiap API key, menguatkuasakan had

Ejen Mastra memutuskan tool CrawlForge yang hendak dipanggil berdasarkan tugas. Pembungkus tool mengendalikan komunikasi HTTP, dan CrawlForge melaksanakan scraping yang sebenar. Credits ditolak secara atomik pada setiap panggilan tool yang berjaya.

Langkah Seterusnya

  • Panduan Mula Pantas Mastra -- dokumentasi rasmi Mastra
  • Rujukan API CrawlForge -- dokumentasi titik akhir yang lengkap
  • Bina Pembantu Penyelidikan -- corak serupa menggunakan Claude secara langsung
  • Automasi Penyelidikan Mendalam -- aliran kerja penyelidikan lanjutan

Bina ejen AI sedar-web pertama anda hari ini. Daftar untuk CrawlForge (1,000 credits percuma), bina rangka projek Mastra, dan beri ejen anda kuasa untuk melakukan scraping pada seluruh web.

Cuba sendiri — tiada pendaftaran diperlukan

Jalankan mana-mana daripada 27 alat scraping dan pengekstrakan CrawlForge dalam playground, kemudian mula secara percuma dengan 1,000 credits.

1,000 credits percuma • Isi semula setiap bulan • Tiada kad kredit diperlukan

Tag

mastraai-agentsmcpintegrationtutorialtypescriptweb-scraping

Tentang Penulis

C

CrawlForge Team

Pasukan Kejuruteraan

Membina MCP server web scraping yang paling menyeluruh. Kami mencipta alatan yang membantu pembangun mengekstrak, menganalisis dan mengubah data web untuk aplikasi AI.

Kekal dikemas kini dengan pandangan terkini

Dapatkan tutorial, kemas kini produk dan petua web scraping terus ke peti masuk anda.

Tiada spam. Berhenti melanggan bila-bila masa.

Praktikkan ini

Uji alat CrawlForge pada mana-mana URL — percuma, tanpa pendaftaran.

Pada halaman ini

Artikel Berkaitan

Cara Menggunakan CrawlForge dengan Agen LangGraph
Tutorials

Cara Menggunakan CrawlForge dengan Agen LangGraph

Bina agen web scraping berkeadaan dengan LangGraph dan CrawlForge. Panduan TypeScript yang merangkumi nod graf, pengurusan keadaan, dan aliran scraping bersyarat.

C
CrawlForge Team
|
24 Apr
|
8m
Cara Membina MCP Server Web-Scraping dalam TypeScript (2026)
Tutorials

Cara Membina MCP Server Web-Scraping dalam TypeScript (2026)

Bina MCP server web-scraping yang berfungsi dalam TypeScript dengan SDK rasmi: sebuah server minimum, tool scraping cheerio sebenar, ujian, dan persediaan Claude Desktop.

C
CrawlForge Team
|
16 Jun
|
12m
Cara Menggunakan CrawlForge dengan Aliran Kerja Dify
Tutorials

Cara Menggunakan CrawlForge dengan Aliran Kerja Dify

Tambah CrawlForge sebagai alat tersuai dalam Dify untuk web scraping dalam aliran kerja aplikasi LLM anda. Panduan integrasi tanpa kod dan API dengan contoh aliran kerja.

C
CrawlForge Team
|
22 Apr
|
7m

Footer

CrawlForge

Web scraping gred perusahaan untuk Ejen AI. 27 alat MCP khusus yang direka untuk pembangun moden yang membina sistem pintar.

Produk

  • Ciri
  • Playground
  • Harga
  • Kes Penggunaan
  • Integrasi
  • Alternatif
  • Changelog

Sumber

  • Mula Bekerja
  • Rujukan API
  • Templat
  • Panduan
  • Blog
  • Glosari
  • Soalan Lazim
  • Peta Laman

Pembangun

  • Protokol MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Syarikat

  • Tentang
  • Hubungi
  • Privasi
  • Terma
  • Penggunaan Boleh Diterima
  • Cookies

Kekal dikemas kini

Dapatkan kemas kini terkini tentang alat dan ciri baharu.

Dibina dengan Next.js dan protokol MCP

© 2025-2026 CrawlForge. Hak cipta terpelihara.