# Turkce Akademik Tarayici

> Tezara/YÖK tezleri ve DergiPark makalelerinden halüsinasyon-sıfır metaveri, BibTeX/RIS/APA7 atıf, PDF indirme. Tetikleyiciler: Tezara, YÖK tez, DergiPark, Türkçe makale, bibliometric analiz.

- **Type:** Skill
- **Install:** `agentstack add skill-mustafasneu-turkce-akademik-tarayici-turkce-akademik-tarayici`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [mustafasneu](https://agentstack.voostack.com/s/mustafasneu)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [mustafasneu](https://github.com/mustafasneu)
- **Source:** https://github.com/mustafasneu/turkce-akademik-tarayici

## Install

```sh
agentstack add skill-mustafasneu-turkce-akademik-tarayici-turkce-akademik-tarayici
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Türkçe Akademik Kaynak Tarayıcı

## Genel Bakış

Bu skill iki kanonik Türkçe akademik kaynaktan veri çeker:

- **Tezara** (`tezara.org`) — YÖK Ulusal Tez Merkezi'nin temizlenmiş, filtrelenebilir, toplu indirme destekli arayüzü
- **DergiPark** (`dergipark.org.tr`) — Türkiye akademik dergi platformu, ULAKBIM altyapısı, Google Scholar uyumlu metadata

**Temel prensip: Halüsinasyon sıfır.** Skill yalnızca fetch'lenen URL'lerden gelen metadata ile çalışır. LLM'in hafızasından gelen hiçbir yazar/yıl/başlık/DOI kabul edilmez. Eksik alan varsa "veri yok" döner, **asla uydurmaz**.

## Hızlı Referans

| Görev | Modül | Çıktı |
|---|---|---|
| Tezara'da tez ara | `tezara/search.py` | CSV + JSON |
| Tek tez metaveri çek | `tezara/thesis_detail.py` | JSON |
| Tezara PDF indir (izinli) | `tezara/pdf_download.py` | PDF |
| DergiPark'ta makale ara | `dergipark/search.py` | CSV + JSON |
| Tek makale metaveri çek | `dergipark/article_metadata.py` | JSON |
| DergiPark BibTeX (resmi) | `dergipark/citation_fetch.py` | .bib |
| DergiPark RIS (resmi) | `dergipark/citation_fetch.py` | .ris |
| DergiPark PDF indir | `dergipark/pdf_download.py` | PDF |
| BibTeX/CSL-JSON/RIS üret (Tezara) | `shared/citation_export.py` | .bib, .json, .ris |
| Tekrar tespiti | `shared/deduplication.py` | Filtrelenmiş liste |
| CrossRef doğrulama (opsiyonel) | `shared/crossref_verify.py` | Doğrulama raporu |
| Audit log | `shared/audit.py` | provenance.json |

## Halüsinasyon-Sıfır Üç Katmanı

### Katman 1 — Hard Rule
- Skill yalnızca **gerçekten fetch edilen** URL'lerden gelen metadata kullanır
- LLM'in hafızasından gelen hiçbir alan kabul edilmez
- Eksik alan = `null` (uydurma yok)
- Her atıfta `source_url` zorunlu
- Tezara için: tez_no varsa metadata var, yoksa `null`
- DergiPark için: `citation_*` meta tag yoksa `null`

### Katman 2 — Çapraz Doğrulama (opsiyonel: --verify-crossref)
- **Default: kapalı** (DergiPark zaten temiz veri veriyor)
- DOI varsa → CrossRef API ile yazar/yıl/dergi tutarlılık kontrolü
- Tutarsızlık → flag + manuel inceleme uyarısı
- Tezara'da DOI olmadığı için bu katman sadece DergiPark için anlamlı

### Katman 3 — Audit Log (her zaman aktif)
Her fetch işlemi için JSON kaydı:

```json
{
  "citation_id": "...",
  "source_url": "https://tezara.org/theses/146683",
  "fetched_at": "2026-05-05T...",
  "raw_html_hash": "sha256:...",
  "extracted_fields": {...},
  "verification_status": "verified|partial|failed|skipped",
  "pdf_downloaded": true,
  "pdf_path": "...",
  "license": "..."
}
```

## Modüller

### 1. Tezara

#### Arama (`tezara/search.py`)

Strateji: HTML scraping + URL pattern.

URL Pattern:

```
tezara.org/search?q={kelime}
                  &languages={dil1,dil2}
                  &thesis-types={tür1,tür2}
                  &universities={üni1,üni2}
                  &subjects={konu1,konu2}
                  &advanced=true
```

Filtreler:

- Anahtar kelime (başlık + özet)
- Yıl aralığı
- Üniversite (tek veya çoklu)
- Tez türü (Yüksek Lisans, Doktora, Tıpta Uzmanlık, Sanatta Yeterlilik)
- Dil (Türkçe, İngilizce, Arapça, Kırgızca, vb.)
- Konu/Bilim Dalı

Çıktı: Tüm sonuçların CSV + JSON dökümü (YÖK 2000 sınırı yok).

#### Tez Detayı (`tezara/thesis_detail.py`)

URL pattern: `tezara.org/theses/{tez_no}`

Çekilen alanlar:

- Tez No (kanonik ID)
- Yazar
- Başlık (TR + EN)
- Danışmanlar (çoklu)
- Tez Türü
- Konular (TR + EN)
- Anahtar Kelimeler
- Yıl
- Dil
- Üniversite
- Enstitü
- Ana Bilim Dalı
- Bilim Dalı
- Sayfa Sayısı
- Özet (TR + EN)
- PDF URL (varsa)
- Benzer Tezler (5 öneri)

Boş alanlar: `"Belirtilmemiş."` → `null` olarak normalize edilir.

#### PDF İndirme (`tezara/pdf_download.py`)

- Tezara, PDF için YÖK'e yönlendiriyor: `tez.yok.gov.tr/UlusalTezMerkezi/TezGoster?key=...`
- Sadece **izinli tezler** indirilebilir (yazar izni vermişse)
- İzinsiz tez varsa → "PDF erişime kapalı" mesajı + metadata yine döner
- Rate limit: dosya başına 2 saniye gecikme
- Dosya adı: `tezara_{tez_no}_{yazar_soyad}_{yıl}.pdf`

### 2. DergiPark

#### Arama (`dergipark/search.py`)

Strateji: HTML scraping + URL pattern.

URL Pattern:

```
dergipark.org.tr/tr/search?q={kelime}
                          &section=articles
```

Tam eşleşme için `q="kelime"` (URL-encoded olarak `%22kelime%22`).

#### Makale Detayı (`dergipark/article_metadata.py`)

URL pattern: `dergipark.org.tr/tr/pub/{dergi}/article/{id}`

Strateji: **Google Scholar uyumlu `citation_*` meta tag parse**

Çekilen alanlar (zengin metadata):

- DOI (`citation_doi`)
- Başlık (`citation_title`)
- Yazarlar — çoklu (`citation_author`)
- Yazar kurumu (`citation_author_institution`)
- **Yazar ORCID** (`citation_author_orcid`)
- Dergi (`citation_journal_title`)
- ISSN (`citation_issn`)
- Cilt, Sayı, İlk Sayfa, Son Sayfa
- Yayın Tarihi (`citation_publication_date`)
- Anahtar Kelimeler (TR + EN)
- Dil (`citation_language`)
- Yayıncı (`citation_publisher`)
- PDF URL (`citation_pdf_url`)
- Özet (TR + EN, `citation_abstract`)
- Kaynaklar — çoklu (`citation_reference`)
- Makale Türü (Araştırma/Derleme/vb.)
- Erken görünüm, gönderilme, kabul tarihleri
- Lisans (CC BY-NC vb.)
- Cited By listesi (DOI'leriyle)
- Crossref atıf sayısı

Yedek parse kaynağı: Dublin Core (`DC.*`) meta tag'leri (OAI-PMH uyumlu).

#### Atıf Export (`dergipark/citation_fetch.py`)

**ALTIN ÖZELLİK: DergiPark'tan resmi atıf export.**

Endpoint'ler:

- BibTeX: `/tr/download/article-cite-file/{id}/type/2`
- RIS: `/tr/download/article-cite-file/{id}/type/6`

Bu endpoint'ler hazır, doğrulanmış atıf dosyaları döner. Skill bu dosyaları **olduğu gibi** alır, ek işlem yapmaz. Halüsinasyon imkânsız.

#### PDF İndirme (`dergipark/pdf_download.py`)

- DergiPark çoğunlukla CC BY-NC lisansı (açık erişim)
- PDF URL: `citation_pdf_url` alanından gelir
- Dosya adı: `dergipark_{dergi}_{yıl}_{yazar_soyad}_{id}.pdf`
- Rate limit: dosya başına 2 saniye gecikme
- Lisans bilgisi audit log'a kaydedilir

### 3. Ortak Modüller (`shared/`)

#### Atıf Çıktısı (`citation_export.py`)

Yalnızca **Tezara için** atıf üretimi (DergiPark zaten resmi endpoint sunuyor).

Formatlar:

- **BibTeX** (`.bib`) — Zotero, Mendeley için
- **CSL-JSON** (`.json`) — Pandoc, citeproc için
- **RIS** (`.ris`) — EndNote için
- **APA7** (Türkçe + İngilizce metin)
- **Chicago** (footnote stili)

Tezara için BibTeX entry türü: `@phdthesis` veya `@mastersthesis`.

#### Tekrar Tespiti (`deduplication.py`)

- DOI bazlı (kesin eşleşme) — DergiPark için
- Tez no bazlı — Tezara için
- Başlık + yazar + yıl bazlı (fuzzy matching, RapidFuzz) — fallback
- DergiPark + Tezara karma listede aynı yazarın benzer çalışması tespit edilir

#### CrossRef Doğrulama (`crossref_verify.py`) — opsiyonel

- Default: kapalı
- `--verify-crossref` flag ile aktif
- DOI bazlı yazar/yıl/dergi/sayfa kontrolü
- Tutarsızlık raporu üretir

#### Audit Log (`audit.py`)

Her oturum için `provenance_.json` üretir. Her fetch işlemi için satır eklenir.

## Kullanım Örnekleri

### Örnek 1: Climate Justice için Tezara'dan tez taraması

```
"Tezara'da iklim adaleti ve çevresel adalet üzerine 2015-2024 arası
yazılmış doktora tezlerini bul, BibTeX olarak ver, izinli olanların
PDF'lerini indir"
```

### Örnek 2: SGDB Directors için DergiPark'tan sürdürülebilir finans

```
"DergiPark'ta sürdürülebilir kalkınma ve finansman üzerine son 5 yılda
yayınlanmış makaleleri tara, APA7 atıf listesi hazırla, PDF'leri indir"
```

### Örnek 3: Bibliometric çalışma için karma kaynak

```
"Türkşeker projesi için 'şeker sektörü' anahtar kelimesiyle hem Tezara
hem DergiPark'ı tara, tekrarları temizle, Excel + BibTeX ver"
```

### Örnek 4: TÜBİTAK 1001 başvurusu için literatür

```
"DergiPark'ta 'duygu analizi Türkçe' aramasıyla 2020 sonrası makaleleri
çek, CrossRef ile doğrula, APA7 listesi hazırla, audit log dahil"
```

## Workflow Şablonları (`examples/`)

- `bibliometric_workflow.md` — Tam bibliometric analiz adımları
- `prisma_workflow.md` — PRISMA sistematik tarama akışı
- `tubitak_basvuru_workflow.md` — TÜBİTAK 1001 atıf hazırlama
- `karma_kaynak_workflow.md` — Tezara + DergiPark birleştirme

## Bağımlılıklar (`requirements.txt`)

- `requests` — HTTP fetch
- `beautifulsoup4` — HTML parse
- `lxml` — HTML/XML parser
- `pandas` — Veri işleme + Excel
- `openpyxl` — Excel yazma
- `rapidfuzz` — Fuzzy duplicate detection
- `bibtexparser` — BibTeX okuma/yazma (Tezara için üretim)
- `python-dateutil` — Tarih parse
- `tqdm` — İlerleme göstergesi

## Önemli Uyarılar

1. **Rate limiting**: Her iki siteye de saygılı davran. Her istek arası 1-2 saniye gecikme. Toplu işlerde 100 isteklik batch'ler.

2. **robots.txt uyumu**: Skill her iki sitenin de robots.txt'sini saygıyla karşılar. Engelli yollara fetch yapmaz.

3. **Tezara API stabilitesi**: Tezara açık kaynak ama public API dokümantasyonu yok. Skill HTML scraping kullanır. Sayfa yapısı değişirse skill güncellenmeli.

4. **DergiPark dergi çeşitliliği**: 3000+ dergi var, her dergi farklı tema kullanabilir. `citation_*` meta tag'leri standart, ama bazı eski/küçük dergiler eksik olabilir. Dublin Core fallback'i kritik.

5. **PDF lisansları**:
   - **Tezara/YÖK**: Sadece yazar izinliyse indirilebilir, lisans YÖK'e ait
   - **DergiPark**: Çoğunlukla CC BY-NC, lisans her makalede ayrı belirtilmeli (audit log'a yazılır)
   - Skill PDF indirirken lisansı **kaydeder ve gösterir**

6. **CrossRef API**: Ücretsiz ama rate limit var (50 istek/saniye public). Toplu doğrulamada batch + 1 saniye gecikme uygulanır.

## NE YAPMA

- ❌ LLM hafızasından atıf üretme (DOI, yazar, yıl, başlık)
- ❌ Eksik alanı doldurmak için "muhtemel" bilgi tahmin etme
- ❌ İngilizce/uluslararası kaynaklar için bu skill'i kullanma (Scholar Gateway, Consensus, PubMed MCP'leri var)
- ❌ Tezara/DergiPark sunucularına agresif istek atma
- ❌ Audit log olmadan atıf teslim etme
- ❌ İzinsiz tezleri YÖK'ten indirmeye çalışma
- ❌ DergiPark resmi atıf export endpoint'i varken kendi BibTeX'ini üretme (DergiPark için passthrough kullan)

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [mustafasneu](https://github.com/mustafasneu)
- **Source:** [mustafasneu/turkce-akademik-tarayici](https://github.com/mustafasneu/turkce-akademik-tarayici)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-mustafasneu-turkce-akademik-tarayici-turkce-akademik-tarayici
- Seller: https://agentstack.voostack.com/s/mustafasneu
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
