Tu termines chaque vidéo par « commente le mot MACHIN et je t'envoie le guide ». Puis tu passes tes soirées à copier-coller des liens en message privé. Ou pire : tu oublies, et la personne qui t'a fait confiance ne reçoit jamais rien.
Ce système le fait à ta place. Quelqu'un commente ton mot-clé, il reçoit la bonne ressource en privé dans les dix minutes, puis une relance une heure après pour vérifier qu'il l'a bien reçue.
Un déclencheur planifié toutes les 10 minutes.
Lecture des commentaires récents via GET /v2/comments.
Lecture du mapping mot-clé → lien dans le Google Sheet.
Un nœud Code croise les deux et construit le message.
Envoi du DM via POST /v2/messages, puis vérification du statut.
Attente d'une heure, puis relance « tu as bien reçu ? ».
La tentation, c'est d'écrire la liste des mots-clés en dur dans le nœud Code. Ne le fais pas. Tu vas publier une vidéo par jour, chacune avec son mot-clé, et tu vas oublier de mettre le workflow à jour. Résultat : la vidéo promet une ressource, et le commentaire tombe dans le vide sans que rien ne signale l'erreur.
Crée un onglet avec deux colonnes, Mot-cle CTA et Lien Ressource. Le workflow le lit à chaque exécution. Brancher une nouvelle vidéo devient : ajouter une ligne.
Trois détails de ce code comptent vraiment :
\b) — sans elles, « le metavers c'est mort » déclenche le mot-clé META.C'est le point sur lequel on perd le plus de temps. Le commentId va dans l'objet target, et il n'y a pas de champ platform à la racine :
Limite Instagram : 1000 octets par message.
Tu ne peux pas tester en commentant depuis ton propre compte. L'API renvoie isAuthor: true sur tes commentaires, et le filtre les écarte — c'est voulu, sinon tu t'enverrais des DM à toi-même. Il te faut un vrai second compte. Poster un commentaire via l'API ne marche pas non plus : il est publié au nom du propriétaire de la page, donc isAuthor: true aussi.
Si ton déclencheur tourne toutes les 15 minutes et que tu relis les commentaires des 15 dernières minutes, le recouvrement fait qu'un commentaire tombant dans la zone est traité deux fois — la personne reçoit deux messages. Lis sur une fenêtre plus courte que l'intervalle : 11 minutes pour un cycle de 10.
Si l'API renvoie une liste vide, ton workflow finit en « succès » à chaque tour sans avoir rien envoyé. On peut rester des jours avec un tableau de bord tout vert et zéro DM parti. Avant de déboguer n8n, appelle GET /v2/comments à la main : si la réponse est {"items":[]} alors qu'un vrai commentaire existe, le problème est en amont, chez ton fournisseur.
Après l'envoi, attends dix secondes, interroge le statut du message, puis ne relance que ceux réellement partis. Une heure de délai : assez pour ne pas ressembler à un robot, assez court pour que la personne se souvienne encore de toi.
Point important : le nœud qui fait le bilan ne doit pas lever d'erreur quand un envoi échoue. Sinon un seul DM raté interrompt l'exécution et prive de relance tous les autres destinataires du même lot. Marque l'échec dans les données, filtre-le, et laisse le reste continuer.
Ça arrive tout le temps : la vidéo sort avant que la page soit prête. Deux comportements possibles, et le mauvais choix est de ne rien envoyer.
Ajoute un second workflow qui répond publiquement au commentaire (« c'est parti en privé, regarde tes messages 👀 »). Les autres lecteurs voient que tu réponds vraiment, et ça pousse aux commentaires. Attention : ce workflow a besoin du même garde-fou de fenêtre, sinon il répond deux fois au même commentaire.