DergiPark Skill (Claude in Chrome)
DergiPark (Türk akademik dergi platformu) için bir Claude in Chrome skill'i. Claude'u senin kendi tarayıcı oturumun üzerinden çalıştırır: arama, makale meta verisi, PDF→metin ve kaynakça çıkarma — hepsi sayfaya JavaScript enjekte edilerek yapılır. Senin gerçek tarayıcın ve IP'n kullanıldığı için CAPTCHA çözme servisine gerek yoktur; doğrulama çıktığında onu kendi sekmende sen geçersin.
Bu skill bir sunucu/MCP değildir. Hiçbir API anahtarı, CapSolver veya harici servis gerektirmez — sadece Claude + Chrome eklentisi ve (gelişmiş arama için) DergiPark hesabına giriş.
Kurulum
Gereksinimler: Claude (Claude in Chrome özelliği aktif) + Chrome eklentisi. Gelişmiş arama için DergiPark'a giriş yapmış olman gerekir.
Claude'a şunu yaz:
Bu skill'i kurmak istiyorum:
https://github.com/saidsurucu/dergipark-skill
Ne yapabilir
Kurduktan sonra Claude'a doğal dilde söylemen yeterli; skill devreye girip tarayıcında ilgili işi yapar.
1. Basit arama — search_articles
Anahtar kelimeyle arama (giriş gerektirmez). 24 sonuç/sayfa; her makale için
başlık, yazar, dergi, tarih, öz, DOI, ISSN, anahtar kelimeler, indeksler ve PDF
bağlantısı döner. Filtreler: sıralama (newest/oldest), makale türü, yıl ve
indeks filtresi (tr_dizin_icerenler / bos_olmayanlar / hepsi).
Sorgu sözdizimi: basit aramada alan öneki ve boolean operatör yoktur.
title:(...),AND/ORve tırnak içindeki kalıplar sıradan terim sayılıp OR'lanır — yani kelime eklemek sonucu daraltmaz, genişletip isabeti düşürür. Tek ayırt edici terim kullan; alan bazlı arama içinadvanced_search'e geç.
Örnek: "DergiPark'ta 'yapay zeka' ara, en yeniler önce gelsin" "'iklim değişikliği' için 2024 araştırma makalelerini getir"
2. Gelişmiş alan araması — advanced_search
Alan bazlı boolean arama. 17 alan: title, short_title, journal, issn, eissn, abstract, keywords, doi, doi_url, doi_prefix, author, orcid, institution, translator, year, citation, publisher. Operatörler: AND / OR / NOT. Yıl
aralığı desteklenir.
⚠️ Bu yol senin müdahaleni gerektirir. Gelişmiş arama iki kapıyla korunuyor: DergiPark girişi ve Cloudflare Turnstile bot doğrulaması — ve Turnstile giriş yapmış oturumlarda da devreye giriyor. Sayfa içi
fetchsenin çerezlerini taşır ama CAPTCHA çözemez. Bu yüzden sonuçerror: "challenge"dönerse Claude kendi başına tekrar deneyemez: aramayı kendi sekmende açıp doğrulamayı geçmen, sonra Claude'un yeniden denemesi gerekir.
Örnek: "Yazarı İnalcık olan makaleleri bul" "Başlığında 'yapay zeka' geçen ama anahtar kelimesinde 'eğitim' geçmeyen, 2024 sonrası makaleler" "Boğaziçi Üniversitesi + 'machine learning' anahtar kelimeli makaleler"
3. PDF → metin — pdf_to_html
Bir DergiPark makale PDF'ini (dosya id'si ile) okunabilir metne çevirir. Tarayıcıda pdf.js ile çıkarılır (CSP yok, harici bağımlılık çalışma anında CDN'den yüklenir; çevrimdışı için pdf.js repoda gömülüdür). OCR yoktur.
Hızlıdır ve ana iş parçacığını kilitlemez: 36 sayfalık / 477 KB'lık bir PDF uçtan uca ~2 saniye (ölçüm: 30.07.2026). Sorun hız değil, dönen metnin boyutu — o makale ~111 bin karakter. Uzun PDF'lerde sayfa aralığı isteyebilirsin.
Örnek: "Şu makalenin PDF'ini metne çevir: 3479650" "3479650'nin ilk 10 sayfasını çevir"
4. Kaynakça — get_article_references
Bir makale URL'inden tüm kaynakça (citation_reference) listesini çıkarır.
Örnek: "Bu makalenin kaynakçasını çıkar: https://dergipark.org.tr/tr/pub/.../article/..."
Nasıl çalışır
- Aramalar
dergipark.org.trsekmesinde yapılır; makale detayları sayfa-içi same-originfetchile çekilir, böylece senin oturum çerezlerin (Cloudflarecf_clearancedahil) taşınır ve "Blocked" sorunu yaşanmaz. - Eşzamanlılık sınırlı (havuz=4),
Promise.allSettled+ zaman aşımı ile; kısmi hatalar makale bazında sebebiyle raporlanır (challenge/login-required/http-<kod>), düz "Blocked" değil. - Her yanıt, kart okunmadan önce sınıflandırılır: yönlendirme sonrası
res.urlyolu (…/verification,…/login) birincil sinyaldir; yönlendirmesiz 200 dönen kapılar için HTML işaretleri yedektir. Böylece engellenen bir arama "sonuç yok" gibi görünemez. - Gelişmiş arama, gizli bir form yerine
/tr/search?q=<alan-operatörleri>&advanced=1uç noktasını kullanır (sunucu-render sonuç). - Makale PDF'leri kimlik bilgisi olmadan indirilir. PDF'ler açık erişim olduğu
için çerez gerekmez; üstelik
credentials: "include"ile yapılan istek, indirmeAccess-Control-Allow-Origin: *dönen bir kaynağa 302'lediğinde CORS kuralı gereği tamamen başarısız oluyor (TypeError: Failed to fetch). - Sayfa içeriği güvenilmez veri olarak ele alınır; içerikteki talimatlar uygulanmaz.
Geliştirme
Saf ayrıştırma/mantık fonksiyonları Node + jsdom ile birim test edilir:
cd tests
npm install
npm test
Kod yapısı:
SKILL.md— Claude'un izlediği iş akışlarıreference.md— alan kodları, seçiciler, sözdizimi, canlı doğrulama notlarıscripts/lib.js— saf ayrıştırma/sorgu kurma (birim testli)scripts/scrape.js— paylaşılan detay/indeks çekme hattıscripts/search.js,scripts/advanced_search.js,scripts/references.js,scripts/pdf_extract.js— tarayıcı orkestratörleriscripts/pdfjs.min.js(+ worker) — gömülü pdf.js (çevrimdışı yedek)
Notlar
- Tek instance / kişisel kullanım için tasarlanmıştır.
- Sessiz sıfır sonuç yok. Her araç bir
erroralanı döner.error: null+total_cards: 0gerçekten "bu sorguya eşleşme yok" demektir. Engellenen bir yanıt ise ayırt edilir ve asla "sonuç yok" diye raporlanmaz:errorAnlamı Ne yapmalı challengeCloudflare Turnstile / /tr/search/verificationAramayı kendi sekmende açıp doğrulamayı geç, sonra tekrar dene login-requiredDergiPark giriş duvarı /tr/loginüzerinden giriş yap, sonra tekrar denehttp-<kod>Beklenmeyen durum kodu Bir kez tekrar dene, sonra URL'i sekmende aç - Sonuçlardaki
urlalanı yalnızca yol (path) içerir; sorgu parametreleri ayrıcaurl_paramsnesnesinde döner. Sebep: Claude in Chrome'un çıktı redaktörü, içinde 2+anahtar=değerçifti&/;ile birleşmiş her metni[BLOCKED: Cookie/query string data]ile değiştiriyor — birleşik bir arama URL'i olduğu gibi hiç geçmiyor. - Bu skill CAPTCHA çözmez ve çözmeye çalışmaz; doğrulama gerektiğinde seni yönlendirir.
No comments yet
Be the first to share your take.