AI

使用 Bright Data 构建 AI 获客智能体

了解如何用 AI 与 Bright Data 自动化你的获客流程。本指南涵盖从抓取到打分再到外联的全部环节。
6 分钟阅读
基于 Bright Data 的 AI 获客智能体

获客是销售的命脉,但对大多数团队而言,它依然是令人沮丧的瓶颈。传统方法缓慢、带有偏见、难以规模化,让你最优秀的人才陷入手动搜索、数据录入与猜测的循环。如果你能把这一关键职能从繁琐的琐事,转变为无缝、自动化的竞争优势,会怎样?

在本指南中,你将学到:
– 什么是 AI 获客
– 为何 AI 优于传统方法
– 如何一步步构建你自己的获客智能体
– Bright Data 如何为你的工作流提速增效

开始吧!

什么是 AI 获客

简单来说,AI 获客是使用人工智能自动查找、采集、丰富并甄别潜在客户的过程。它将原始数据转化为可执行的销售机会。

把它看作一个高效、数据驱动、全天候工作的销售开发代表。它不只是“找到线索”,还“理解线索”。

一个 AI 智能体会围绕四个关键动作,执行无缝的自动化工作流:

  1. 抓取(Scrape)—— 它可自主使用 Bright Data 的抓取器 等工具,从目标来源(如 LinkedIn、公司网站)采集原始数据。这相当于它“与外部环境交互”的方式。
  2. 丰富(Enrich)—— 智能体会基于这些通常为公司详情的原始数据,使用其他工具附加关键信息。它会自动查找电子邮箱地址、电话号码、技术栈数据、公司融资新闻及其他公开可得的数据。
  3. 评分(Score)—— 这是 AI 智能体“决策”和“问题求解”的核心。借助丰富后的数据,它会为线索做资格评估。例如:
    • 基于规则的评分: “If industry = Technology and employee_count > 50, add 10 points.”
    • LLM 驱动的推理:LLM 会分析线索档案与公司新闻,基于你对理想客户画像(ICP)的细致提示来评估契合度。它能理解那些难以用简单规则编码的复杂标准。
  4. 触达(Engage):最后,智能体会采取行动——它不会止步于分析。它可以自动把合格线索加入 CRM,生成个性化外联邮件,甚至在其他平台上发送首次触达消息,从“发现”闭环到“首次联系”。

为什么传统获客力不从心

几十年来,获客的销售流程基本保持手工化。销售代表手动搜索潜在客户,基于有限信息评估其潜力,然后寄希望于后续跟进能在合适的时间抵达拥挤的收件箱。这种方法不仅过时,本质上也存在缺陷。以下是传统方法让你的销售团队失利的原因:

1.资格评估中的人为偏见:手动流程高度依赖直觉与主观判断。代表可能会无意识地优先考虑来自熟悉公司或特定角色的线索。

2.线索从指缝中溜走:手动获客意味着在标签页、表格与 CRM 录入之间来回切换,流程混乱。优秀线索不可避免地会迷失在凌乱的 Excel 表中、被遗忘在浏览器标签页里,或在一开始的忙乱中根本没被录入系统。每一个流失的线索,都是直接从你的漏斗中流走的营收。

3.团队可用性受限:你的销售团队每周最多只能工作 40 小时(如果幸运的话)。他们需要睡眠、休假与周末。但互联网不会停。潜在客户随时都在搜索解决方案,而你的手动流程只能在工作时间内响应。这。

为什么 AI 获客至关重要

AI 驱动的获客不仅是升级,而是对销售流程的彻底重塑。它之所以重要,是因为它直面并解决了传统方法的核心缺陷:

  • 全流程自动化:处理搜索和数据采集等重复、耗时的任务,让你的团队把精力集中在成交上。
  • 7×24 小时运行:与人工团队不同,AI 智能体全天候工作,确保不会因时区而错过任何机会。
  • 数据驱动决策:以客观、基于标准的评估取代人类的猜测与偏见,确保你只追踪最具潜力的线索。
  • 即时响应:AI 能在几分钟内识别并发起触达,大幅提升参与率与转化率。
  • 无限扩展:它可以轻松分析成千上万的潜在客户,让你的外联规模扩张而无需同比增加人手。

