Mi-am construit un skill AI de tarot — și am renunțat la propriile poze pentru unele mai bune

Costin Pietraru langa un panou holografic cu carti de tarot, ca simbol al reconstruirii unui skill AI de citire tarot cu carti reale, nu generate

Skill-ul trage cărți reale dintr-un pachet Rider-Waite-Smith — dar nu din pozele mele cu pachetul fizic, cum am pornit inițial, ci din scanările de domeniu public ale ediției originale din 1909. Motivul e simplu: pozele mele arătau prost (lumină de telefon, textura feței de masă vizibilă prin decupaj), iar generarea cu AI ar fi adus alt fel de problemă — 78 de ilustrații separate, fiecare cu stilul ei ușor diferit. Articolul e jurnalul complet al construcției, inclusiv episodul în care Wikimedia mi-a blocat sistematic descărcarea și am găsit altă cale — plus promptul complet, gratuit, ca oricine să-și construiască un skill identic.

Pe scurt:

De ce cărți reale, nu generate de AI

Un pachet de tarot generat cu AI ar cere 78 de ilustrații separate — și fiecare generare AI are stilul ei ușor diferit (altă paletă, alt nivel de detaliu), deci un pachet „complet” ar arăta ca 78 de cărți din 78 de pachete diferite, nu ca un set coerent. Mai e și o problemă de fond: a cere unui model AI să recreeze „un pachet de tarot clasic” înseamnă, în practică, să-i ceri să imite un design existent — ceea ce e o zonă legal mai riscantă, nu mai sigură, decât să folosești o sursă reală de domeniu public.

Pachetul Rider-Waite-Smith original, ilustrat de Pamela Colman Smith și publicat în 1909, e exact asta: o sursă reală, cu autoarea decedată din 1951 — termenul de copyright pe arta originală a expirat. Skill-ul folosește scanările acelui pachet, nu o reinterpretare AI a lui.

Prima variantă: pozele proprii, corect decupate, dar prost arătate

Am pornit de la ce aveam la îndemână: pachetul meu fizic, fotografiat în 8 poze-grilă (10 cărți/poză, ultima cu 8). Un script Python (OpenCV) a trebuit să separe cărțile automat — mai greu decât părea, pentru că erau așezate fără gol vizibil între ele. Trei bug-uri, în ordine:

  1. Un closing morfologic prea agresiv lipea cărțile alăturate într-un singur contur — soluția a fost să detectez întâi întreaga grilă ca un singur bloc, s-o îndrept (perspectivă), și abia apoi s-o împart în rânduri × coloane egale, cu o marjă mică de siguranță.
  2. Patru din cele 8 poze aveau un gol real de fundal între rânduri, care strica euristica automată de potrivire (comparam toată grila, gol inclus, cu aspectul unei singure cărți) — corectate cu verificare vizuală directă pe imaginea îndreptată.
  3. O poză întreagă (10 cărți) a ieșit răsturnată 180° — conținut corect, doar orientarea greșită. Găsit prin verificare sistematică, reparat cu o rotație țintită.

După identificare (verificată integral față de pachetul complet de 78 de cărți — 0 duplicate, 0 lipsuri), rezultatul funcționa perfect tehnic. Dar arăta prost în raport: lumină inegală de telefon, textura vizibilă a feței de masă din decupaj, sclipici. Exact genul de detaliu care se vede imediat lângă celelalte rapoarte.

A doua variantă: scanări publice — și blocajul de la Wikimedia

Alegerea evidentă a fost să înlocuiesc pozele cu scanări curate de domeniu public. Wikimedia Commons are exact asta — dar descărcarea a 78 de fișiere individuale, unul câte unul, a fost blocată sistematic cu HTTP 429 (too many requests), la nivel de IP, indiferent dacă foloseam endpoint-ul de redirect al fișierelor sau API-ul oficial către CDN. Am încercat backoff exponențial (5s, 10s, 20s… până la 90s) — tot 429.

Lecția care a contat: când o sursă externă blochează sistematic, nu insista pe același model de cerere — caută o cale de a obține totul dintr-o singură cerere. Soluția a fost un mirror pe GitHub care avea toate cele 78 de imagini (plus un JSON cu metadatele complete) bundle-ate într-un singur repo — descărcat integral ca arhivă zip, o singură cerere, fără nicio limitare de rată.

