Tasarım Dokümanı · Bölüm 1 / Çekirdek Teknoloji
Dergi gönderim kurallarını insan kürasyonu olmadan edinen, doğrulayan ve güncel tutan sistemin kurgusu. Temel ilke: kural veritabanını kurucu değil, sistemin kendisi ve kullanıcı trafiği inşa eder.
Bu doküman, projenin en riskli sorusunu çözer: “Dergi kurallarını kim, nasıl çıkaracak?” Cevap, tek bir sihirli scraper değil; birbirinin yedeği olan üç edinme yolu, bir güven modeli ve kullanıcı trafiğini veritabanına dönüştüren bir döngüdür. Hiçbir aşamada sizden elle dergi profili çıkarmanız beklenmez.
Kurguyu varsayıma değil ölçüme dayandırmak için üç temsili kaynak bugün canlı olarak denendi. Sonuçlar, mimarinin neden katmanlı olmak zorunda olduğunu tek tabloda gösteriyor:
| Kaynak | Deneme | Sonuç | Mimari çıkarım |
|---|---|---|---|
| Crossref API api.crossref.org |
ISSN 0959-8049 sorgusu | Çalışıyor | Dergi kimliği + yayıncı çözülüyor (EJC → Elsevier). Ancak talimat URL’si vermiyor → ayrı bir Locator modülü şart. |
| Elsevier Guide for Authors |
Doğrudan HTTP çekme | robots.txt engeli | Büyük yayıncılar sunucu taraflı çekmeye kapalı. Bu dergiler için kullanıcı-destekli edinme yolu (Tier C) şart. |
| Springer / BMC submission-guidelines |
Doğrudan HTTP çekme | Cookie duvarı | Basit HTTP yetmez; headless browser (Playwright) katmanı gerekli. |
| PLOS ONE submission-guidelines |
Çekme + LLM ile kural çıkarımı | Tam başarı | Açık erişim yayıncılarında uçtan uca otomatik çıkarım bugün çalışıyor. Örnek profil §5’te. |
Sonuç
Dergilerin bir bölümü tamamen otomatik işlenebilir; bir bölümü tarayıcı otomasyonu ister; bir bölümü ancak kullanıcının kendi erişimi üzerinden edinilir. Ürün bu üç durumu tek deneyim altında birleştirmelidir — kullanıcı hangi yolun çalıştığını hiç görmez, sadece profili görür.
Kullanıcı girdisini (dergi adı, ISSN, DOI, URL) kesin bir dergi kimliğine çevirir. Kaynaklar: Crossref (kimlik + yayıncı), NLM Catalog (biyomedikal dergilerde ücretsiz API; kayıtlarında dergi ana sayfası ve çoğu zaman yazar talimatları bağlantısı bulunur — MVP’nin biyomedikal odağı için en değerli kaynak) ve DOAJ (açık erişim dergileri). Çıktı: journal_id, yayıncı, aday talimat URL’leri.
Talimat sayfalarını bulur. Sıra: (1) NLM Catalog’daki talimat linki, (2) yayıncı adapter’ının URL şablonu (§4), (3) dergi ana sayfasından “for authors / submission guidelines” bağlantı taraması, (4) arama motoru API fallback. Tek sayfa varsaymaz: Guide for Authors + article types + ethics + artwork sayfalarının hepsini toplar.
Katmanlı çekme: önce basit HTTP; JS/cookie duvarında Playwright headless browser; PDF talimat dosyalarında PDF metin çıkarımı. robots.txt’ye uyar — engelli kaynaklarda ısrar etmez, Tier C’ye düşer (§3). Her çekilen içerik ham haliyle, tarih ve hash ile arşivlenir; sonraki her kural bu arşive işaret eder.
LLM, ham metni sabit Journal Rules şemasına (§5) dönüştürür. İki katı kural: (a) her çıkarılan değerin yanında kaynaktan birebir alıntı cümle zorunludur; (b) ikinci bir doğrulama geçişi, alıntının ham metinde gerçekten var olduğunu string eşleşmesiyle kontrol eder — alıntı bulunamayan kural şemaya giremez. Bu, halüsinasyonu mimari düzeyde keser.
Deterministik tutarlılık kontrolleri: birim/aralık makul mü (abstract limiti 250 mi 2500 mü?), kurallar birbiriyle çelişiyor mu, article type başına zorunlu alanlar dolu mu. Belirsiz ifadeler (“approximately 4000 words”) sayısal değere zorlanmaz; constraint_type: "approximate" olarak saklanır ve kullanıcıya uyarı seviyesinde gösterilir. Sonuç versiyonlanarak veritabanına yazılır.
Sizin elle profil çıkarmanıza gerek yok, çünkü doğrulama işini iki mekanizma paylaşır: sistemin kendi çapraz kontrolleri ve kullanıcı trafiği. Her dergi profili üç güven katmanından birindedir ve katman kullanıcıya her zaman açıkça gösterilir:
Koşullar: alıntı doğrulaması geçmiş ve iki bağımsız çıkarım geçişi aynı değeri vermiş ve en az N kullanıcı bu profille gönderim hazırlayıp hiçbir kuralı düzeltmemiş. Ürün bu profillerde tam otomatik düzeltmeye izin verir.
Boru hattı çalıştı, alıntılar yerinde; ancak henüz kullanım geçmişi yok. Kullanıcıya her kuralın yanında kaynak alıntısı ve “bu kuralı doğrula / düzelt” aksiyonu gösterilir. Kullanıcı düzeltmeleri kuyruğa girer; aynı düzeltme bağımsız kullanıcılardan tekrar gelirse profil güncellenir. Her doğrulanan kural profili Tier A’ya yaklaştırır — kullanıcı tabanı, veritabanının kürasyon ekibidir.
robots.txt veya paywall nedeniyle sunucudan çekilemeyen dergiler (bugünkü testte Elsevier). Kullanıcıdan istenen şey minimal: talimat sayfasını tarayıcısında açıp PDF olarak kaydedip sürüklemesi ya da sayfa URL’sini yapıştırması (ileride: tek tık browser extension yakalaması). Kullanıcı zaten o derginin okuru/yazarı olduğu için erişimi meşru. Sistem çıkarımı yine kendi yapar; çıkan profil — kaynak dosyası saklanarak — havuza girer ve aynı dergiyi seçen sonraki tüm kullanıcılara hazır gelir. Yani engelli dergiler bile bir kez “açıldıktan” sonra ürün için otomatik hale gelir.
Neden bu döngü işler
Akademik yayın trafiği aşırı yoğunlaşmıştır: hedeflenen alandaki gönderimlerin büyük bölümü görece küçük bir dergi kümesine gider. İlk birkaç yüz aktif kullanıcı, en çok gönderim yapılan dergileri kendiliğinden Tier A’ya taşır. Soğuk başlangıç problemi, doğru alan seçilirse (biyomedikal, §7) haftalar mertebesinde çözülür.
Dergi dergi uğraşmak yerine yayıncı başına bir adapter yazılır; biyomedikalde beş büyük ticari yayıncı (Elsevier, Springer Nature, Wiley, Taylor & Francis, Wolters Kluwer) artı büyük açık erişim aileleri (PLOS, BMC, Frontiers, MDPI) dergilerin ezici çoğunluğunu kapsar. Bir adapter üç şey bilir:
{dergi}.biomedcentral.com/submission-guidelines) — Locator’ın ilk denemesi.Adapter’ı olmayan yayıncılar generic yol (Locator’ın 3–4. adımları + Tier B/C) ile yine çalışır; adapter sadece isabeti yükseltir. MVP iki adapter ile başlar: bir açık erişim ailesi (BMC veya PLOS — bugün çalıştığı kanıtlı) ve bir Tier C yayıncısı (Elsevier — kullanıcı-destekli akışı kanıtlamak için).
Her kural dört şey taşır: değer, kısıt tipi, kaynak (alıntı + URL + tarih) ve doğrulama durumu. Aşağıdaki profil kurgu değil — bugün PLOS ONE’ın talimat sayfasından bu boru hattının P3–P4 adımlarıyla fiilen çıkarıldı:
{
"journal": {
"name": "PLOS ONE",
"issn": "1932-6203",
"publisher": "PLOS",
"resolver": { "source": "crossref+doaj" }
},
"profile_meta": {
"trust_tier": "B",
"extracted_at": "2026-08-31",
"source_pages": [
"https://journals.plos.org/plosone/s/submission-guidelines"
],
"content_hash": "sha256:…"
},
"article_type": "research-article",
"rules": [
{
"id": "title.max_chars",
"value": 250,
"constraint_type": "hard_max",
"check": "deterministic",
"source_quote": "Full title: maximum 250 characters",
"verified_quote": true
},
{
"id": "abstract.max_words",
"value": 300,
"constraint_type": "hard_max",
"check": "deterministic",
"source_quote": "Abstract must not exceed 300 words",
"verified_quote": true
},
{
"id": "abstract.no_citations",
"value": true,
"check": "deterministic",
"source_quote": "Do not include citations in the abstract"
},
{
"id": "manuscript.file_formats",
"value": ["doc", "docx", "rtf"],
"check": "deterministic"
},
{
"id": "text.line_numbers",
"value": "continuous",
"check": "deterministic",
"source_quote": "Include continuous line numbers"
},
{ "id": "text.spacing", "value": "double", "check": "deterministic" },
{
"id": "references.style",
"value": "vancouver-icmje",
"check": "deterministic",
"note": "in-text: square brackets; >6 authors: first 6 + et al."
},
{
"id": "figures.placement",
"value": "separate_files",
"check": "deterministic"
},
{
"id": "tables.placement",
"value": "in_manuscript_after_first_citation",
"check": "deterministic"
},
{
"id": "sections.order",
"value": ["title_page", "abstract", "introduction",
"methods", "results_discussion",
"acknowledgments", "references",
"supporting_info_captions"],
"check": "deterministic"
},
{
"id": "declarations.required",
"value": ["financial_disclosure", "competing_interests",
"author_contributions_credit",
"data_availability", "ethics_approval"],
"check": "semantic",
"note": "varlık tespiti LLM ile; içerik asla üretilmez"
}
]
}
Şemadaki check alanı, daha önce konuştuğumuz ayrımı veri modeline gömer: deterministic kurallar kodla ölçülür (kelime sayısı, format, sıra), semantic kurallar LLM ile yalnızca var/yok düzeyinde denetlenir. Belirsiz limitler için constraint_type değerleri: hard_max, hard_min, range, approximate, recommended.
Kullanıcı veritabanında olmayan bir dergi seçtiğinde akış şudur; hiçbir adımda ürün “bu dergiyi desteklemiyoruz” demez:
| Aşama | Kapsam | Kanıtlanan şey |
|---|---|---|
| M1 | P1 Resolver (Crossref + NLM Catalog) + şema + PLOS/BMC adapter’ı ile uçtan uca çıkarım | Açık kaynaklarda tam otomatik profil üretimi (bugün fiilen kanıtlandı) |
| M2 | Alıntı doğrulama geçişi + Validator + Tier B kullanıcı düzeltme akışı | Halüsinasyonsuz, kaynağa bağlı kural veritabanı |
| M3 | Tier C akışı: URL/PDF yükleme + çıkarım + havuzlama (hedef: Elsevier dergileri) | Erişim engelli yayıncıların da kapsanabildiği |
| M4 | Hash izleme + diff + güncelleme bildirimi; ikinci–üçüncü adapter’lar | Veritabanının kendini güncel tutması |
Bu motor ayakta olduğunda, önceki planın geri kalanı (Article Model, Compliance Engine, dashboard) sağlam bir zemine oturur — hepsi bu şemadaki rules dizisini girdi olarak alır.
Kaynak testleri 31.08.2026’da yapıldı: Crossref REST API (ISSN 0959-8049), Elsevier Guide for Authors (robots.txt engeli), BMC Cancer submission guidelines (cookie yönlendirmesi), PLOS ONE submission guidelines (tam çıkarım). Örnek profildeki kurallar PLOS ONE’ın canlı talimat sayfasından çıkarılmıştır; bağlayıcı kaynak derginin kendi sayfasıdır.