既然你已经看到 AI 如何重塑销售外联,接下来就该学习如何真正构建你自己的方案了。让我们看看如何搭建一套 AI 驱动的获客智能体。

构建你的 AI 获客智能体

在本节中,我们将逐步搭建你的 AI 获客智能体。我们会构建一个精简的智能体,自动化整个工作流。你将看到 Bright Data 与 Streamlit 如何轻松组合在一起,为你不知疲倦地工作。

先决条件

按以下要求搭建开发环境:

  • (Python 3.9) 或更高版本
  • Bright Data 账户:注册并创建 API 令牌(提供免费试用额度)
  • OpenAI API Key:在 OpenAI 控制台创建用于 Embeddings 和 LLM 的密钥
  • 代码编辑器,例如 VS Code 或 PyCharm
  • Python 虚拟环境,用于隔离依赖
  • Streamlit 库,用于提供交互式用户界面,方便用户使用该工具

环境搭建

创建项目目录并安装依赖。首先创建一个干净的虚拟环境,以避免与其他 Python 项目产生冲突。

python -m venv venv
# macOS/Linux: source venv/bin/activate
# Windows: venvScriptsactivate
pip install langchain langchain-community langchain-openai streamlit python-dotenv

新建文件 lead_generator.py,并添加如下导入。这些库用于网页抓取、文本处理、向量嵌入与用户界面。

import base64
import json
import streamlit as st
import os
import requests
from dotenv import load_dotenv
from typing import Dict, List, Any

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.schema import Document
from langchain.agents import initialize_agent, AgentType, Tool
from langchain.memory import ConversationBufferMemory
from langchain.callbacks import StreamlitCallbackHandler

load_dotenv()

Bright Data 配置

使用环境变量安全存储你的 API 凭据。创建 .env 文件保存凭据,将敏感信息与代码分离。

BRIGHT_DATA_API_TOKEN="your_bright_data_api_token_here"
OPENAI_API_KEY="your_openai_api_key_here"

你需要:

  • Bright Data API 令牌:在 Bright Data 控制台中生成
  • OpenAI API Key:用于 LLM 文本生成

步骤 1:使用 Bright Data 采集数据

现在开始配置,从例如 LinkedIn 个人资料中获取线索数据。

如果你还不熟悉 Bright Data 的 Web Scraper API,建议先阅读相关文档。

简而言之,Web Scraper API 提供按域检索公开数据的 API 端点。Bright Data 会在其服务器上初始化并运行现成的抓取任务。这些 API 负责处理IP 轮换验证码处理等措施,高效且合规地从网页收集公共数据。任务完成后,抓取的数据会被解析为结构化格式,并以快照的形式提供给你。

因此,一般流程是:

  1. 触发 API 调用,启动网页抓取任务。
  2. 定期检查包含抓取数据的快照是否就绪。
  3. 快照可用时,拉取数据。

只需几行代码即可实现上述逻辑:

class BrightDataCollector:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.brightdata.com/datasets/v3"
        self.headers = {"Authorization": f"Bearer {api_key}"}

    def collect_leads(self, filters: Dict[str, Any], limit: int = 10) -> List[Dict[str, Any]]:
        # Trigger search
        r = requests.post(
            f"{self.base_url}/trigger",
            headers={**self.headers, "Content-Type": "application/json"},
            params={"dataset_id": "gd_your_lead_dataset_id", "type": "discover_new", "limit_per_input": str(limit)},
            json=[{
                "keyword": f"{filters.get('role','')} {filters.get('industry','')}".strip(),
                "location": filters.get("location", "")
            }]
        )
        snapshot_id = r.json().get("snapshot_id")
        if not snapshot_id:
            return []

        # Poll until ready
        url = f"{self.base_url}/snapshot/{snapshot_id}?format=json"
        for _ in range(30):
            snap = requests.get(url, headers=self.headers)
            if snap.status_code == 200:
                return snap.json()
            time.sleep(5)
        return []

