De la découverte de tendances à la vidéo publiée : à l'intérieur de notre moteur de marketing AI
Alphazed a construit un pipeline de marketing AI entièrement automatisé qui découvre les sujets d'éducation en arabe tendance sur YouTube, les évalue pour leur pertinence, génère des scripts vidéo en arabe, crée des images avec DALL-E, synthétise des voix off avec ElevenLabs, compose des vidéos avec FFmpeg, effectue des vérifications de conformité à la sécurité pour enfants et publie sur YouTube — tout cela avec une étape d'approbation humaine via Slack avant que quoi que ce soit ne soit mis en ligne.
Le pipeline en 13 étapes
Étape 1 : Découvrir les tendances
└─ YouTubeAPI : Récupérer les vidéos tendance dans la catégorie éducation en arabe
Requêtes de recherche : "تعليم", "أطفال", "تعلم", "عربي"
Extraire : titre, vues, vélocité (vues par jour), commentaires, engagement des abonnés
Étape 2 : Évaluer les tendances
└─ TrendScorer : Formule pondérée
Score = (vues × 0.35) + (vélocité × 0.30) + (adéquation_avec_le_sujet × 0.20) + (région × 0.10) + (sécurité × 0.05)
Seuil : Seulement les tendances avec un score >75 continuent
Étape 3 : Idéer
└─ ContentIdeator : Générer un concept vidéo
Entrée : Sujet tendance (ex. "تحفيز الأطفال على تعلم العربية")
Sortie : Concept de vidéo, âge cible, objectif d'apprentissage
Étape 4 : Génération de script
└─ GPT-4o : Générer un script vidéo en arabe
Prompt : "Créer un script de courte vidéo YouTube de 2 minutes sur [sujet] pour des enfants de [âge] en arabe"
Sortie : Script scène par scène avec narration
Étape 5 : Variantes d'introduction
└─ HookGenerator : Créer 3 introductions différentes
Variante 1 : Ouverture basée sur une histoire
Variante 2 : Ouverture basée sur une question
Variante 3 : Ouverture basée sur un défi
Plus tard, tester A/B quelle introduction a le CTR le plus élevé
Étape 6 : Storyboard
└─ StoryboardGenerator : Créer une séquence visuelle
Entrée : Script
Sortie : Découpage plan par plan (20-30 plans pour vidéo de 2 minutes)
Étape 7 : Génération d'images
└─ DALL-E : Générer des visuels pour chaque plan
Prompt : "Enfant apprenant la lettre arabe ب dans une salle de classe colorée"
Sortie : 20-30 images, style assorti
Étape 8 : Synthèse de voix off
└─ ElevenLabs : Générer une narration en arabe
Voix : Voix féminine, adaptée aux enfants, articulation claire
Langue : Arabe (dialecte saoudien pour un attrait large)
Sortie : Audio MP3, marqueurs de discours pour référence de synchronisation labiale
Étape 9 : Composition vidéo
└─ FFmpeg : Assembler la vidéo
Entrée : Images (étape 7) + audio (étape 8) + musique de fond
Sortie : Vidéo MP4, 1080p, optimisée pour YouTube Shorts
Étape 10 : Vérification de conformité
└─ KidsSafetyChecker : Scan LLM pour contenu inapproprié
Vérification : Pas de violence, pas de langage inapproprié, pas de propriété intellectuelle tierce
Sortie : Pass/Fail + notes
Étape 11 : Validation par Slack
└─ SlackBot : Publier l'aperçu vidéo + métadonnées
Équipe revoit : miniature, titre, description, transcription
Options d'approbation : ✓ Publier | 🔄 Réviser | ✗ Rejeter
Étape 12 : Publication
└─ YouTubeAPI : Télécharger sur la chaîne Alphazed
Titre, description, tags, miniature
Visibilité : Publique
Étape 13 : Synchronisation d'analytique
└─ YouTubeAnalytics : Suivre la performance
Métriques : Vues, CTR, durée moyenne de visionnage, partages
Rétroaction : Utiliser les métriques pour améliorer les futurs scripts
Algorithme d'évaluation des tendances (Étape 2)
La formule
def score_trend(trend_data):
"""
trend_data = {
'views': 500000,
'days_since_upload': 7,
'topic': 'تعليم الأطفال العربية',
'language': 'ar',
'age_group': '5-12',
'video_category': 'education'
}
"""
# Composant 1 : Popularité brute (vues)
popularity_score = min(trend_data['views'] / 1_000_000, 1.0) * 100 # Limité à 100
# Maximum : 1M vues = 100 points
# Composant 2 : Vélocité (taux de croissance)
velocity = trend_data['views'] / trend_data['days_since_upload']
velocity_score = min(velocity / 100_000, 1.0) * 100 # Limité à 100
# 100k vues/jour = 100 points
# Composant 3 : Adéquation avec le sujet
relevant_keywords = ['عربية', 'قرآن', 'أطفال', 'تعليم', 'لغة']
keyword_matches = sum(1 for kw in relevant_keywords if kw in trend_data['topic'])
topic_fit_score = (keyword_matches / len(relevant_keywords)) * 100
# Composant 4 : Pertinence régionale
# Les vidéos tendance au MENA, Asie du Sud, Malaisie ont un score plus élevé
region_score = get_region_weight(trend_data.get('region', 'unknown')) * 100
# Composant 5 : Sécurité (vérification rapide par LLM)
safety_score = 100 if is_kid_safe(trend_data['title']) else 0
# Somme pondérée
final_score = (
popularity_score * 0.35 +
velocity_score * 0.30 +
topic_fit_score * 0.20 +
region_score * 0.10 +
safety_score * 0.05
)
return {
'overall_score': final_score,
'pass_threshold': final_score >= 75,
'breakdown': {
'popularity': popularity_score,
'velocity': velocity_score,
'topic_fit': topic_fit_score,
'region': region_score,
'safety': safety_score
}
}
Exemple : Évaluation d'une vidéo tendance
Tendance : "Comment enseigner les lettres arabes aux enfants à la maison"
Métriques :
- Vues : 500,000
- Jours : 7
- Mots clés : Contient "enseigner", "enfants", "arabe"
- Région : États-Unis + Canada
- Sécurité : Propre
Évaluation :
- Popularité : 50 (500k/1M limité)
- Vélocité : 71 (500k vues / 7 jours = ~71k/jour)
- Adéquation avec le sujet : 67 (3 des 5 mots clés correspondent)
- Région : 60 (diaspora des États-Unis)
- Sécurité : 100 (propre)
Final : (50 × 0.35) + (71 × 0.30) + (67 × 0.20) + (60 × 0.10) + (100 × 0.05)
= 17.5 + 21.3 + 13.4 + 6 + 5
= 63.2 → ÉCHEC (sous le seuil de 75)
Exemple de notation plus élevée
Tendance : "تعليم القرآن للأطفال - طرق فعالة"
Métriques :
- Vues : 2,000,000 (viral)
- Jours : 3 (croissance rapide)
- Mots clés : "قرآن", "أطفال", "تعليم" (tous correspondent)
- Région : MENA + Asie du Sud
- Sécurité : Propre
Évaluation :
- Popularité : 100 (limité)
- Vélocité : 100 (2M/3 jours = 666k/jour, limité)
- Adéquation avec le sujet : 100 (3 sur 3 mots clés)
- Région : 90 (MENA + diaspora)
- Sécurité : 100
Final : (100 × 0.35) + (100 × 0.30) + (100 × 0.20) + (90 × 0.10) + (100 × 0.05)
= 35 + 30 + 20 + 9 + 5
= 99 → PASSER ! (ajustement excellent)
Humain dans la boucle : Approbation obligatoire
Avant que n'importe quelle vidéo soit publiée, elle passe à Slack pour une révision par l'équipe :
Notification Slack
🎥 [Pipeline] Prêt pour révision : Vidéo #47
Titre : "كيف تعلم ابنك حروف العربية بسهولة"
Score du sujet : 89/100
Vues estimées (modèle ML) : 85,000-120,000
[Aperçu vidéo] [Voir transcription] [Voir analyse]
Statut de conformité : ✅ Passe
- Pas de violence : ✓
- Approprié pour l'âge : ✓
- Pas de violations de la propriété intellectuelle : ✓
Actions : ✓ Publier | 🔄 Réviser | ✗ Rejeter
Portes spéciales
- Contenu du Coran : Révision académique supplémentaire
- Nouvelles tendances : Révision manuelle bonus
- Tendances à grande vélocité : Priorité accrue du pipeline
Architecture Ports & Adapters
Le pipeline est conçu pour échanger les fournisseurs sans toucher à la logique métier :
# src/services/content_generation/interfaces.py
class TextGeneratorInterface:
def generate_script(self, topic: str, age_group: str) -> str:
pass
class OpenAIScriptGenerator(TextGeneratorInterface):
def generate_script(self, topic: str, age_group: str) -> str:
# Utiliser l'API OpenAI
pass
class ClaudeScriptGenerator(TextGeneratorInterface):
def generate_script(self, topic: str, age_group: str) -> str:
# Utiliser l'API Anthropic
pass
# Au moment de l'exécution, injecter le bon fournisseur
script_generator = ClaudeScriptGenerator() # Facile à échanger
script = script_generator.generate_script('تعليم العربية', '5-7')
Avantage : Si OpenAI tombe en panne, passez à Claude avec un changement de configuration.
Résultats
Volume
- Entrée : 50-100 sujets tendance par semaine
- Taux de passage du seuil : ~20% (15-20 tendances passent l'évaluation)
- Publié : ~3-4 vidéos par semaine
- Sortie annuelle : 150-200 vidéos
Performance (Données réelles)
- Vues moyennes par vidéo : 12,000-45,000
- CTR moyen : 8-12% (industrie : 2-5%)
- Temps moyen de visionnage : 65-85% de la longueur de la vidéo (industrie : 40-50%)
- Conversion (vues → installations d'applications) : 3-5% (industrie : 0.5-1%)
Coût
- Génération AI par vidéo : $3-5 (GPT, DALL-E, ElevenLabs)
- Révision humaine : 15 min × $25/heure = $6.25
- Hébergement YouTube : Gratuit
- Total par vidéo : ~$10
- Coût par installation : ~$2-3 (calculé à partir de la conversion 3-5%)
FAQ
Q: Que faire si un script généré est inexact sur l'arabe ? R: L'étape d'approbation humaine détecte cela. Si le script comporte des erreurs grammaticales ou une insensibilité culturelle, le réviseur sélectionne "Réviser" et fournit des notes. Le pipeline régénère avec des retours.
Q: Cela viole-t-il les politiques d'automatisation de YouTube ? R: Non. Nous avons une révision humaine avant la publication (portail Slack obligatoire). YouTube autorise le contenu assisté par AI tant qu'il n'est pas entièrement automatisé sans surveillance.
Q: Les vidéos générées par AI peuvent-elles bien se classer dans les recherches ? R: Oui, si elles sont de haute qualité (ce qui est notre cas). L'algorithme ne pénalise pas la génération par AI — il récompense le temps de visionnage, le CTR et l'engagement. Nos vidéos surpassent la moyenne.


