Vous avez créé l'invite vidéo IA parfaite. La scène est cinématographique, le travail de caméra est délibéré et les détails visuels sont précis. Vous la soumettez à l'API de Seedance 2 – et elle est rejetée. Aucune explication claire. Aucune violation de politique spécifique. Juste une erreur générique de "politique de contenu".
Cela arrive à 37% des requêtes API de Seedance 2, selon les données d'utilisation des principales plateformes hébergeant le service. Le plus frustrant ? La plupart de ces invites rejetées ne violent en fait pas les politiques de contenu de ByteDance. Elles déclenchent un faux positif dans le filtre de contenu basé sur un LLM qui évalue chaque requête avant que la génération vidéo ne commence.
Contrairement aux filtres traditionnels basés sur des mots-clés, Seedance 2 utilise un modèle linguistique pour interpréter l'intention et le contexte de votre invite entière. Cela crée de nouveaux défis pour les développeurs qui créent des applications au-dessus de l'API : vous ne pouvez pas simplement maintenir une liste noire de mots interdits. Vous devez comprendre comment le filtre lit vos invites comme des scènes.
Ce guide décompose les schémas derrière ce taux de rejet de 37 % et vous montre comment concevoir des invites qui passent la modération de contenu du premier coup. Nous couvrirons l'architecture technique du système de filtrage, les stratégies éprouvées pour construire un contexte sûr, et comment tester systématiquement vos invites à l'aide d'outils de développement API.
Comprendre le système de filtre de contenu de Seedance 2
Comment fonctionne réellement le filtre
La modération de contenu de Seedance 2 ne recherche pas de mots-clés. Elle utilise un grand modèle linguistique pour lire votre invite et évaluer le contexte de la scène que vous décrivez.
バイトダンスの最新モデル「Seeddance 2.0」が、海外で「狂ってる」と話題に。
— チャエン | デジライズ CEO《重要AIニュースを毎日最速で発信⚡️》 (@masahirochaen) February 10, 2026
何でもできてしまう…いろいろカオス
プロンプト例:
「図1のキャラが世界武術大会で図2のキャラと対戦する」
※著作権違反になるため、解放されても以下のような動画は作ってはいけませんpic.twitter.com/zkdsNUdSgv
Cela change tout concernant l'ingénierie des invites.
Le filtre interprète :
- L'intention : Qu'est-ce que la scène essaie de dépeindre ?
- Le contexte : Quel cadre créatif ou narratif entoure l'action ?
- L'ambiguïté : Y a-t-il plusieurs façons d'interpréter cette invite ?
Un mot comme "fusil" ne signalera pas automatiquement votre invite. Mais "une personne tire avec un fusil" sans contexte environnant le fera, car le filtre n'a rien d'autre à analyser qu'une action violente isolée.
Le but n'est pas de supprimer des mots. Le but est de construire un contexte qui soit clairement non-dangereux.
Le processus d'évaluation du LLM
Lorsque vous soumettez une invite via l'API Seedance 2, voici ce qui se passe :
- Analyse d'image (si une image est fournie) : La détection de visage s'exécute en premier ; les visages photographiques sont rejetés immédiatement.
- Analyse de l'invite : Le LLM lit l'intégralité de votre invite textuelle comme une seule scène.
- Classification de l'intention : Le modèle évalue si la scène dépeint un contenu interdit.
- Évaluation du contexte : Le modèle vérifie si un cadrage cinématographique/créatif est présent.
- Décision finale : Réussite → la génération vidéo commence ; Échec → l'API renvoie une erreur 400.
Ce processus en plusieurs étapes signifie que vous pouvez échouer à différents points de contrôle. Comprendre où votre invite échoue vous aide à la corriger.
Catégories de contenu actuellement interdites
Basé sur les politiques mises à jour de ByteDance (février 2026) :
| Catégorie | Exemples | Statut |
|---|---|---|
| Visages humains réels | Photos de personnes identifiables | Strictement bloqué |
| Ressemblances de célébrités | Acteurs nommés, personnalités publiques | Bloqué |
| Personnages protégés par le droit d'auteur | Disney, Marvel, etc. | Bloqué |
| Violence sans contexte | Actions violentes isolées | Examen minutieux |
| Mineurs dans n'importe quel contexte | Descripteurs d'âge + toute action | Sensibilité maximale |
| Contenu politique | Politiciens nommés, drapeaux | Bloqué |
| Contenu explicite | Représentations sexuelles ou graphiques | Bloqué |
L'idée clé : le contexte compte plus que le contenu. Une scène de film de guerre historiquement exacte peut passer ; un pistolet isolé sans contexte ne le peut pas.
Tester l'API Seedance 2 avec Apidog
Avant de plonger dans les stratégies d'invite, mettons en place des tests systématiques. Lorsque vous travaillez avec des filtres de contenu, vous devez tester les variations d'invite à grande échelle et suivre ce qui passe ou échoue.

