Pokemon slab'leri (kılıflı kartlar) çevirmek kolaydır. Ama sorun şu: Mercari, eBay ve Vinted'deki fırsatlar dakikalar içinde kapışılabilir ya da bulması zor olabilir ve hiçbir insan üç pazar yerini 7/24 izleyip her ilanı kontrol edemez.
Bu yüzden Claude Code'a bir izleyici yaptırdım. İki gün sonra, ofisimdeki Mac mini'de 7/24 çalışan şey bu:
Araç.
Her 5 dakikada bir Mercari, eBay ve Vinted'deki yeni ilanları tarar. Her yeni ilanın fotoğrafı PokeGrade API'sinden geçer; API, tam kartı tanımlar ve anlık piyasa değerini — ham VE derecelendirilmiş (graded) emsalleri — çeker. PokeGrade API'si, web sitemizin arka planda güç aldığı şeydir. Geliştiricilere ücretsiz erişim sunuyoruz. PokeGrade.ai/developers
Bir slab, piyasa değerinin %25+ altında listelenmişse, Mercari ilanları otomatik olarak beğenilir (auto-heart) ve diğer her şey telefonuma bildirim gönderir. İki strateji yan yana çalışır: düşük fiyatlı slab'ler ve daha tuhaf olanı — slab'lerin, derecelendirilmemiş kartın satış fiyatının altında fiyatlandırıldığı durumlar (kılıf kırma arbitrajı; nadir ama var).

