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/OR ve 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çin advanced_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 fetch senin ç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.tr sekmesinde yapılır; makale detayları sayfa-içi same-origin fetch ile çekilir, böylece senin oturum çerezlerin (Cloudflare cf_clearance dahil) 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.url yolu (…/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=1 uç 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, indirme Access-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örleri
  • scripts/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 error alanı döner. error: null + total_cards: 0 gerçekten "bu sorguya eşleşme yok" demektir. Engellenen bir yanıt ise ayırt edilir ve asla "sonuç yok" diye raporlanmaz:
    error Anlamı Ne yapmalı
    challenge Cloudflare Turnstile / /tr/search/verification Aramayı kendi sekmende açıp doğrulamayı geç, sonra tekrar dene
    login-required DergiPark giriş duvarı /tr/login üzerinden giriş yap, sonra tekrar dene
    http-<kod> Beklenmeyen durum kodu Bir kez tekrar dene, sonra URL'i sekmende aç
  • Sonuçlardaki url alanı yalnızca yol (path) içerir; sorgu parametreleri ayrıca url_params nesnesinde 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.