步骤 2:用 AI 为线索做资格评估

当你收集到原始线索后,下一步是判断哪些符合你的理想客户画像(ICP)。你可以用 AI 资格评估器来提取搜索参数、分析线索、打分,并突出最佳匹配,而不是手工评分。

下面的类展示了如何结合 LangChain 与 OpenAI 构建这一工作流。

"""AI-powered lead qualification and scoring"""

def __init__(self, api_key: str):
    self.llm = ChatOpenAI(api_key=api_key, model_name="gpt-3.5-turbo", temperature=0.3)
    self.embeddings = OpenAIEmbeddings(api_key=api_key)

    # Prompt for qualification
    self.analysis_prompt = PromptTemplate(
        input_variables=["query", "lead"],
        template="""
        Original Query: {query}
        Lead: {lead}

        Return JSON with:
        - score (1-100)
        - analysis
        - pain_points
        - value_proposition
        - decision_maker_level
        - engagement_probability
        """
    )

    self.analysis_chain = LLMChain(llm=self.llm, prompt=self.analysis_prompt)

def qualify(self, lead: dict, query: str) -> dict:
    """Qualify a single lead"""
    result = self.analysis_chain.run(query=query, lead=json.dumps(lead))
    return {**lead, **json.loads(result)}

def batch_qualify(self, leads: list, query: str) -> list:
    """Qualify and rank leads"""
    results = [self.qualify(lead, query) for lead in leads]
    return sorted(results, key=lambda x: x["score"], reverse=True)

def vector_store(self, leads: list):
    """Build FAISS vector store for semantic search"""
    docs = [Document(page_content=f"{l['name']} {l['title']} {l['company']}", metadata={"i": i})
            for i, l in enumerate(leads)]
    return FAISS.from_documents(docs, self.embeddings)

步骤 3:用于交互的 Streamlit 界面

这一层 UI 将所有内容串联起来,让你可以配置 API Key、控制 AI 设置,并以清晰的可视化方式探索线索。

st.set_page_config(page_title="AI Lead Gen Agent", page_icon="🎯", layout="wide")

# Header
st.title("🔎 AI-Powered Lead Generation Agent")

# Sidebar settings
with st.sidebar:
    st.header("API Keys")
    bright_data_api_key = st.text_input("Bright Data API Key", type="password")
    openai_api_key = st.text_input("OpenAI API Key", type="password")
    st.header("Settings")
    model_name = st.selectbox("OpenAI Model", ["gpt-3.5-turbo", "gpt-4"])
    max_leads = st.slider("Max Leads", 5, 50, 10)

# Chat interface
if "messages" not in st.session_state:
    st.session_state.messages = []

for msg in st.session_state.messages:
    with st.chat_message(msg["role"]):
        st.markdown(msg["content"])

user_input = st.chat_input("Describe your ideal leads...")

if user_input:
    st.session_state.messages.append({"role": "user", "content": user_input})
    st.chat_message("user").markdown(user_input)

    # Placeholder: AI extracts filters & fetches leads
    st.chat_message("assistant").markdown("Extracted filters, fetching leads...")

# Display a simple lead card
def display_lead_card(lead: Dict[str, Any]):
    with st.expander(f"{lead.get('name')} - {lead.get('title')} at {lead.get('company')}"):
        st.write(f"Location: {lead.get('location', 'N/A')}")
        st.write(f"Email: {lead.get('email', 'N/A')}")
        st.write(f"LinkedIn: {lead.get('linkedin', 'N/A')}")
        st.write(f"Score: {lead.get('score', 0)}/100")

# Example leads
sample_leads = [
    {"name": "Jane Doe", "title": "Marketing Manager", "company": "Fintech Co", "location": "CA", "email": "[email protected]", "linkedin": "linkedin.com/janedoe", "score": 85}
]

st.subheader("Qualified Leads")
for lead in sample_leads:
    display_lead_card(lead)

有了这个 UI,用户看到的不再是枯燥的 JSON 分数,而是一目了然的线索排序、洞察与触达潜力。