Card de tarot din raportul generat: Împărăteasa, dreaptă, cu interpretarea scrisă de AI ancorată in cartea reală trasă

Cum funcționează, concret

Skill-ul are trei pași, separați ca la celelalte instrumente din seria asta:

Pas Ce face
1. Extragere Scriptul trage N cărți unice la întâmplare din cele 78, fiecare cu ~50% șanse să iasă inversată — fără nicio „alegere” din partea AI-ului
2. Interpretare Agentul AI scrie interpretarea DIN cărțile reale trase — fiecare afirmație legată de o carte, poziția și orientarea ei concretă, nu un răspuns generic
3. Raport Un HTML de sine stătător, cu imaginile cărților incluse direct în fișier — cărțile inversate apar ROTITE 180° vizual, exact cum ar sta fizic pe masă

Tipuri de întindere disponibile: o carte (răspuns direct), trei cărți (Trecut/Prezent/Viitor sau Situație/Acțiune/Rezultat), cinci cărți, sau crucea celtică clasică (zece cărți).

Toate cele trei carduri dintr-o citire demo, unul sub altul, cu pozele reale ale cărților și interpretarea de sub fiecare

Promptul, gata de copiat: construiește-ți propriul skill de tarot

Mai jos e promptul complet cu care oricine își poate construi același instrument. Îl dai unui agent AI care scrie și rulează cod pe calculatorul tău — eu am folosit Claude Code. Îți trebuie doar Python instalat.

Fișier de descărcat: prompt-skill-tarot.txt.

Vezi promptul — skill AI de citire tarot cu cărți reale
Construiește-mi un skill în două scripturi Python care fac o citire de tarot reală
(cărți adevărate din pachetul Rider-Waite-Smith, trase la întâmplare de cod — nu
"alese" sau inventate de AI), apoi generează un raport HTML cu ea.

Pasul 0 — imaginile celor 78 de cărți:

Nu genera cărțile cu AI (stil inconsistent pe 78 de generări separate, plus riscul legal
de a re-crea un design care seamănă cu un pachet comercial existent e mai mare, nu mai mic,
decât folosirea unei surse reale). Folosește în schimb scanările de domeniu public ale
pachetului Rider-Waite-Smith original (1909, Pamela Colman Smith — autoarea a murit în 1951,
deci termenul de copyright pe arta originală a expirat).

Nu lovi Wikimedia Commons cu 78 de cereri individuale de download — dă 429 (too many
requests) sistematic, la nivel de IP. În schimb, caută un mirror pe GitHub care bundle-ează
toate cele 78 de imagini într-un singur repo — descarcă TOT repo-ul dintr-o singură cerere
(arhivă zip), nu fișier cu fișier. De obicei un asemenea repo are și un JSON cu metadate
(nume carte, număr, arcană, culoare, nume fișier imagine) — folosește-l direct ca sursă de
adevăr pentru maparea nume-carte → fișier imagine.

Organizează cele 78 de imagini în slug-uri clare și scrie un carti.json cu, pentru fiecare
carte: nume (română + engleză), arcană (majoră/minoră), culoare (pentru minore), număr sau
rang de curte, calea către imagine, și o semnificație scurtă DREAPTĂ și una INVERSATĂ.

Pasul 1 — script de extragere (extrage.py):

Argumente: --intrebare (obligatoriu), --intindere (1 = o carte; 3 = Trecut/Prezent/Viitor;
3s = Situație/Acțiune de luat/Rezultat probabil; 5 = Situație/Provocare/Trecut recent/
Viitor apropiat/Rezultat; 10 = crucea celtică clasică), --fara-inversate (opțional),
--seed (doar pentru teste), --output.

Trage N cărți UNICE din cele 78 (fără repetiții în aceeași citire), fiecare cu ~50% șansă
să iasă inversată. Iese un JSON cu: întrebarea, tipul intinderii, și pentru fiecare poziție
— cartea, orientarea, calea către imagine, și semnificația scurtă activă. NU scrie nicio
interpretare aici — asta o face separat un agent AI, din JSON-ul rezultat.

Pasul 2 — interpretarea (scrisă de agentul AI):

