J'ai créé un terminal de sniping de cartes PokeGrade en un week-end. Voici le prompt exact pour construire le vôtre.

@pokegrade
ANGLAISil y a 3 jours · 20 juil. 2026
362K
254
9
8
725

TL;DR

Cet article propose un prompt détaillé en plusieurs étapes pour créer un terminal de trading de cartes Pokémon automatisé, utilisant l'API PokeGrade et Claude Code pour identifier des opportunités d'arbitrage sur le marché.

Retourner des slabs Pokémon est facile. Le problème : les bonnes affaires sur Mercari, eBay et Vinted peuvent être prises en quelques minutes ou simplement difficiles à trouver, et aucun humain ne peut surveiller trois marketplaces 24h/24 et vérifier chaque annonce.

J'ai donc fait construire un surveillant par Claude Code. Deux jours plus tard, voici ce qui tourne 24h/24 sur le Mac mini de mon bureau :

L'outil.

Toutes les 5 minutes, il analyse les nouvelles annonces sur Mercari, eBay et Vinted. La photo de chaque nouvelle annonce passe par l'API PokeGrade, qui identifie la carte exacte et récupère sa valeur marchande en direct — comparables bruts ET gradés. L'API PokeGrade est ce qui alimente notre site web en coulisses. Nous offrons un accès gratuit aux développeurs. PokeGrade.ai/developers

Si un slab est listé 25 % ou plus en dessous du marché, les annonces Mercari sont automatiquement mises en favori et tout le reste envoie une notification à mon téléphone. Deux stratégies fonctionnent en parallèle : les slabs sous-évalués, et la plus étrange — les slabs dont le prix est inférieur à celui de la carte non gradée (arbitrage de dégradage ; rare, mais ça existe).

pokegrade.ai - inline image

Le terminal.

Un tableau de bord en direct — esthétique de salle des marchés sombre, bande défilante, LED d'état — montrant chaque évaluation, les totaux de profit potentiel avec les frais intégrés, les graphiques de prix de vente pour les produits que je surveille (échantillonnés toutes les 60 secondes à partir des ventes eBay), et un registre : collez n'importe quelle URL d'annonce de cinq marketplaces et un scraper enregistre l'achat ou la vente et suit mon P&L en cours. Théoriquement, je pourrais connecter mon script à mes comptes et le faire les scraper toutes les heures ; je ne l'ai tout simplement pas encore fait. Le yen et l'euro se convertissent automatiquement. Un bouton déplace une trouvaille snipée directement dans le registre. Fonctionne depuis mon téléphone.

La partie que personne ne raconte. Les fonctionnalités ont pris un après-midi. L'autre jour et demi a été un combat acharné avec la réalité : la détection des bots des marketplaces qui rejette les navigateurs automatisés, des pages qui affichent un code différent selon que vous êtes connecté ou non, des cartes japonaises cachées derrière des titres anglais, macOS qui tue silencieusement les tâches d'arrière-plan qui se trouvent dans le mauvais dossier. Chacune de ces étapes a coûté des heures de diagnostic et une ligne pour la corriger.

C'est pourquoi je partage le prompt au lieu du code. Le prompt contient tout — chaque sélecteur vérifié, chaque piège, chaque garde-fou — afin que votre construction évite le combat.

Les règles qui le rendent sûr. Il n'achète jamais rien. Il n'envoie jamais d'offres. Les « offres » extrêmes (ratios 5x+) sont signalées comme suspectes au lieu d'être célébrées, car ce sont presque toujours des annonces douteuses ou l'IA qui compare la mauvaise carte. Un humain regarde chaque affaire avant que l'argent ne bouge. Construisez-le de la même manière — l'automatisation trouve, vous décidez.

Coûts : API PokeGrade pour l'identification des cartes (niveau gratuit : 100 évaluations/mois pour essayer ; niveaux payants si vous scannez sérieusement), compte développeur eBay gratuit, et un ordinateur qui reste allumé. C'est tout.

Le prompt.