步骤 4:自动化跟进

在为线索完成资格评估后,你仍需要在合适的时机用合适的信息进行触达。这就需要自动化。FollowUpAutomator 类会生成个性化外联邮件、LinkedIn 消息与跟进内容,并按结构化序列进行排期与执行。

class FollowUpAutomator:
    """Basic automated follow-up system for qualified leads"""

    def __init__(self, api_key: str):
        self.llm = ChatOpenAI(api_key=api_key, model_name="gpt-3.5-turbo", temperature=0.7)

        # Simple templates
        self.initial_prompt = PromptTemplate(
            input_variables=["name", "company"],
            template="Write a short, friendly outreach email to {name} at {company}."
        )
        self.followup_prompt = PromptTemplate(
            input_variables=["name", "company"],
            template="Write a polite follow-up email to {name} at {company}, under 80 words."
        )
        self.linkedin_prompt = PromptTemplate(
            input_variables=["name", "industry"],
            template="Write a short LinkedIn connection message to {name} in the {industry} industry."
        )

        self.initial_chain = LLMChain(llm=self.llm, prompt=self.initial_prompt)
        self.followup_chain = LLMChain(llm=self.llm, prompt=self.followup_prompt)
        self.linkedin_chain = LLMChain(llm=self.llm, prompt=self.linkedin_prompt)

    def create_sequence(self, lead: Dict[str, Any]) -> List[Dict[str, Any]]:
        """Builds a 3-step outreach sequence for one lead"""
        return [
            {"day": 0, "type": "email", "content": self.initial_chain.run(name=lead["name"], company=lead["company"])},
            {"day": 2, "type": "linkedin", "content": self.linkedin_chain.run(name=lead["name"], industry=lead.get("industry", ""))},
            {"day": 7, "type": "email", "content": self.followup_chain.run(name=lead["name"], company=lead["company"])}
        ]

    def schedule(self, leads: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
        """Assigns dates to each touch"""
        scheduled = []
        for lead in leads:
            base = datetime.now()
            sequence = self.create_sequence(lead)
            for touch in sequence:
                touch["scheduled_date"] = base + timedelta(days=touch["day"])
                touch["lead"] = lead["name"]
            scheduled.append({"lead": lead["name"], "sequence": sequence})
        return scheduled

步骤 5:整合代码并运行

将最终代码放入 lead_generator.py,然后运行:

streamlit run lead_generator.py

当你运行完整代码后,助手会接收你的查询,从 Bright Data 拉取最新线索,并用 AI 驱动的打分与洞察进行丰富。每批 10 个线索会被处理,直到最多分析 40 条职位信息;随后按相关性、决策权重与互动概率进行评分与排序。最后,完整的丰富结果会导出为干净的 results.csv 文件,给你的不仅是一份联系人清单,而是一份可直接投入行动的 AI 甄别线索数据库。

AI 获客智能体的最终界面

结语

现在你已拥有一套完整框架,用于构建自动化的 AI 获客智能体。该系统可自主从网页采集最新数据,用关键信息加以丰富,依据你的理想客户画像智能评估线索,并让它们随时准备被触达。

这种方法的真正力量在于其灵活性。你可以将此框架适配于任何行业——从 SaaS、金融到电商与招聘——只需在 Bright Data 与 LLM 设置中调整目标数据源与资格标准。其模块化设计也让你可以随着销售流程的演进,轻松加入新的数据端点、评分算法或输出渠道。

要打造更高级、更强大的工作流,欢迎探索 Bright Data 文档 中的完整数据集与解决方案。

免费创建 Bright Data 账号,使用试用额度,立即开始构建你的自动化获客智能体。把你的销售管道从“滴滴作响的水龙头”,变成可预测的高速增长引擎。

支持支付宝等多种支付方式

Arindam Majumder

AI 内容创作者

Arindam Majumder 是一名开发者推广专员、YouTube博主和技术作家,专注于将大语言模型 (LLM)、智能体工作流及 AI 内容讲解得简单易懂,拥有超过5000名关注者。

Expertise
RAG(检索增强生成) AI 智能体 Python