Les avis clients dispersés sur plusieurs plateformes créent des défis d’analyse pour les entreprises. La surveillance manuelle des avis est chronophage et passe souvent à côté d’informations essentielles. Ce guide vous montre comment créer un agent IA qui collecte, analyse et catégorise automatiquement les avis provenant de différentes sources.
Vous apprendrez :
- Comment construire un système d’intelligence d’avis avec CrewAI et le Bright Data MCP de Bright Data
- Comment effectuer une analyse de sentiment basée sur les aspects des retours clients
- Comment catégoriser les avis par sujet et générer des informations exploitables
Consultez le projet final sur GitHub !
Qu’est-ce que CrewAI ?
CrewAI est un framework open-source permettant de créer des équipes d’agents IA collaboratifs. Vous définissez les rôles, objectifs et outils des agents pour exécuter des workflows complexes. Chaque agent gère des tâches spécifiques tout en travaillant ensemble vers un objectif commun.
CrewAI se compose de :
- Agent : Un travailleur propulsé par un LLM avec des responsabilités et des outils définis
- Tâche : Un travail spécifique avec des exigences de résultat claires
- Outil : Des fonctions que les agents utilisent pour des travaux spécialisés, comme l’extraction de données
- Crew : Une collection d’agents travaillant ensemble
Qu’est-ce que MCP ?
MCP (Model Context Protocol) est un standard JSON-RPC 2.0 qui connecte les agents IA à des outils externes et des sources de données via une interface unifiée.
Le serveur Bright Data MCP de Bright Data offre un accès direct aux capacités de Scraping web avec protection anti-bot grâce à 400M+ Proxys résidentiels rotatifs, au rendu JavaScript pour le contenu dynamique, à des sorties JSON propres issues des données scrapées, et à plus de 50 outils prêts à l’emploi pour différentes plateformes.
Ce que nous construisons : Agent d’Intelligence d’Avis Multi-Sources
Nous allons créer un système CrewAI qui scrape automatiquement les avis de sociétés spécifiques sur plusieurs plateformes telles que G2, Capterra, Trustpilot et TrustRadius, récupère la note de chacune ainsi que les meilleurs avis, effectue une analyse de sentiment basée sur les aspects, catégorise les retours par sujets (Support, Tarification, Facilité d’utilisation), attribue un score de sentiment à chaque catégorie et génère des informations commerciales exploitables.
Prérequis
Configurez votre environnement de développement avec :
- Python 3.11 ou supérieur
- Node.js et npm pour le serveur Bright Data MCP
- Compte Bright Data – Inscrivez-vous et créez un token API (des crédits d’essai gratuits sont disponibles).
- Clé API Nebius – Créez une clé dans Nebius AI Studio (cliquez sur + Get API Key). Vous pouvez l’utiliser gratuitement. Aucun profil de facturation n’est requis.
- Environnement virtuel Python – Maintient les dépendances isolées ; consultez la documentation
venv.
Configuration de l’environnement
Créez votre répertoire de projet et installez les dépendances :
python -m venv venv
# macOS/Linux: source venv/bin/activate
# Windows: venv\\Scripts\\activate
pip install "crewai-tools[mcp]" crewai mcp python-dotenv pandas textblob
Créez un nouveau fichier appelé review_intelligence.py et ajoutez les importations suivantes :
from crewai import Agent, Task, Crew, Process
from crewai_tools import MCPServerAdapter
from mcp import StdioServerParameters
from crewai.llm import LLM
import os
import json
import pandas as pd
from datetime import datetime
from dotenv import load_dotenv
from textblob import TextBlob
load_dotenv()
Configuration du Bright Data MCP de Bright Data
Créez un fichier .env avec vos identifiants :
BRIGHT_DATA_API_TOKEN="your_api_token_here"
WEB_UNLOCKER_ZONE="your_web_unlocker_zone"
BROWSER_ZONE="your_browser_zone"
NEBIUS_API_KEY="your_nebius_api_key"
Vous avez besoin de :
- Token API : Générez un nouveau token API depuis votre tableau de bord Bright Data
- Zone Web Unlocker : Créez une nouvelle zone Web Unlocker pour les sites immobiliers
- Zone Browser API : Créez une nouvelle zone Browser API pour les sites immobiliers à fort contenu JavaScript
- Clé API Nebius : Déjà créée dans les Prérequis
Configurez le LLM et le serveur Bright Data MCP dans review_intelligence.py :
llm = LLM(
model="nebius/Qwen/Qwen3-30B-A3B",
api_key=os.getenv("NEBIUS_API_KEY")
)
server_params = StdioServerParameters(
command="npx",
args=["@brightdata/mcp"],
env={
"API_TOKEN": os.getenv("BRIGHT_DATA_API_TOKEN"),
"WEB_UNLOCKER_ZONE": os.getenv("WEB_UNLOCKER_ZONE"),
"BROWSER_ZONE": os.getenv("BROWSER_ZONE"),
},
)
Définition des agents et des tâches
Définissez des agents spécialisés pour différents aspects de l’analyse des avis. L’agent de collecte d’avis extrait les avis clients de plusieurs plateformes et retourne des données JSON propres et structurées avec le texte des avis, les notes, les dates et la source de la plateforme. Cet agent possède une expertise en Scraping web, avec une connaissance approfondie des structures des plateformes d’avis et la capacité de contourner les mesures anti-bot.
def build_review_scraper_agent(mcp_tools):
return Agent(
role="Review Data Collector",
goal=(
"Extract customer reviews from multiple platforms and return clean, "
"structured JSON data with review text, ratings, dates, and platform source."
),
backstory=(
"Expert in web scraping with deep knowledge of review platform structures. "
"Skilled at bypassing anti-bot measures and extracting complete review datasets "
"from Amazon, Yelp, Google Reviews, and other platforms."
),
tools=mcp_tools,
llm=llm,
max_iter=3,
verbose=True,
)

