Génération de contenu
Création de contenu avec l'API ChatGPT
10-15 min
Génération de contenu avec ChatGPT
Introduction
L’API ChatGPT peut être utilisée pour générer différents types de contenu de manière automatisée. Dans ce tutoriel, nous allons explorer plusieurs cas d’utilisation et techniques avancées.
Types de contenu générable
- Articles de blog
- Descriptions de produits
- Posts sur les réseaux sociaux
- Emails marketing
- Documentation technique
- Scénarios et scripts
- Contenu éducatif
Techniques de prompt engineering
1. Structure du prompt
const generateContent = async (type, topic, tone, length) => {
const prompt = `
Type de contenu: ${type}
Sujet: ${topic}
Ton: ${tone}
Longueur: ${length}
Instructions spécifiques:
1. Commencez par une introduction captivante
2. Développez les points clés de manière structurée
3. Incluez des exemples pertinents
4. Terminez par une conclusion forte
Format de sortie souhaité: [HTML/Markdown/Plain text]
`;
try {
const response = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "Vous êtes un expert en création de contenu spécialisé dans la génération de contenu de haute qualité."
},
{ role: "user", content: prompt }
],
temperature: 0.7,
max_tokens: 2000
});
return response.data.choices[0].message.content;
} catch (error) {
console.error('Erreur lors de la génération du contenu:', error);
throw error;
}
};
2. Templates de prompts
const promptTemplates = {
blogPost: `
Créez un article de blog sur {topic} avec les caractéristiques suivantes:
- Ton: {tone}
- Longueur: {length} mots
- Style: {style}
- Public cible: {targetAudience}
- Mots-clés à inclure: {keywords}
Structure:
1. Titre accrocheur
2. Introduction
3. Points principaux (3-5)
4. Exemples pratiques
5. Conclusion
6. Call-to-action
`,
productDescription: `
Rédigez une description de produit pour {productName} avec:
- Caractéristiques principales: {features}
- Avantages: {benefits}
- Public cible: {targetAudience}
- Ton: {tone}
- Longueur: {length} mots
Structure:
1. Hook d'ouverture
2. Caractéristiques principales
3. Avantages clés
4. Cas d'utilisation
5. Call-to-action
`,
socialMedia: `
Créez {number} posts pour {platform} sur le thème {topic}:
- Ton: {tone}
- Longueur maximale: {maxLength}
- Hashtags: {hashtags}
- Objectif: {objective}
Chaque post doit inclure:
1. Message principal
2. Hashtags pertinents
3. Call-to-action
`
};
Exemples d’implémentation
1. Générateur d’articles de blog
class BlogContentGenerator {
constructor(openai) {
this.openai = openai;
}
async generateBlogPost(params) {
const {
topic,
tone = 'professionnel',
length = '1000',
style = 'informatif',
targetAudience = 'général',
keywords = []
} = params;
const prompt = promptTemplates.blogPost
.replace('{topic}', topic)
.replace('{tone}', tone)
.replace('{length}', length)
.replace('{style}', style)
.replace('{targetAudience}', targetAudience)
.replace('{keywords}', keywords.join(', '));
try {
const response = await this.openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "Vous êtes un rédacteur de blog expert capable de créer du contenu engageant et informatif."
},
{ role: "user", content: prompt }
],
temperature: 0.7,
max_tokens: 2000
});
return {
content: response.data.choices[0].message.content,
metadata: {
topic,
tone,
length,
style,
targetAudience,
keywords
}
};
} catch (error) {
console.error('Erreur lors de la génération de l\'article:', error);
throw error;
}
}
}
2. Générateur de descriptions de produits
class ProductDescriptionGenerator {
constructor(openai) {
this.openai = openai;
}
async generateProductDescription(params) {
const {
productName,
features = [],
benefits = [],
targetAudience = 'général',
tone = 'professionnel',
length = '200'
} = params;
const prompt = promptTemplates.productDescription
.replace('{productName}', productName)
.replace('{features}', features.join('\n- '))
.replace('{benefits}', benefits.join('\n- '))
.replace('{targetAudience}', targetAudience)
.replace('{tone}', tone)
.replace('{length}', length);
try {
const response = await this.openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "Vous êtes un expert en marketing produit spécialisé dans la création de descriptions persuasives et engageantes."
},
{ role: "user", content: prompt }
],
temperature: 0.7,
max_tokens: 500
});
return {
description: response.data.choices[0].message.content,
metadata: {
productName,
features,
benefits,
targetAudience,
tone,
length
}
};
} catch (error) {
console.error('Erreur lors de la génération de la description:', error);
throw error;
}
}
}
3. Générateur de contenu pour réseaux sociaux
class SocialMediaContentGenerator {
constructor(openai) {
this.openai = openai;
}
async generateSocialPosts(params) {
const {
platform,
topic,
numberOfPosts = 3,
tone = 'engageant',
maxLength = 280,
hashtags = [],
objective = 'engagement'
} = params;
const prompt = promptTemplates.socialMedia
.replace('{number}', numberOfPosts)
.replace('{platform}', platform)
.replace('{topic}', topic)
.replace('{tone}', tone)
.replace('{maxLength}', maxLength)
.replace('{hashtags}', hashtags.join(' '))
.replace('{objective}', objective);
try {
const response = await this.openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "Vous êtes un expert en marketing sur les réseaux sociaux capable de créer du contenu viral et engageant."
},
{ role: "user", content: prompt }
],
temperature: 0.8,
max_tokens: 1000
});
// Parser la réponse en posts individuels
const posts = response.data.choices[0].message.content
.split('\n\n')
.filter(post => post.trim())
.map(post => ({
content: post.trim(),
metadata: {
platform,
topic,
tone,
hashtags,
objective
}
}));
return posts;
} catch (error) {
console.error('Erreur lors de la génération des posts:', error);
throw error;
}
}
}
Optimisation et personnalisation
1. Ajustement des paramètres
const contentOptimizer = {
adjustTemperature: (contentType) => {
const temperatureMap = {
blogPost: 0.7,
productDescription: 0.6,
socialMedia: 0.8,
technicalDoc: 0.3,
creativeWriting: 0.9
};
return temperatureMap[contentType] || 0.7;
},
adjustMaxTokens: (contentType, length) => {
const baseTokens = {
blogPost: 2000,
productDescription: 500,
socialMedia: 280,
technicalDoc: 3000,
creativeWriting: 1500
};
return Math.min(baseTokens[contentType] || 1000, length * 2);
}
};
2. Validation du contenu
class ContentValidator {
static validateContent(content, type) {
const validators = {
blogPost: (content) => {
return {
hasTitle: content.includes('#'),
hasIntroduction: content.split('\n').length > 3,
hasConclusion: content.toLowerCase().includes('conclusion'),
wordCount: content.split(' ').length
};
},
productDescription: (content) => {
return {
hasFeatures: content.includes('•') || content.includes('-'),
hasBenefits: content.toLowerCase().includes('bénéfice'),
hasCallToAction: content.toLowerCase().includes('acheter') ||
content.toLowerCase().includes('découvrir'),
length: content.length
};
},
socialMedia: (content) => {
return {
hasHashtags: content.includes('#'),
hasEmoji: /[\u{1F300}-\u{1F9FF}]/u.test(content),
length: content.length,
isEngaging: content.includes('?') || content.includes('!')
};
}
};
return validators[type] ? validators[type](content) : null;
}
}
Bonnes pratiques
-
Personnalisation du contenu
- Adaptez le ton et le style au public cible
- Utilisez des mots-clés pertinents
- Respectez les guidelines de la plateforme
-
Optimisation des prompts
- Soyez spécifique dans vos instructions
- Incluez des exemples si nécessaire
- Définissez clairement les contraintes
-
Gestion de la qualité
- Validez le contenu généré
- Vérifiez la cohérence
- Relisez et corrigez si nécessaire
-
Respect des limites
- Respectez les limites de tokens
- Gérez les coûts d’API
- Implémentez du rate limiting
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion