alterlab-dergipark

$npx mdskill add AlterLab-IEU/AlterLab-Academic-Skills/alterlab-dergipark

Harvests DergiPark journal articles and metadata via OAI-PMH endpoint

  • Extracts article metadata, abstracts, and full-text PDFs from DergiPark's public API.
  • Depends on Python for HTTP requests to the DergiPark OAI-PMH endpoint and parsing of HTML pages.
  • Decides what actions to take based on user queries about journal archives, articles, or metadata retrieval.
  • Delivers harvested data in BibTeX/RIS format locally for further processing.

SKILL.md

.github/skills/alterlab-dergiparkView on GitHub ↗
---
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.

More from AlterLab-IEU/AlterLab-Academic-Skills

SkillDescription
alterlab-abm-mesaBuilds agent-based models of social systems with Mesa 3 — the current AgentSet API (model.agents.shuffle_do('step'), auto-assigned unique_id, mandatory super().__init__(seed=...)), cell spaces (mesa.discrete_space OrthogonalMooreGrid / classic mesa.space grids), the DataCollector, batch_run parameter sweeps, and SolaraViz — for emergence, segregation, diffusion, opinion dynamics, and cooperation models. It uses the Mesa 3.x API (the old mesa.time schedulers like RandomActivation are removed) and treats the model as a generative theory to be validated, not just run. Use when the request mentions an agent-based model, Mesa, simulating interacting agents, or emergent macro behavior from micro rules. For discrete-event (queueing/process) simulation prefer alterlab-simpy; for reinforcement learning prefer alterlab-stable-baselines3. Part of the AlterLab Academic Skills suite.
alterlab-academic-careerPrepares academic career documents and professional-development materials for faculty and researchers. Use when drafting academic CVs, research statements, teaching philosophies, diversity statements, faculty-position cover letters, tenure dossiers, promotion narratives, academic portfolios, or mentorship statements, and when planning conference-networking strategy, building academic web presence, setting up ORCID profiles, or understanding impact metrics. Part of the AlterLab Academic Skills suite.
alterlab-accreditation-aolScaffolds program-level Assurance-of-Learning (AoL) documentation for AACSB (2020 Standard 5) and ABET (Criterion 3 Student Outcomes, Criterion 4 Continuous Improvement) accreditation — program learning outcomes / competency goals, curriculum-to-outcome mapping matrices, direct- and indirect-assessment plans, rubric design, and closing-the-loop continuous-improvement narratives — and validates the structure of an outcome-mapping matrix with scripts/aol_matrix.py. Use when the user needs AACSB or ABET assurance-of-learning material, a program-learning-outcomes set, a curriculum/outcome map or coverage matrix, a direct/indirect assessment plan, a closing-the-loop report, or accreditation self-study text. For single-course design or course rubrics prefer alterlab-teaching-design; for post-award grant reports prefer alterlab-grant-reporting. Part of the AlterLab Academic Skills suite.
alterlab-adaptyvSubmits and tracks protein-testing experiments on the Adaptyv Bio Foundry cloud lab (wet-lab validation), and optimizes protein sequences before submission with computational tools (NetSolP, SoluProt, SolubleMPNN, ESM). Use when designing proteins that need wet-lab validation - binding/affinity screening, expression testing, thermostability, or fluorescence assays - or when submitting experiments to the Foundry API, browsing the target catalog, tracking experiment status, retrieving results, or pre-screening sequences for solubility/expression. Triggers on "Adaptyv", "Foundry API", "cloud lab", "biolayer interferometry / BLI", "wet-lab validation". Part of the AlterLab Academic Skills suite.
alterlab-aeonRuns time series machine learning with the aeon library — classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search via scikit-learn compatible APIs. Use when working with temporal data, sequential patterns, or time-indexed observations (univariate or multivariate) that need specialized algorithms beyond standard ML approaches. Part of the AlterLab Academic Skills suite.
alterlab-akademik-tesvikComputes the annual Turkish academic-incentive (akademik teşvik) score for Devlet (state) university öğretim elemanı (academic staff) from a classified activity list, applying the verified Akademik Teşvik Ödeneği Yönetmeliği (2018/11834) Faaliyet Hesaplama Tablosu headline puanları (Proje 20, Araştırma 15, Yayın 30, Patent 30, Atıf 30, Tebliğ 20, Ödül 20) with the k (author-count), p (Q1 1/Q2 0.8/Q3 0.5/Q4 0.25), and r (project-role) coefficients via türü puanı = Σ(faaliyet oranları) × headline (MADDE 8/2), then enforcing the per-type headline ceilings, the 100 cap (MADDE 8/3), and the net-30 payment gate (MADDE 10/3) in a deterministic scripts/tesvik_score.py. Use when the user wants to calculate akademik teşvik puanı, check the en az 30 (net-30) threshold, apply TABLO 4 ceilings, or estimate teşvik eligibility; keeps its coefficients separate from doçentlik scoring. For doçentlik point eligibility prefer alterlab-docentlik-eligibility. Part of the AlterLab Academic Skills suite.
alterlab-alpha-vantageAccesses real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API (requires a free API key from alphavantage.co). Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash flow), earnings, options data, market news/sentiment, insider transactions, GDP, CPI, treasury yields, gold/silver/oil prices, Bitcoin/crypto prices, forex exchange rates, or calculating technical indicators (SMA, EMA, MACD, RSI, Bollinger Bands). Part of the AlterLab Academic Skills suite.
alterlab-alphafoldPredict protein 3D structures with AlphaFold2 via ColabFold — MMseqs2-accelerated MSAs, monomer and AlphaFold2-Multimer complex folding, and confidence-based validation (pLDDT, pTM/ipTM, PAE). Use when folding a protein sequence or complex from FASTA, generating a predicted structure with confidence metrics, ranking models, or checking self-consistency of a design. For co-folding a protein WITH a small-molecule ligand or predicting binding affinity prefer alterlab-boltz; for antibody–antigen or one-FASTA multi-entity complexes prefer alterlab-chai; to LOOK UP an already-computed structure prefer alterlab-alphafold-db; for ESM embeddings or inverse folding prefer alterlab-esm. Part of the AlterLab Academic Skills suite.
alterlab-alphafold-dbAccess the AlphaFold DB of 200M+ AI-PREDICTED protein structures — retrieve models by UniProt accession, download PDB/mmCIF files, and analyze prediction confidence metrics (pLDDT, PAE). Use when a UniProt ID needs a computationally predicted 3D structure or when no experimental structure exists, for homology modeling, protein engineering, or structure-based drug discovery; for EXPERIMENTALLY determined structures (X-ray, cryo-EM, NMR) prefer alterlab-pdb, and for protein sequences, annotations, or accession ID mapping prefer alterlab-uniprot instead. Part of the AlterLab Academic Skills suite.
alterlab-anndataBuild, slice, concatenate, read, and write AnnData annotated data matrices (obs, var, X, layers, obsm, uns) — the scverse data STRUCTURE, not an analysis pipeline. Use when creating or wrangling .h5ad/zarr files, managing cell and gene annotations, concatenating batches, or handling layers/obsm/backed-mode; for the QC, normalization, clustering, UMAP, and differential-expression analysis pipeline prefer alterlab-scanpy instead, and for RNA velocity from spliced/unspliced layers prefer alterlab-scvelo instead. Part of the AlterLab Academic Skills suite.