Que fait Moteur de Posts Reddit ?
Rédige un post Reddit adapté à la culture du subreddit. Publie-le optionnellement via Composio.
Règle critique : Ne jamais poster sans avoir confirmé les règles du subreddit. Ne jamais inclure de liens vers un produit dans le corps du message : placez-les uniquement dans le premier commentaire, si approprié. Suivez la règle 90/10 : votre post doit apporter une valeur indépendamment de toute mention de produit.
Règle anti-spam : Les posts principalement promotionnels seront supprimés et peuvent entraîner le bannissement du compte. L'objectif est de contribuer d'abord à la communauté. Les mentions de produits vont dans le premier commentaire, et uniquement si le subreddit autorise l'auto-promotion.
Étape 1 : Vérification de la configuration
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Vérifier si le MCP Composio Reddit est connecté
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP : non connecté"
Si GEMINI_API_KEY est manquante : Stop. Dites à l'utilisateur : "GEMINI_API_KEY est requise. Obtenez-la sur aistudio.google.com. Ajoutez-la dans votre fichier .env."
Si le MCP Composio Reddit n'est pas connecté : Continuez. Le skill rédigera des posts mais ignorera l'étape de publication. Informez l'utilisateur : "MCP Composio Reddit non connecté : je vais rédiger votre post pour une soumission manuelle. Pour activer la publication directe, consultez les instructions de configuration dans README.md."
Étape 2 : Recueillir le contexte
Vous avez besoin :
- Du subreddit cible (par ex. r/devops, r/startups, r/SideProject)
- De ce que vous partagez (projet, article, question, discussion, outil)
- D'une description en une phrase de ce que ça fait
- De pourquoi c'est pertinent pour la communauté spécifique de ce subreddit
- De si vous voulez un post textuel (self-post) ou un post avec un lien
Si l'un de ces éléments manque, demandez en un message :
"Pour rédiger votre post Reddit, j'ai besoin de :
- Quel subreddit ? (ex. r/devops, r/startups)
- Que partagez-vous ? (projet, article, outil, question)
- Qu'est-ce que ça fait ? (une phrase, technique)
- Pourquoi ce subreddit s'y intéresse-t-il spécifiquement ?"
Étape 3 : Récupérer les règles et la culture du subreddit
Récupérez les règles du subreddit :
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about/rules.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
rules = d.get('rules', [])
for r in rules:
print(f'Règle : {r.get(\"short_name\", \"\")}')
print(f'Détail : {r.get(\"description\", \"\")[:200]}')
print()
"
Récupérez les posts récents les plus populaires pour comprendre le ton et le style :
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/top.json?t=week&limit=10" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
for p in d['data']['children'][:10]:
pd = p['data']
print(f'Score : {pd[\"score\"]} | Titre : {pd[\"title\"][:100]}')
"
Notez les schémas dans les posts les plus populaires :
- Les titres sont-ils des questions ou des affirmations ?
- Commencent-ils par la technologie ou par le résultat ?
- Sont-ils personnels (« J'ai construit... ») ou impersonnels (« Outil pour... ») ?
- Quel format obtient le plus d'engagement dans ce subreddit ?
Vérifiez la barre latérale du subreddit pour les règles de publication :
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
data = d.get('data', {})
print('Description publique :', data.get('public_description', '')[:300])
print('Abonnés :', data.get('subscribers', 0))
"
Identifiez le type de subreddit :
| Type | Exemples | Style de post |
|---|---|---|
| Praticien technique | r/devops, r/sysadmin, r/ExperiencedDevs | Spécificités techniques, sans blabla, « J'ai fait X et j'ai appris Y » |
| Start-up/créateur | r/startups, r/SideProject, r/indiehackers | Histoire personnelle, métriques, leçons apprises |
| Technologie générale | r/programming, r/technology | Angle d'actualité, amorce de discussion, avis controversé |
| Carrière | r/cscareerquestions, r/ITCareerQuestions | Format question, scénario spécifique, demande d'expérience |
| Outil de niche | r/vim, r/rust, r/golang | Contenu technique approfondi, exemples de code, benchmarks |
Utilisez les règles et les posts les plus populaires récupérés pour déterminer le style applicable.
Étape 4 : Rédiger le post avec Gemini
Écrivez le contenu du post dans un fichier temporaire et appelez Gemini :
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Vous êtes un développeur actif dans la communauté {SUBREDDIT}. Rédigez un post Reddit qui correspond à la culture de ce subreddit. Règles : (1) Écrivez à la première personne s'il s'agit d'un projet ou d'une expérience. (2) N'incluez AUCUN lien produit dans le corps : les liens vont uniquement dans le premier commentaire. (3) Le post doit apporter une valeur réelle à la communauté, indépendamment de tout produit partagé. (4) Respectez le ton des posts les plus populaires de ce subreddit : {SUBREDDIT_TONE_NOTES}. (5) Titre de 300 caractères maximum. (6) Corps de 150 à 400 mots pour les posts textuels. (7) Pas de langage marketing : pas de 'révolutionnaire', 'puissant', 'robuste', 'fluide', 'innovant'. (8) Si le post parle d'un outil que l'utilisateur a construit, utilisez l'accroche 'J'ai fait...' ou 'J'ai construit...' : c'est ce qui fonctionne le mieux sur Reddit. (9) Sortie : titre sur la première ligne, ligne vide, puis corps. Pas d'étiquettes, pas de commentaires. N'utilisez pas de tirets cadratins."
}]
},
"contents": [{
"parts": [{
"text": "POST_DETAILS_HERE"
}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/reddit-post-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
Remplacez POST_DETAILS_HERE par :
- Le nom et le type du subreddit
- Les schémas des posts les plus populaires observés
- Ce qui est partagé et pourquoi c'est pertinent
- Les détails techniques clés
- La motivation honnête du créateur
Étape 5 : Rédiger le premier commentaire
Si l'utilisateur a un lien vers un produit ou un contexte supplémentaire à partager, rédigez un premier commentaire à publier immédiatement après la mise en ligne du post.
Le premier commentaire sert deux objectifs :
- Fournir le lien (ce qui garde le corps du post sans lien et moins promotionnel)
- Ajouter un contexte qui serait trop promotionnel dans le corps du post
Règles pour le premier commentaire :
- Publiez-le en tant que première réponse à votre propre post, immédiatement après sa mise en ligne
- Gardez-le sous 100 mots
- Exemple de format : "Lien pour ceux qui veulent voir : [URL] ; je réponds volontiers aux questions sur [sujet technique spécifique mentionné dans le post]."
- N'incluez le premier commentaire que si le subreddit autorise l'auto-promotion dans les commentaires
- Si le subreddit a une règle « Pas d'auto-promotion », omettez complètement le lien
Étape 6 : Auto-vérification (QA)
Vérifiez le brouillon avant de le présenter :
Structure :
- Le titre ne dépasse pas 300 caractères
- Aucun lien n'apparaît dans le corps du post
- Le post commence à la première personne (pour les posts de projet/expérience)
- Au moins un détail technique spécifique ou un nombre concret est inclus
- Le post correspond au ton des posts les plus populaires observés dans ce subreddit (noté à l'étape 3)
- Les règles du subreddit de l'étape 3 ne sont pas violées
Détection des « claudismes » : parcourez ces catégories de vocabulaire et supprimez toutes les occurrences :
| Catégorie | Mots à supprimer |
|---|---|
| Intensificateurs vides | incroyablement, absolument, certainement, définitivement, essentiellement, fondamentalement, littéralement, particulièrement, assez, plutôt, vraiment, significativement, simplement, véritablement, finalement, très |
| Hédges IA | je dois noter, il convient de noter, il est important de noter, comme mentionné, comme je l'ai noté |
| Descripteurs de hype | révolutionnaire, puissant, robuste, fluide, innovant, meilleur de sa catégorie, de pointe, révolutionnaire, remarquable |
| Introduction de conclusion | en conclusion, pour résumer, pour récapituler, globalement, tout d'abord, en dernier lieu mais non des moindres |
| Connecteurs inutiles | en outre, de plus, par ailleurs, cependant (en début de phrase), ainsi, donc, par conséquent |
| Indices IA | cela garantit que, cela permet de, cela aide à, cela facilite, approfondir, utiliser, tirer parti, favoriser |
Si l'un d'eux apparaît : remplacez-le par un nom, un verbe ou un nombre spécifique. « Très rapide » devient « s'exécute en 12ms ». « Outil puissant » devient ce qu'il fait réellement.
Vérification des expressions à supprimer instantanément : ces schémas déclenchent les filtres anti-spam de Reddit ou la suppression par les modérateurs :
- Toute phrase qui ressemble à une publicité (« Essayez [Produit] dès aujourd'hui », « Inscrivez-vous maintenant », « Commencez gratuitement »)
- Phrases qui laissent entendre que vous n'êtes pas le créateur (« Je suis tombé sur ce super outil », « J'ai trouvé ce produit étonnant »)
- Possession à la première personne des utilisateurs (« nos utilisateurs », « nos clients ») dans des subreddits où vous n'avez pas établi de présence communautaire
- « J'ai fait X et vous pouvez l'utiliser pour... » suivi immédiatement d'un lien (structure promotionnelle)
- Superlatifs sans qualification (« la meilleure façon de... », « le seul outil qui... »)
- Liens externes dans le corps du post (utilisez uniquement le premier commentaire)
Si l'une de ces expressions à supprimer immédiatement apparaît : révisez la phrase entièrement, ne vous contentez pas d'échanger les mots.
Étape 7 : Relecture adversarial (contradictoire)
Avant de présenter le brouillon final, effectuez une relecture avec 3 personae. Chaque persona lit le post et trouve UN problème spécifique, en citant le texte exact qui le déclenche.
Persona 1 : Le Praticien Sceptique Cette personne est sur r/{SUBREDDIT} depuis des années et a vu des centaines de lancements de produits déguisés en posts. Sa lecture :
- Est-ce qu'une phrase semble promotionnelle même si elle ne vend pas explicitement ?
- Le post révèle-t-il une connaissance réelle des problèmes de la communauté, ou parle-t-il simplement du produit ?
- Y a-t-il une affirmation qui ferait lever les yeux au ciel à un praticien ?
Citez la ligne spécifique qu'il signalerait et pourquoi.
Persona 2 : Le Modérateur Cette personne applique les règles récupérées à l'étape 3. Sa lecture :
- Le post respecte-t-il techniquement les règles du subreddit ?
- Le ratio auto-promotion / contribution à la communauté est-il acceptable ?
- Ont-ils déjà vu ce schéma de post exact être supprimé auparavant ?
Citez la règle spécifique qui risque d'être violée, ou confirmez qu'elle est propre.
Persona 3 : Le Lecteur Cible Il s'agit d'un membre de la communauté qui n'est pas créateur et correspond à la démographie du subreddit. Sa lecture :
- Upvoterait-il ce post même s'il n'utilise jamais le produit ?
- Y a-t-il un point à retenir qu'il peut appliquer même s'il ignore le lien dans le premier commentaire ?
- La première phrase lui donne-t-elle envie de continuer à lire ?
Citez la chose précise à laquelle il arrêterait de lire, ou confirmez que le post retient son attention.
Après que les trois personae ont fait leur rapport : appliquez les corrections nécessaires. Si aucun persona n'a trouvé de problème, indiquez « Relecture adversarial : propre. »
Étape 8 : Publier via Composio (Optionnel)
Si le MCP Composio Reddit est connecté et que l'utilisateur confirme qu'il souhaite publier :
Utilisez l'outil MCP reddit-composio REDDIT_CREATE_REDDIT_POST avec :
- subreddit : {SUBREDDIT_SANS_r/}
- title : {TITRE}
- kind : "self"
- text : {CORPS}
Avant de publier, confirmez avec l'utilisateur : « Prêt à publier sur r/{SUBREDDIT}. Titre du post : '{TITRE}'. Dois-je continuer ? »
Ne procédez qu'après confirmation explicite.
Après la publication :
- Notez l'URL du post à partir de la réponse
- Si un premier commentaire a été rédigé, publiez-le immédiatement en utilisant le même MCP avec l'ID du post renvoyé
Si la publication échoue (403, 429 ou autre erreur) : Présentez le brouillon pour une soumission manuelle. Dites à l'utilisateur : « La publication directe a échoué ([code d'erreur]). Voici votre post pour une soumission manuelle. Copiez-collez le titre et le corps sur reddit.com/r/{SUBREDDIT}/submit. »
Étape 9 : Présenter le résultat
## Post Reddit : r/{SUBREDDIT}
### Titre
{titre}
### Corps
{corps}
### Premier commentaire (à publier immédiatement)
{premier commentaire, le cas échéant}
---
### Notes de soumission
- Type de post : {textuel/lien}
- Meilleur moment pour poster : {heures de pointe pour ce subreddit : matins en semaine heure US pour la plupart des subreddits techniques}
- Après la publication : Répondez à chaque commentaire dans la première heure : un engagement précoce signale la qualité à l'algorithme
- Note sur le karma : {Si le compte est nouveau, notez que certains subreddits exigent un karma minimum avant de poster}
Si le post a déjà été soumis via Composio, remplacez le bloc de sortie par :
Post soumis : {reddit_post_url}