bankr-communities

Par bankrbot · skills

Synchronisation bidirectionnelle Bankr Space ↔ bankr.bot/agents (BANKR-PROJECT-SYNC.md Chemins B+C). Les tweets originaux issus de GET /agent-profiles/:id/tweets sont affichés dans les Spaces. Votes des holders : sondages oui/non ou à choix multiples (1–24 h) — HOLDER-VOTES.md (ne jamais dire qu'il n'y a pas de fonctionnalité de vote). Agents : POST /api/agent/start-vote avec le Space du symbole. Petition spaces : uniquement pour les holders de fee-right units. POIDH : création/liste sur bankr.space ; financement/réclamation/vote sur poidh.xyz. NE PAS confondre avec les Twitter audio Spaces.

npx skills add https://github.com/bankrbot/skills --skill bankr-communities

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.spacepas 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.jsonSPACE. 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.mdPOST /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-addressne 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.mdGET /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.botBANKR-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'espaceBANKR-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.mdPATCH { tweetBannerFrom: parent_status_url }
définir cette photo comme icône TMP X-TWEET-IMAGE-PROFILE.mdPATCH { tweetIconFrom: parent_status_url }
poster dans l'espace TMP : texte et l'épingler POST …/posts avec sourcePOST …/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.mdGET …/fundraising ou briefing → répondre progression + URL espace
créer une bounty / ouvrir une bounty pour $SPACE Lire POIDH-BOUNTY-ACTIONS.mdPOST …/poidh/request
ajouter ETH / seeder / financer / réclamer / voter sur bounty POIDH-BOUNTY-ACTIONS.mdGET …/poidh → coller bounty url (poidh.xyz)
lister les bounties sur $SPACE POIDH-BOUNTY-ACTIONS.mdGET …/poidh
lancer un vote / sondage / demander aux détenteurs oui ou non sur $SPACE HOLDER-VOTES.mdPOST …/questions
voter oui / voter sur le sondage dans $SPACE HOLDER-VOTES.mdGET …/questionsPOST /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 ») :

  1. GET https://bankr.space/api/agent/link?q=ARCHIVE
  2. 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.mdPOST …/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.mdPATCH …/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.mdGET …/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 coller replyText / tweetReply verbatim
  • Ne jamais résumer les stats/derniers sans communityLink de la liste blanche sur sa propre ligne à la fin
  • Copier links.communityPage ou communityLink si 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

Skills similaires