L’agent d’analyse de sentiment analyse le sentiment des avis selon trois aspects clés : la qualité du support, la satisfaction tarifaire et la facilité d’utilisation. Il fournit des scores numériques et un raisonnement détaillé pour chaque catégorie. Cet agent est spécialisé dans le traitement du langage naturel et l’analyse du sentiment client, avec une expertise dans l’identification des indicateurs émotionnels et des schémas de retours spécifiques à chaque aspect.
def build_sentiment_analyzer_agent():
return Agent(
role="Sentiment Analysis Specialist",
goal=(
"Analyze review sentiment across three key aspects: Support Quality, "
"Pricing Satisfaction, and Ease of Use. Provide numerical scores and "
"detailed reasoning for each category."
),
backstory=(
"Data scientist specializing in natural language processing and customer "
"sentiment analysis. Expert at identifying emotional indicators, context clues, "
"and aspect-specific feedback patterns in customer reviews."
),
llm=llm,
max_iter=2,
verbose=True,
)
L’agent générateur d’insights transforme les résultats de l’analyse de sentiment en informations commerciales exploitables. Il identifie les tendances, met en évidence les problèmes critiques et formule des recommandations spécifiques d’amélioration. Cet agent apporte une expertise en analyse stratégique avec des compétences en optimisation de l’expérience client et en traduction des données de retours en actions commerciales concrètes.
def build_insights_generator_agent():
return Agent(
role="Business Intelligence Analyst",
goal=(
"Transform sentiment analysis results into actionable business insights. "
"Identify trends, highlight critical issues, and provide specific "
"recommendations for improvement."
),
backstory=(
"Strategic analyst with expertise in customer experience optimization. "
"Skilled at translating customer feedback data into concrete business "
"actions and priority frameworks."
),
llm=llm,
max_iter=2,
verbose=True,
)
Assemblage et exécution du Crew
Créez des tâches pour chaque étape du pipeline d’analyse. La tâche de scraping collecte les avis depuis les pages produit spécifiées et produit un JSON structuré avec les informations de plateforme, le texte des avis, les notes, les dates et le statut de vérification.
def build_scraping_task(agent, product_urls):
return Task(
description=f"Scrape reviews from these product pages: {product_urls}",
expected_output="""{
"reviews": [
{
"platform": "amazon",
"review_text": "Great product, fast shipping...",
"rating": 5,
"date": "2024-01-15",
"reviewer_name": "John D.",
"verified_purchase": true
}
],
"total_reviews": 150,
"platforms_scraped": ["amazon", "yelp"]
}""",
agent=agent,
)
La tâche d’analyse de sentiment traite les avis pour analyser les aspects Support, Tarification et Facilité d’utilisation. Elle retourne des scores numériques, des classifications de sentiment, des thèmes clés et des comptages d’avis pour chaque catégorie.
def build_sentiment_analysis_task(agent):
return Task(
description="Analyze sentiment for Support, Pricing, and Ease of Use aspects",
expected_output="""{
"aspect_analysis": {
"support_quality": {
"score": 4.2,
"sentiment": "positive",
"key_themes": ["responsive", "helpful", "knowledgeable"],
"review_count": 45
},
"pricing_satisfaction": {
"score": 3.1,
"sentiment": "mixed",
"key_themes": ["expensive", "value", "competitive"],
"review_count": 67
},
"ease_of_use": {
"score": 4.7,
"sentiment": "very positive",
"key_themes": ["intuitive", "simple", "user-friendly"],
"review_count": 89
}
}
}""",
agent=agent,
)
La tâche d’insights génère des informations commerciales exploitables à partir des résultats de l’analyse de sentiment. Elle fournit des résumés exécutifs, des actions prioritaires, des zones de risque, l’identification des points forts et des recommandations stratégiques.
def build_insights_task(agent):
return Task(
description="Generate actionable business insights from sentiment analysis",
expected_output="""{
"executive_summary": "Overall customer satisfaction is strong...",
"priority_actions": [
"Address pricing concerns through value communication",
"Maintain excellent ease of use standards"
],
"risk_areas": ["Price sensitivity among new customers"],
"strengths": ["Intuitive user experience", "Quality support team"],
"recommended_focus": "Pricing strategy optimization"
}""",
agent=agent,
)
Analyse de sentiment basée sur les aspects
Ajoutez des fonctions d’analyse de sentiment qui identifient les aspects spécifiques mentionnés dans les avis et calculent les scores de sentiment pour chaque domaine d’intérêt.
def analyze_aspect_sentiment(reviews, aspect_keywords):
"""Analyze sentiment for specific aspects mentioned in reviews."""
aspect_reviews = []
for review in reviews:
text = review.get('review_text', '').lower()
if any(keyword in text for keyword in aspect_keywords):
blob = TextBlob(review['review_text'])
sentiment_score = blob.sentiment.polarity
aspect_reviews.append({
'text': review['review_text'],
'sentiment_score': sentiment_score,
'rating': review.get('rating', 0),
'platform': review.get('platform', '')
})
return aspect_reviews
Catégorisation des avis par sujets (Support, Tarification, Facilité d’utilisation)
La fonction de catégorisation organise les avis en sujets Support, Tarification et Facilité d’utilisation sur la base d’une correspondance par mots-clés. Les mots-clés de support incluent des termes liés au service client et à l’assistance. Les mots-clés de tarification couvrent les mentions de coût, de valeur et d’accessibilité financière.
def categorize_by_aspects(reviews):
"""Categorize reviews into Support, Pricing, and Ease of Use topics."""
support_keywords = ['support', 'help', 'service', 'customer', 'response', 'assistance']
pricing_keywords = ['price', 'cost', 'expensive', 'cheap', 'value', 'money', 'affordable']
usability_keywords = ['easy', 'difficult', 'intuitive', 'complicated', 'user-friendly', 'interface']
categorized = {
'support': analyze_aspect_sentiment(reviews, support_keywords),
'pricing': analyze_aspect_sentiment(reviews, pricing_keywords),
'ease_of_use': analyze_aspect_sentiment(reviews, usability_keywords)
}
return categorized

