Skill Twitter Agent
Ce skill fournit un cadre pour créer, gérer et automatiser un agent Twitter/X avec une personnalité et une voix persistantes.
Prérequis
Configuration du compte X (OBLIGATOIRE — À faire en premier)
Avant toute chose, le compte X de l'agent DOIT être marqué comme un compte automatisé. X exige cette divulgation pour tout compte publiant via l'automatisation API ; ignorer cette étape est le moyen le plus rapide de se faire suspendre le compte.
Chemin exact (à faire une fois, en étant connecté au compte de l'agent) :
- Connectez-vous à x.com en tant que compte agent.
- Allez à Paramètres et confidentialité → Votre compte → Informations du compte.
- Faites défiler jusqu'à Automation et cliquez dessus.
- Réentrez votre mot de passe quand vous y êtes invité.
- Définissez Gestion du compte sur la personne/le handle responsable du bot et enregistrez.
Lien direct : https://x.com/settings/account/automation
Cela ajoute le label « Automatisé par @… » au profil et aux réponses. C'est non négociable — ne lancez pas ce skill sur un compte qui n'a pas été étiqueté.
Variables d'environnement
Définissez ces 4 variables dans vos paramètres Bankr (icône engrenage → Env Vars). Générez-les depuis le Portail de développeur X avec les permissions Read and Write activées :
X_API_KEY: Clé de consommation (OAuth 1.0a)X_API_KEY_SECRET: Secret de consommationX_ACCESS_TOKEN: Token d'accès utilisateurX_ACCESS_TOKEN_SECRET: Secret du token d'accès utilisateur
Canal d'approbation pour les automations
Les automations Bankr supportent nativement l'acheminement de leur résultat vers Telegram. Lors de la création d'une automation, choisissez Telegram comme destination de livraison — le message final de l'automation est livré à votre Telegram lié directement, sans token de bot ni code personnalisé requis. Les automations utilisées comme compositeurs « validés par approbation » reposent sur ceci : l'automation compose des brouillons, exécute les vérifications de guardrail, et au lieu de poster les brouillons signalés, elle termine sa course en les envoyant à Telegram pour que vous les approuviez manuellement.
Aucune env var n'est nécessaire pour cela — liez simplement votre Telegram à votre compte Bankr et sélectionnez Telegram comme résultat lors de la configuration de chaque automation.
Le système Personnalité & Storyline
Chaque agent nécessite deux fichiers dans le système de fichiers Bankr pour maintenir une voix et une narration cohérentes :
twitter-personality.md: Définit le caractère, la voix et les règles de style.twitter-storyline.md: Suit la narration en cours, les événements récents et l'état actuel du personnage.
Construire une personnalité
Si aucun fichier de personnalité n'existe, l'agent devrait guider l'utilisateur dans sa création en posant :
- « De quoi parle le compte ? Donne-moi le pitch en ascenseur »
- « Comment décrirais-tu le vibe ? Choisis quelques-uns : sharp, witty, degen, serious, chaotic, chill, academic, edgy, wholesome, provocative, technical, meme-heavy »
- « Sur quels sujets veux-tu tweeter ? Qu'est-ce qui est strictement interdit ? »
- « Des tweets courts et punchy ou du contenu plus long ? Des threads ? »
- « Emojis ? Hashtags ? Minuscules ou grammaire correcte ? »
- « Des phrases ou mots signature que tu utilises toujours ? »
- « Donne-moi 2-3 exemples de tweets qui te ressemblent — ou des comptes auxquels tu veux ressembler »
- « Y a-t-il un personnage ou une persona dont le compte devrait tweeter ? Ou c'est juste toi ? »
Après avoir recueilli les réponses, l'agent compose le fichier de personnalité et l'enregistre sous twitter-personality.md.
Liste de contrôle pré-vol
Avant de composer ou de poster un tweet, l'agent DOIT :
- Charger
twitter-personality.mden utilisantread_file. - Charger
twitter-storyline.mden utilisantread_filepour comprendre le contexte narratif actuel. - Filtrer le contenu proposé à travers les directives de personnalité et s'assurer qu'il continue la storyline.
- Recouper tout contenu rédigé contre le fichier storyline pour éviter de répéter des blagues, des thèmes ou des phrases déjà utilisés.
- Exécuter la Vérification de Guardrail (voir ci-dessous) avant toute publication — manuelle OU automatisée.
- Après avoir posté, mettre à jour
twitter-storyline.mdavec le nouveau tweet et tout développement narratif en utilisantedit_file(JAMAIScreate_file— voir Gestion des fichiers ci-dessous).
Guardrails (CRITIQUE — S'appliquent aux publications manuelles ET automatisées)
Celles-ci s'appliquent à chaque tweet que l'agent rédige, qu'il s'exécute manuellement ou en horaire. Un brouillon qui viole l'un de ces guardrails s'achemine vers l'approbation au lieu d'être posté.
Ne jamais répondre sans invitation (Règle stricte)
L'agent NE DOIT JAMAIS répondre à un post auquel il n'a pas été invité. Un agent qui répond froidement aux timelines d'étrangers est le chemin le plus rapide vers une suspension X. Il y a exactement trois types de posts légaux :
- Posts de premier niveau composés par l'agent lui-même.
- Réponses aux mentions — uniquement quand le handle de l'agent est explicitement tagué dans le texte du tweet (token
@handleinsensible à la casse danstext, pas simplement une correspondancein_reply_to_user_id). - Réponses aux commentaires sur les propres posts de l'agent — c.-à-d. les réponses où
in_reply_to_user_idest l'ID utilisateur de l'agent ET le tweet parent dans l'arbre de conversation est rédigé par l'agent.
N'importe quoi d'autre que ces trois catégories est INTERDIT et doit être supprimé de l'ensemble de brouillons avant même que la vérification de guardrail ne s'exécute. Les quote-tweets de comptes aléatoires, les chaînes de réponses dans lesquelles l'agent n'est pas tagué, les réponses aux sujets tendances, les réponses « au passage » aux gros comptes que l'agent admire — tout cela est prohibé lors d'une opération autonome. Si l'utilisateur rédige manuellement l'un d'eux dans une session, il nécessite toujours une approbation explicite et n'est jamais posté automatiquement.
Filtre d'analyse des mentions (à appliquer à l'étape de récupération) :
- Conservez une mention seulement si
textcontient le@handlede l'agent en tant que token autonome. - OU conservez-la si
in_reply_to_user_id === agentUserIdET la racine deconversation_idest rédigée par l'agent. - Jetez tout le reste avant le classement.
Blocages stricts (toujours acheminer vers l'approbation)
- Ne jamais tagger
@bankrbotde manière autonome. L'agent X de Bankr exécute des actions onchain (transferts, swaps, déploiements) quand il est tagué depuis un compte lié à un portefeuille. N'importe quel tweet — de premier niveau ou réponse — qui mentionne@bankrbotDOIT être rédigé et présenté à l'utilisateur pour approbation. L'agent ne tague pas@bankrbotsans approbation explicite pour ce brouillon spécifique, à chaque fois. - Ne jamais poster du contenu ressemblant à une action onchain de manière autonome. Si un brouillon contient une adresse EVM (regex :
0x[a-fA-F0-9]{40}), une adresse Solana, le mot « send » combiné avec un ticker (p. ex. « send 100 USDC »), un motif de message signé, ou n'importe quoi qui ressemble à une instruction de transaction — acheminez vers l'approbation. - Ne jamais poster des jalons d'arc pré-déclarés de manière autonome. Le fichier storyline devrait lister les prochains beats majeurs (posts critiques pour l'arc) sous une section
## Approval-Gated Milestones. Les automations vérifient les brouillons contre cette liste et acheminent les correspondances vers l'approbation. - Ne jamais interagir de manière autonome avec d'autres comptes signalés. Si le compte a désigné des comptes « VIP » (p. ex. fondateur du projet, marque sœur, pairs exécutés par GPT personnalisé, autres agents liés à un portefeuille), listez-les dans le fichier storyline sous
## Approval-Gated Accounts. Les réponses à ces comptes s'acheminent vers l'approbation.
Approbation pondérée par followers
- Les réponses aux comptes avec >50k followers s'acheminent vers l'approbation. Les gros comptes sont plus risqués ; les humains vérifier le ton.
- Les réponses aux comptes avec 1k-50k followers se postent de manière autonome s'ils passent tous les autres guardrails.
- Les réponses aux comptes avec <1k followers se postent de manière autonome uniquement si la qualité de la configuration est bonne (pas de « gm » générique ou de spam d'emojis).
Liste de blocage (les automations filtrent celles-ci complètement)
Les automations ne devraient jamais interagir avec :
- FUD / accusations de rug
- Contenu politique
- Demandes de conseils financiers
- Threads de spam évident / tag-farm (3+ @ non liés empilés)
- Comptes promouvant des tokens non liés
- N'importe quelle mention que la storyline marque comme déjà-répondue
Acheminement vers l'approbation (Bankr natif → Telegram)
Les automations Bankr peuvent livrer leur résultat directement à Telegram — aucun code personnalisé nécessaire. Quand un brouillon atteint un guardrail, l'automation devrait :
- NE PAS le poster sur X.
- Inclure le brouillon dans son message de résultat final avec : le texte du brouillon, la raison du signalement, l'ID du tweet cible (si une réponse), le handle de l'auteur + le nombre de followers, et une instruction d'approbation/rejet suggérée (p. ex. « répondez 'approve <draft-id>' pour poster, 'reject <draft-id>' pour ignorer »).
- Ajouter une entrée
pending-approvalàtwitter-storyline.mdsous la section## Pending Approval Queuepour que la prochaine session voit ce qui attend. - Configurer l'automation pour livrer à Telegram dans la configuration de l'automation Bankr (sélectionnez Telegram comme destination de résultat lors de la création de l'automation).
- Attendre que l'utilisateur exécute manuellement le skill avec une commande d'approbation (p. ex. « approve pending draft <id> ») ou rejette.
Flux de réponse
Quand l'utilisateur demande de vérifier les mentions et de répondre, suivez cette séquence exacte :
Étape 1 : Scanner les mentions
Utilisez execute_cli avec twitter-api-v2@1.17.2 pour récupérer les mentions récentes. Le script de scan devrait :
- Récupérer les mentions via
userMentionTimeline - Inclure les décomptes de followers de l'auteur pour la priorisation
- Signaler quelles mentions répondent à lesquels de nos tweets
- Marquer les tweets auxquels nous avons déjà répondu (recouper avec le fichier storyline)
- Appliquer le filtre « Ne jamais répondre sans invitation » : conserver uniquement les tweets où l'agent est explicitement tagué dans
text, OU les réponses sur l'arbre de conversation de l'agent. Jetez tout le reste avant le classement.
Étape 2 : Lire le fichier Storyline
Chargez twitter-storyline.md AVANT de rédiger des réponses. Vérifiez :
- Quels tweets/mentions ont déjà reçu une réponse (par ID de tweet)
- Quelles blagues, thèmes et phrases ont déjà été utilisés
- Quel est l'état narratif actuel
- Jalons validés par approbation + comptes validés par approbation
Étape 3 : Prioriser les mentions
Filtrez et classez les mentions non répondues en utilisant cette hiérarchie :
- Comptes à gros followers en premier (10k+ followers = haute priorité pour la portée)
- Bonnes propositions d'ouverture (mentions qui donnent une ouverture naturelle pour une réponse in-character)
- Layups faciles (mentions simples qui peuvent être répondues avec une seule ligne cohérente à la voix)
- Ignorer : la liste complète de blocage ci-dessus (trolls, FUD, politique, spam, etc.)
Étape 4 : Rédiger des réponses + post optionnel
- Rédigez 4-6 réponses par batch (le sweet spot pour l'engagement sans spammer)
- Rédigez optionnellement 1 nouveau tweet de premier niveau par session pour garder la timeline active
- Recoupez CHAQUE brouillon contre le fichier storyline pour assurer aucun chevauchement
- Exécutez la Vérification de Guardrail sur chaque brouillon (y compris la règle « Ne jamais répondre sans invitation »)
- Présentez tous les brouillons à l'utilisateur pour approbation avant de poster (mode manuel)
- Acheminez les brouillons gardés vers Telegram via la résultat de l'automation pour approbation (mode automation)
Étape 5 : Poster & mettre à jour
- Postez seulement après approbation explicite (manuelle ou réponse Telegram)
- Postez tous les tweets approuvés via
execute_cli(limite de débit ~1.5s entre les posts) - Mettez à jour
twitter-storyline.mdavec toutes les nouvelles entrées en utilisantedit_file
Meilleures pratiques d'engagement
- Batch de réponses + combo de post : 4-6 réponses associées à 1 nouveau post de premier niveau par session est le cadence idéal
- Ne jamais répéter le contenu : Recoupez toujours les brouillons contre le fichier storyline. Si une blague ou un thème a été utilisé, trouvez un nouvel angle
- Storyline en priorité : Chaque réponse devrait faire avancer ou référencer la narration en cours. Ne rédigez pas de réponses génériques
- Reconnaître les gros comptes : Priorisez les réponses aux comptes avec beaucoup de followers pour la portée, mais gardez la même voix quel que soit la taille de l'audience
- Ne pas interagir avec du FUD : Ignorez complètement les accusations de rug, les trolls négatifs et les commentaires inappropriés
- Ne jamais répondre froidement : Répondez seulement quand vous êtes tagué ou quand quelqu'un commente sur le post de l'agent. Les réponses non invitées présentent un risque de suspension.
Gestion des fichiers
CRITIQUE : Utilisez edit_file, pas create_file
Lors de la mise à jour de twitter-storyline.md, UTILISEZ TOUJOURS edit_file avec l'ID de fichier existant. Utiliser create_file créera des fichiers dupliqués. Si des doublons sont créés, fusionnez-les en lisant les deux, en combinant le contenu dans le fichier plus récent/plus grand, et en supprimant l'ancien.
Structure du fichier Storyline
Le fichier storyline devrait maintenir :
- État actuel : Localisation, humeur, objectif actuel, environnement/contexte
- Historique narratif : Entrées chronologiques avec IDs de tweets, contenu et impact narratif
- Personnages clés & objets : Tous les éléments récurrents dans le lore
- Fils narratifs à continuer : Fils de l'intrigue actifs pour les futurs tweets
- Jalons validés par approbation : Posts futurs critiques pour l'arc qui ne doivent jamais être auto-postés
- Comptes validés par approbation : Comptes (y compris
@bankrbot) dont les interactions requièrent toujours l'approbation - File d'attente d'approbation en attente : Brouillons envoyés à Telegram en attente de révision humaine
Recettes d'automation
Les automations Bankr exécutent un prompt d'agent selon un horaire cron. Chaque recette ci-dessous est une automation autonome — quand vous la créez dans Bankr, collez le prompt, définissez l'horaire cron, et sélectionnez Telegram comme destination de résultat pour que les brouillons validés par approbation vous parviennent directement.
Comment coller les prompts d'automation (IMPORTANT)
Le prompt de chaque recette est l'instruction exacte que l'agent exécute au moment du déclenchement de l'automation. Collez-le dans le champ de commande de l'automation textuellement — NE LE PRÉFIXEZ PAS avec le nom de l'automation, NE L'ENVELOPPEZ PAS de guillemets, et N'AJOUTEZ PAS de contexte supplémentaire comme « exécutez ceci : » ou « voici le prompt : ». L'automation exécute la commande immédiatement quand elle est déclenchée ; le texte que vous collez EST la commande, et il doit se lire comme un impératif qui s'exécute MAINTENANT (pas comme une description de ce que l'automation fera éventuellement).
Pourquoi cela importe : Les automations Bankr alimentent le texte de commande directement à l'agent comme le message de l'utilisateur pour cette exécution. Si le texte se lit comme une étiquette ou une description (« Weekday Morning Post : … », « Cette automation postera… »), l'agent la traite comme du contexte et peut ne pas exécuter. Si elle se lit comme un impératif direct (« Exécutez le twitter-agent skill et postez maintenant… »), l'agent exécute immédiatement. Chaque recette ci-dessous est déjà écrite à l'impératif — collez-la textuellement et elle se déclenchera correctement.
Incorrect (préfixé avec le nom de l'automation — se lit comme une étiquette, pas une commande) :
Weekday Morning Post: Run the twitter-agent skill for a weekday morning top-level post...
Incorrect (encadré comme une action future/conditionnelle — se lit comme une description) :
When this runs, the agent should run the twitter-agent skill and post a morning tweet...
Correct (impératif direct — s'exécute MAINTENANT quand l'automation se déclenche) :
Run the twitter-agent skill for a weekday morning top-level post...
Ordre d'intégration (CRITIQUE)
Exécutez d'abord le skill manuellement. Postez 5-10 fois à la main, habituez-vous à la voix, confirmez que la storyline se met à jour correctement. Ensuite seulement, activez les automations, UNE À LA FOIS, en commençant par celle avec la fréquence autonome la plus basse. Observez-la pendant 3-5 jours avant d'ajouter la suivante.
Progression d'intégration recommandée :
- Post de matin en semaine (une fois par jour, risque le plus faible)
- Post de week-end (week-ends seulement, risque le plus faible)
- Audit de storyline (pas de posting, toujours sûr)
- Balayage de réponses (approbation hybride)
- Pour toute automation qui peut surfacer des brouillons gardés, configurez Telegram comme destination de résultat dans la configuration d'automation Bankr — les safeguards @bankrbot et gros-compte dépendent que l'approbation vous parvienne.
Fuseaux horaires Cron
Tous les crons Bankr s'exécutent en UTC. Convertissez votre heure cible locale en UTC.
- ET (US Est) : UTC-4 pendant l'heure d'été (~mars-novembre), UTC-5 sinon
- 9:00am ET (heure d'été) = 13:00 UTC
- 12:00pm ET (heure d'été) = 16:00 UTC
- 7:00pm ET (heure d'été) = 23:00 UTC
Recette 1 : Post de matin en semaine (autonome)
Cron (UTC) : 15 13 * * 1-5 (9:15am ET en semaine pendant l'heure d'été)
Destination de résultat : Telegram (pour les confirmations de post + tout brouillon signalé)
Prompt :
Run the twitter-agent skill for a weekday morning top-level post. Steps: (1) Load the twitter-agent skill with use_skill. (2) Read twitter-personality.md and twitter-storyline.md. (3) Fetch recent tweets from the account via the X API to confirm what was just posted and avoid immediate repetition. (4) Compose ONE top-level tweet, target length 80-180 characters, following all personality rules from twitter-personality.md. It should advance or reference an existing thread from the 'Storyline Threads to Continue' section. (5) Run the full Guardrail Check from the skill: no @bankrbot, no 0x addresses, no onchain-action language, no approval-gated milestones. If the best draft hits a guardrail, pick a different beat. If no safe beat fits, do NOT post — output the draft and the flag reason as the final message so it reaches Telegram for approval, and log it in the Pending Approval Queue. (6) Cross-reference the storyline to ensure no phrase/joke repeats. (7) Post via execute_cli. (8) Append an Entry to twitter-storyline.md with the tweet ID, content, narrative impact, and any new lore. (9) Update the Current State section if the character's time/mood changed. (10) Return a short final message summarizing what was posted (this is what gets delivered to Telegram).
Recette 2 : Balayage de réponses — Midi (hybride : autonome + approbation Telegram)
Cron (UTC) : 30 16 * * * (12:30pm ET quotidien pendant l'heure d'été)
Destination de résultat : Telegram (pour l'approbation des brouillons signalés + résumé du balayage)
Prompt :
Run the twitter-agent skill for a mentions reply sweep. Steps: (1) Load the twitter-agent skill. (2) Read twitter-personality.md and twitter-storyline.md. (3) Fetch the last 50 mentions via the X API. (4) Apply the "Never Reply Unprompted" filter from the skill: keep only tweets where the agent's @handle appears as a standalone token in
text, OR replies whosein_reply_to_user_idmatches the agent's user ID AND whose conversation root is authored by the agent. Discard all other candidates before any ranking. (5) From the survivors, filter to UNREPLIED mentions by cross-referencing tweet IDs against the storyline's replied-to list. (6) Apply the Skip List: no FUD, no politics, no financial-advice requests, no spam/tag-farm threads, no shills of unrelated tokens. (7) Rank remaining mentions by setup quality and follower count. Select the top 2-4. (8) For each, draft a reply (target 60-200 chars) in the personality voice, cross-referencing the storyline for tone and callbacks. (9) Run Guardrail Check per draft. Any draft that mentions @bankrbot, contains an EVM/Solana address, reads like an onchain action, matches an approval-gated milestone, targets an approval-gated account, OR targets an account with >50k followers -- DO NOT POST. Instead, include the draft + flag reason + target tweet ID + author handle + follower count in the final output message so it reaches Telegram for approval, and log it in the Pending Approval Queue. (10) Post the safe drafts via execute_cli with 1.5s spacing. (11) Append an Entry to twitter-storyline.md logging every posted reply AND every draft routed to Telegram. (12) Return a final summary message listing what was posted and what was escalated (this is the Telegram delivery).
Recette 3 : Balayage de réponses — Soirée (hybride)
Cron (UTC) : 0 23 * * * (7:00pm ET quotidien pendant l'heure d'été)
Destination de résultat : Telegram
Prompt : (identique à la Recette 2)
Recette 4 : Post de week-end (autonome)
Cron (UTC) : 0 15 * * 6,0 (11:00am ET samedi + dimanche pendant l'heure d'été)
Destination de résultat : Telegram
Prompt :
Run the twitter-agent skill for a weekend top-level post. Steps: (1) Load the twitter-agent skill. (2) Read twitter-personality.md and twitter-storyline.md. (3) Compose ONE top-level tweet, target 80-220 characters, in the personality voice. Lean into weekend-specific atmosphere or whatever threads are marked as weekend-appropriate in the storyline. (4) Run full Guardrail Check (same as Recipe 1). If the best draft hits a guardrail, route to Telegram approval via the final output message and log in Pending Approval Queue. (5) Post via execute_cli. (6) Append an Entry to twitter-storyline.md. (7) Return a short final summary message for Telegram delivery.
Recette 5 : Audit de storyline (pas de posting)
Cron (UTC) : 0 2 * * 1 (10:00pm ET dimanche pendant l'heure d'été)
Destination de résultat : Telegram (digest des résultats d'audit)
Prompt :
Run a storyline audit for the twitter-agent skill. Steps: (1) Read twitter-storyline.md end-to-end. (2) Identify: threads not referenced in 10+ days that could be revived, threads overused (3+ references in a week), repeated phrases/jokes, contradictions in the lore, the current state of each pending approval-gated milestone, and any Pending Approval Queue entries that never got resolved. (3) Prepend a '### Weekly Audit [date]' entry to twitter-storyline.md with bullet-point notes. Do NOT post any tweets. Do NOT generate character content. (4) Return the audit notes as the final message so they're delivered to Telegram as a weekly digest.
Ce qu'il NE FAUT PAS automatiser
- Beats majeurs d'arc (moments de payoff) — signalez-les comme jalons validés par approbation dans la storyline, gardez-les manuels.
- Interactions avec
@bankrbot— toujours approbation manuelle, à chaque fois (risque onchain). - Interactions avec d'autres comptes signalés (fondateur, projets sœurs, autres agents liés à un portefeuille) — signalez-les comme comptes validés par approbation.
- Réponses avec photos, quote tweets, threads — le jugement créatif a des enjeux plus élevés, gardez manuels.
- N'importe quel tweet qui déclencherait une action onchain quand posté depuis un compte X lié à un portefeuille.
- Réponses à des posts auxquels l'agent n'est pas tagué et qui ne sont pas sur l'arbre de conversation de l'agent — jamais.
Prompts utilisateur (Exemples de commandes)
Pour utiliser ce skill, référencez-le dans votre prompt pour que l'agent sache charger les fichiers de personnalité et de storyline d'abord. Exemples :
- « using the twitter-agent skill, draft a new tweet and post it »
- « use the twitter skill to write a tweet about what's happening today »
- « using the twitter-agent skill, check our recent mentions and reply in character »
- « use the twitter skill to react to this news: [paste headline or link] »
- « using the twitter-agent skill, continue the storyline with a new post »
- « use the twitter skill to draft 3 tweet options for me to pick from »
- « using the twitter-agent skill, set up a daily morning post automation »
- « use the twitter skill to help me build my agent's personality »
- « using the twitter-agent skill, run the storyline audit »
- « using the twitter-agent skill, approve pending draft <id> »
Implémentation technique
Toutes les interactions Twitter utilisent execute_cli avec le package twitter-api-v2@1.17.2.
Motif de posting
const { TwitterApi } = require('twitter-api-v2');
const client = new TwitterApi({
appKey: process.env.X_API_KEY,
appSecret: process.env.X_API_KEY_SECRET,
accessToken: process.env.X_ACCESS_TOKEN,
accessSecret: process.env.X_ACCESS_TOKEN_SECRET,
});
// Post a tweet
const tweet = await client.v2.tweet('your personality-filtered text');
console.log('Tweet ID:', tweet.data.id);
// Reply to a tweet
await client.v2.reply('reply text', originalTweetId);
// Quote tweet
await client.v2.tweet('quote text', { quote_tweet_id: tweetId });
// Get user timeline
const timeline = await client.v2.userTimeline(userId);
Motif de scanner des mentions
const me = await client.v2.me();
const mentions = await client.v2.userMentionTimeline(me.data.id, {
max_results: 50,
expansions: ['author_id', 'in_reply_to_user_id', 'referenced_tweets.id'],
'tweet.fields': ['created_at', 'conversation_id', 'in_reply_to_user_id', 'referenced_tweets', 'text', 'public_metrics'],
'user.fields': ['username', 'name', 'public_metrics']
});
// REQUIRED: enforce the "Never Reply Unprompted" filter before drafting
const myHandle = me.data.username.toLowerCase();
const myId = me.data.id;
const tagRegex = new RegExp(`(^|[^a-zA-Z0-9_])@${myHandle}([^a-zA-Z0-9_]|$)`, 'i');
const eligible = (mentions.data.data || []).filter(t => {
const explicitlyTagged = tagRegex.test(t.text || '');
const isReplyOnOurTree = t.in_reply_to_user_id === myId; // also verify conversation root is ours via conversation_id lookup
return explicitlyTagged || isReplyOnOurTree;
});
Configuration d'execute_cli
- packages:
["twitter-api-v2@1.17.2"] - includeEnvVars:
true(critique — cela injecte les clés API X) - timeoutMs:
30000 - runtime: le sandbox a
bundisponible (invoquez les scripts avecbun script.js).nodeN'EST PAS disponible.
Dépannage
- 403 Forbidden : L'app n'a pas de permissions Write. Activez Read et Write dans le Portail de développeur X.
- 401 Unauthorized : Les clés sont incorrectes ou expirées. Régénérez dans le Portail de développeur X.
- 429 Too Many Requests : Limite de débit dépassée. Tier gratuit = ~50 tweets/jour. Attendez et réessayez.
- Tweet en doublon : X rejette le texte identique. Ajoutez de la variation.
- Fichiers storyline en doublon : Si plusieurs fichiers
twitter-storyline.mdexistent, fusionnez-les en un seul et supprimez les extras. Utilisez toujoursedit_filepour éviter cela. node: command not found: Le sandbox utilise bun. Utilisezbun script.jsau lieu denode script.js.- La livraison Telegram n'arrive pas : Confirmez que votre Telegram est lié à votre compte Bankr et que Telegram est sélectionné comme destination de résultat dans les paramètres d'automation.
- Compte signalé / avertissement de suspension : Vérifiez que le label de compte automatisé est toujours défini à https://x.com/settings/account/automation et qu'aucun post récent n'a été des réponses non invitées.
Meilleures pratiques
- Étiquetez d'abord le compte comme automatisé : https://x.com/settings/account/automation — sans cela, X peut suspendre le compte à tout moment.
- Ne jamais répondre sans invitation : Répondez seulement quand vous êtes explicitement tagué ou quand quelqu'un commente sur le post de l'agent. Trois types de posts légaux, rien d'autre.
- Manuel d'abord, automatiser après : Exécutez le skill manuellement 5-10 fois avant d'activer une automation. La voix et la storyline ont besoin d'une calibration que vous ne pouvez construire que manuellement.
- Continuité narrative : Traitez la vie de l'agent comme un monde persistant. Référencez les événements précédents naturellement.
- Intégrité du personnage : Ne jamais sortir du personnage. Restez dans la voix même pour les annonces.
- Mises à jour de storyline : Mettez toujours à jour
twitter-storyline.mdaprès avoir posté pour que la prochaine session ait du contexte. - Recoupez avant de poster : Lisez le fichier storyline avant chaque session de rédaction. Ne rédigez jamais en aveugle.
- Limites de débit : Le tier gratuit permet ~50 tweets/jour. Espacez les posts automatisés.
- Fixez les packages : Utilisez toujours
twitter-api-v2@1.17.2pour les installs en cache. - Validation d'approbation pour @bankrbot : Pas d'exceptions. Tagger @bankrbot depuis un compte lié à un portefeuille peut déclencher de vraies actions onchain. Toujours approbation manuelle, à chaque fois.
- Modifiez, ne créez pas : Utilisez
edit_filepour les mises à jour de storyline. Ne jamaiscreate_filepour les fichiers existants. - Utilisez la résultat Telegram de Bankr pour les approbations : Lors de la création d'automations, sélectionnez Telegram comme destination de résultat. Le message final de l'automation est livré à Telegram nativement — pas de configuration de bot ou de clés API requises.