Pada halaman ini
Claude API daripada Anthropic menyokong penggunaan alat asli -- anda mentakrifkan alat dengan skema JSON, dan Claude memutuskan bila untuk memanggilnya semasa perbualan. 26 alat web scraping CrawlForge adalah padanan semula jadi: ia memberi Claude keupayaan untuk mencari web, mengekstrak kandungan, scrape data berstruktur, dan menjalankan penyelidikan mendalam, semuanya melalui API tool_use standard.
Panduan ini membimbing anda melalui pentakrifan alat CrawlForge untuk Claude API, mengendalikan respons penggunaan alat, dan membina pembantu penyelidikan gred pengeluaran.
Jadual Kandungan
- Prasyarat
- Cara Penggunaan Alat Claude Berfungsi dengan CrawlForge
- Langkah 1: Takrifkan Skema Alat CrawlForge
- Langkah 2: Kendalikan Gelung Penggunaan Alat
- Langkah 3: Bina Pembantu Penyelidikan
- Lanjutan: Penstriman dengan Penggunaan Alat
- Pecahan Kos Credit
- Amalan Terbaik
- Soalan Lazim
- Langkah Seterusnya
Prasyarat
npm install @anthropic-ai/sdk dotenv# .env
ANTHROPIC_API_KEY=sk-ant-xxxxx
CRAWLFORGE_API_KEY=cf_live_xxxxxDapatkan API key CrawlForge anda di crawlforge.dev/signup -- 1,000 credits percuma disertakan. Untuk akses Claude API, lawati console.anthropic.com dan ikuti panduan permulaan API.
Cara Penggunaan Alat Claude Berfungsi dengan CrawlForge
Penggunaan alat Claude mengikuti gelung permintaan-respons:
- Anda menghantar mesej dengan takrifan alat dan gesaan pengguna
- Claude membalas dengan teks atau blok kandungan
tool_use - Anda melaksanakan alat (memanggil CrawlForge API) dan mengembalikan hasilnya
- Claude menggabungkan hasil dan meneruskan responsnya
You -> Claude: "What's on the Hacker News front page?"
Claude -> You: tool_use { name: "extract_content", input: { url: "https://news.ycombinator.com" } }
You -> CrawlForge: POST /api/v1/tools/extract_content { url: "..." }
CrawlForge -> You: { content: "..." }
You -> Claude: tool_result { content: "..." }
Claude -> You: "Here are the top stories on Hacker News right now: ..."
Langkah 1: Takrifkan Skema Alat CrawlForge
Takrifkan alat yang boleh digunakan oleh Claude. Setiap alat memerlukan nama, perihalan, dan input_schema (format JSON Schema):
// lib/tool-definitions.ts
import Anthropic from '@anthropic-ai/sdk';
export const crawlforgeTools: Anthropic.Tool[] = [
{
name: 'search_web',
description: 'Search Google and return top results. Use when you need to find web pages about a topic. Returns titles, URLs, and snippets. Costs 5 credits.',
input_schema: {
type: 'object' as const,
properties: {
query: {
type: 'string',
description: 'The search query',
},
limit: {
type: 'number',
description: 'Maximum number of results (default: 5)',
},
},
required: ['query'],
},
},
{
name: 'extract_content',
description: 'Extract the main readable content from a web page. Returns clean text without navigation, ads, or boilerplate. Use when you need to read a specific URL. Costs 2 credits.',
input_schema: {
type: 'object' as const,
properties: {
url: {
type: 'string',
description: 'The full URL to extract content from',
},
},
required: ['url'],
},
},
{
name: 'scrape_structured',
description: 'Extract specific data from a page using CSS selectors. Use when you need structured data like prices, names, or lists. Costs 2 credits.',
input_schema: {
type: 'object' as const,
properties: {
url: {
type: 'string',
description: 'The URL to scrape',
},
selectors: {
type: 'object',
description: 'Map of field names to CSS selectors',
additionalProperties: { type: 'string' },
},
},
required: ['url', 'selectors'],
},
},
{
name: 'fetch_url',
description: 'Fetch raw HTML from a URL. Cheapest option at 1 credit. Use for APIs or when you need the raw HTML.',
input_schema: {
type: 'object' as const,
properties: {
url: {
type: 'string',
description: 'The URL to fetch',
},
},
required: ['url'],
},
},
{
name: 'extract_metadata',
description: 'Get page metadata including title, description, Open Graph tags, and other meta information. Costs 1 credit.',
input_schema: {
type: 'object' as const,
properties: {
url: {
type: 'string',
description: 'The URL to extract metadata from',
},
},
required: ['url'],
},
},
];Langkah 2: Kendalikan Gelung Penggunaan Alat
Corak teras: hantar mesej kepada Claude, semak sama ada ia mahu menggunakan alat, laksanakan alat melalui CrawlForge, dan kembalikan hasilnya.
// lib/agent.ts
import Anthropic from '@anthropic-ai/sdk';
import { crawlforgeTools } from './tool-definitions';
const client = new Anthropic();
const CRAWLFORGE_BASE = 'https://crawlforge.dev/api/v1/tools';
// Execute a CrawlForge tool
async function executeTool(
name: string,
input: Record<string, unknown>
): Promise<string> {
const response = await fetch(`${CRAWLFORGE_BASE}/${name}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CRAWLFORGE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
if (!response.ok) {
return JSON.stringify({ error: `HTTP ${response.status}: ${response.statusText}` });
}
const data = await response.json();
return JSON.stringify(data);
}
// Run Claude with CrawlForge tools
export async function askClaude(prompt: string): Promise<string> {
const messages: Anthropic.MessageParam[] = [
{ role: 'user', content: prompt },
];
// Tool use loop: keep going until Claude gives a final text response
while (true) {
const response = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 4096,
tools: crawlforgeTools,
messages,
});
// Check if Claude wants to use a tool
if (response.stop_reason === 'tool_use') {
// Add Claude's response to message history
messages.push({ role: 'assistant', content: response.content });
// Execute each tool call and collect results
const toolResults: Anthropic.ToolResultBlockParam[] = [];
for (const block of response.content) {
if (block.type === 'tool_use') {
const result = await executeTool(
block.name,
block.input as Record<string, unknown>
);
toolResults.push({
type: 'tool_result',
tool_use_id: block.id,
content: result,
});
}
}
// Return tool results to Claude
messages.push({ role: 'user', content: toolResults });
} else {
// Claude gave a final text response
const textBlock = response.content.find(b => b.type === 'text');
return textBlock ? textBlock.text : '';
}
}
}
// Usage
const answer = await askClaude(
'What are the top 3 trending repositories on GitHub right now?'
);
console.log(answer);Gelung ini mengendalikan penggunaan alat berbilang langkah secara automatik. Claude mungkin mencari, kemudian mengekstrak kandungan daripada satu hasil, kemudian mencari lagi -- gelung berterusan sehingga ia menghasilkan respons teks akhir.
Langkah 3: Bina Pembantu Penyelidikan
Bungkus ejen dalam aplikasi yang lebih berstruktur:
// research-assistant.ts
import { askClaude } from './lib/agent';
async function researchTopic(topic: string, depth: 'quick' | 'thorough' = 'quick') {
const systemPrompt = depth === 'thorough'
? `Research this topic thoroughly. Search for at least 3 different sources,
read each one, and provide a comprehensive summary with citations.
Topic: ${topic}`
: `Quickly answer this question using web search if needed.
Be concise and cite your source. Topic: ${topic}`;
console.log(`Researching: ${topic} (mode: ${depth})`);
const result = await askClaude(systemPrompt);
console.log(result);
return result;
}
// Quick research: ~7 credits (search + 1 extract)
await researchTopic('What is the current version of Next.js?', 'quick');
// Thorough research: ~11-15 credits (search + 3 extracts)
await researchTopic(
'Compare the performance of Bun vs Node.js for HTTP servers in 2026',
'thorough'
);Lanjutan: Penstriman dengan Penggunaan Alat
Untuk pengalaman pengguna yang lebih baik, gunakan penstriman untuk menunjukkan pemikiran Claude dalam masa nyata:
// lib/streaming-agent.ts
import Anthropic from '@anthropic-ai/sdk';
import { crawlforgeTools } from './tool-definitions';
const client = new Anthropic();
const CRAWLFORGE_BASE = 'https://crawlforge.dev/api/v1/tools';
async function executeTool(
name: string,
input: Record<string, unknown>
): Promise<string> {
const response = await fetch(`${CRAWLFORGE_BASE}/${name}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CRAWLFORGE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
return JSON.stringify(await response.json());
}
export async function streamWithTools(prompt: string) {
const messages: Anthropic.MessageParam[] = [
{ role: 'user', content: prompt },
];
while (true) {
const stream = client.messages.stream({
model: 'claude-sonnet-4-20250514',
max_tokens: 4096,
tools: crawlforgeTools,
messages,
});
// Collect streamed text
let hasToolUse = false;
stream.on('text', (text) => {
process.stdout.write(text); // Stream to terminal in real time
});
const response = await stream.finalMessage();
if (response.stop_reason === 'tool_use') {
hasToolUse = true;
messages.push({ role: 'assistant', content: response.content });
const toolResults: Anthropic.ToolResultBlockParam[] = [];
for (const block of response.content) {
if (block.type === 'tool_use') {
console.log(`\n[Calling ${block.name}...]\n`);
const result = await executeTool(
block.name,
block.input as Record<string, unknown>
);
toolResults.push({
type: 'tool_result',
tool_use_id: block.id,
content: result,
});
}
}
messages.push({ role: 'user', content: toolResults });
}
if (!hasToolUse) break;
}
}
// Usage: streams text to stdout as Claude generates it
await streamWithTools('What is CrawlForge MCP and how does it compare to Firecrawl?');Pecahan Kos Credit
| Aliran Kerja | Alat Digunakan | Credits |
|---|---|---|
| Jawapan pantas (1 halaman) | extract_content | 2 |
| Cari + baca hasil teratas | search_web + extract_content | 7 |
| Penyelidikan teliti (3 sumber) | search_web + 3x extract_content | 11 |
| Pengekstrakan data berstruktur | scrape_structured | 2 |
| Pemeriksaan metadata halaman | extract_metadata | 1 |
| Fetch HTML mentah | fetch_url | 1 |
| Laporan mendalam berbilang sumber | deep_research | 10 |
Peringkat Free (1,000 credits sekali sahaja) menyokong lebih kurang 140 pengekstrakan halaman tunggal atau 90 aliran kerja cari-dan-baca untuk bermula. Pelan Hobby ($19/bulan, 5,000 credits) adalah ideal untuk pembangunan dan kegunaan pengeluaran ringan.
Amalan Terbaik
Tulis perihalan alat yang deskriptif. Claude menggunakan medan description untuk memutuskan alat mana untuk dipanggil. Sertakan apa yang dilakukan oleh alat, bila untuk menggunakannya, dan kos creditnya. "Extract the main readable content from a web page" adalah lebih baik daripada "Get content".
Sertakan kos credit dalam perihalan. Apabila Claude tahu bahawa fetch_url berharga 1 credit dan deep_research berharga 10, ia secara semula jadi memilih pilihan yang lebih murah untuk tugas mudah.
Kendalikan ralat dengan anggun. Kembalikan mesej ralat sebagai hasil alat dan bukannya melontar pengecualian. Claude boleh menyesuaikan strateginya apabila satu alat gagal -- contohnya, mencuba URL yang berbeza atau menyusun semula carian.
Tetapkan max_tokens dengan sewajarnya. Kandungan web boleh panjang. Tetapkan max_tokens kepada sekurang-kurangnya 4096 untuk memberi Claude ruang menggabungkan hasil alat ke dalam respons yang menyeluruh.
Gunakan gesaan sistem untuk membimbing penggunaan alat. Beritahu Claude bila untuk mencari berbanding bila untuk mengakses URL yang diketahui secara terus. Ini menghalang panggilan search_web yang tidak perlu (5 credits) apabila extract_content terus (2 credits) sudah memadai.
Soalan Lazim
Bolehkah saya menggunakan CrawlForge dengan Claude 3.5 Haiku untuk kos yang lebih rendah?
Ya. Semua model Claude yang menyokong penggunaan alat berfungsi dengan alat CrawlForge. Haiku lebih murah setiap token tetapi mungkin memerlukan arahan yang lebih jelas untuk memilih alat yang betul. Claude Sonnet menyediakan keseimbangan terbaik antara kos dan ketepatan penggunaan alat.
Bagaimanakah saya mengendalikan had kadar?
API CrawlForge termasuk pengepala had kadar (X-RateLimit-Remaining). Jika anda mencapai respons 429, tambah percubaan semula dengan undur eksponen. Untuk penggunaan jumlah tinggi, pelan Professional termasuk had kadar yang lebih tinggi.
Bolehkah Claude memanggil berbilang alat CrawlForge dalam satu giliran?
Ya. Claude boleh meminta berbilang penggunaan alat dalam satu respons. Gelung penggunaan alat dalam Langkah 2 mengendalikan ini -- ia mengulang semua blok tool_use dan mengembalikan semua hasil sekali gus.
Apakah yang berlaku apabila credits CrawlForge habis?
API mengembalikan ralat 402 Payment Required. Kembalikan ini sebagai hasil alat supaya Claude boleh memaklumkan pengguna. Anda boleh menyemak baki credits melalui papan pemuka atau titik akhir API credits.
Langkah Seterusnya
Anda kini mempunyai aplikasi berkuasa Claude dengan akses web langsung. Terokai lebih lanjut:
- Permulaan Pantas CrawlForge untuk integrasi MCP asli dengan Claude Code
- Kesemua 26 alat dijelaskan dengan kos credit dan contoh penggunaan
- Membina Pembantu Penyelidikan AI dengan Claude dan CrawlForge
- Perbandingan CrawlForge vs Firecrawl untuk memilih alat yang betul
Beri Claude akses ke web langsung. Mulakan secara percuma dengan 1,000 credits -- tiada kad kredit diperlukan.
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
Tentang Penulis
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.