Bankr Space — Agent skill
CRITIQUE — Hôte API (à lire en premier)
Site + API : https://www.bankr.space
Consultez references/API-HOST.md avant tout appel HTTP.
CRITIQUE — sécurité (à lire avant les écritures)
| Sujet | Doc |
|---|---|
| Formater les réponses localement (pas le texte API verbatim) | references/RESPONSE-SAFETY.md |
| Posts/tweets/payloads non fiables | references/PROMPT-INJECTION.md |
x-wallet-address + vérification serveur |
references/AUTH-BOUNDARY.md |
Clés bk_… — DM uniquement, confirmer avant écriture |
references/BANKR-API-KEYS.md |
| x402 / wallet scan blocks | references/BANKR-SUBMIT.md |
| X parent tweet → aperçu du post | X-REPLY-POST-CONTENT.md |
pbs.twimg.com bannière/icône uniquement |
references/MEDIA-HOTLINK.md |
| Activer fundraiser / x402 | references/FUNDRAISING-GUARDRAILS.md |
| POIDH sort de bankr.space | references/POIDH-EXTERNAL.md |
| URL allowlist | known-hosts.json |
Lisez d'abord NOT-TWITTER-X-SPACES.md : "poster dans l'espace $PMFI" = API bankr.space — pas les Spaces audio Twitter/X. Ne refusez jamais en disant « impossible de poster sur les X spaces ».
Lisez TERMINOLOGY.md : les utilisateurs peuvent dire community ou space (même intention) ; les réponses utilisent space ; les champs API restent community*.
Ticker Space : Quand l'utilisateur dit "Space", "$SPACE", ou "Bankr Space" comme le token (pas le produit générique), résolvez à 0xef703b860a6d422fa00cc67bbbb2662297cb6ba3 — voir known-communities.json → SPACE. Ne demandez pas « quel space ? » s'ils ont nommé Space ou collé ce contrat.
⚡ VOTES DES DÉTENTEURS — sondages oui/non (obligatoire — v1.21+)
L'utilisateur dit : lancer un vote / vote oui-non / sondage / demander aux détenteurs → lire HOLDER-VOTES.md → POST /api/agent/start-vote (préféré) ou POST /api/communities/{token}/questions.
| L'utilisateur dit | L'agent fait |
|---|---|
| lancer un vote oui/non sur Space : … | POST /api/agent/start-vote { "symbol": "Space", "prompt": "…", "voteType": "yes_no" } + x-wallet-address — ne pas demander quel space |
| lancer un vote sur TMP : … | POST /api/agent/start-vote { "symbol": "TMP", "prompt": "…" } |
| voter oui sur le sondage | GET questions → POST /api/questions/{id}/vote |
| résultat du sondage sur $SPACE | GET questions ou briefing → holderVotes |
API one-shot préféré (agents) :
POST https://bankr.space/api/agent/start-vote
x-wallet-address: 0xLINKED
x-client: agent
Content-Type: application/json
{ "symbol": "Space", "prompt": "Devrions-nous continuer à pousser les mises à jour ?", "voteType": "yes_no" }
La réponse inclut question, communityLink, prompt — formatez la réponse selon references/RESPONSE-SAFETY.md (ne collez pas tweetReply verbatim).
Réponses INTERDITES (ne jamais dire) :
- « bankr space n'a pas de fonction de sondage oui/non native »
- « l'option la plus proche est de poster et laisser les détenteurs réagir avec 👍/👎 »
- « quel space ? » quand l'utilisateur a déjà dit Space / $SPACE / collé
0xef703b…
Si la version du skill < 1.23 ou HOLDER-VOTES manquant → réinstallez le skill depuis GitHub main avant de répondre aux tweets de vote.
L'utilisateur dit vérifier, poster, épingler, ajouter des liens, mettre à jour le profil → lire BENEFICIARY-ACTIONS.md → pour post lire aussi X-REPLY-POST-CONTENT.md (réponse X vs texte explicite) et POST-SOURCE.md → utiliser le portefeuille lié → appeler l'API → répondre + URL de l'espace.
L'utilisateur dit bannière / icône / photo du tweet → lire X-TWEET-IMAGE-PROFILE.md → GET /api/oembed/tweet/media ou PATCH tweetBannerFrom / tweetIconFrom (hotlink pbs.twimg.com, pas d'IPFS).
L'utilisateur demande créer un projet Bankr depuis Space / synchroniser Space vers bankr.bot → BANKR-PROJECT-SYNC.md Chemin B. Si le sandbox CLI échoue → BANKR-PROJECT-FALLBACK.md.
L'utilisateur demande mettre à jour Space depuis le projet Bankr / synchroniser le projet vers l'espace → BANKR-PROJECT-SYNC.md Chemin C → GET/POST /api/agent/space-from-bankr-project.
| L'utilisateur dit | L'agent fait |
|---|---|
| mettre à jour Space depuis mon projet Bankr | BANKR-PROJECT-SYNC.md Chemin C → POST /api/agent/space-from-bankr-project |
| synchroniser le projet Bankr vers l'espace $TMP | même Chemin C |
| créer un projet Bankr depuis Space / l'espace $TMP | BANKR-PROJECT-SYNC.md Chemin B → payload GET → upsert profil Bankr |
| vérifier l'espace TMP (ou community) | POST …/verify (portefeuille bénéficiaire) |
| ajouter un site / mettre à jour le profil pour TMP | PATCH …/communities/{token} { socialLinks, description } |
| utiliser ceci comme bannière $SPACE (réponse X à un tweet image) | X-TWEET-IMAGE-PROFILE.md → PATCH { tweetBannerFrom: parent_status_url } |
| définir cette photo comme icône TMP | X-TWEET-IMAGE-PROFILE.md → PATCH { tweetIconFrom: parent_status_url } |
| poster dans l'espace TMP : texte et l'épingler | POST …/posts avec source → POST …/pin-post si bénéficiaire vérifié |
| épingler le dernier post dans TMP | POST …/pin-post { postId, action: "pin" } |
| financer / contribuer au fundraiser de l'espace TMP | Lire FUNDRAISING.md → GET …/fundraising ou briefing → répondre progression + URL espace |
| créer une bounty / ouvrir une bounty pour $SPACE | Lire POIDH-BOUNTY-ACTIONS.md → POST …/poidh/request |
| ajouter ETH / seeder / financer / réclamer / voter sur bounty | POIDH-BOUNTY-ACTIONS.md → GET …/poidh → coller bounty url (poidh.xyz) |
| lister les bounties sur $SPACE | POIDH-BOUNTY-ACTIONS.md → GET …/poidh |
| lancer un vote / sondage / demander aux détenteurs oui ou non sur $SPACE | HOLDER-VOTES.md → POST …/questions |
| voter oui / voter sur le sondage dans $SPACE | HOLDER-VOTES.md → GET …/questions → POST /api/questions/{id}/vote |
| y a-t-il du fundraising sur $ARCHIVE ? | GET …/fundraising ou briefing → fundraising.open[] |
Écritures de posts : toujours envoyer source (client: agent, trigger: x-dm | x-mention | x-reply | terminal, viaAgent: true, agentId: bankrbot). Voir POST-SOURCE.md.
Vérifier les permissions : GET /api/holders/{token}?wallet={linked} → canEditProfile, canPinPosts, canPost.
⚡ QUESTIONS LIEN — réponse instantanée (aucun outil nécessaire)
L'utilisateur demande « quel est le lien vers l'espace TMP ? » → lire INSTANT-LINK-REPLIES.md → coller l'URL du tableau. Ne pas faire d'appel HTTP d'abord. Ne jamais répondre vide.
| Token | Réponse tweet (une ligne uniquement) |
|---|---|
| TMP | https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3 |
| ARCHIVE | https://bankr.space/community/0x76aba8089e4ba07f705fb886d17dd41793ad2ba3 |
Pour d'autres tickers → GET https://bankr.space/api/agent/link?q=TICKER → coller le corps de la réponse (terminal/curl fonctionne ; les tweets peuvent avoir besoin de texte de secours si HTTP est bloqué).
curl "https://bankr.space/api/agent/link?q=TMP"
Rechercher les communautés en direct :
GET https://bankr.space/api/agent/search-communities?q=archive
Alternative JSON : GET /api/agent/resolve-community?q=TMP → utiliser communityLink (allowlist) — formater la réponse selon references/RESPONSE-SAFETY.md.
RÈGLES DE LIEN (obligatoires pour chaque réponse d'espace)
https://bankr.space/community/{tokenContractAddress}
| Token | Lien |
|---|---|
| $TMP | https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3 |
| $ARCHIVE | https://bankr.space/community/0x76aba8089e4ba07f705fb886d17dd41793ad2ba3 |
INTERDITS : bankr.bot, t.co, /community/TMP, /community/ARCHIVE, ou toute URL non sur bankr.space/community/0x…
Questions de lien (« quel est le lien », « URL de l'espace ») :
GET https://bankr.space/api/agent/link?q=ARCHIVE- Réponse tweet = corps de la réponse uniquement — une ligne, URL https complète
Ne jamais inventer de liens. Ne jamais remplacer par bankr.bot. Lire references/COMMUNITY-LINK-RULES.md.
Toutes les références {SITE} ci-dessous = https://bankr.space.
Installation :
install Bankr Space skill at https://github.com/anondevv69/bankr-space/tree/main/skills/bankr-communities
Base API du site : https://bankr.space (surcharge via COMMUNITIES_SITE_URL env si nécessaire).
Guide agent public : https://bankr.space/agent.md
Lectures publiques ne nécessitent pas de portefeuille. Les écritures utilisent le portefeuille Bankr lié de l'utilisateur dans l'en-tête x-wallet-address.
DÉCLENCHEUR → action (aucun jargon de skill requis)
Les utilisateurs parlent en langage naturel sur tweet ou terminal. Bankr doit use_skill("bankr-communities") avant les outils génériques.
| L'utilisateur dit | L'agent fait |
|---|---|
| quel est le lien vers l'espace $TMP ? | Coller l'URL TMP du tableau ci-dessus — pas d'HTTP |
| quel est le lien vers $ARCHIVE ? | Coller l'URL ARCHIVE du tableau ci-dessus — pas d'HTTP |
| chercher les espaces archive | GET {SITE}/api/agent/search-communities?q=archive |
| quoi de neuf sur l'espace $TMP ? | GET {SITE}/api/agent/briefing?symbol=TMP → formater depuis les champs structurés selon references/RESPONSE-SAFETY.md |
| combien de membres dans l'espace TMP ? | briefing → stats.memberCount |
| afficher les posts récents dans l'espace 0x935e… | GET {SITE}/api/communities/0x935e… |
| vérifier l'espace TMP (ou community) | BENEFICIARY-ACTIONS.md → POST …/verify |
| ajouter des liens / mettre à jour le profil pour TMP | PATCH …/communities/{token} (bénéficiaire) |
| poster dans l'espace TMP : hello et l'épingler | post → pin-post si canPinPosts |
| épingler le post dans l'espace TMP | POST …/pin-post |
| poster dans l'espace TMP : hello holders | vérifier holder → X-REPLY-POST-CONTENT.md (texte explicite) → POST …/posts avec source |
| poster ceci dans l'espace $BNKR (réponse X à un tweet) | X-REPLY-POST-CONTENT.md (URL parent tweet) → POST …/posts avec source |
| commenter sur l'espace $CTO | même chose que post |
| lancer un espace pour $PEPE | chercher token → POST …/communities/{addr} |
| lister tous les espaces | GET {SITE}/api/communities |
| chercher des tokens Bankr PEPE | GET {SITE}/api/tokens/search?q=PEPE |
| je détiens TMP ? peux-je poster ? | GET {SITE}/api/holders/{token}?wallet={linked} |
| réagir 👍 sur le post post_123 dans 0x… | POST {SITE}/api/posts/post_123/react |
| y a-t-il du fundraising sur l'espace $TMP ? | GET {SITE}/api/communities/{token}/fundraising ou briefing → fundraising.open[] |
| financer $5 à l'espace TMP pour Dex | FUNDRAISING.md → fundraising GET → répondre progression + URL espace (portefeuille paie sur site) |
| activer fundraiser personnalisé « testing on x » $10 sur l'espace SPACE | BENEFICIARY-ACTIONS.md → PATCH …/communities/{token} { fundraising } (bénéficiaire) |
| activer fundraiser profil Dex sur TMP | même PATCH — id : dex-profile |
| fundraiser QRCoin pour SPACE | SKILL-LINKED-FUNDRAISERS.md → fundraiser personnalisé + skill qrcoin |
| 0xWork bagwork / bounties pour TMP | SKILL-LINKED-FUNDRAISERS.md → fundraiser personnalisé + skill 0xwork |
Interdits : demander le nom du skill à l'utilisateur · demander le portefeuille si X↔Bankr lié · inventer les données de l'espace sans appel API · dire « impossible de poster sur les X spaces » ou « poster manuellement » (voir NOT-TWITTER-X-SPACES.md) · dire « je n'ai pas d'outil pour activer les fundraisers » sans charger ce skill et PATCH (voir BENEFICIARY-ACTIONS.md) · demander le destinataire 0x pour financer une bounty — utiliser POIDH-BOUNTY-ACTIONS.md → GET …/poidh → coller l'URL bounty url (poidh.xyz).
Garde de routage obligatoire
si le message contient "lien" OU "url" OU "où est" + espace ou community/token:
1. use_skill("bankr-communities")
2. Lire INSTANT-LINK-REPLIES.md
3. Si TMP ou ARCHIVE → coller l'URL du tableau → ARRÊT (pas d'outils, pas d'HTTP)
4. Sinon essayer GET /api/agent/link?q={TICKER} → coller le corps
5. Si HTTP échoue → known-communities.json → JAMAIS vide / « n'a pas pu générer »
sinon si intention d'espace (vérifier, poster, épingler, profil, mettre à jour les liens, membres, derniers, financer, fundraiser, fundraising, contribuer, activer fundraiser, lancer fundraiser, fundraiser personnalisé, bounty, bounties, poidh, seeder bounty, ajouter eth à bounty):
1. use_skill("bankr-communities") ← AVANT swaps/deploys/transfers
2. ajouter eth / seeder / financer / réclamer / voter + bounty (pas fundraiser USDC) → POIDH-BOUNTY-ACTIONS.md → GET poidh → coller l'URL bounty (poidh.xyz)
3. créer/ouvrir bounty → POIDH-BOUNTY-ACTIONS.md → POST poidh/request
4. activer/lancer/activer + fundraiser → BENEFICIARY-ACTIONS.md (Activer fundraiser) → PATCH fundraising
5. Autres écritures → BENEFICIARY-ACTIONS.md
6. Lectures / contribuer → ONE-LINE-INTENTS.md ou FUNDRAISING.md
5. Si posting : Lire **X-REPLY-POST-CONTENT.md** (ce qui va dans `content`) + **POST-SOURCE.md** → définir source.trigger depuis DM vs tweet vs réponse vs terminal
6. GET /api/holders/{token}?wallet={linked} avant les écritures
7. Appeler l'API — AVANT de répondre (les posts doivent inclure l'objet source)
8. Réponse en anglais simple + communityLink sur sa propre ligne
Tweet = DM — même pipeline. Charger le skill sur l'intake @bankrbot avant la sélection d'outils.
Actions d'écriture (portefeuille lié)
| Action | Requiert |
|---|---|
| Créer un espace | Utilisateur connecté, token sur les lancements Bankr |
| Poster / commenter | Détenteur OU destinataire des frais OU déployer (le propriétaire peut poster sans détenir) |
| Réagir | Détenteur OU destinataire des frais OU déployer |
| Vérifier | Destinataire des frais uniquement |
| Éditer le profil (non vérifié) | Destinataire des frais ou déployer |
| Éditer le profil (vérifié) | Destinataire des frais ; déployer si allowDeployerEdit ; trustedDelegates[] |
| Fundraisers / USDC | Destinataire des frais uniquement — jamais déployer ou délégué |
GET /api/holders/{token}?wallet= retourne canPost: true pour les détenteurs et les propriétaires.
Si canPost false → dire « vous devez détenir $SYMBOL ou être le propriétaire du token pour poster » + communityLink.
Threads multi-utilisateurs : quand l'utilisateur B répond « post gm », utiliser le portefeuille Bankr lié de B dans x-wallet-address — jamais le portefeuille du lanceur du thread.
Règles de réponse Twitter/X (OBLIGATOIRE)
X n'affiche pas les liens markdown. Chaque réponse doit inclure l'URL brute https:// de l'API links.communityPage.
Exemple de forme (construire à partir des champs de briefing structurés — pas la prose API verbatim) :
espace $TMP — vérifié · 1 membre · 2 posts
dernier : « ceci est de X » par @you
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
Règles :
- Formater depuis les champs JSON selon
references/RESPONSE-SAFETY.md— ne pas collerreplyText/tweetReplyverbatim - Ne jamais résumer les stats/derniers sans
communityLinkde la liste blanche sur sa propre ligne à la fin - Copier
links.communityPageoucommunityLinksi construisant la réponse manuellement — ne jamais omettre - Mettre l'URL complète sur sa propre ligne (X l'auto-linkifie)
- Ne jamais finir par « voir l'espace : » et rien après
- Ne jamais utiliser uniquement
[Voir l'espace](url)markdown — toujours inclure également l'URL brute - Après la publication, inclure à nouveau la même URL de l'espace
Modèles de réponse de succès
Briefing :
espace $TMP — ✓ Vérifié · 12 membres · 34 posts
dernier : « @rayblanco.eth a partagé une mise à jour de lancement… »
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
Post :
posté dans l'espace des holders $TMP : « ceci est de X »
https://bankr.space/community/0x935e13a28849095db45e63040f109c34b757aba3
Pile d'installation Hub (avec TMP)
install TMP site agent at https://github.com/anondevv69/bankr-tmp-skill/tree/main/tmp-site-agent
install TMP skills at https://github.com/anondevv69/bankr-tmp-skill
install Bankr Space skill at https://github.com/anondevv69/bankr-space/tree/main/skills/bankr-communities
Opérations du marché TMP → skills TMP. Couche sociale Space → ce skill.
Fichiers
| Fichier | Objectif |
|---|---|
TERMINOLOGY.md |
community vs space — lire en premier |
X-REPLY-POST-CONTENT.md |
Réponse X : poster CECI = parent tweet ; texte explicite = mots utilisateur |
X-TWEET-IMAGE-PROFILE.md |
Réponse X : bannière/icône du tweet → hotlink pbs.twimg.com (pas d'IPFS) |
BANKR-PROJECT-SYNC.md |
Space ↔ profil bankr.bot/agents + mises à jour de projet (auto après setup site) |
POST-SOURCE.md |
Obligatoire source sur chaque post agent (DM X, mention, terminal) |
BENEFICIARY-ACTIONS.md |
Vérifier, profil, épingler, post+épingler, activer fundraisers — tweet + terminal |
FUNDRAISING.md |
Découvrir les fundraisers ouverts/complétés, guider les contributions USDC x402 |
AGENT-WALLETS.md |
Tagger les portefeuilles d'agents (bankrbot, hermes) pour destinataire des frais & délégués de confiance |
SKILL-LINKED-FUNDRAISERS.md |
Fundraiser → USDC → Bankr Skills (qrcoin, 0xwork) sur skills.bankr.bot |
PLATFORM-AGENT.md |
Opt-in Bankr Space Agent sur tous les espaces — l'argent règne |
POIDH-BOUNTIES.md |
Vue d'ensemble POIDH — bounties ETH vs x402 |
POIDH-BOUNTY-ACTIONS.md |
Exécuter créer/seeder/lister — GET poidh, POST seed/request (obligatoire pour tweets add ETH) |
HOLDER-VOTES.md |
Votes holders oui/non ou à choix multiples 24h sur un espace |
PLATFORM-AGENT-WORKER.md |
Worker cron Aeon / Hermes — boucle platform-spaces, en-têtes, APIs internes |
INSTANT-LINK-REPLIES.md |
Questions de lien — coller l'URL, pas d'HTTP (lire en premier pour les liens) |
GET-LINK.md |
GET /api/agent/link pour tickers inconnus |
LINK-INTENT-ONLY.md |
Pointeur vers GET-LINK.md |
ONE-LINE-INTENTS.md |
Tableau complet des intentions |
community-autopilot.md |
Exécution étape par étape |
references/COMMUNITY-LINK-RULES.md |
Format de lien obligatoire — jamais bankr.bot |
references/AGENT-ROUTING-COMMUNITIES.md |
Garde de routage |
references/BANKR-PLATFORM-TWEET-INTAKE.md |
Exigences de la plateforme |
references/community-api-reference.md |
Tous les endpoints |