SuperAPI AI Directory

alterlab-yok-akademik

Writing & research

View repository

Updated 10-15 19:56

About this skill

YÖK Akademik — Official Turkish Academic Profile & Affiliation Lookup

YÖK Akademik (Yükseköğretim Kurulu Akademik — the Turkish Council of Higher Education's academic search portal) is the authoritative source for a Turkish academic's official current affiliation. It is YÖKSİS-backed (the national higher-education information system), so for Turkish institutions it is more reliable than ORCID or OpenAlex affiliation strings, which lag and fragment.

This skill resolves a name to that official record: current kurum (institution), fakülte/bölüm (faculty/department), unvan (academic title — e.g. Prof. Dr., Doç. Dr., Dr. Öğr. Üyesi), plus the person's portal-listed publications, research projeler (projects), and danışmanlık yapılan tezler (supervised theses).

No public JSON API exists. The portal at akademik.yok.gov.tr/AkademikArama/ is a server-rendered Java/JSP app. The only route is polite HTML scraping of its verified endpoints. Treat every record as authoritative-but-scraped: confirm a candidate match with the user before asserting an affiliation.

When to Use This Skill

Use this skill when the request is to:

  • Verify a Turkish academic's current institution / affiliation (for authorship bylines, a recommendation letter, a grant team, an editorial-board check).
  • Find / look up a researcher on YÖK Akademik by name.
  • Read someone's official unvan (title) and faculty/department.
  • List the theses someone has supervised (master's / doctorate), with student, year, and institution.
  • Pull the person's portal-listed publications or research projects as a starting set.

Does NOT Trigger

Route these adjacent asks to the correct sibling skill — do not answer them here:

The request is really about… Use instead
University/program admission statistics — kontenjan, taban puan, başarı sırası, yerleşen alterlab-yokatlas
Reading or citing a thesis full text / abstract from the national archive (Ulusal Tez Merkezi) alterlab-yok-tez
Searching the national journal-hosting platform DergiPark alterlab-dergipark
Whether a journal is indexed in TR Dizin (the national citation index) alterlab-trdizin
Enriching/verifying publication metadata (DOIs, citation counts, co-authors) alterlab-openalex
Checking whether the cited papers actually exist (fabricated citations) alterlab-citation-verifier
Computing doçentlik (associate-professorship) eligibility points from a publication list alterlab-docentlik-eligibility
Computing the akademik teşvik (academic-incentive) score alterlab-akademik-tesvik

YÖK Akademik answers "who is this academic, officially, and where are they now?" It does not judge research quality, compute career-progression points, or fetch thesis full text.

The verified endpoints (no API key)

All under the base https://akademik.yok.gov.tr/AkademikArama/. There is no documented JSON API; these are HTML/JSP pages. See references/endpoints.md for the full map, parameters, and verification status of each.

Step Endpoint Returns
Search by name POST AkademisyenArama with aramaTerim=<name>&islem=1&…Checkbox=on → category page → follow its Akademisyenler link → view/searchResultviewListAuthor.jsp Candidate rows: name, unvan, university, faculty/department, and the profile link carrying the opaque authorId
Profile / select author AkademisyenGorevOgrenimBilgileri?islem=direct&authorId=<id> → renders view/viewAuthor.jsp The person's header: current kurum, fakülte, bölüm, unvan, ORCID/email badges. This GET also registers the author in the session (the tabs below 500 without it).
Projects AkademisyenProjeBilgileri?authorId=<id> Portal-listed research projects (AB / TÜBİTAK / araştırma …)
Publications AkademisyenYayinBilgileri?pubType=<token>&authorId=<id> Typed tabs (Kitaplar / Makaleler / Bildiriler). pubType is required & opaque — discover the tokens from the profile page (empty pubType → HTTP 418)
Supervised theses AkademisyenYonTezBilgileri?authorId=<id> Danışmanlık tezleri: title, student, level, year, institution

authorId is an opaque value (a 16-hex-char token, e.g. 006B496E5F3E4EE2) — never construct or guess one; only use IDs you obtained from a live search result. A cookie session is mandatory: the helper GETs the portal root first so the server sets the JSESSIONID the search POST needs (a session-less POST returns HTTP 500).

Workflow

1. Normalize the name and search

Turkish casing is a real trap: İ→i and I→ı are not the ASCII fold. Search the name as the user gave it (correctly-encoded UTF-8), and also try a diacritic-folded variant so "Cağrı", "Cagri", and "Çağrı" all reach the same person. The helper script does both. See references/turkish_names.md for the exact İ/ı, Ş/ş, Ğ/ğ, Ç/ç, Ö/ö, Ü/ü rules and matching strategy.

uv run python skills/turkish-academia/alterlab-yok-akademik/scripts/yok_akademik.py \
    search "Ayşe Yılmaz"

This returns the candidate list (pretty JSON by default; add --json for compact single-line output). Each candidate carries its authorId, name, and unvan.

2. Disambiguate with the user

Common names return many people. Present the candidates as a table — name · unvan · university · faculty/department — and ask the user which one (or confirm the institution they expected). Do not silently pick the first row and assert an affiliation; that is exactly how a wrong byline or letter gets written.

3. Pull the chosen profile / projects / theses / publications

The authorId you pass must come from a live search row. Each per-author command first lands on the profile (which selects the author in the session) before fetching its tab — the helper handles that for you.

# Profile header (affiliation, unvan)
uv run python .../scripts/yok_akademik.py profile  --author-id <authorId>

# Research projects (AB / TÜBİTAK / araştırma …)
uv run python .../scripts/yok_akademik.py projects --author-id <authorId>

# Supervised theses
uv run python .../scripts/yok_akademik.py theses   --author-id <authorId>

# Portal-listed publications (typed tabs: Kitaplar / Makaleler / Bildiriler)
uv run python .../scripts/yok_akademik.py pubs     --author-id <authorId>

4. Report — and state provenance

When you report an affiliation, say it came from YÖK Akademik (YÖKSİS) and give the date, because people move. If the scrape failed or the portal returned a 302/500 (it does so intermittently), say so and fall back to WebFetch on the search page — never invent an affiliation, authorId, title, or thesis from memory.

Politeness & robustness rules

The portal is a public service with no API; scrape gently.

  • One descriptive User-Agent; throttle (≈1–2 s between requests); retry the frequent transient 302/500 responses with backoff before giving up.
  • Cache results within a session — don't re-hit the same authorId repeatedly.
  • The script prefers requests + BeautifulSoup; if BeautifulSoup is absent it degrades to a stdlib html.parser extraction so it still runs in a bare uv env.
  • On total failure it emits a structured {"status": "unavailable", ...} record with manual-lookup instructions, never a fabricated profile.

Self-Check Before Reporting

  • Did a live search return the authorId I'm using, or did I guess it? (Never guess.)
  • Did I disambiguate when more than one candidate matched the name?
  • Is the affiliation I'm reporting attributed to YÖK Akademik / YÖKSİS with a date?
  • Did the request actually want admission stats (alterlab-yokatlas) or thesis full text (alterlab-yok-tez) instead? Re-check the "Does NOT Trigger" table.
  • If the portal failed, did I say so plainly rather than filling the gap from memory?

References

Part of the AlterLab Academic Skills suite.