alterlab-dergipark — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited alterlab-dergipark (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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).
Use it when the request is about getting data out of DergiPark:
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).
| 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 |
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.
scripts/dergipark_oai.py — OAI harvest (primary path)# 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_dcVerbs: 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).
scripts/article_meta.py — one article → BibTeX / RISuv 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 jsonParses 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.
scripts/journal_info.py — aim-and-scope + self-declared indexesuv run python scripts/journal_info.py mulkiye --lang enReturns the aim-and-scope text and the /indexes page, the latter stamped with a DISCLAIMER and cross-check pointers to TR Dizin and DOAJ.
<datestamp> is the platformre-index time, not the publication date. To slice by publication year, harvest then filter on `dc:date` locally — do not rely on from/until.
citation_pdf_urlmeta tag (e.g. /en/download/article-file/9 for article /10); never build it from the article id.
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.
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/endpoints.md — every verified endpoint, prefix, and identifierscheme (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 tocross-check real indexing against TR Dizin and DOAJ.
Part of the AlterLab Academic Skills suite.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.