L’identificazione delle carte che le tue live meritano. Fatta per break, aperture e show in diretta.
cardstream segue il tuo break, la tua apertura di bustine o il tuo show e identifica ogni carta collezionabile nell’istante in cui entra nell’inquadratura: nome, set e confidenza, in diretta. Analizza le tue live di vendita con un sistema di tracciamento delle carte, pensato per gli streamer che vogliono saperne di più.
Da Pokémon a Magic: The Gathering
Cambia categoria a ogni show e tutto il motore ti segue: rilevamento, filtri e chiamata di identificazione puntano all’endpoint giusto. Ogni corrispondenza arriva con nome, set, codice di set, numero di carta, serie e anno.
Giochi di carte collezionabili
collectibles/v2/tcg_id Carte singole di TCG, moderne e vintage, lette direttamente dalla diretta. L’endpoint legge l’illustrazione, la cornice e il testo, quindi la carta viene identificata dalla stessa immagine che stanno guardando i tuoi spettatori: niente caccia al simbolo del set, niente occhi strizzati sul numero di collezione.
- Pokémon
- Magic: The Gathering
- Yu-Gi-Oh!
- One Piece
- Lorcana
- Digimon
- Dragon Ball Super
- Flesh and Blood
- Star Wars Unlimited
- Star Wars Destiny
- MetaZoo
- Riftbound
- Weiss Schwarz
- Union Arena
- Force of Will
- Grand Archive
- Vanguard
- Marvel Champions
- Sorcery
- Final Fantasy
- Gundam
- Duel Masters
- Naruto Mythos
- Hololive
- Garbage Pail Kids
Carte sportive sport_id
Rookie, parallel, insert e autografate di tutti i principali sport (baseball, basket, football americano, calcio, hockey e altri): la carta esatta, il set esatto, l’anno esatto.
Carte gradate (slab) slab_id
Legge l’etichetta del case di gradazione: la carta dentro uno slab PSA, BGS o CGC, identificata senza doverlo aprire.
Fumetti comics_id
Copertine identificate come le carte: titolo, numero e anno, da un singolo fotogramma fermo.
Collega un riconoscitore proprietario, oppure il tuo
Tutto ciò che decide se chiamare avviene prima dell’identificazione vera e propria: il rilevamento, il filtro di movimento e il filtro di stessa carta girano in locale e non dipendono dal fornitore. La chiamata è un singolo passaggio sostituibile: Ximilar già pronto all’uso, un servizio proprietario di identificazione delle carte, oppure un modello che hai addestrato tu e che ospiti sul tuo hardware.
È un’interfaccia minima: entra il ritaglio di una carta, esce una corrispondenza. Implementa IdentifyTarget e ogni filtro, limite e soglia a monte continua a funzionare esattamente come prima: sempre un ritaglio per carta distinta, chiunque sia a rispondere.
# il tuo riconoscitore, lo stesso motore class HouseIdentifier(IdentifyTarget): def identify(self, crop_bgr): return my_service.match(crop_bgr) # un ritaglio per carta distinta, in entrambi i casi $ cardstream-web --detector rfdetr
Una chiamata per carta, non per fotogramma
L’obiettivo è ridurre l’analisi dello streaming alle sole chiamate che ti dicono davvero qualcosa di nuovo. È l’alternativa open source ai SaaS chiusi di riconoscimento delle carte: nessuna piattaforma nel mezzo, nessuna licenza per postazione. Il tuo hardware, la tua chiave API e una macchina a stati che chiama solo quando la carta nell’inquadratura è davvero nuova.
Una pipeline ingenua, che lavora fotogramma per fotogramma a 15 fps, lancia 54.000 identificazioni all’ora. cardstream ne lancia una per ogni carta distinta che mostri: un centinaio in quella stessa ora.
Stessa ora, stesso video, stesse carte: 54.000 chiamate contro circa 100. I filtri di movimento e di identità girano in locale sul tuo hardware, e una chiamata parte solo quando una carta davvero nuova si ferma nell’inquadratura.
Nessun abbonamento SaaS, nessun prezzo per postazione, nessun lock-in. Ospita tu l’intero stack, identificazione compresa, oppure collegati all’API di Ximilar.
Tutto ciò che serve a uno show di carte in diretta
Un co-host che non si perde nemmeno una carta: per chi vende in live commerce su piattaforme come Whatnot e Fanatics Live, per i box break, per le dirette dei negozi di carte e per chi cataloga una collezione. Ovunque ci siano una videocamera e delle carte.
Riconosciuta appena entra nell’inquadratura
Nessun pulsante di scansione, nessuna attesa. Mostra la carta e basta: nome, set e confidenza passano dal cartoncino allo schermo in circa mezzo secondo, in diretta.
Una chiamata per carta
Un filtro di movimento e un filtro di identità basato su embedding girano in locale sulla tua CPU. Tieni ferma una carta: zero chiamate ripetute. Cambia carta: esattamente una chiamata nuova.
Qualsiasi sorgente video
Webcam, file video, RTSP, RTMP e SRT: in pull, oppure in push direttamente da OBS con --listen. Feed JPEG via WebSocket per i setup su misura.
Qualsiasi backend di identificazione
Ximilar collectibles/v2 già pronto all’uso, oppure punta lo stesso motore su un riconoscitore di carte proprietario o su uno che hai addestrato e ospiti tu.
Porta i tuoi modelli
I pesi del localizzatore sono nostri: un modello di segmentazione RF-DETR con fine-tuning, Apache-2.0, scaricato dall’installer. Sono supportati anche i rilevatori a bounding box (RF-DETR, RT-DETRv2), se preferisci portare il tuo export.
Open source, self-hosted
Un solo pacchetto Python con licenza permissiva. Leggilo, fanne un fork, fallo girare sul tuo hardware. La tua chiave, i tuoi dati, la tua infrastruttura.
Abbastanza furbo da sapere quando non chiamare l’API
Tra la tua diretta e l’API c’è una macchina a stati. Ogni fotogramma passa da DecisionCore, un’unica macchina a stati che gira in locale, e tre filtri locali decidono quando l’unico passaggio via API è davvero giustificato.
Rilevamento
locale · 0 chiamate APITrova il quadrilatero della carta e ne raddrizza un ritaglio pulito. La frequenza è regolata su tre livelli dal filtro di movimento locale: scena in movimento, ferma con una carta, vuota.
Filtro di movimento
locale · 0 chiamate APIUna semplice differenza media tra fotogrammi, che non costa quasi nulla. Solo quando la scena è ferma da N fotogrammi vale la pena guardare la carta più da vicino. Si muove ancora? Si aspetta.
Filtro di identità
locale · 0 chiamate APIUn confronto tra embedding risponde a una sola domanda: è la stessa carta di prima? Stessa carta → viene riproposto il risultato in cache.
Identificazione
ximilar · 1 chiamataSolo una carta davvero nuova e ferma fa partire un’identificazione Ximilar: asincrona, con debounce, fuori dal ciclo dei fotogrammi. Il risultato torna indietro in diretta.
Fai streaming da solo?
Una persona, una videocamera, una lunga notte di break: non dovrebbe servirti un team di ingegneri per sapere quale carta c’è sullo schermo. Collega la diretta che stai già trasmettendo e lascia che cardstream la analizzi in tempo reale, che tu venda su un marketplace o direttamente dal tuo canale.
- Whatnot
- Fanatics Live
- eBay Live
- TikTok Shop
- Twitch
- YouTube Live
- il tuo sito
Nessun accesso al tuo account, nessuna chiave API del marketplace, nessun bot nella tua chat, e nessuna affiliazione con queste piattaforme. cardstream legge il tuo video, nient’altro.
Trasmetti già da OBS
Aggiungi un’uscita in più accanto a quella che alimenta il tuo show. I tuoi acquirenti vedono esattamente quello che vedevano prima: una copia dello stesso segnale arriva a cardstream, e ogni carta che finisce sul tavolo viene identificata al volo. La modalità di ascolto qui sotto richiede il binario ffmpeg di sistema; in alternativa salta del tutto la seconda uscita e lascia che cardstream legga la fotocamera virtuale di OBS come una normale webcam.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live # punta qui la seconda destinazione di OBS
Oppure la videocamera che è già sul tavolo
Camera dall’alto, scheda di acquisizione, telefono usato come webcam: qualunque cosa inquadri le carte mentre le apri e le mostri. L’analisi gira sul computer accanto alla videocamera, quindi di default dalla stanza non esce altro che un ritaglio per carta.
$ cardstream-web --source 0 # webcam · interfaccia nel browser su localhost
Oppure qualsiasi cosa abbia un URL
Encoder, mixer video, restreamer, un secondo studio dall’altra parte della città. Pull RTSP, RTMP e SRT, più feed JPEG via WebSocket quando il setup è fatto in casa.
$ cardstream-web \
--source rtsp://studio/stream1 Overlay in diretta
Nome, set e confidenza compaiono non appena la carta si ferma: pronti da leggere ad alta voce o da riportare nella tua scena.
Ogni carta, registrata
Uno storico continuo di tutto ciò che hai mostrato: una miniatura di ogni carta e quanto è rimasta in diretta. Salvalo nel tuo account Ximilar e riguarda lo show la mattina dopo: cosa hai venduto, quanto valeva.
A misura di chi lavora da solo
Nessuna commissione di piattaforma, nessuna licenza per postazione. Uno show di tre ore costa una manciata di chiamate di identificazione, non una per fotogramma.
Passo dopo passo: collega uno show su Whatnot o Fanatics Live →
Il tuo show, salvato e pronto da rivedere
cardstream gira sul tuo computer e di default non conserva nulla. Aggiungi un flag e ogni carta che mostri viene salvata anche in una sessione del tuo account Ximilar, con il suo prezzo, il tempo passato sullo schermo e il ritaglio da cui è stata identificata. A show finito apri l’app Ximilar e guarda quanto valeva.
$ cardstream-web --price-stats \ --ximilar-stream NEW # stampa l’id della sessione e salva mentre lo show va avanti
Lo show in numeri
Prodotti mostrati, chiamate API a pagamento, valore di mercato e tempo medio sullo schermo per ogni sessione, con accanto i prodotti di maggior valore e i set più frequenti.
Ogni carta, con la sua immagine
Ogni riga conserva carta, set, numero, prezzo e il ritaglio da cui è stata identificata. Cerca nell’elenco per prodotto o per set e filtra le sessioni per stato, piattaforma e data.
Fanne il tuo registro
Segna cosa hai venduto, aggiungi una nota, correggi una corrispondenza sbagliata o il suo prezzo, elimina un falso positivo. Dai un nome alla sessione e allega i tuoi metadati: un numero di lotto, i costi, gli acquirenti.
Riprendi da dove eri rimasto
Hai riavviato a metà show? Passa l’id della sessione al posto di NEW e lo show prosegue nella stessa sessione, anche dopo che è stata chiusa. --ximilar-workspace la salva in un workspace di team.
Disattivato di default: senza --ximilar-stream la chiamata di identificazione è l’unica cosa che esce dal tuo computer. Per salvare serve il servizio Cardstream sul tuo account Ximilar; viene addebitato solo l’avvio di una sessione, e con --no-ximilar-stream-images si salva solo il testo.
Da zero all’identificazione in diretta in 3 passaggi
Installalo
Un virtualenv, il wheel della release (con checksum verificato), i pesi dei modelli ed entrambi i comandi nel tuo PATH. Usa lo script, installa con pip lo stesso wheel da PyPI (i pesi si scaricano a parte), oppure clona il repository e fai la build tu: Docker e Windows sono nella pagina di download.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh # altri metodi di installazione → cardstream.ai/download
$ pip install 'cardstream[client,onnx]' # oppure: uv tool install 'cardstream[client,onnx]' # il wheel non contiene i pesi: scompatta i due tarball da cardstream.ai/models # e punta i flag su di essi: $ cardstream-web --segmentor-model segmentation_model/onnx/model.onnx \ --embed-model similarity_model/onnx/model.onnx
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream $ ./scripts/build-from-source.sh --models $ source .venv/bin/activate
Collega un sistema di identificazione
Ximilar collectibles/v2 già pronto all’uso: una chiave da ximilar.com è l’unica credenziale che serve a tutto il sistema. Oppure punta lo stesso passaggio sul tuo riconoscitore.
$ export XIMILAR_API_KEY=your-key
Punta una videocamera su una carta
Apri l’interfaccia nel browser con la tua webcam, oppure dagli in pasto il tuo show: in pull via RTSP, o lasciando che OBS gli invii l’RTMP direttamente. Apri lo stesso set per tutta la sera? Preimpostalo e l’endpoint smette di tirare a indovinare: Pokémon in inglese del set CRI sono tre cose in meno da sbagliare. Imposta --alphabet ogni volta che imposti --game: preimpostare il gioco disattiva il rilevamento del sistema di scrittura dell’endpoint. Aggiungi --price-stats e ogni corrispondenza porta con sé anche i prezzi di mercato in USD (mediana, intervallo e ultima vendita), sulla carta e nello storico. Aggiungi --ximilar-stream NEW per salvare lo show nel tuo account Ximilar e rivederlo dopo.
$ cardstream-web # → http://127.0.0.1:8001 (mostra una carta) # Carte Pokémon in inglese, un solo set (CRI - Chaos Rising), con prezzi di mercato in USD: $ cardstream-web --game Pokemon --set-code CRI --alphabet latin --price-stats
Open source. Self-hosted. La tua live, il tuo stack.
Nessuna piattaforma nel mezzo, nessuna licenza per postazione: collega l’API di Ximilar o il tuo sistema di identificazione, e cardstream lo chiama una volta per carta distinta invece che una volta per fotogramma. Che tu faccia break su Whatnot, conduca uno show in stile Fanatics Live o trasmetta con il tuo setup di live commerce, fai girare cardstream stasera stessa sull’hardware che hai già.