seo-generator-server/plan.md

334 lines
10 KiB
Markdown

🚀 Plan d'Implémentation Incrémental - Anti-Détection IA
📋 Vue d'ensemble des 6 niveaux
Niveau
Technique
Temps dev
Gain attendu
Test métrique
1
Selective Enhancement
4h
15-20% ↓ détection
GPTZero simple
2
Pattern Breaking
3h
20-25% ↓ détection
2 détecteurs
3
Adversarial Prompting
2h
25-30% ↓ détection
3 détecteurs
4
Cross-Linguistic
6h
35-40% ↓ détection
Tests poussés
5
Temporal + Personality
4h
40-45% ↓ détection
Validation humaine
6
Full Arsenal
3h
< 30% détection
Tests industriels
🎯 NIVEAU 1 : Selective Enhancement IMPLÉMENTÉ
Base solide - Faible risque - **REFACTORISÉ EN ARCHITECTURE MODULAIRE**
## ✅ **STATUT: ARCHITECTURE REFACTORISÉE TERMINÉE**
### 🏗️ **NOUVELLE ARCHITECTURE MODULAIRE**
```
lib/ContentGeneration.js ← Orchestrateur principal
lib/generation/
├── InitialGeneration.js ← ÉTAPE 1: Claude (génération base)
├── TechnicalEnhancement.js ← ÉTAPE 2: GPT-4 (termes techniques)
├── TransitionEnhancement.js ← ÉTAPE 3: Gemini (fluidité)
└── StyleEnhancement.js ← ÉTAPE 4: Mistral (personnalité)
```
### 🔥 **IMPLÉMENTATION RÉELLE**
```javascript
// ORCHESTRATEUR PRINCIPAL - lib/ContentGeneration.js
async function generateWithContext(hierarchy, csvData, options = {}) {
// ÉTAPE 1: Génération initiale (Claude)
const step1Result = await generateInitialContent({ hierarchy, csvData });
// ÉTAPE 2: Enhancement technique (GPT-4) - Optionnel
const step2Result = await enhanceTechnicalTerms({
content: step1Result.content, csvData
});
// ÉTAPE 3: Enhancement transitions (Gemini) - Optionnel
const step3Result = await enhanceTransitions({
content: step2Result.content, csvData
});
// ÉTAPE 4: Enhancement style (Mistral) - Optionnel
const finalResult = await applyPersonalityStyle({
content: step3Result.content, csvData
});
return finalResult.content;
}
```
### 🎛️ **MODES D'UTILISATION**
```javascript
// Mode complet (4 étapes)
const result = await generateWithContext(hierarchy, csvData);
// Mode simple (Claude uniquement)
const result = await generateSimple(hierarchy, csvData);
// Mode avancé (choisir étapes)
const result = await generateAdvanced(hierarchy, csvData, {
technical: true, // GPT-4 ON
transitions: false, // Gemini OFF
style: true // Mistral ON
});
// Mode diagnostic
const diagnostic = await diagnosticPipeline(hierarchy, csvData);
```
### ✅ **AVANTAGES OBTENUS**
- **Séparation claire** : 1 fichier = 1 étape = 1 LLM = 1 responsabilité
- **Debug facile** : Chaque étape testable indépendamment
- **Fallback robuste** : Skip automatique si étape échoue
- **Logs détaillés** : Tracing complet par étape
- **Performance** : Stats précises par enhancement
### 📋 **TESTS À EFFECTUER**
[ ] Tester nouvelle architecture avec generateSimple()
[ ] Tester pipeline complet avec generateWithContext()
[ ] Valider chaque étape individuellement
[ ] Comparer performance vs ancien système
[ ] Tests anti-détection sur GPTZero
### ✅ **CRITÈRES DE VALIDATION**
Architecture modulaire implémentée
4 étapes séparées et autonomes
Interface standardisée entre étapes
Modes de fonctionnement multiples
Compatibilité rétroactive maintenue
### 🚀 **PRÊT POUR NIVEAU 2**
Avec cette base solide, on peut maintenant implémenter les Pattern Breaking techniques.
🔧 NIVEAU 2 : Pattern Breaking Simple
Premières techniques adversariales
Objectif
Casser les patterns syntaxiques typiques des LLMs.
Implémentation
// AJOUTER dans ContentAssembly.gs
function applyBasicPatternBreaking(content, personality) {
let result = content;
// Technique 1: Variation longueur phrases
result = varyStructures(result, 0.3);
// Technique 2: Remplacement mots LLM typiques
result = replaceLLMFingerprints(result, personality);
// Technique 3: Connecteurs plus humains
result = humanizeTransitions(result);
return result;
}
// Pattern Breaking Functions
function varyStructures(text, intensity) {
const sentences = text.split('. ');
return sentences.map(s => {
if (Math.random() < intensity) {
if (s.length > 100) return splitSentence(s);
if (s.length < 30) return mergePrevious(s, sentences);
}
return s;
}).join('. ');
}
Tests à effectuer
[ ] A/B test sur 20 articles : Niveau 1 vs Niveau 2
[ ] Tests sur 3 détecteurs : GPTZero, Originality.ai, CopyLeaks
[ ] Validation lisibilité (score Flesch-Kincaid)
[ ] Test cohérence sémantique
Critères de validation
Réduction détection : -20% vs Niveau 1
Lisibilité maintenue : Score Flesch > 60
✅ Cohérence : Pas de ruptures logiques
✅ SEO intact : Mots-clés préservés
⚔️ NIVEAU 3 : Adversarial Prompting
Optimisation des prompts anti-détection
Objectif
Modifier les prompts pour que les LLMs génèrent naturellement du contenu moins détectable.
Implémentation
// MODIFIER dans ContentGeneration.gs
function createAdversarialPrompt(element, csvData, detectorTarget = 'general') {
const basePrompt = createPrompt(element, csvData);
const adversarialInstructions = {
general: `
CONTRAINTES ANTI-DÉTECTION :
- Évite ces mots typiques IA : "optimal", "comprehensive", "seamless", "robust"
- Varie longueurs phrases : courtes ET longues mélangées
- Utilise expressions françaises familières
- Ajoute imperfections légères (répétitions naturelles)
- Change angle 1-2 fois dans texte`,
gptZero: `
SPÉCIAL ANTI-GPTZERO :
- Surprends avec tournures inattendues
- Évite phrases trop prévisibles
- Utilise synonymes moins évidents`,
originality: `
SPÉCIAL ANTI-ORIGINALITY :
- Vocabulaire très varié
- Structures phrases irrégulières
- Changements angles fréquents`
};
return `${basePrompt}\n\n${adversarialInstructions[detectorTarget]}`;
}
Tests à effectuer
[ ] Prompts normaux vs adversariaux sur 30 éléments
[ ] Tests spécialisés par détecteur
[ ] Mesure "perplexité" avec API
[ ] Validation qualité contenu par humain
Critères de validation
✅ Détection réduite : -25% vs Niveau 2
✅ Qualité maintenue : Note humaine ≥ 8/10
✅ Diversité augmentée : Plus de variation vocabulaire
✅ Spécialisation : Chaque prompt efficace contre son détecteur cible
🌍 NIVEAU 4 : Cross-Linguistic Wash
Technique avancée multi-langue
Objectif
Utiliser la traduction multi-langue pour casser les patterns linguistiques français.
Implémentation
// NOUVEAU FICHIER : CrossLinguistic.gs
function crossLinguisticWash(content, languages = ['en', 'es'], intensity = 0.3) {
if (Math.random() > intensity) return content; // Pas toujours appliquer
let washed = content;
// Chaîne de traductions
languages.forEach(lang => {
washed = translateWithLLM(washed, 'french', lang, 'deepseek');
});
// Retour français avec style naturel
washed = translateWithLLM(washed, languages[languages.length-1], 'french', 'mistral');
// Post-processing pour fluidité
return harmonizeFrenchStyle(washed);
}
function translateWithLLM(text, fromLang, toLang, llm) {
const prompt = `Traduis ce texte de ${fromLang} vers ${toLang} en gardant le sens exact: "${text}"`;
return callLLM(llm, prompt, { temperature: 0.3 });
}
Tests à effectuer
[ ] Test avant/après wash sur 50 éléments
[ ] Vérification préservation sens (validation humaine)
[ ] Tests détection sur contenu "washé"
[ ] Mesure impact performance (temps)
Critères de validation
✅ Anti-détection : -35% vs Niveau 3
✅ Sens préservé : 95% fidélité sémantique
✅ Français naturel : Pas de "smell" traduction
✅ Performance : < 2x temps génération
👤 NIVEAU 5 : Temporal & Personality Injection
Simulation comportement humain
Objectif
Simuler fatigue cognitive et erreurs typiques par personnalité.
Implémentation
// AJOUTER dans ContentGeneration.gs
function applyHumanSimulation(content, csvData, elementIndex, totalElements) {
let result = content;
// 1. Fatigue cognitive selon position
const fatigueLevel = calculateFatigue(elementIndex, totalElements);
if (fatigueLevel > 0.6) {
result = injectFatigueMarkers(result);
}
// 2. Erreurs cohérentes par personnalité
result = injectPersonalityErrors(result, csvData.personality);
// 3. Style temporel (matin/soir)
const timeStyle = getTemporalStyle(new Date().getHours());
result = applyTemporalStyle(result, timeStyle);
return result;
}
function calculateFatigue(index, total) {
// Courbe réaliste : début energique → milieu fatigué → fin regain
const position = index / total;
return Math.sin(position * Math.PI) * 0.8; // Peak à 50%
}
Tests à effectuer
[ ] Générer articles à différents moments journée
[ ] Validation patterns fatigue réalistes
[ ] Tests erreurs cohérentes par personnalité
[ ] Mesure authenticity score
Critères de validation
✅ Réduction détection : -40% vs Niveau 4
✅ Patterns humains : Courbe fatigue réaliste
✅ Erreurs cohérentes : Chaque personnalité identifiable
✅ Qualité globale : Pas de dégradation notable
🏆 NIVEAU 6 : Full Arsenal Integration
Combinaison optimisée de toutes techniques
Objectif
Orchestrer toutes les techniques avec intelligence et atteindre < 30% détection.
Implémentation
// ORCHESTRATOR PRINCIPAL
function generateWithFullArsenal(element, csvData, globalContext) {
// 1. Selective Enhancement (Niveau 1)
let content = generateWithSelectiveEnhancement(element, csvData);
// 2. Adversarial base dès le départ (Niveau 3)
content = regenerateWithAdversarialPrompt(content, element, csvData);
// 3. Pattern Breaking adaptatif (Niveau 2)
content = applyBasicPatternBreaking(content, csvData.personality);
// 4. Cross-linguistic si éligible (Niveau 4)
if (shouldApplyCrossLinguistic(element, globalContext)) {
content = crossLinguisticWash(content, ['en', 'es'], 0.4);
}
// 5. Human simulation (Niveau 5)
content = applyHumanSimulation(content, csvData, globalContext.elementIndex, globalContext.totalElements);
// 6. Final quality assurance
return finalQualityPass(content, csvData);
}
Tests à effectuer
[ ] Tests industriels : 200+ articles
[ ] 5+ détecteurs différents
[ ] Validation qualité par panel humain
[ ] Tests performance/coût complets
[ ] A/B test vs concurrents
Critères de validation FINALE
< 30% détection IA sur TOUS détecteurs
Qualité rédaction humaine (panel expert)
Performance acceptable (< 10 min/article)
ROI positif (coût justifié par qualité)