用AI快速构建竞争情报监控系统
从零开始实现基于AI的竞争对手分析工具的完整教程,适合想探索AI应用的开发者。
从零开始实现基于AI的竞争对手分析工具的完整教程,适合想探索AI应用的开发者。
现在做生意的每个人都有竞争对手,而随着技术发展的速度如此之快,领先竞争对手不仅重要——更是不可或缺的。
为此,许多公司都转向竞争情报(CI)工具,这些工具有助于追踪竞争对手的活动、产品、市场变化以及客户行为和看法。当由 AI 驱动时,这些工具能更进一步,分析数据并将其转化为可操作的洞察,帮助企业做出更明智的决策,保持竞争优势。
与其说是被动观察趋势,AI 增强的 CI 工具让企业能更深入地理解行业动态,往往是实时的。有了这一点,企业可以主动适应变化、应对竞争对手的举措,甚至在新机遇广为人知之前就识别出它们。事实上,CI 不仅限于大企业——它也能为小企业创造公平竞争的机会,使它们能做出与大企业同样明智的数据驱动决策。
竞争情报(CI)不仅仅是关注竞争对手在做什么——而是获得能指导企业决策的宝贵洞察。无论你是在调整定价策略、改进营销信息、优化价值主张还是开发新产品,CI 都能为你提供做出明智选择所需的数据。但关键不在于收集信息,而在于有效地利用这些信息来保持领先。
以下是 AI 驱动的 CI 工具能够解决的几个关键问题:
保持领先于竞争对手:通过实时跟踪竞争对手的定价、产品和活动,企业可以预判市场变化并提前行动,而不是被动反应。麦肯锡公司强调了 CI 工具如何帮助企业在竞争环境中保持领先地位。
改进市场定位:CI 工具可以揭示竞争对手如何定位其产品,并识别市场空白,让企业能够调整其产品。哈佛商业评论展示了 CI 如何改进定位并帮助企业开拓未被挖掘的市场。
简化决策过程:AI 驱动的 CI 工具能过滤掉不必要的数据,提供可操作的洞察,使领导层能够快速做出明智决策。根据 Gartner 的说法,这种自动化实现了更快、更具战略性的决策制定。
识别新兴趋势:AI 工具可以扫描海量数据集,及早发现新兴趋势和消费者行为,帮助企业保持竞争力。Forrester 解释了这些工具如何让企业在趋势成为主流之前就获得先机。
促进产品开发和创新:通过理解竞争对手的产品和消费者反馈,企业可以改进自己的产品以满足市场需求。Forrester 强调了 CI 在推动创新和产品开发中的作用。
优化营销和销售:CI 工具分析竞争对手的营销策略,揭示什么有效(或无效),帮助企业微调其活动并改进参与度。哈佛商业评论说明了 CI 如何优化营销策略以获得更好的客户转化。
降低风险并增强市场意识:追踪竞争对手的活动可以帮助企业发现潜在风险或突然的市场变化,使其能够调整策略以避免挫折。麦肯锡公司指出,CI 通过预判竞争对手的举措来降低风险。
考虑到这些优势,显然向企业中整合竞争情报工具已经不再是可选的——而是必不可少的。
现在我们理解了竞争情报的价值,让我们深入了解如何构建自己的 AI 驱动的竞争情报工具。
我们将使用以下工具:
首先,设置一个 Python 环境。然后,在项目的根文件夹中,创建一个名为 requirements.txt 的文件。将以下依赖复制粘贴到该文件中:
streamlit
langchain
langchain_ollama
selenium
beautifulsoup4
lxml
html5lib
python-dotenv
接下来,通过运行以下命令来激活你的环境:
./name_of_environment/Scripts/Activate
然后,通过运行以下命令一次性安装所有依赖:
pip install -r requirements.txt
在根文件夹中创建一个名为 main.py 的 Python 文件。在这个文件中,我们将构建一个简单的 Streamlit 用户界面。
Streamlit 是一个非常直观的工具,可以用最少的代码创建基于 Python 的 web 应用。它是与大语言模型(LLM)等工具交互的最简单方式之一,我们在本教程中将使用它。
以下是设置界面的代码:
import streamlit as st
st.title("Competitive Intelligence Tool (Demo)")
url = st.text_input("Enter Competitor's Website URL")
if st.button("Gather Insights"):
if url:
st.write("Analyzing the website...")
要运行 Streamlit 应用,打开你的终端,激活你的虚拟环境(如果还没有激活),并输入以下命令,指定包含你的 Streamlit 应用的 Python 文件名(本例中为 main.py):
streamlit run main.py
它会启动一个包含该应用的 web 服务器。
一旦我们构建了 Streamlit UI,下一步就是实际从我们想要爬取的网站获取数据。为此,我们将使用一个名为 Selenium 的 Python 模块。
Selenium 允许我们自动化一个 web 浏览器,这样我们实际上可以导航到一个网页,获取该页面上的所有内容,然后我们可以对内容应用一些过滤,然后将其传递给像 ChatGPT 或 Gemini 这样的 LLM,然后我们可以使用该 LLM 来解析数据并给我们一个有意义的响应。
Bright Data 是一个 web 数据平台,使企业能够收集和结构化任何公开 web 数据,以及从任何位置准确地查看 Web,而不会被阻止或误导,这得益于其广泛的代理网络。
对于本教程,你可以完全免费使用它们。
点击此处创建账户。
之后,转到你的仪表板并创建一个名为 Scraping Browser 的工具的新实例/区域。
scraping browser 包括验证码求解器以及与代理网络的连接。这意味着它会自动为你分配新的 IP 地址并循环使用这些地址,模拟真实用户访问网站的方式。
这也意味着如果有验证码,它会自动为你解决它,所以你不需要处理被验证码阻止的问题。
所以,输入一个区域名称并创建它。
Bright Data 对开发者的一个主要优势是,它只需与你已有的代码配合使用。
在我们的情况下,我们使用 Selenium。所以,只需复制 URL
然后在根目录中创建一个 .env 文件并粘贴 URL:
SBR_WEBDRIVER="paste_the_url_here"
接下来,创建一个名为 scrape.py 的新文件。这是我们将编写 web 爬取功能的地方,将其与主文件分离,使我们更容易导航。
首先,将一些 selenium 模块导入到你的 scrape.py 文件中,然后编写一个函数,该函数接取一个网站域名,爬取网页的所有内容,清理它,并返回所有内容。
from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
from bs4 import BeautifulSoup
from dotenv import load_dotenv
import os
load_dotenv()
SBR_WEBDRIVER = os.getenv("SBR_WEBDRIVER")
def scrape_website(website):
print("Connecting to Scraping Browser...")
sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, "goog", "chrome")
with Remote(sbr_connection, options=ChromeOptions()) as driver:
driver.get(website)
print("Waiting captcha to solve...")
solve_res = driver.execute(
"executeCdpCommand",
{
"cmd": "Captcha.waitForSolve",
"params": {"detectTimeout": 10000},
},
)
print("Captcha solve status:", solve_res["value"]["status"])
print("Navigated! Scraping page content...")
html = driver.page_source
return html
def extract_body_content(html_content):
soup = BeautifulSoup(html_content, "html.parser")
body_content = soup.body
if body_content:
return str(body_content)
return ""
def clean_body_content(body_content):
soup = BeautifulSoup(body_content, "html.parser")
for script_or_style in soup(["script", "style"]):
script_or_style.extract()
# Get text or further process the content
cleaned_content = soup.get_text(separator="\n")
cleaned_content = "\n".join(
line.strip() for line in cleaned_content.splitlines() if line.strip()
)
return cleaned_content
def split_dom_content(dom_content, max_length=6000):
return [
dom_content[i : i + max_length] for i in range(0, len(dom_content), max_length)
]
创建一个名为 parse.py 的新文件。然后复制粘贴下面的代码,之后我们将在本地设置 Ollama,用于执行 LLM。
from langchain_ollama import OllamaLLM
from langchain_core.prompts import ChatPromptTemplate
template = (
"You are tasked with extracting or generating specific information based on the following text content: {dom_content}. "
"Please follow these instructions carefully:\n\n"
"1. **Follow Instructions:** Perform the task as described here: {parse_description}.\n"
"2. **Precise Output:** Provide the most concise and accurate response possible.\n"
"3. **No Additional Text:** Do not include extra comments, explanations, or unrelated information in your response."
)
model = OllamaLLM(model="llama3.2")
def parse_with_ollama(dom_chunks, parse_description):
"""
Handles a variety of tasks based on the provided parse_description.
Parameters:
- dom_chunks (list of str): Chunks of text content to process.
- parse_description (str): Instruction for the task (e.g., "Find competitors", "Summarize product").
Returns:
- str: Combined result of all tasks across chunks.
"""
prompt = ChatPromptTemplate.from_template(template)
chain = prompt | model
parsed_results = []
for i, chunk in enumerate(dom_chunks, start=1):
response = chain.invoke(
{"dom_content": chunk, "parse_description": parse_description}
)
print(f"Processed batch {i}: {response}")
parsed_results.append(response)
return "\n".join(parsed_results)
Ollama 允许你在计算机上本地运行开源 LLM。所以,你不需要依赖 API 密钥之类的东西,而且完全免费。
要开始使用 Ollama,请访问此链接:https://ollama.com/download
一旦 Ollama 被下载并安装,打开你的终端或命令提示符并输入 Ollama 命令:
ollama
你会看到类似这样的东西:
接下来,你需要拉取一个 Ollama 模型。你需要在代码能够执行之前将 Ollama 模型下载到本地。
为此,请访问 https://github.com/ollama/ollama
在这里你可以看到所有可以使用的不同模型。
根据你计算机的规格选择一个合适的模型。对于本教程,我们使用 Llama 3.2 模型。它只需要 3 GB 的 RAM。
接下来,回到你的终端或命令提示符并运行此命令:
ollama pull llama 3.2
这将为你将模型下载到你的计算机上。一旦完成,你就可以在你的 parse.py 文件中使用此模型了。
现在你可以使用此命令运行你的代码:
streamlit run main.py
你可以根据需要修改代码,使其能够一次从多个 URL 或多个域获取数据。
使用 pandas.pydata.org 和 matplotlib.org 添加数据可视化,使其对你的业务更有行动性。
或者甚至自动化数据收集过程,定期追踪竞争对手的更新。使用 cron 作业或 Python 的 schedule 模块在定义的时间间隔运行数据爬取和分析脚本。
要查看完整代码,请查看 GitHub 仓库:
sholajegede / competiai
AI-powered Competitive Intelligence Tool
AI-powered Competitive Intelligence Tool
建立一个竞争情报工具对你的企业或产品内部都有很大潜力。通过结合 web 爬取和文本分析,你可以创建一个工具,帮助你保持领先竞争对手并做出更明智的决策。
这可以显著改进你的产品开发、营销策略、销售推广和整体市场意识。
这些工具提供的竞争优势是无价的,特别是在变化发生迅速且竞争激烈的行业中。随着 AI 和机器学习的进步,你可以期待更加复杂的功能,从预测分析到实时市场警报。
如果你正在考虑构建一个 CI 工具,从这样一个项目开始是获得实践经验的绝佳方式。实验、迭代,并在你发现它能为业务运营增加价值的新方法时增强该工具。
对本教程有想法或反馈?请在下面的评论中分享,或随时与我联系。我很想听听你如何使用竞争情报来改变你的业务!
如需进一步操作,你可以考虑阻止此人和/或举报滥用