Terminal.
Canlı bir gösterge paneli — karanlık trading masası estetiği, kayan kayan yazı, durum LED'leri — her değerlendirmeyi, ücret hesaplamaları dahil potansiyel kâr toplamlarını, takip ettiğim ürünler için satış fiyatı grafiklerini (eBay satışlarından her 60 saniyede bir örneklenir), ve bir defteri gösterir: beş pazar yerinden herhangi bir ilan URL'sini yapıştırın, bir kazıyıcı alım veya satışı kaydeder ve anlık K/Z (P/L) takibini yapar. Teorik olarak, script'imi hesaplarıma bağlayıp her saat başı kazıma yapmasını sağlayabilirim; henüz yapmadım. Yen ve euro otomatik çevrilir. Tek bir tuşla avlanan bir buluntu doğrudan deftere aktarılır. Telefonumdan çalışır.
Kimsenin bahsetmediği kısım. Özellikler bir öğleden sonra sürdü. Diğer bir buçuk gün ise gerçeklikle bir bıçak dövüşüydü: otomatik tarayıcıları reddeden pazar yeri bot algılama sistemleri, giriş yapıp yapmadığınıza göre farklı kod render eden sayfalar, İngilizce başlıkların arkasına gizlenmiş Japonca kartlar, yanlış klasördeki arka plan işlerini sessizce öldüren macOS. Bunların her biri teşhis için saatler ve düzeltmek için bir satır kod harcattı.
Bu yüzden kodu değil, prompt'u paylaşıyorum. Prompt, her şeyi taşır — doğrulanmış her seçici, her tuzak, her koruma — böylece sizin yapacağınız bu bıçak dövüşünü atlar.
Onu güvenli kılan kurallar. Asla bir şey satın almaz. Asla teklif göndermez. Aşırı "fırsatlar" (5x+ oranlar) kutlanmak yerine şüpheli olarak işaretlenir, çünkü bunlar neredeyse her zaman şaibeli ilanlar veya AI'ın yanlış kartı emsallemesidir. Para hareket etmeden önce her fırsata bir insan bakar. Aynı şekilde inşa edin — otomasyon bulur, siz karar verirsiniz.
Maliyetler: Kart tanımlama için PokeGrade API'si (ücretsiz katman: denemek için ayda 100 değerlendirme; ciddi tarama yapacaksanız ücretli katmanlar), ücretsiz eBay geliştirici hesabı ve sürekli açık kalan bir bilgisayar. Bu kadar.
Prompt.
Aşağıdaki her şeyi Claude Code'a kopyalayın, üç yer tutucuyu doldurun ve aşama aşama inşa edin (her aşama bağımsız olarak kullanışlıdır).
Bilgisayarımda, launchd tarafından yönetilen bir dizi arka plan hizmeti (veya Windows eşdeğeri) artı yerel bir web panosu olarak inşa edilmiş kişisel bir kart çevirme araç seti istiyorum. Yığın: Node.js + Playwright, framework yok, veritabanı yok — tek bir proje klasöründe CSV/JSON dosyaları. Her şey yeniden başlatmalardan kurtulmalı. Size 5 aşama göndereceğim. Her aşama tamamlandıktan sonra, lütfen bir sonraki aşamaya hazır olduğunuzu bana bildirin. Bazı API anahtarları ve Aşama 1 ilk sırada.
Benim girdilerim (doldurun):
PokeGrade API anahtarı: PGAI_KEY_HERE (şuradan:
pokegrade.ai/developers — /value uç noktası, bir fotoğraftan bir kartı tanımlar ve ham + derecelendirilmiş piyasa fiyatlarını döndürür; dokümanlar:
eBay üretim anahtar seti: EBAY_CLIENT_ID / EBAY_CLIENT_SECRET (ücretsiz:
developer.ebay.com ; hesap silme muafiyetine başvurarak etkinleştirin)
Benim fırsat eşiklerim: istenen fiyatın en az 1.25 katı piyasa değerinde beğen/uyar; teklif-çalışma listesi bandı 1.15-1.25x (%80 kabul edilen bir teklif ve ~%12 satış ücreti sonrası yaklaşık %26 net marj)
AŞAMA 1 — Mercari keskin nişancısı (otomatik beğeni)
Yaklaşık her 10 dakikada bir Mercari aramalarını tarayan, her yeni ilanın İLK FOTOĞRAFINI PokeGrade /value üzerinden fiyatlandıran ve fırsat eşiğini geçen ilanları beğenen bir hizmet. Bir yapılandırma dizisinden iki strateji, bir tarayıcı işlemi:
raw-crack: "pokemon psa 8" araması yap, HAM (derecelendirilmemiş) değeri karşılaştır — kırılmaya değer slab'leri bulur (ham > slab fiyatı; nadir ama gerçek). graded-under: psa 8/9/10 araması yap, slab'ın kendi derecesindeki emsalini karşılaştır.
**Kritik uygulama gerçekleri (tümü doğrulanmıştır, size saatler kazandıracak): **
Mercari'nin bot kontrolü (PerimeterX), Playwright'ın yerleşik Chromium'unu sert bir şekilde reddeder — basılı tutma mücadelesi sonsuza kadar döner. GERÇEK yüklü Chrome'u başlatın: channel:'chrome', headful, kalıcı profil dizini, --disable-blink-features=AutomationControlled, ignoreDefaultArgs:['--enable-automation']. Girişi asla otomatikleştirmeyin: oturum açılmamış durumu tespit edin (/mypage/ ziyareti, ~15sn sonra İSTEMCİ TARAFINDA /login/?login_callback=...'e yönlendirir — DOM'u değil URL'yi yoklayın) ve insanın bir kez giriş yapması için 30 dakikaya kadar bekleyin; oturum profilde kalıcı olur.
Giriş yapılmış ve yapılmamış sayfalar FARKLI test id'leri kullanır. Giriş yapılmış arama: kutucuklar a[data-testid="ProductThumbWrapper"], fiyat ProductThumbItemPrice (giriş yapılmamış: ItemPrice — ikisini de kabul edin), kutucuk beğenisi ItemLike (kutucuk bağlantısının içinde — arama sayfasından beğen, ilanları açmaya gerek yok), öğe sayfası beğenisi LikeComp. ProductThumbItemDiscountedPrice, üzeri çizilmiş ORİJİNAL fiyattır — asla kullanmayın; indirimli kutucuklar her iki fiyatı tek bir metin düğümünde birleştirir ("$99.75$105"), bu nedenle yalnızca İLK para token'ını ayrıştırın.
İlk ilan fotoğrafı için sayfayı ziyaret etmeye gerek yok:
https://u-mercari-images.mercdn.net/photos/ITEMID_1.jpg (düz getirme).
"Yeni" = daha önce değerlendirilmemiş öğe kimliği (durum dosyası), en yeniden en eskiye sırala, SATILMIŞ kutucukları atla. Her PokeGrade çağrısı = 1 kredi — sonuçları öğe kimliği başına kalıcı olarak önbelleğe alın ve önbelleği stratejiler arasında paylaşın. Beğenilen kimlikleri, görülen kimliklerden ayrı olarak izleyin (derecelendirme ile beğeni arasında bir çökme, asla bir çift tıklamaya neden olmamalıdır, bu da beğeniyi GERİ ALIR). Geçici hatalar (API 5xx, eksik fiyat) görülmemiş olarak kalır ve sonraki döngüde tekrar denenir.
launchd tuzağı: agent'lar ~/Desktop (TCC) klasörünü OKUYAMAZ — iş, çıkış kodu 78 ile sessizce ölür. Projeyi Masaüstü'nde değil, ana klasörde tutun. RunAtLoad + KeepAlive; plist'te mutlak node yolu.
**AŞAMA 2 — eBay + Vinted akışları (yalnızca bildirim) **
Aynı stratejiler/eşikler, ancak hiçbirinin izleme listesi API'si yok, bu nedenle fırsatlar bir macOS bildirimi (osascript display notification) + CSV satırı gönderir, beğeni/favori yerine.
eBay: resmi Browse API'sini kullanın (istemci kimlik bilgileri OAuth, item_summary/search, sort=newlyListed, filter buyingOptions FIXED_PRICE + itemLocationCountry US — not: priceCurrency yalnızca bir fiyat aralığıyla birlikte geçerlidir). Görüntü URL'lerini OCR için s-l225'ten s-l1600'e yükseltin. 10 dakikada 3 aramada günde yaklaşık 5k API çağrısı sorun değil; PokeGrade tüketimi gerçek bütçedir (eBay hacminde günde yaklaşık 5k kredi — arama başına değerlendirmeleri sınırlayın, örn. 15).
Vinted: kataloğu kazıyın (API yok, ancak bot duvarı da yok). Kutucuklar: a[data-testid="product-item-id-ID--overlay-link"]; title özelliği "isim, marka: X, durum: Y,
$price " içerir; görseller [data-testid="...--image"] img (URL segmentindeki /f###/ kısmını /f800/ olarak yükseltin). Vinted sayfaları, headless Chromium'u yaklaşık 3 yüklemede 1 kez ÇÖKTÜRÜR VE atmadan asılı kalabilir — her kazımayı 90 saniyelik bir watchdog Promise.race ile sarın ve başarısızlıkta tarayıcıyı yeniden başlatın. Her döngüde bir kalp atışı satırı (heartbeat line) günlüğe kaydedin, böylece sessiz bir günlük "sessiz" değil "takılı kaldı" anlamına gelir.
Kalite korumaları (tümü gerçek yanlış pozitiflerden öğrenilmiştir):
Kredi öncesi: lot/paket veya japanese/chinese/korean/german/french vb. içeren başlıkları atlayın.
Tanımlama sonrası: PokeGrade'ın tanımladığı set yabancı bir pazarsa (JP/CS/CN/KR token'ları) reddedin — satıcılar dili başlıklardan gizler.
Celebrations tuzağı: PokeGrade, Celebrations "Classic Collection" yeniden baskılarını vintage orijinaller olarak yanlış tanımlayabilir (30 dolarlık bir yeniden baskı, 30 bin dolar olarak emsallenir). Başlık celebrations/classic collection içeriyor ancak tanımlanan set içermiyorsa, emsali atın. Aynı yeniden baskı riski: Base Set 2, XY Evolutions.
5x veya daha fazla orana sahip her şey "şüpheli — inceleme gerekiyor" olarak işaretlenir ve ana kazanç hesaplarından çıkarılır (aşırı oranlar neredeyse her zaman emsal uyuşmazlıklarıdır, ikramiye değil).
AŞAMA 3 — Pano (localhost web uygulaması)
Bağımlılıksız tek Node HTTP sunucusu (LAN'daki telefonların açabilmesi için 0.0.0.0'e bağla), her 30 saniyede bir /data uç noktasını sorgulayan tek bir HTML dosyası sunar. Karanlık öncelikli "trading terminali" estetiği: monospace rakamlar, hizmet başına durum LED'leri (günlük dosyası mtime = sağlık), son değerlendirmelerin kayan kayan yazısı, sayma animasyonları. Üç sekme:
1. Sniper — istatistik bandı (şüpheliler, fırsatlar, teklifler, inceleme-gerekiyor, değerlendirilenler hariç ücret sonrası potansiyel kâr), saatlik tarama etkinlik grafiği, kümülatif kazanç grafiği, karar dağılımı, strateji skor tablosu ve ilan küçük resimleri, yıldız/favori geçişleri (filtrelenebilir) ve bir buluntuyu doğrudan deftere kopyalayan bir "satın alındı" düğmesi içeren sıralanabilir bir buluntu tablosu.
2. Piyasa izleme — satış fiyatı takipçileri (Aşama 4).
3. Defter — Aşama 5.
Harici görselleri aynı kaynaklı /thumb proxy'si üzerinden sunun (pazar yeri CDN'lerini beyaz listeye ekleyin) — çapraz kaynaklı/hotlink görseller bazı istemcilerde engellenir. Şüpheli buluntular: uyarı rozeti + toplamlardan hariç tutulur.
AŞAMA 4 — Satış fiyatı piyasa takipçileri
eBay satış verileri HERKESE AÇIK API'de DEĞİLDİR. Satış aramasını (LH_Sold=1, LH_Complete=1, sort newest) headless Chromium (channel:'chromium'), tarayıcı-UA sahteciliği ve önce bir ana sayfa ısınma ziyareti ile kazıyın (soğuk derin bağlantı bot engellemesi alır). Kartlar: [data-listingid] öğeleri; gerçek satışlarda bir "SOLD date" satırı bulunur (sponsorlu reklamlarda yoktur). Her dakika, yapılandırılmış her sorgu için: en son 10 satış fiyatını alın, ortalama/medyan/min/max değerlerini bir CSV'ye ekleyin. Pano, her takipçi için ortalama çizgisi + min-max bandını +/- zaman aralığı yakınlaştırma düğmeleriyle grafikler. Tek seferlik bir geri doldurma script'i, basılı satış tarihine göre gruplayarak 10 sonuç sayfasına kadar yürür ve yaklaşık bir haftalık günlük geçmişi yeniden oluşturur (idempotent). 3 ardışık boş çıkarmadan sonra 10 dakika geri çekilin.
AŞAMA 5 — Defter (alım/satım K/Z)
Bir ALIM girişi ve bir SATIM girişi olan Defter sekmesi: herhangi bir ilan URL'sini şuradan yapıştırın:
japan.us.mercari.com (sınır ötesi mağaza),
ebay.com (şunlar dahil:
ebay.io uygulama paylaşım kısa bağlantıları) veya
vinted.com . Belirleyici bir getirici script (AI yok), başlık/fiyat/para birimi/görseli çıkarır:
Birincil:
schema.org Ürün JSON-LD (jp.mercari, ebay, vinted'de tam olarak).
japan.us .mercari'de JSON-LD YOKTUR — fiyat [data-testid="main-price"] (sembol ve sayı ayrı satırlarda), zaten USD.
ebay.io kısa bağlantılar yalnızca gerçek bir tarayıcıda çözülür ve genellikle bir hata kabuğuna düşer — çözümlenmiş URL'den öğe kimliğini alın ve bunun yerine Browse API get_item_by_legacy_id'i çağırın.
Bot mücadelesi sayfalarını ("Just a moment...", "Error Page") hata olarak reddedin — bunları asla girdi olarak saklamayın.
USD dışı para birimlerini şuradan dönüştürün:
frankfurter.app (ECB, ücretsiz, 12 saat önbellek). Girdileri ledger.json'da saklayın; anlık toplam = satılan eksi satın alınan, artı %12 ücret sonrası bir rakam; satırlar küçük resim, pazar yeri çipi, yerel + USD fiyatı ve onay korumalı bir silme gösterir. Kaydedilen fiyat = listelenen fiyat (teklifleri yok sayar) — bu kasıtlı bir basitleştirmedir.
AŞAMA BAŞINA KABUL KONTROLLERİ
Gerçek bir döngü çalıştırın ve bana günlüğü gösterin; döngüyü bağlamadan önce PokeGrade üzerinden uçtan uca gerçek bir ilanı doğrulayın; her UI değişikliğinden sonra, panonun hem açık hem de koyu modda ekran görüntüsünü alın; defterime asla test girdileri veya hesabıma test beğenileri bırakmayın.
Çalıştırmadan önce adil uyarılar: kazıyıcılar, pazar yeri hizmet şartları ile gri bir bölgede oturur — tempoyu nazik tutun ve ara sıra captcha bekleyin. AI kart tanımlaması, otomatik satın alma yapmak parayı ateşe atmak olacağı kadar sık yanlıştır. Ve sizin ücret gerçekliğiniz benim %12'lik oranımdan farklı olabilir — eşikleri yeniden ayarlayın.
Eğer bir tane inşa ederseniz, bulduklarını bana gösterin.