Pentru fiecare carte din intindere: numește cartea, poziția și orientarea; explică
semnificația IN CONTEXTUL întrebării puse, nu repeta orb semnificația scurtă; dacă e Arcană
Majoră, spune explicit că are greutate mai mare; dacă e inversată, nu trata asta automat ca
"rău" — schimbă doar nuanța. La final, o sinteză care leagă cărțile ÎNTRE ELE.

Salvează rezultatul într-un interpretare.json cu cheile: introducere, per_carte (dicționar
cu cheile identice cu câmpul "pozitie" din citire.json), sinteza.

Pasul 3 — script de raport (raport.py):

Argumente: --citire, --text, --output. Combină cele două JSON-uri într-un raport HTML de
sine stătător — imaginile cărților incorporate direct în fișier (base64). Design: fond alb,
culori vii cu contrast mare, un card vizual per poziție din intindere. Cărțile inversate se
afișează ROTITE 180° vizual (transform: rotate(180deg)) — exact cum ar sta fizic pe masă.

Adaugă la final un disclaimer clar: tarotul e pseudo-știință, cărțile sunt trase aleatoriu
de un program, interpretarea e pentru reflecție, nu înlocuiește o decizie bazată pe fapte
concrete.

Reconfigurează ieșirea consolei pe UTF-8 la începutul ambelor scripturi Python.

Ce NU face acest skill

Ce legătură are cu firma ta?

Aceeași disciplină de aici — nu inventa, folosește o sursă reală, și spune clar unde se termină ce poți ști cu adevărat — e regula pe care o aplic la orice automatizare pe care o construiesc pentru o firmă: instrumentul de verificare CUI interoghează direct registrul public al ANAF, nu presupune. Dacă vrei o automatizare construită cu aceeași regulă, pornesc de la sub 400 €, gata în 2–5 zile lucrătoare. Iar dacă vrei să înveți să construiești singur(ă) astfel de instrumente, cursul de AI pentru firme predă exact acest drum: 4 ședințe a câte 2 ore, grupe de maximum 8, 95 € de persoană, cu garanția banilor înapoi după primele două ședințe.

Întrebări frecvente

De ce nu ați generat cărțile de tarot cu AI, dacă tot construiți totul cu AI?

Pentru că 78 de generări separate ar fi ieșit cu stiluri ușor diferite (o problemă de consecvență vizuală), și pentru că recrearea unui design de pachet existent e o zonă legal mai riscantă decât folosirea unei surse reale de domeniu public. Sursa aleasă — scanările originalului din 1909 — e mai bună din ambele motive.

Cărțile astea sunt aceleași cu cele dintr-un pachet de tarot cumpărat din magazin?

Vizual, da — majoritatea pachetelor Rider-Waite-Smith vândute azi reproduc aceeași artă din 1909. Skill-ul folosește scanări ale acelei arte originale, de domeniu public în SUA (autoarea, Pamela Colman Smith, a murit în 1951).

De ce a durat mai mult să obțineți imaginile decât să scrieți codul?

Wikimedia Commons a blocat sistematic descărcarea fișier cu fișier (HTTP 429), inclusiv cu pauze din ce în ce mai lungi între cereri. Soluția n-a fost să insist, ci să găsesc o sursă care oferă toate cele 78 de imagini într-o singură cerere — o arhivă completă, nu 78 de descărcări separate.

Extragerea e cu adevărat aleatorie, sau AI-ul „alege” cărțile care sună bine?

Complet aleatorie, din cod — random.sample, fără nicio intervenție AI în ce cărți ies. AI-ul intră abia după, ca să scrie interpretarea pornind de la cărțile care au ieșit deja.

Pot să-mi construiesc și eu un instrument ca acesta, fără să fiu programator?

Da — promptul din articol e scris exact pentru asta: îl copiezi într-un agent AI care scrie și rulează cod, iar corecturile din articol (mai ales episodul cu blocajul Wikimedia) sunt deja incluse în instrucțiuni.

Surse

#agenți AI
Costin Pietraru
Scris de

Costin Pietraru

Inginer cu 30+ ani în sisteme, fondator SimpluSPV. Livrează cursul de AI pentru firme și scrie despre automatizare aplicată — fără teorie, doar sisteme care lucrează.

Vezi profilul complet →

Vrei firma pregătită pentru AI, corect și legal?

4 ședințe aplicate, echipa pleacă cu sisteme reale și documentele de conformitate. Garanție bani înapoi după 2 ședințe.

Înscrie echipa la curs →