Copiez tout ce qui suit dans Claude Code, remplissez les trois espaces réservés, et construisez-le phase par phase (chaque phase est indépendamment utile).

Je veux une boîte à outils personnelle de revente de cartes sur mon ordinateur, construite comme un ensemble de services d'arrière-plan gérés par launchd (ou équivalent Windows) plus un tableau de bord web local. Stack : Node.js + Playwright, pas de frameworks, pas de base de données — fichiers CSV/JSON dans un seul dossier de projet. Tout doit survivre aux redémarrages. Je vais vous envoyer 5 phases. Après chaque phase terminée, veuillez me dire que vous êtes prêt pour la phase suivante. Quelques clés API et la Phase 1 est la première.

Mes entrées (à remplir) :

Clé API PokeGrade : PGAI_KEY_HERE (depuis

pokegrade.ai/developers — le point de terminaison /value identifie une carte à partir d'une photo et renvoie les prix de marché bruts et gradés ; docs sur

pokegrade.ai/developers/docs

Jeu de clés de production eBay : EBAY_CLIENT_ID / EBAY_CLIENT_SECRET (gratuit sur

developer.ebay.com ; demandez l'exemption de suppression de compte pour activer)

Mes seuils d'affaires : favori/alerte à une valeur marchande d'au moins 1,25x le prix demandé ; bande de liste de travail d'offre 1,15-1,25x (environ 26 % de marge nette après une offre acceptée à 80 % et des frais de vente d'environ 12 %)

PHASE 1 — Sniper Mercari (favori automatique)

Un service qui scanne les recherches Mercari toutes les ~10 min, évalue la PREMIÈRE PHOTO de chaque nouvelle annonce via PokeGrade /value, et met en favori les annonces qui dépassent le seuil d'affaire. Deux stratégies à partir d'un tableau de configuration, un seul processus navigateur :

raw-crack : recherche "pokemon psa 8", compare la valeur BRUTE (non gradée) — trouve les slabs qui valent le coup d'être dégradés (brut > prix du slab ; rare mais réel). graded-under : recherche psa 8/9/10, compare le comparatif de la note du slab lui-même.

**Faits d'implémentation critiques (tous vérifiés, vous feront gagner des heures) : **

La vérification anti-bot de Mercari (PerimeterX) rejette durement le Chromium intégré de Playwright — le défi "appuyer et maintenir" boucle indéfiniment. Lancez le VRAI Chrome installé : channel:'chrome', headful, profil persistant, --disable-blink-features=AutomationControlled, ignoreDefaultArgs:['--enable-automation']. N'automatisez jamais la connexion : détectez la déconnexion (visiter /mypage/ redirige CÔTÉ CLIENT après ~15s vers /login/?login_callback=... — interrogez l'URL, pas le DOM) et attendez jusqu'à 30 min que l'humain se connecte une fois ; la session persiste dans le profil.

Les pages connectées et non connectées utilisent des ID de test DIFFÉRENTS. Recherche connectée : tuiles a[data-testid="ProductThumbWrapper"], prix ProductThumbItemPrice (déconnecté : ItemPrice — acceptez les deux), favori de tuile ItemLike (à l'intérieur de l'ancre de la tuile — favori depuis la page de recherche, pas besoin d'ouvrir les annonces), favori de page d'annonce LikeComp. ProductThumbItemDiscountedPrice est le prix ORIGINAL barré — ne l'utilisez jamais ; les tuiles avec remise concatènent les deux prix dans un seul nœud de texte ("99,75$105$"), donc analysez seulement le PREMIER jeton monétaire.

La première photo de l'annonce ne nécessite pas de visite de page :

https://u-mercari-images.mercdn.net/photos/ITEMID_1.jpg (fetch simple).

"Nouveau" = id d'article non évalué auparavant (fichier d'état), tri du plus récent au plus ancien, ignorer les tuiles VENDUES. Chaque appel PokeGrade = 1 crédit — mettez en cache les résultats par id d'article pour toujours et partagez le cache entre les stratégies. Suivez les ids mis en favori séparément des ids vus (un crash entre l'évaluation et le favori ne doit jamais provoquer un double-clic, ce qui retirerait le favori). Les échecs transitoires (API 5xx, prix manquant) restent non vus et réessayent au cycle suivant.

