alterlab-trdizin

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

Searches TR Dizin and verifies journal national-index status via its public API.

  • Checks if a journal is indexed in TR Dizin for submissions or audits.
  • Queries the unauthenticated REST/Elasticsearch API at search.trdizin.gov.tr.
  • Derives indexing status from isActive, journalYear coverage, and rejectYearList.
  • Returns search results and indexing status as structured data.

SKILL.md

.github/skills/alterlab-trdizinView on GitHub ↗
---
name: alterlab-trdizin
description: "Searches TR Dizin (TÜBİTAK ULAKBİM national citation index) and verifies a journal's current national-index status through its confirmed unauthenticated REST/Elasticsearch API at https://search.trdizin.gov.tr/api/defaultSearch/{publication|journal|author|institution}/ (params q, order e.g. relevance-DESC, page), parsing hits.hits[]._source plus faceted aggregations, and derives indexing status from a journal record's isActive + journalYear coverage vs rejectYearList. Use when the user wants to search TR Dizin, check if a journal is TR Dizin indexed (TR Dizin'de var mı / taranıyor mu), find Turkish-indexed publications, verify national-index status before submitting, or audit doçentlik-eligible venues. For DergiPark hosting prefer alterlab-dergipark; for doçentlik points prefer alterlab-docentlik-eligibility; for teşvik scoring prefer alterlab-akademik-tesvik. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Write Edit Bash(python:*) Bash WebFetch
compatibility: No API key required — queries the keyless TR Dizin search API (https://search.trdizin.gov.tr/api/defaultSearch/) via `uv run python` (requests if present, else stdlib urllib); reports network failure rather than passing silently
metadata:
  skill-author: AlterLab
  version: "1.0.1"
  last_updated: "2026-06-06"
  depends_on: "alterlab-dergipark (hosting vs indexing), alterlab-docentlik-eligibility, alterlab-akademik-tesvik"
---

# TR Dizin — National Index Search & Journal-Status Check

Searches **TR Dizin** (TÜBİTAK ULAKBİM's *ulusal atıf dizini* — the national
citation index) and answers the question Turkish academics actually ask:
**"Is this journal indexed in TR Dizin right now?"** It hits the index's
confirmed keyless API, parses the Elasticsearch records, and for a journal derives
a current-status verdict from the authoritative coverage fields.

TR Dizin status is a career gate: it gates **doçentlik** (associate-professorship)
eligibility and feeds **akademik teşvik** (academic-incentive) / **UBYT** payouts.
This skill verifies *status*; it does **not** compute the points — see the routing
table below.

## Quick Start

```
Is the journal "Bilig" indexed in TR Dizin?
"Toplum ve Bilim" TR Dizin'de taranıyor mu?
Find TR Dizin publications about deprem okuryazarlığı, newest first
Search TR Dizin for an author / institution
```

→ Run `scripts/query_trdizin.py`, read the JSON/table, and report the verdict.
Never assert a journal's status from memory — always query the live index.

## When to Use This Skill

Use it for any of these intents:

- **Check journal status** — "is journal X TR Dizin indexed?", "TR Dizin'de var mı?",
  verify a target venue's national-index status **before submitting**.
- **Search publications** — find Turkish-indexed articles by keyword, sort by year
  or citation count, narrow with the returned year/subject/language facets.
- **Search author / institution** — locate an author or institution record in the
  national index.
- **Audit a venue list** — screen a set of journals for current TR Dizin coverage
  (e.g. before assembling a doçentlik dossier — *but the point math is elsewhere*).

### Does NOT Trigger — route these to the right sibling

| If the request is really about… | Route to |
|---|---|
| DergiPark **journal hosting** / OAI harvest / article BibTeX (hosting ≠ indexing) | `alterlab-dergipark` |
| Computing **doçentlik** eligibility points from a publication list | `alterlab-docentlik-eligibility` |
| Computing **akademik teşvik** / UBYT incentive scores | `alterlab-akademik-tesvik` |
| YÖK **thesis** (tez) search in Ulusal Tez Merkezi | `alterlab-yok-tez` |
| YÖK Akademik **academic profile / affiliation** lookup | `alterlab-yok-akademik` |
| YÖK Atlas **program / admission statistics** | `alterlab-yokatlas` |
| Verifying an arbitrary citation **exists** (Crossref/OpenAlex/etc.) | `alterlab-citation-verifier` |
| **Turkish APA 7 / TR Dizin citation style** formatting | `alterlab-tr-academic-style` |

This skill answers *"is it in the index, and what does the index say?"* — it does
not adjudicate acceptance criteria, compute career points, or format citations.

## How It Works

The TR Dizin SPA is backed by an **unauthenticated** Elasticsearch search API
(verified live 2026-06-06, HTTP 200). One endpoint, four record types:

```
GET https://search.trdizin.gov.tr/api/defaultSearch/{type}/?q=…&order=…&page=…
    type ∈ { publication | journal | author | institution }
```

Full endpoint, parameter, and `_source` field documentation is in
[`references/api_reference.md`](references/api_reference.md). The
journal-status logic is in [`references/journal_status.md`](references/journal_status.md).

Two facts to keep honest:

- **No `limit` param.** The server returns ~10 hits per page and **ignores**
  a client `limit`. To collect *N* records, page through `page=1,2,…` and slice
  client-side — which is exactly what the script's `--limit` does. Do **not** tell
  the user a server-side limit exists.
- **`firstIndexDate` / `indexDate` are query-time stamps** (they come back as
  "now") and carry no index history. Status is derived from `isActive`,
  `journalYear` coverage, and `rejectYearList` only.
- **`isActive` is not trustworthy on its own.** A journal can keep
  `isActive=true` while coverage stopped years ago and recent years are in
  `rejectYearList` (verified: *Eğitim Bilim Toplum*, ISSN 1303-9202 — active,
  coverage→2019, rejected 2020–2025). The script therefore checks `rejectYearList`
  against the latest coverage year **before** ever saying "currently indexed".

## Pipeline

### 1. Pick the mode

| User intent | Command |
|---|---|
| Is journal X indexed? | `query_trdizin.py journal "<title or ISSN>"` |
| Find indexed articles | `query_trdizin.py publication "<terms>" --order publicationYear-DESC` |
| Author / institution | `query_trdizin.py author "<name>"` / `… institution "<name>"` |

### 2. Run the query

```bash
# Journal status (the headline use case)
uv run python skills/turkish-academia/alterlab-trdizin/scripts/query_trdizin.py \
    journal "Bilig" --limit 3

# Publication search, newest first, with facets, JSON out
uv run python skills/turkish-academia/alterlab-trdizin/scripts/query_trdizin.py \
    publication "deprem okuryazarlığı" \
    --order publicationYear-DESC --limit 20 --facets --out trdizin.json
```

- `--order` (verified enum): `relevance-DESC` (default), `publicationYear-ASC|DESC`,
  `title-ASC|DESC`, `orderCitationCount-ASC|DESC`.
- `--limit N` collects up to *N* records by paging client-side (default 10).
- `--facets` adds the year / subject / language aggregations.
- `--json` / `--out PATH` emit the structured report; default is a readable table.
- The script prefers `requests`, falls back to stdlib `urllib` — runs in a bare
  `uv` env with **no API key**.

### 3. Report the verdict

**For a journal**, surface the derived `verdict`, e.g.:

- *Currently indexed in TR Dizin (active; coverage years 2004–2026)* — when
  `isActive` is true, `journalYear` shows recent coverage, and there is **no**
  reject year newer than the last covered year.
- *No longer indexed in TR Dizin — rejected after coverage (…)* — when the most
  recent `rejectYearList` year is newer than the last `journalYear` year. This
  fires **even if `isActive` is still true** (de-indexed venue).
- *Rejected / not indexed (rejected years …)* — when `rejectYearList` is set but
  not newer than coverage.
- *Not currently active in TR Dizin* — when `isActive` is false.

Quote ISSN/eISSN and the coverage years so the user can confirm it is the right
journal (title collisions happen). If it matters for a submission decision, remind
them TR Dizin status can change between terms — re-check before relying on it.

**For publications**, present a table of `(year) title — journal · doi · access`,
sorted as requested, and offer to refine via the facets.

## Self-Check Before Reporting

- Did the API actually respond? If the script exited with `NETWORK UNAVAILABLE`
  (exit 3), say so plainly and do **not** state a status from memory.
- Is the matched journal the right one? Confirm by ISSN/eISSN, not title alone.
- Did the verdict come from `isActive` / `journalYear` / `rejectYearList` — not
  from the query-time `*IndexDate` fields?
- Is this a *status* question? If the user actually wants doçentlik points, teşvik
  scoring, DergiPark hosting, tez search, or citation formatting, hand off to the
  sibling skill named in the routing table above.

## References

- [`references/api_reference.md`](references/api_reference.md) — endpoint,
  parameters, `order` enum, response shape, `_source` fields per type, facets, and
  the no-`limit` / query-time-date caveats (all verified live).
- [`references/journal_status.md`](references/journal_status.md) — the
  indexing-status decision logic, worked examples, and why it gates doçentlik /
  teşvik (with hand-offs to those skills).

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.