Attribution de scores de sentiment pour chaque sujet
Implémentez une logique de scoring qui convertit l’analyse de sentiment en notes numériques et en catégories significatives.
def calculate_aspect_scores(categorized_reviews):
"""Calculate numerical scores for each aspect category."""
scores = {}
for aspect, reviews in categorized_reviews.items():
if not reviews:
scores[aspect] = {'score': 0, 'count': 0, 'sentiment': 'neutral'}
continue
# Calculate average sentiment score
sentiment_scores = [r['sentiment_score'] for r in reviews]
avg_sentiment = sum(sentiment_scores) / len(sentiment_scores)
# Convert to 1-5 scale
normalized_score = ((avg_sentiment + 1) / 2) * 5
# Determine sentiment category
if avg_sentiment > 0.3:
sentiment_category = 'positive'
elif avg_sentiment < -0.3:
sentiment_category = 'negative'
else:
sentiment_category = 'neutral'
scores[aspect] = {
'score': round(normalized_score, 1),
'count': len(reviews),
'sentiment': sentiment_category,
'raw_sentiment': round(avg_sentiment, 2)
}
return scores
Génération du rapport d’insights final
Finalisez l’exécution du workflow en orchestrant tous les agents et toutes les tâches en séquence. La fonction principale crée des agents spécialisés pour le scraping, l’analyse de sentiment et la génération d’insights. Elle assemble ces agents en un crew avec un traitement séquentiel des tâches.
def analyze_reviews(product_urls):
"""Main function to orchestrate the review intelligence workflow."""
with MCPServerAdapter(server_params) as mcp_tools:
# Create agents
scraper_agent = build_review_scraper_agent(mcp_tools)
sentiment_agent = build_sentiment_analyzer_agent()
insights_agent = build_insights_generator_agent()
# Create tasks
scraping_task = build_scraping_task(scraper_agent, product_urls)
sentiment_task = build_sentiment_analysis_task(sentiment_agent)
insights_task = build_insights_task(insights_agent)
# Assemble crew
crew = Crew(
agents=[scraper_agent, sentiment_agent, insights_agent],
tasks=[scraping_task, sentiment_task, insights_task],
process=Process.sequential,
verbose=True
)
return crew.kickoff()
if __name__ == "__main__":
product_urls = [
"<https://www.amazon.com/product-example-1>",
"<https://www.yelp.com/biz/business-example>"
]
try:
result = analyze_reviews(product_urls)
print("Review Intelligence Analysis Complete!")
print(json.dumps(result, indent=2))
except Exception as e:
print(f"Analysis failed: {str(e)}")
Lancez l’analyse :
python review_intelligence.py

Vous verrez le processus de réflexion de l’agent dans la console au fur et à mesure que chaque agent planifie et exécute ses tâches. Le système affichera comment il procède pour :
- Extraire des données d’avis complètes depuis plusieurs plateformes
- Analyser les écarts concurrentiels et le positionnement sur le marché
- Traiter les schémas de sentiment et attribuer des scores de qualité aux avis
- Identifier les mentions de fonctionnalités et l’intelligence tarifaire
- Fournir des recommandations stratégiques et des alertes de risque

Conclusion
En automatisant l’intelligence des avis avec CrewAI et la puissante infrastructure de données web de Bright Data, vous pouvez accéder à des insights clients plus profonds, rationaliser votre analyse concurrentielle et prendre des décisions commerciales plus éclairées. Avec les produits de Bright Data et ses solutions de Scraping web anti-bot de pointe, vous êtes équipé pour faire évoluer la collecte d’avis et l’analyse de sentiment dans n’importe quel secteur. Pour les dernières stratégies et mises à jour, explorez le blog Bright Data ou approfondissez vos connaissances avec nos guides détaillés de Scraping web pour commencer à maximiser la valeur de vos retours clients dès aujourd’hui.