Piège launchd : les agents NE PEUVENT PAS lire ~/Desktop (TCC) — le travail meurt silencieusement avec le code de sortie 78. Gardez le projet dans le dossier personnel, pas sur le Bureau. RunAtLoad + KeepAlive ; chemin absolu de node dans le plist.

**PHASE 2 — Flux eBay + Vinted (notification uniquement) **

Mêmes stratégies/seuils, mais aucun des deux n'a d'API de liste de surveillance, donc les affaires déclenchent une notification macOS (osascript display notification) + ligne CSV au lieu d'un favori.

eBay : utilisez l'API Browse officielle (OAuth avec identifiants client, item_summary/search, sort=newlyListed, filtre buyingOptions FIXED_PRICE + itemLocationCountry US — notez que priceCurrency n'est valide qu'avec une fourchette de prix). Améliorez les URL d'images s-l225 en s-l1600 pour l'OCR. Environ 5 000 appels API/jour à 3 recherches toutes les 10 min, c'est correct ; la consommation PokeGrade est le vrai budget (environ 5 000 crédits/jour au volume eBay — limitez les évaluations par recherche, par exemple 15).

Vinted : scrappez le catalogue (pas d'API, mais pas de mur anti-bot non plus). Tuiles : a[data-testid="product-item-id-ID--overlay-link"] dont l'attribut title contient "nom, marque : X, état : Y,

$price " ; images sur [data-testid="...--image"] img (augmentez le segment /f###/ de l'URL à /f800/). Les pages Vinted plantent le Chromium sans tête environ 1 fois sur 3 ET peuvent se bloquer sans lever d'exception — encapsulez chaque scrape dans un watchdog Promise.race de 90 s et relancez le navigateur en cas d'échec. Enregistrez une ligne de battement de cœur à chaque cycle pour qu'un journal silencieux signifie "bloqué", pas "calme".

Garde-fous de qualité (tous appris de vrais faux positifs) :

Pré-crédit : ignorez les titres qui sont des lots/paniers ou mentionnent japonais/chinois/coréen/allemand/français/etc.

Post-identification : rejetez si l'ensemble identifié par PokeGrade est un marché étranger (jetons JP/CS/CN/KR) — les vendeurs cachent la langue dans les titres.

Piège Célébrations : PokeGrade peut identifier à tort les réimpressions "Classic Collection" de Celebrations comme les originaux vintage (une réimpression à 30$ est comparable à 30 000$). Si le titre dit célébrations/collection classique mais que l'ensemble identifié ne le fait pas, jetez le comparatif. Même risque de réimpression : Base Set 2, XY Evolutions.

Tout ce qui a un ratio de 5x ou plus est signalé comme "suspect — nécessite examen" et exclu des gains en titre (les ratios extrêmes sont presque toujours des erreurs de comparaison, pas des jackpots).

PHASE 3 — Tableau de bord (application web localhost)

Serveur HTTP Node unique sans dépendance (bind 0.0.0.0 pour que les téléphones sur le LAN puissent l'ouvrir) servant un fichier HTML qui interroge un point de terminaison /data toutes les 30 s. Esthétique "terminal de trading" sombre en premier : chiffres à chasse fixe, LED d'état par service (mtime du fichier journal = santé), bande défilante des évaluations récentes, animations de comptage. Trois onglets :

1. Sniper — bande de statistiques (profit potentiel après frais hors suspects, affaires, offres, à examiner, évalués), graphique d'activité de scan par heure, graphique des gains cumulés, répartition des verdicts, tableau de bord des stratégies, et un tableau de découvertes triable avec vignettes des annonces, bascules étoile/favori (filtrable), et un bouton "acheté" qui copie une découverte directement dans le registre.

2. Veille marché — suiveurs de prix de vente (Phase 4).

3. Registre — Phase 5.

Servez les images externes via un proxy /thumb de même origine (liste blanche des CDN des marketplaces) — les images cross-origin/linkées sont bloquées dans certains clients. Découvertes suspectes : badge d'avertissement + exclues des totaux.

PHASE 4 — Suiveurs de prix de vente

Les données de vente eBay ne sont PAS dans l'API publique. Scrappez la recherche de ventes (LH_Sold=1, LH_Complete=1, sort newest) avec Chromium sans tête (channel:'chromium'), usurpation de user-agent navigateur, et une visite de réchauffement de la page d'accueil d'abord (le lien profond à froid est bloqué par les bots). Cartes : éléments [data-listingid] ; les vraies ventes ont une ligne "Date de vente" (les annonces sponsorisées n'en ont pas). Toutes les minutes, pour chaque requête configurée : prenez les 10 prix de vente les plus récents, ajoutez moyenne/médiane/min/max à un CSV. Le tableau de bord trace la ligne moyenne + la bande min-max par suiveur avec des boutons de zoom de fenêtre temporelle +/-. Un script de backfill unique parcourt jusqu'à 10 pages de résultats en regroupant par la date de vente imprimée pour reconstruire environ une semaine d'historique quotidien (idempotent). Reculez de 10 minutes après 3 extractions vides consécutives.

PHASE 5 — Registre (achat/vente P&L)

Onglet Registre avec une entrée ACHAT et une entrée VENTE : collez n'importe quelle URL d'annonce de

mercari.com ,

jp.mercari.com ,

japan.us.mercari.com (vitrine transfrontalière),

ebay.com (y compris

ebay.io liens courts de partage d'application), ou

vinted.com . Un script de récupération déterministe (pas d'IA) extrait titre/prix/monnaie/image :

Principal :

schema.org Produit JSON-LD (exact sur jp.mercari, ebay, vinted).

japan.us .mercari n'a PAS de JSON-LD — le prix est [data-testid="main-price"] (symbole et nombre sur des lignes séparées), déjà en USD.

ebay.io Les liens courts ne se résolvent que dans un vrai navigateur et atterrissent souvent sur une coquille d'erreur — récupérez l'id de l'article à partir de l'URL résolue et appelez plutôt le Browse API get_item_by_legacy_id.

Rejetez les pages de défi anti-bot ("Just a moment...", "Error Page") comme des erreurs — ne les stockez jamais comme entrées.

Convertissez les non-USD via

frankfurter.app (BCE, gratuit, cache 12h). Stockez les entrées dans ledger.json ; total cumulé = vendu moins acheté, plus un chiffre après frais de 12 % ; les lignes montrent la vignette, la pastille de marché, le prix natif + USD, et une suppression avec confirmation de garde. Prix enregistré = prix indiqué (ignorer les offres) — c'est une simplification délibérée.

VÉRIFICATIONS D'ACCEPTATION PAR PHASE

Exécutez un cycle réel et montrez-moi le journal ; vérifiez une annonce réelle de bout en bout via PokeGrade avant de câbler la boucle ; après tout changement d'UI, faites une capture d'écran du tableau de bord en mode clair et sombre ; ne laissez jamais d'entrées de test dans mon registre ni de cœurs de test sur mon compte.

Avertissements avant de l'exécuter : les scrapers se situent dans une zone grise avec les conditions d'utilisation des marketplaces — gardez la cadence douce et attendez le captcha occasionnel. L'identification des cartes par IA est suffisamment souvent erronée pour que l'achat automatique serait de l'argent brûlé. Et votre réalité de frais peut différer de mes 12 % — réajustez les seuils.

Si vous en construisez un, montrez-moi ce qu'il trouve.

Enregistrer en un clic

Lire les articles viraux en profondeur avec l’IA de YouMind

Enregistrez la source, posez des questions ciblées, résumez l’argument et transformez un article viral en notes réutilisables dans un seul espace de travail IA.

Découvrir YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pénible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prêt à publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux