Skip to content
Back to skills

Alterlab Dergipark

ASecurity

Harvests article metadata, abstracts, and full-text PDFs from DergiPark (TÜBİTAK ULAKBİM's national journal-hosting platform, ~2,537 journals) via its verified platform-wide OAI-PMH endpoint (https://dergipark.org.tr/api/public/oai/; verbs Identify/ListSets/ListRecords/GetRecord; prefixes oai_dc/oai_mods/oai_marc/oai_etdms; setSpec=journal-slug), parses Highwire citation_* and DC.* meta tags on /pub/{slug}/article/{id} pages, pulls PDFs from the citation_pdf_url path, and emits BibTeX/RIS loc...

  • 158 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
testingpythongobashapibackend

Works with

  • api

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add NVlabs/Skill2Env --skill alterlab-dergipark --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alterlab Dergipark?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Alterlab Dergipark
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nvlabs-alterlab-dergipark/badge)](https://www.skillsdirectory.com/skills/nvlabs-alterlab-dergipark)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: alterlab-dergipark
description: "Harvests article metadata, abstracts, and full-text PDFs from DergiPark (TÜBİTAK ULAKBİM's national journal-hosting platform, ~2,537 journals) via its verified platform-wide OAI-PMH endpoint (https://dergipark.org.tr/api/public/oai/; verbs Identify/ListSets/ListRecords/GetRecord; prefixes oai_dc/oai_mods/oai_marc/oai_etdms; setSpec=journal-slug), parses Highwire citation_* and DC.* meta tags on /pub/{slug}/article/{id} pages, pulls PDFs from the citation_pdf_url path, and emits BibTeX/RIS locally. Use when the user wants to harvest a Turkish journal, fetch DergiPark articles, list a journal archive, get BibTeX/RIS for a DergiPark paper, or read a journal aim-and-scope (öz/kapsam). For TR Dizin indexing status use alterlab-trdizin; for YÖK theses use alterlab-yok-tez; for academic profiles use alterlab-yok-akademik. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Write Edit Bash(python:*) Bash WebFetch
compatibility: No API key required — harvests DergiPark's public OAI-PMH 2.0 endpoint and open article pages via `uv run python` (requests if present, else stdlib urllib); degrades gracefully offline by emitting a network_unavailable error rather than fabricating records
metadata:
  skill-author: AlterLab
  version: "1.0.0"
  last_updated: "2026-06-06"
---

# DergiPark — National Journal Harvester (TÜBİTAK ULAKBİM)

DergiPark (https://dergipark.org.tr) is **TÜBİTAK ULAKBİM's national
journal-hosting platform** — ~2,537 Turkish scholarly journals on OJS-based
infrastructure. This skill harvests its metadata, abstracts, and full-text PDFs
**reproducibly**, by going through the one stable machine surface: a platform-wide
**OAI-PMH** (Open Archives Initiative Protocol for Metadata Harvesting) endpoint,
plus open article pages. It never guesses bibliographic data — every field comes
from the live endpoint, and it emits BibTeX/RIS locally from parsed meta tags.

The interactive search page is gated behind a human-verification challenge, so
this skill does **not** scrape search over plain HTTP. OAI set-harvest and direct
article-page fetches are the robust paths (see `references/oai-cookbook.md`).

## When to Use This Skill

Use it when the request is about getting data **out of DergiPark**:

- harvest / fetch all articles of a Turkish (DergiPark) journal
- list a journal's archive or find its slug
- get BibTeX or RIS (an export format) for a DergiPark article
- download a DergiPark full-text PDF
- read a journal's **aim-and-scope** (*öz/kapsam* — abstract/scope) or its
  self-declared index list

Canonical Turkish terms you may see: **öz** (abstract), **kapsam** (scope),
**dergi** (journal), **künye** (citation/masthead). Preserve Turkish spelling with
diacritics in all user-facing strings (e.g. *Mülkiye Dergisi*).

### Does NOT Trigger — route adjacent requests to the right sibling

| The request is really about… | Route to |
|------------------------------|----------|
| Whether a journal is **indexed in TR Dizin** (national citation index) / its TR Dizin status | **alterlab-trdizin** |
| Finding/searching a **graduate thesis** (YÖK Ulusal Tez Merkezi) | **alterlab-yok-tez** |
| An **academic's profile / affiliation** (YÖK Akademik) | **alterlab-yok-akademik** |
| University **program admission statistics** (YÖK Atlas) | **alterlab-yokatlas** |
| Computing **doçentlik** (associate-professorship) eligibility points | **alterlab-docentlik-eligibility** |
| Computing **akademik teşvik** (academic-incentive) score | **alterlab-akademik-tesvik** |
| Depositing a manuscript/data in **Aperta** (TÜBİTAK open archive) | **alterlab-aperta** |
| **Verifying that cited references exist** / hallucination audit | **alterlab-citation-verifier** |
| Turkish APA / TR Dizin **writing-style** conventions | **alterlab-tr-academic-style** |

## How It Works — Three Scripts

All run with `uv run python` from the skill directory. No API key. Each prefers
`requests` if installed, else falls back to stdlib `urllib`. Full recipes and
gotchas are in `references/oai-cookbook.md`; the verified endpoint table is in
`references/endpoints.md`.

### 1. `scripts/dergipark_oai.py` — OAI harvest (primary path)

```bash
# Find a journal's slug (slug == OAI setSpec)
uv run python scripts/dergipark_oai.py list-journals --tsv | rg -i "mülkiye"

# Harvest a whole journal (follows resumptionToken paging automatically)
uv run python scripts/dergipark_oai.py harvest mulkiye --prefix oai_dc --out mulkiye.json

# One article's structured oai_dc record
uv run python scripts/dergipark_oai.py get 10 --prefix oai_dc
```

Verbs: `Identify / ListSets / ListRecords / GetRecord`. Prefixes:
`oai_dc` (parsed into clean fields) and `oai_mods / oai_marc / oai_etdms`
(returned as raw record XML for callers that want the richer schema).

### 2. `scripts/article_meta.py` — one article → BibTeX / RIS

```bash
uv run python scripts/article_meta.py /en/pub/mulkiye/article/10 --format bibtex
uv run python scripts/article_meta.py /en/pub/mulkiye/article/10 --format ris
uv run python scripts/article_meta.py /en/pub/mulkiye/article/10 --format json
```

Parses the page's `citation_*` + `DC.*` meta tags and formats BibTeX/RIS
**locally** — it does not call any on-site export backend (that route is
unverified). The JSON output includes a resolved `pdf_url`.

### 3. `scripts/journal_info.py` — aim-and-scope + self-declared indexes

```bash
uv run python scripts/journal_info.py mulkiye --lang en
```

Returns the *aim-and-scope* text and the `/indexes` page, the latter stamped with
a `DISCLAIMER` and cross-check pointers to TR Dizin and DOAJ.

## Three Rules That Prevent Wrong Answers

1. **Publication date ≠ OAI datestamp.** The OAI `<datestamp>` is the platform
   *re-index* time, not the publication date. To slice by publication year,
   **harvest then filter on `dc:date`** locally — do not rely on `from`/`until`.
2. **PDF id ≠ article id.** Take the PDF link from the page's `citation_pdf_url`
   meta tag (e.g. `/en/download/article-file/9` for article `/10`); never build it
   from the article id.
3. **Hosting ≠ indexing.** Being on DergiPark says nothing about quality or TR
   Dizin coverage. The `/indexes` page is *self-declared* and unverified by
   DergiPark. For an authoritative TR Dizin status verdict, route to
   **alterlab-trdizin**. See `references/indexing.md`.

## Graceful Degradation

Network failures surface as a `network_unavailable` / `oai_error` JSON object on
stderr (exit 1) — the scripts **never** fabricate a record or a verdict. If the
endpoint is unreachable, say so and stop; do not invent metadata from memory.

## References

- `references/endpoints.md` — every verified endpoint, prefix, and identifier
  scheme (with what is explicitly UNVERIFIED), observed live 2026-06-06.
- `references/oai-cookbook.md` — copy-paste recipes: slug lookup, full harvest,
  year filtering, PDF download, and the gated-search workaround via Playwright.
- `references/indexing.md` — the DergiPark-vs-TR Dizin distinction and how to
  cross-check real indexing against TR Dizin and DOAJ.

Part of the AlterLab Academic Skills suite.

Files in this skill

  • SKILL.md7.1 KB
  • evals/evals.json5.4 KB
  • references/endpoints.md4.4 KB
  • references/indexing.md3.2 KB
  • references/oai-cookbook.md4.3 KB
  • scripts/article_meta.py8.9 KB
  • scripts/dergipark_oai.py11 KB
  • scripts/journal_info.py6.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…