Configuration de l'API Seedance 2 dans Apidog
Étape 1 : Créer un nouveau projet
- Ouvrez Apidog et créez un projet nommé "Test API Seedance 2".
- Cela permet d'organiser tous vos points de terminaison de génération vidéo.

Étape 2 : Configurer l'authentification
L'API Seedance 2 (accessible via des plateformes comme WaveSpeed, fal.ai ou Replicate) utilise généralement l'authentification par jeton Bearer :
- Accédez aux paramètres d'environnement dans Apidog.
- Ajoutez une variable d'environnement :
- Nom :
SEEDANCE_API_KEY - Valeur : Votre jeton API
- Marquez comme "Sensible"

Étape 3 : Créer un point de terminaison de génération vidéo
Ajoutez une nouvelle requête POST avec ces paramètres :
- URL :
https://api.fal.ai/v1/seedance/video(ou le point de terminaison de votre fournisseur) - En-têtes :
Authorization:Bearer {{SEEDANCE_API_KEY}}Content-Type:application/json
Étape 4 : Créer une collection d'invites de test
Créez plusieurs requêtes sauvegardées pour tester les variations d'invite :
{
"prompt": "plan large cinématographique, grain de film 35mm, anamorphique 2.39:1, un cavalier à cheval dans un vaste paysage enneigé, lumière diffuse et nuageuse, tons désaturés et sourds",
"duration": 10,
"aspect_ratio": "16:9",
"quality": "high"
}
Avec Apidog, vous pouvez :
- Tester les variations côte à côte : Clonez les requêtes et modifiez une variable à la fois.
- Suivre les schémas de rejet : Enregistrez les requêtes échouées avec les codes d'erreur.
- Automatiser les tests de régression : Vérifiez que les invites précédemment réussies fonctionnent toujours après les mises à jour de l'API.
- Générer du code client : Exportez les invites fonctionnelles en Python, JavaScript ou cURL.
Essayez Apidog gratuitement pour construire votre flux de travail de test d'invites Seedance 2.
Stratégie 1 : Construire un contexte sûr autour des éléments sensibles
Ne supprimez pas les éléments sensibles de votre scène. N'édulcorez pas les moments dramatiques. Au lieu de cela, entourez-les d'un contexte qui rend l'intention indubitable.
Le problème : les actions isolées
Le LLM lit votre invite entière comme une scène unifiée. Si la scène globale est perçue comme un voyage paisible, un moment culturel ou un récit cinématographique, une seule action en son sein ne la brisera pas.
❌ Invite échouée :
une personne tire avec un fusil en l'air
Pourquoi ça échoue :
- Pas de contexte de scène
- Pas de cadrage créatif
- Pas de but pour l'action
- Intention ambiguë
Le filtre privilégie la prudence car il n'a rien d'autre à évaluer.
✅ Invite réussie :
un cavalier à cheval galopant à travers un vaste paysage montagneux enneigé, poncho flottant au vent, le cavalier lève un vieux fusil au-dessus de sa tête et tire une fois vers le ciel gris en guise de signal, le son résonnant dans la vallée vide, cinématographique, grain de film 35mm, anamorphique 2.39:1
Pourquoi ça passe :
- Contexte de voyage cinématographique
- Objectif clair (signalisation)
- Cadre culturel (poncho, vieux fusil)
- L'esthétique cinématographique ancre l'intention créative
- Cadrage en plan large d'établissement
Même action. Contexte différent. Le LLM lit la scène complète et comprend que vous décrivez un plan de film, pas une représentation de violence réelle.
Le Principe : Ne réduisez pas votre invite, développez-la. Donnez au filtre suffisamment de contexte pour comprendre ce que vous créez.
Stratégie 2 : Décrire les personnages par leur rôle, pas par leur âge
Cette stratégie s'applique lorsque vous utilisez des entrées d'image comme images de référence. Lorsque Seedance 2 a déjà un visuel de votre personnage, vous n'avez pas besoin de décrire qui il est – l'image le fait. Votre invite décrit ce qu'il fait.
Le filtre de protection des mineurs
Seedance 2 dispose de filtres de protection des mineurs extrêmement stricts. Dès que le LLM interprète un personnage comme un enfant, l'ensemble de l'invite est examiné avec une sensibilité maximale, même si l'image aurait pu passer d'elle-même.
Mots qui déclenchent une haute sensibilité :
- "garçon", "fille", "enfant", "gamin", "jeune"
- "adolescent", "jeunesse", "mineur"
- Nombres d'âge inférieurs à 18 ans
- "petit enfant", "tout-petit"
La solution : descriptions basées sur les rôles
Faites référence au personnage par son rôle dans la scène. L'image porte déjà l'identité visuelle.
❌ Invite échouée (avec entrée d'image) :
un jeune garçon chevauchant un cheval à travers des montagnes enneigées
Pourquoi ça échoue :
- "jeune garçon" déclenche un examen maximal.
- Tout le reste (cheval, montagnes, neige) est évalué à travers le prisme de la sécurité des mineurs.
- Même les activités innocentes deviennent suspectes.
✅ Invite réussie (avec la même image) :
un cavalier sur un cheval gris se déplaçant à travers des montagnes enneigées, portant un poncho rayé coloré et des bottes en cuir, une sacoche usée sur le cheval
Pourquoi ça passe :
- L'image montre qui est le personnage.
- L'invite décrit l'action et l'environnement.
- Le filtre lit "cavalier" et évalue normalement.
- Aucun examen basé sur l'âge.
Plus d'exemples
❌ Échoue :
un enfant seul dans la nature
✅ Réussit :une petite silhouette enveloppée dans une cape de laine, debout dans un vaste paysage montagneux, ciel couvert, plan d'établissement large
Le principe : Lorsque vous utilisez des entrées d'image, laissez l'image véhiculer l'identité. Votre invite décrit l'action et la scène, jamais l'âge du personnage.
Stratégie 3 : Chaque phrase doit construire le contexte
La Stratégie 1 dit de construire le contexte. Cette stratégie dit de ne pas le gaspiller.
Le LLM évalue l'ensemble de votre invite comme une seule scène. Chaque phrase renforce le contexte sûr que vous construisez, ou introduit du bruit que le filtre pourrait mal interpréter.
Ce qu'il faut couper
Ces éléments n'aident pas à passer la modération :
- L'histoire de fond : "Après des années de recherche..."
- La motivation du personnage : "poussé par la vengeance..."
- La narration émotionnelle : "se sentant perdu et seul..."
- Les références politiques : "se battant pour la liberté..."
- Les pensées intérieures : "se demandant s'ils allaient survivre..."
Le filtre ne se soucie pas de pourquoi votre personnage est dans les montagnes. Il se soucie de ce que la caméra voit.
Le Principe : Soyez dense, pas long. Chaque phrase doit soit décrire ce que la caméra voit, soit ancrer la scène comme créative/cinématographique. Si une phrase ne fait ni l'un ni l'autre, coupez-la.
Invites JSON structurées
Une façon d'appliquer cette discipline est de structurer votre invite en JSON. L'API Seedance 2 accepte les invites formatées en JSON, et séparer votre monde visuel de la description de votre plan permet de tout organiser :
{
"visual_world": {
"light": "lumière de neige plate et nuageuse, pas de soleil direct, ombres douces et diffuses",
"color": "tons naturels désaturés et sourds, blancs et gris froids, tons chauds uniquement sur la peau et le tissu",
"film": "grain 35mm, objectifs vintage Cooke, douce halation sur les hautes lumières, anamorphique 2.39:1",
"atmosphere": "calme, vaste, isolé"
},
"sequence": {
"duration": "10 secondes",
"pacing": "commence immobile, monte en coupes rapides, se termine par une immobilité soudaine",
"shots": {
"shot_1": {
"duration": "3 secondes",
"camera": "statique, fixée, sans mouvement",
"action": "Cavalier en poncho rayé coloré assis sur un cheval gris au bord d'un ruisseau glacé, cheval buvant, pics enneigés en arrière-plan, ciel couvert, complètement immobile",
"transition": "CUT BRUT"
},
"shot_2": {
"duration": "3 secondes",
"camera": "plan large par derrière, angle bas",
"action": "Cavalier sur cheval gris galopant vite dans la neige profonde, neige projetée, sapins sombres flanquent les deux côtés",
"transition": "CUT BRUT"
},
"shot_3": {
"duration": "4 secondes",
"camera": "composition large et fixe, verrouillée",
"action": "Champ de neige plat et ouvert, un loup gris immobile sur la gauche faisant face à droite, le cavalier sur le cheval arrêté sur la droite faisant face à gauche, tous deux immobiles, vapeur d'haleine s'élevant, immobilité totale"
}
}
}
}
Chaque champ sert un objectif. Rien n'est gaspillé. Le monde visuel définit le contexte cinématographique une seule fois, et chaque plan est une description claire et ciblée de ce que la caméra voit.
Stratégie 4 : Entrées d'image et détection de visage
Seedance 2 détecte activement les visages dans les images téléchargées et les rejette avant même que le LLM n'évalue votre invite. C'est la principale raison de rejet pour les requêtes avec des entrées d'image.
Le système de détection de visage
ByteDance a mis en œuvre une détection faciale stricte en réponse aux préoccupations concernant les deepfakes et à la pression légale des studios d'Hollywood. Le système :
- Analyse les images téléchargées pour les traits du visage.
- Détecte les visages même de profil ou partiellement obscurcis.
- Rejette immédiatement les visages photographiques.
- Autorise les visages illustrés/stylisés avec une tolérance variable.
Ce qui est bloqué
❌ Rejet garanti :
- Visages photographiques de face
- Photos de profil montrant des traits du visage
- Visages partiellement masqués (lunettes de soleil, masques)
- Photos de groupe avec des personnes identifiables
- Photos ou captures d'écran de célébrités
✅ Peut passer :
- Dos de la tête, épaules visibles
- Plans larges où la figure représente <5% du cadre
- Visages illustrés (style artistique, pas photos)
- Personnages rendus en 3D (stylisés, non photoréalistes)
- Silhouettes sans détails faciaux
Stratégies de correction
Option 1 : Recadrer pour supprimer les visages
Montrer le personnage de dos :
- Nuque
- Épaules
- Détails vestimentaires
- Environnement autour d'eux
Option 2 : Utiliser des plans larges
Reculez la caméra pour que les traits du visage
ne soient pas détectables par l'algorithme :
- Paysage avec petite silhouette
- Accent sur l'environnement
- Échelle et atmosphère
Option 3 : Remplacer par une illustration
Convertir d'abord la référence photo en style illustré :
- Utilisez un outil IA image-vers-image
- Appliquez des filtres artistiques lourds
- Supprimez les caractéristiques biométriques photoréalistes
Si votre image continue d'être rejetée, le détecteur de visage se déclenche avant que le LLM ne lise votre invite. Corrigez l'image d'abord, puis soumettez-la à nouveau.
Stratégie 5 : Utiliser le langage cinématographique comme ancrage contextuel
Lorsque votre invite ressemble à une direction cinématographique — avec des angles de caméra, des spécifications d'objectif, des descriptions d'éclairage et des rapports d'aspect — le LLM interprète l'intégralité de l'invite comme un contexte de production créative/cinématographique.
Ce contexte est intrinsèquement plus sûr. Les films dépeignent toutes sortes de scènes dramatiques. Le filtre est plus permissif lorsqu'il lit une invite comme une description de plan plutôt que comme un scénario du monde réel.
Vocabulaire cinématographique efficace
Angles et mouvements de caméra :
- "plan large d'établissement"
- "caméra fixe, sans mouvement"
- "lente poussée de travelling"
- "plan aérien au drone descendant"
- "plan de suivi par derrière"
Objectif et format :
- "grain de film 35mm"
- "anamorphique 2.39:1"
- "objectifs vintage Cooke"
- "faible profondeur de champ, f/2.8"
- "compression long objectif, 85mm"
Descripteurs d'éclairage :
- "lumière diffuse et nuageuse"
- "contre-jour heure dorée"
- "lumière douce de fenêtre, sans ombres dures"
- "lumières pratiques tungstène"
- "éclairage motivé par source de feu"
Esthétique cinématographique :
- "tons naturels désaturés et sourds"
- "douce halation sur les hautes lumières"
- "texture subtile de grain de film"
- "étalonnage des couleurs vintage"
Avant et après
❌ Sans cadrage cinématographique :
une personne à cheval tire avec un pistolet dans les montagnes
✅ Avec cadrage cinématographique :
plan large cinématographique, grain de film 35mm, anamorphique 2.39:1, un cavalier à cheval dans un vaste paysage enneigé, lumière diffuse et nuageuse, le cavalier lève un fusil et tire une fois en l'air en guise de signal, fumée s'élevant, son résonnant, tons désaturés et sourds
Même contenu. Mais le cadrage cinématographique indique au LLM : c'est un film, pas une menace.
Le Principe : Langage cinématographique = contexte créatif = tolérance de filtre plus élevée.
Exemples d'implémentation API
Voici comment implémenter ces stratégies lors de l'appel programmatique de l'API Seedance 2.
Exemple Python : Tester les variations d'invite
import requests
import os
API_KEY = os.environ.get("SEEDANCE_API_KEY")
BASE_URL = "https://api.fal.ai/v1/seedance/video"
def generate_video(prompt, test_name):
"""
Soumet une requête de génération vidéo et renvoie la réponse.
"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"prompt": prompt,
"duration": 10,
"aspect_ratio": "16:9",
"quality": "high"
}
try:
response = requests.post(BASE_URL, json=payload, headers=headers)
if response.status_code == 200:
print(f"✅ {test_name} RÉUSSI")
return response.json()
else:
print(f"❌ {test_name} ÉCHOUÉ : {response.status_code}")
print(f"Erreur : {response.json().get('error', 'Erreur inconnue')}")
return None
except Exception as e:
print(f"❌ {test_name} ERREUR : {str(e)}")
return None
# Tester différentes stratégies d'invite
prompts = {
"minimal_context": "personne tire fusil",
"basic_context": "chasseur tire fusil dans forêt",
"cinematic_context": """plan large cinématographique, grain de film 35mm,
chasseur expérimenté dans une clairière de forêt automnale, lève un fusil vintage
et tire sur une cible lointaine, lumière de l'heure dorée filtrant à travers les arbres,
anamorphique 2.39:1, tons terreux sourds"""
}
# Lancer les tests
results = {}
for test_name, prompt in prompts.items():
results[test_name] = generate_video(prompt, test_name)
# Analyser les résultats
passing_rate = sum(1 for r in results.values() if r is not None) / len(results)
print(f"\nTaux de réussite : {passing_rate * 100:.1f}%")
Exemple JavaScript : Invites JSON structurées
const SEEDANCE_API_KEY = process.env.SEEDANCE_API_KEY;
const BASE_URL = 'https://api.fal.ai/v1/seedance/video';
async function generateVideoWithStructure(promptStructure) {
const response = await fetch(BASE_URL, {
method: 'POST',
headers: {
'Authorization': `Bearer ${SEEDANCE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
prompt: promptStructure,
duration: 10,
aspect_ratio: '16:9',
}),
});
if (!response.ok) {
const error = await response.json();
console.error('Échec de la génération :', error);
return null;
}
return await response.json();
}
// Exemple d'invite structurée
const structuredPrompt = {
visual_world: {
light: 'lumière de neige plate et nuageuse, ombres douces et diffuses',
color: 'tons naturels désaturés et sourds, blancs et gris froids',
film: 'grain 35mm, objectifs vintage Cooke, anamorphique 2.39:1',
atmosphere: 'calme, vaste, isolé',
},
sequence: {
duration: '10 secondes',
shots: {
shot_1: {
duration: '5 secondes',
camera: 'plan large statique, fixe',
action: 'Cavalier en poncho rayé sur cheval gris au bord d\'un ruisseau glacé, cheval buvant, pics enneigés en arrière-plan, complètement immobile',
},
shot_2: {
duration: '5 secondes',
camera: 'plan large par derrière, angle bas',
action: 'Cavalier à cheval galopant dans la neige profonde, neige projetée, sapins sombres flanquant les deux côtés',
},
},
},
};
// Générer la vidéo
const result = await generateVideoWithStructure(structuredPrompt);
console.log('Résultat de la génération vidéo :', result);
Restrictions de contenu actuelles (février 2026)
Basé sur les politiques mises à jour de ByteDance et les rapports de l'industrie, voici les restrictions actuelles :
Strictement interdit
- Visages humains réels dans les images : Les visages photographiques sont immédiatement rejetés.
- Ressemblances de célébrités : Acteurs, musiciens, personnalités publiques nommées.
- Personnages protégés par le droit d'auteur : Disney, Marvel, DC, Nintendo, etc.
- Contenu politique : Politiciens nommés, drapeaux, symboles politiques.
- Contenu sexuel explicite : Nudité, actes sexuels, imagerie suggestive.
- Violence graphique : Gore, torture, violence extrême sans contexte.
- Mineurs dans n'importe quel contexte : Tout descripteur d'âge + toute action.
Examen minutieux (contexte requis)
- Armes : Nécessitent un cadrage cinématographique clair et un objectif précis.
- Scènes de conflit : Nécessitent une esthétique cinématographique et un ancrage créatif.
- Figures isolées : Mieux dans un contexte environnemental.
- Actions ambiguës : Clarifier avec la description de la scène.
Changements récents (2026)
- Reconstruction vocale suspendue : La fonctionnalité qui recréait des voix à partir de photos a été supprimée en raison de préoccupations concernant la vie privée.
- Vérification obligatoire : Certaines plateformes exigent une vérification de l'utilisateur avant d'accéder aux fonctionnalités avancées.
- Détection IP améliorée : Des contrôles plus stricts pour le matériel protégé par le droit d'auteur.
- Surveillance en temps réel : Les vidéos générées sont filtrées pour détecter les utilisations abusives.
Contexte légal
ByteDance est soumise à une pression juridique continue de la part des studios d'Hollywood concernant l'utilisation non autorisée de matériel protégé par le droit d'auteur. La Motion Picture Association a déclaré que Seedance 2.0 avait procédé à une "utilisation non autorisée à grande échelle" d'œuvres protégées par le droit d'auteur pour les données d'entraînement.
Ces restrictions sont susceptibles de se renforcer davantage en réponse aux développements juridiques.
Résumé des meilleures pratiques
Faites ceci
✅ Construisez un contexte cinématographique : Utilisez la terminologie du cinéma, les angles de caméra, les descriptions d'éclairage.
✅ Décrivez ce que la caméra voit : Concentrez-vous uniquement sur les éléments visuels.
✅ Utilisez des descriptions de personnages basées sur les rôles : "cavalier", "silhouette", "voyageur" au lieu des âges.
✅ Structurez les invites en JSON : Séparez le monde visuel des descriptions de plans.
✅ Testez systématiquement : Utilisez Apidog pour suivre ce qui passe ou échoue.
✅ Recadrez les visages des images : Montrez les personnages de dos ou en plans larges.
✅ Donnez un objectif clair aux actions : "tire avec un fusil en guise de signal" et non juste "tire avec un fusil".
✅ Utilisez des références illustrées : Les images stylisées passent plus souvent que les photos.
Ne faites pas ceci
❌ N'utilisez pas de descripteurs d'âge : "garçon", "fille", "enfant", "jeune" déclenchent un examen maximal.
❌ N'incluez pas d'histoire de fond : Le filtre ne se soucie pas de la motivation des personnages.
❌ Ne téléchargez pas de visages photographiques : Rejet instantané.
❌ Ne laissez pas les actions ambiguës : Donnez du contexte pour chaque élément dramatique.
❌ Ne sautez pas le cadrage cinématographique : Le langage cinématographique crée un contexte sûr.
❌ N'utilisez pas de mots-clés nus : "personne tire fusil" échouera ; construisez une scène.
❌ Ne faites pas référence à des célébrités : Les personnes nommées ou les personnages protégés par le droit d'auteur sont bloqués.
Prêt à créer des flux de travail fiables de génération vidéo IA ? Téléchargez Apidog pour tester systématiquement les invites de l'API Seedance 2, déboguer les erreurs de modération de contenu et créer des intégrations prêtes pour la production avec des tests visuels et une validation automatisée.
