Pada halaman ini
Pasukan jualan anda menerima 200 petunjuk baharu setiap minggu. Setiap petunjuk tiba sebagai nama, e-mel, dan mungkin nama syarikat. Sebelum wakil boleh membuat capaian yang bermakna, mereka perlu menyelidik saiz syarikat, tindanan teknologi, berita terkini, dan potensi kesesuaian. Penyelidikan itu mengambil masa 10-15 minit setiap petunjuk -- lebih 30 jam setiap minggu dihabiskan di Google dan LinkedIn dan bukannya menjual.
Pengayaan petunjuk mengautomasikan penyelidikan ini. CrawlForge melakukan scrape data perniagaan awam daripada laman web syarikat, profil sosial, dan sumber berita untuk membina profil petunjuk yang lengkap dalam beberapa saat. Panduan ini menunjukkan cara membina enjin pengayaan petunjuk yang memproses 200+ petunjuk sejam.
Jadual Kandungan
- Apakah Pengayaan Petunjuk
- Gambaran Keseluruhan Seni Bina
- Langkah 1: Analisis Laman Web Syarikat
- Langkah 2: Pengesanan Tindanan Teknologi
- Langkah 3: Pengumpulan Perisikan Syarikat
- Langkah 4: Bina Saluran Paip Pengayaan
- Analisis Kos Credit
- Hasil dan Manfaat
- Soalan Lazim
Apakah Pengayaan Petunjuk
Pengayaan petunjuk ialah proses menambah data petunjuk asas (nama, e-mel, syarikat) dengan maklumat tambahan yang membantu pasukan jualan melayakkan dan mengutamakan prospek. Data yang dikayakan biasanya termasuk:
| Titik Data | Sumber | Nilai Jualan |
|---|---|---|
| Saiz syarikat | Halaman tentang/pasukan | Kelayakan |
| Industri | Kandungan laman web | Segmentasi |
| Tindanan teknologi | Analisis sumber halaman | Kesesuaian produk |
| Berita terkini | Hasil carian | Pembuka perbualan |
| Status pendanaan | Siaran akhbar | Isyarat bajet |
| Topik kandungan | Analisis blog | Pemetaan titik kesakitan |
Apakah pengayaan petunjuk? Ia ialah proses automatik melampirkan data perisikan perniagaan kepada rekod petunjuk mentah, mengubah alamat e-mel asas menjadi profil prospek yang menyeluruh yang boleh ditindaklanjuti oleh pasukan jualan dengan serta-merta.
CrawlForge paling sesuai untuk pasukan pengayaan petunjuk yang memerlukan data masa nyata daripada laman web syarikat, kerana tidak seperti penyedia pangkalan data (ZoomInfo, Clearbit) yang boleh ketinggalan beberapa minggu, CrawlForge melakukan scrape halaman langsung untuk maklumat semasa.
Gambaran Keseluruhan Seni Bina
Enjin pengayaan menggunakan lima alat CrawlForge:
| Komponen | Alat | Credits | Tujuan |
|---|---|---|---|
| Kandungan laman web | extract_content | 2 | Penerangan dan kedudukan syarikat |
| Metadata | extract_metadata | 1 | Tajuk, penerangan, profil sosial |
| Sumber halaman | fetch_url | 1 | Kesan teknologi daripada HTML |
| Penyelidikan syarikat | search_web | 5 | Berita terkini, pendanaan, sosial |
| Analisis | analyze_content | 3 | Pengelasan industri dan topik |
Langkah 1: Analisis Laman Web Syarikat
Mulakan dengan mengekstrak maklumat syarikat teras daripada laman web mereka.
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
const client = new Client({
name: 'lead-enrichment',
version: '1.0.0',
});
interface CompanyProfile {
domain: string;
name: string;
description: string;
industry: string;
topics: string[];
socialLinks: {
twitter?: string;
linkedin?: string;
github?: string;
};
estimatedSize: string;
}
async function analyzeCompanyWebsite(
domain: string
): Promise<CompanyProfile> {
// Extract main page content
const contentResult = await client.callTool({
name: 'extract_content',
arguments: { url: `https://${domain}` },
});
const content = JSON.parse(contentResult.content[0].text);
// Get metadata including social links
const metaResult = await client.callTool({
name: 'extract_metadata',
arguments: { url: `https://${domain}` },
});
const meta = JSON.parse(metaResult.content[0].text);
// Analyze content for industry and topics
const analysis = await client.callTool({
name: 'analyze_content',
arguments: { text: content.content },
});
const analyzed = JSON.parse(analysis.content[0].text);
// Try to get team page for company size estimation
let estimatedSize = 'Unknown';
try {
const teamPage = await client.callTool({
name: 'extract_content',
arguments: { url: `https://${domain}/about` },
});
const teamContent = JSON.parse(teamPage.content[0].text);
// Simple heuristic: count mentions of team-related terms
const teamMentions = (teamContent.content.match(/team|employee|people|staff/gi) || []).length;
if (teamMentions > 20) estimatedSize = '100+';
else if (teamMentions > 10) estimatedSize = '50-100';
else if (teamMentions > 5) estimatedSize = '10-50';
else estimatedSize = '1-10';
} catch {
// About page might not exist; that is fine
}
return {
domain,
name: meta.title?.split(/[|\-]/)[0]?.trim() || domain,
description: meta.description || analyzed.summary || '',
industry: analyzed.topics?.[0] || 'Unknown',
topics: analyzed.topics || [],
socialLinks: {
twitter: meta.twitterHandle,
linkedin: meta.linkedinUrl,
github: meta.githubUrl,
},
estimatedSize,
};
}Langkah 2: Pengesanan Tindanan Teknologi
Kesan teknologi yang digunakan oleh syarikat dengan menganalisis sumber HTML dan pengepala laman web mereka.
interface TechStack {
frontend: string[];
analytics: string[];
marketing: string[];
infrastructure: string[];
cms: string[];
}
async function detectTechStack(domain: string): Promise<TechStack> {
const result = await client.callTool({
name: 'fetch_url',
arguments: {
url: `https://${domain}`,
timeout: 10000,
},
});
const page = JSON.parse(result.content[0].text);
const html = page.body || '';
const headers = page.headers || {};
const stack: TechStack = {
frontend: [],
analytics: [],
marketing: [],
infrastructure: [],
cms: [],
};
// Frontend framework detection
if (html.includes('__next') || html.includes('_next/static')) {
stack.frontend.push('Next.js');
}
if (html.includes('__nuxt')) stack.frontend.push('Nuxt.js');
if (html.includes('react')) stack.frontend.push('React');
if (html.includes('vue')) stack.frontend.push('Vue.js');
if (html.includes('tailwindcss') || html.includes('tailwind')) {
stack.frontend.push('Tailwind CSS');
}
// Analytics detection
if (html.includes('gtag') || html.includes('google-analytics')) {
stack.analytics.push('Google Analytics');
}
if (html.includes('segment.com') || html.includes('analytics.js')) {
stack.analytics.push('Segment');
}
if (html.includes('mixpanel')) stack.analytics.push('Mixpanel');
if (html.includes('hotjar')) stack.analytics.push('Hotjar');
// Marketing tools
if (html.includes('hubspot')) stack.marketing.push('HubSpot');
if (html.includes('intercom')) stack.marketing.push('Intercom');
if (html.includes('drift')) stack.marketing.push('Drift');
if (html.includes('mailchimp')) stack.marketing.push('Mailchimp');
// Infrastructure
const server = headers['server'] || headers['x-powered-by'] || '';
if (server.includes('Vercel') || html.includes('vercel')) {
stack.infrastructure.push('Vercel');
}
if (server.includes('cloudflare') || headers['cf-ray']) {
stack.infrastructure.push('Cloudflare');
}
if (html.includes('amazonaws')) stack.infrastructure.push('AWS');
// CMS
if (html.includes('wp-content')) stack.cms.push('WordPress');
if (html.includes('shopify')) stack.cms.push('Shopify');
if (html.includes('webflow')) stack.cms.push('Webflow');
return stack;
}Pengesanan ini berjalan pada satu panggilan fetch_url (1 credit) -- menjadikannya amat menjimatkan kos untuk pengayaan petunjuk secara pukal.
Langkah 3: Pengumpulan Perisikan Syarikat
Gunakan search_web untuk mencari berita terkini, pengumuman pendanaan, dan konteks pasaran.
interface CompanyIntel {
recentNews: Array<{ title: string; url: string; snippet: string }>;
fundingInfo: string;
competitorMentions: string[];
}
async function gatherIntelligence(
companyName: string,
domain: string
): Promise<CompanyIntel> {
// Search for recent company news
const newsResult = await client.callTool({
name: 'search_web',
arguments: {
query: `"${companyName}" OR "${domain}" news funding`,
limit: 10,
time_range: 'month',
},
});
const news = JSON.parse(newsResult.content[0].text);
return {
recentNews: (news.results || []).slice(0, 5).map(
(r: { title: string; url: string; snippet: string }) => ({
title: r.title,
url: r.url,
snippet: r.snippet,
})
),
fundingInfo: news.results?.find(
(r: { title: string }) =>
r.title.toLowerCase().includes('funding') ||
r.title.toLowerCase().includes('raises') ||
r.title.toLowerCase().includes('series')
)?.snippet || 'No recent funding news found',
competitorMentions: news.results
?.filter((r: { title: string }) =>
r.title.toLowerCase().includes('vs') ||
r.title.toLowerCase().includes('alternative')
)
.map((r: { title: string }) => r.title) || [],
};
}Langkah 4: Bina Saluran Paip Pengayaan
Gabungkan semua langkah pengayaan ke dalam satu saluran paip yang memproses petunjuk secara pukal.
interface Lead {
email: string;
name: string;
company?: string;
}
interface EnrichedLead extends Lead {
companyProfile: CompanyProfile;
techStack: TechStack;
intelligence: CompanyIntel;
enrichedAt: string;
qualityScore: number;
}
function extractDomain(email: string): string {
return email.split('@')[1];
}
function calculateLeadScore(enriched: Omit<EnrichedLead, 'qualityScore'>): number {
let score = 0;
// Company has a real website with content
if (enriched.companyProfile.description.length > 50) score += 20;
// Company uses modern tech stack (potential product fit)
if (enriched.techStack.frontend.length > 0) score += 15;
// Company uses analytics/marketing tools (signals budget)
if (enriched.techStack.analytics.length > 0) score += 10;
if (enriched.techStack.marketing.length > 0) score += 15;
// Recent news/activity
if (enriched.intelligence.recentNews.length > 0) score += 10;
// Funding signals
if (!enriched.intelligence.fundingInfo.includes('No recent')) score += 20;
// Company size signals
const size = enriched.companyProfile.estimatedSize;
if (size === '50-100' || size === '100+') score += 10;
return Math.min(score, 100);
}
async function enrichLeads(leads: Lead[]): Promise<EnrichedLead[]> {
const enriched: EnrichedLead[] = [];
for (const lead of leads) {
const domain = lead.company
? lead.company.toLowerCase().replace(/\s+/g, '') + '.com'
: extractDomain(lead.email);
// Skip free email providers
if (['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com'].includes(domain)) {
continue;
}
try {
console.log(`Enriching ${lead.email} (${domain})...`);
const companyProfile = await analyzeCompanyWebsite(domain);
const techStack = await detectTechStack(domain);
const intelligence = await gatherIntelligence(
companyProfile.name,
domain
);
const partial = {
...lead,
companyProfile,
techStack,
intelligence,
enrichedAt: new Date().toISOString(),
};
enriched.push({
...partial,
qualityScore: calculateLeadScore(partial),
});
} catch (error) {
console.error(`Failed to enrich ${lead.email}:`, error);
}
}
// Sort by quality score (highest first)
return enriched.sort((a, b) => b.qualityScore - a.qualityScore);
}Analisis Kos Credit
Kos pengayaan setiap petunjuk:
| Operasi | Alat | Credits |
|---|---|---|
| Kandungan laman web | extract_content | 2 |
| Halaman tentang | extract_content | 2 |
| Metadata | extract_metadata | 1 |
| Pengesanan teknologi | fetch_url | 1 |
| Analisis kandungan | analyze_content | 3 |
| Carian berita | search_web | 5 |
| Setiap petunjuk | 14 credits |
Kos bulanan pada skala:
| Volum | Credits/Bulan | Pelan Disyorkan |
|---|---|---|
| 50 petunjuk/bulan | 700 | Peringkat Free (1,000 credits) |
| 200 petunjuk/bulan | 2,800 | Hobby ($19/mo, 5,000 credits) |
| 1,000 petunjuk/bulan | 14,000 | Professional ($99/mo, 50,000 credits) |
| 5,000+ petunjuk/bulan | 70,000 | Business ($399/mo, custom credits) |
Hasil dan Manfaat
Enjin pengayaan petunjuk dengan CrawlForge menyampaikan:
- Kelajuan: Kayakan petunjuk dalam 15-30 saat dan bukannya 10-15 minit
- Konsistensi: Setiap petunjuk mendapat kedalaman penyelidikan yang sama
- Pengutamaan: Skor kualiti membenarkan wakil memberi tumpuan kepada petunjuk bernilai tertinggi dahulu
- Kecekapan kos: $0.07-0.13 setiap petunjuk berbanding $0.50-2.00 untuk penyedia pangkalan data
Berbanding penyedia pangkalan data pengayaan seperti Clearbit ($99/mo untuk 1,000 carian) atau ZoomInfo ($15,000+/year), CrawlForge menyampaikan data semasa pada kos yang jauh lebih rendah. Pertukarannya ialah CrawlForge melakukan scrape data langsung (sentiasa semasa) manakala pangkalan data menyediakan medan yang telah berstruktur (kurang pemprosesan diperlukan).
Soalan Lazim
Sejauh manakah ketepatan pengesanan tindanan teknologi daripada HTML?
Pengesanan berasaskan HTML menangkap alat paling popular dengan ketepatan tinggi (90%+) untuk teknologi pihak klien. Teknologi pihak pelayan lebih sukar dikesan. Untuk pengesanan menyeluruh, gabungkan CrawlForge dengan data BuiltWith atau Wappalyzer.
Bolehkah saya mengayakan petunjuk daripada domain e-mel peribadi?
Petunjuk daripada gmail.com atau outlook.com tidak mempunyai domain syarikat untuk dianalisis. Untuk ini, gunakan search_web untuk mencari profil profesional mereka berdasarkan nama. Ini menelan kos 5 credits setiap carian dan bukannya saluran paip penuh 14 credit.
Bagaimanakah saya mengendalikan had kadar semasa pengayaan secara pukal?
Alat batch_scrape CrawlForge mengendalikan had kadar secara automatik. Untuk panggilan individu, tambah kelewatan 500ms antara permintaan ke domain yang sama. Proses domain yang berbeza secara selari untuk daya pemprosesan maksimum.
Kayakan 50 petunjuk pertama anda secara percuma. Mulakan dengan 1,000 credits -- cukup untuk mengayakan sepenuhnya 70+ petunjuk tanpa memerlukan kad kredit.
Sumber berkaitan:
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.